Zenn
👽

AWS MCPのCDK Nag IntegrationをClineで試してみた

に公開
2
1

導入

  • aws labsにAWSのMCP Serverが複数公開されましたが、その中にCDK Nag(CDK用セキュリティツール)向け機能があることが気になりました。
  • 本ブログでは、AWS CDK MCP ServerのCDK Nag Integration機能をClineで実際に試してみます。

前提知識

本題に入る前に、CDK関連知識について簡単に解説します。

  • CDK
    • AWSのIaCツールであり、Typescript などのプログラミング言語を用いてAWSインフラ設定を定義・デプロイできます。
  • CDK Nag
    • CDKで作成される資源がセキュリティベストプラクティスに沿っているかどうか、ルールベースで評価してくれるツールです。
    • デプロイなどのコマンド実行時に自動評価が走り、ルール非準拠資源がデプロイされることを防いでくれます。
    • システム要件・設計の都合でルール準拠が難しい場合、明示的な設定を通じて、エラー抑制(suppress)することも可能です。

AWS CDK MCP Serverの利用準備

公式ドキュメント を参考に準備作業を実施します。

まずは、uvをインストールします。[1]

brew install uv

次に、VS CodeのCline拡張機能を開き、 MCP Servers > Installed > Configure MCP Serversに遷移します。

MCPの設定ファイルにawslabs.cdk-mcp-serverを定義します。

{
  "mcpServers": {
    "awslabs.cdk-mcp-server": {
      "command": "uvx",
      "args": ["awslabs.cdk-mcp-server@latest"],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

設定変更後、awslabs.cdk-mcp-serverがインストールされたことが確認できます。

実際に試してみる

公式ドキュメントからCDK Nag Integrationの機能について確認したうえで、Clineで実際に試してみます。

CDK Nag Integration

  • Work with CDK Nag rules for security and compliance
  • Explain specific CDK Nag rules with AWS Well-Architected guidance
  • Check if CDK code contains Nag suppressions that require human review

まずは、特定のCDK Nag ルールの解説をClineに依頼します。

AwsSolutions-IAM4について、awslabs.cdk-mcp-serveを用いて説明を提供してくれましたね。[2]

次に、既存のCDKコードに含まれるNag suppressions(抑制設定)の内容について解説・評価してもらいます。

検証用にIAM Role及びLambdaを構築するCDKサンプルコードを用意します。

  • AwsSolutions-IAM4に引っかかるよう、AWSマネージドポリシー「AWSLambdaBasicExecutionRole」をLambda向けIAM Roleにアタッチしています。
  • そのうえで、AwsSolutions-IAM4に対するSuppressionsを設定しています。
    // ------------ Sample Application ---------------
    // ---- Lambda Resources
    // Create IAM Role
    const lambdaRole = new iam.Role(this, 'MyFunctionRole', {
      assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'),
      description: 'Lambda Execution Role',
    });
    lambdaRole.addManagedPolicy(
      iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSLambdaBasicExecutionRole')
    );
    NagSuppressions.addResourceSuppressions(lambdaRole, [
      {
        id: 'AwsSolutions-IAM4',
        reason: 'CloudWatch Logs にイベントをログ記録するための基本的なアクセス許可のみが付与されるため権限過剰ではないと判断',
      },
    ]);

    // Create Lambda Function
    const myFunction = new lambda.Function(this, "MyFunction", {
      runtime: lambda.Runtime.PYTHON_3_13,
      code: lambda.Code.fromAsset('lambda/python/nag'),
      handler: 'lambda_function.lambda_handler',
      memorySize: 256,
      timeout: cdk.Duration.seconds(25),
      role: lambdaRole
    })

それでは、Clineに解説・評価を依頼してみましょう。

ファイル読み取り後、AWS CDK MCP Serverを利用せずに解説・評価しています。
この時点では不正確な内容になっていますが、AWS CDK MCP Serverへ裏取りをしてくれるようです。

AWS CDK MCP Serverへの裏取りを通じて、AwsSolutions-IAM4がAWSマネージドポリシー利用に関するルールであることを理解し、解説・評価内容をアップデートしてくれました。

所感

MCP Serverへの裏取りを通じて回答内容の精度が向上する様を目の当たりにし、今まで一番の衝撃を受けました。

専門性を持つAWSエンジニアが今すぐ不要になるかは分かりませんが、技術力の高さ以上に「生成AI活用を前提とした世界観・開発プロセス」に適応できるか否かが非常に重要になっていきそうです。

参考

https://github.com/awslabs/mcp

https://aws.amazon.com/jp/blogs/machine-learning/introducing-aws-mcp-servers-for-code-assistants-part-1/

https://dev.classmethod.jp/articles/aws-documentation-mcp-integrate-cline/

注意事項

  • 本記事は万全を期して作成していますが、お気づきの点がありましたら、ご連絡よろしくお願いします。
  • なお、本記事の内容を利用した結果及び影響について、筆者は一切の責任を負いませんので、予めご了承ください。
脚注
  1. 筆者の作業環境がMacなため、brewを用いてインストールしています。 ↩︎

  2. 事前にcustom instructionsで日本語で応対するよう設定しているため、日本語で解説してくれています。 ↩︎

1
Accenture Japan (有志)

Discussion

マッサン (Masanori Yoshida)マッサン (Masanori Yoshida)

AOの現場で、チャットベースで監視や調査ができるようになりそうですね!作業は安定考えるともうちょい先だと思いますが。これまでもAiOps文脈で自動化されて来ていると思いますが、構築の生産性、柔軟性で秀でそう。

kazuyaasawakazuyaasawa

作業は安定考えるともうちょい先だと思いますが。

今現時点では、作業を全てAIに委ねるのは難しいと思いつつ、AWSが提供するMCP Serversを利用することで構築・AO・IOの生産性が圧倒的に向上しそうな印象を受けました。
あとは、AWSのログ基盤やDatadogのMCP Serverを自作すれば、AO・IO現場での障害調査・対応が更に捗る気がします。

ログインするとコメントできます