翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Kiro やその他のコーディングアシスタントで MCP サーバーを使用してリアルタイムのコーディングセキュリティ検証をデプロイする
Ivan Girardi と Iker Reina Fuente、Amazon Web Services
概要
このパターンでは、3 つの業界標準のセキュリティスキャンツールを統合して包括的なコードセキュリティ分析を提供するモデルコンテキストプロトコル (MCP) サーバーを実装する方法について説明します。サーバーは、AI コーディングアシスタント (Kiro、Amazon Q Developer、Cline など) がコードスニペットとInfrastructure as Code (IaC) 設定を自動的にスキャンできるようにします。これらのスキャンにより、コーディングアシスタントはセキュリティの脆弱性、設定ミス、コンプライアンス違反を特定するのに役立ちます。
何百万ものコードスニペットでトレーニングされた AI コードジェネレーターは、セキュリティの死角を作成します。そのトレーニングデータはどの程度安全ですか? このパターンは、コード生成中のリアルタイムのセキュリティ検証を提供し、デベロッパーがコード化する潜在的なセキュリティ問題を特定して理解するのに役立ちます。このアプローチは、開発者が直接的な脆弱性と依存関係から継承されたリスクの両方に対処するのに役立ちます。AI 効率とセキュリティコンプライアンスのギャップを埋めることで、このパターンは AI を活用した開発ツールを安全に導入するのに役立ちます。
このパターンは、組織が AI 支援のコーディングツールを使用して開発セキュリティプラクティスを強化し、複数のプログラミング言語とインフラストラクチャ定義にわたって継続的なセキュリティスキャン機能を提供するのに役立ちます。このソリューションは、次のツールの機能を組み合わせています。
Terraform、、Kubernetes マニフェストなどの IaC AWS CloudFormationファイルをスキャンするための Checkov
Python、JavaScript、Java などの複数のプログラミング言語を分析するための Semgrep
特殊な Python セキュリティスキャン用の Bandit
このソリューションの主な機能は次のとおりです。
新しいコードセグメントのデルタスキャンによる計算オーバーヘッドの削減
分離されたセキュリティツール環境、クロスツールの汚染の防止
AI コーディングアシスタント (Kiro、Amazon Q Developer、Cline など) とのシームレスな統合
コード生成中のリアルタイムのセキュリティフィードバック
組織コンプライアンスのためのカスタマイズ可能なスキャンルール
このパターンは、標準化されたレスポンス形式でセキュリティスキャン用の統合インターフェイスを提供するため、セキュリティチェックを開発ワークフローに統合することが容易になります。このパターンでは、Python と MCP フレームワークを使用して、自動化されたセキュリティフィードバックを提供します。このアプローチは、開発者が開発プロセスの早い段階でセキュリティ問題を特定して対処し、詳細な検出結果を通じてセキュリティのベストプラクティスを学ぶのに役立ちます。
前提条件と制限
前提条件
これらのコーディングアシスタントのいずれかを使用する場合、Kiro または Amazon Q Developer を使用するためのアクセス権 AWS アカウント を持つアクティブな 。
Python バージョン 3.10 以降がインストールされている
uvパッケージマネージャーのインストールセキュリティスキャンのツールと概念に精通している
IaC とアプリケーションセキュリティの基本的な理解
制限事項
バンディットスキャンは Python ファイルのみに制限されます。
リアルタイムスキャンは、大規模なコードベースのパフォーマンスに影響を与える可能性があります。
ツール固有の制限は、サポートされているファイル形式と言語に基づいています。
セキュリティの検出結果を検証するには、手動によるレビューが必要です。
セキュリティスキャンの結果には、適切な解釈のためのセキュリティの専門知識が必要です。
一部の AWS のサービス は では使用できません AWS リージョン。利用可能なリージョンについては、「AWS サービス (リージョン別)
」を参照してください。特定のエンドポイントについては、「サービスエンドポイントとクォータ」を参照して、サービスのリンクを選択してください。
製品バージョン
Python バージョン 3.10 以降
Checkov バージョン 3.0.0 以降
Semgrep バージョン 1.45.0 以降
Bandit バージョン 1.7.5 以降
MCP[cli] バージョン 1.11.0 以降
Pydantic バージョン 1.10.0 以降
Loguru バージョン 0.6.0 以降
アーキテクチャ
このソリューション用のアーキテクチャを次の図に示します。

この図表は、次のワークフローを示しています:
開発者は AI アシスタント (Kiro、Cline、Amazon Q Developer、Roo Code など) を使用してコードを生成または分析します。AI アシスタントは、セキュリティスキャンのためにコードを送信します。
MCP セキュリティスキャナーサーバーは、IaC ファイルの場合は Checkov、複数のプログラミング言語分析の場合は Semgrep、Python 固有のセキュリティスキャンの場合は Bandit などの適切な専用スキャナーにルーティングしてリクエストを処理します。
セキュリティ検出結果、重要度レベル、詳細な説明、推奨される修正を含むスキャナーの結果は、AI アシスタントを通じて開発者に返送されます。
開発者がリアルタイムのセキュリティ検証を受ける継続的なフィードバックループが確立され、AI アシスタントによる自動修正が可能になり、開発中のセキュリティのベストプラクティスが促進されます。
このアーキテクチャは、以下の一般的なセキュリティリスクを軽減します。
コマンドインジェクション
プロンプトインジェクション
パストラバーサル
依存関係攻撃
リソースの枯渇
このアーキテクチャは、以下のベストプラクティスを実装することで、これらの一般的なセキュリティリスクを軽減します。
ユーザーと AI モデルの入力はすべて一時ファイルに書き込まれます。
コマンドラインインターフェイス (CLI) コマンドへの直接入力は提供されません。
ファイルシステムへのアクセスは、一時ディレクトリとファイルのみに制限されます。
一時ファイルは自動的にクリーンアップされます。
スキャンレスポンスはサニタイズされます。
プロセス機能を制限するプロセス分離が適用されます。
すべてのスキャンアクティビティがログに記録されます。
自動化とスケール
このパターンでは、次の機能による自動化がサポートされています。
自動コードスキャンのための AI コーディングアシスタントとの統合
自動処理のための標準化された API レスポンス
MCP 設定ファイルによる設定
複数のファイルのバッチ処理のサポート
複数のプログラミング言語と IaC 形式でのスケーラブルなスキャン
スキャンプロセスは、提供された API エンドポイントを使用して自動化できます。
scan_with_checkovIaC スキャン用scan_with_semgrep多言語コードスキャン用scan_with_banditPython 固有のスキャン用get_supported_formats形式検証用
スキャンツールを拡張する場合は、このセクションで前述した設計原則とベストプラクティスに従ってください。ベストプラクティスも参照してください。
ツール
AWS のサービス
Kiro
は、デベロッパーと協力してプロンプトを詳細な仕様に変換し、作業コード、ドキュメント、テストに変換するエージェントコーディングサービスです。Kiro エージェントは、開発者が困難な問題を解決し、ドキュメントの生成や単体テストなどのタスクを自動化するのに役立ちます。 Amazon Q Developer は、生成 AI を活用した会話アシスタントであり、 AWS アプリケーションの理解、構築、拡張、運用に役立ちます。
その他のツール
Bandit
は特殊な Python セキュリティスキャナーツールです。安全でない関数、ハードコードされたシークレット、インジェクションの脆弱性などの一般的な Python セキュリティの問題を検出します。Bandit は、詳細な信頼度と重要度の評価を提供します。 Checkov
は、IaC のセキュリティとコンプライアンスの設定ミスをチェックする静的コード分析ツールです。さらに、Checkov はコンプライアンス違反とセキュリティのベストプラクティスを検出します。 Cline
は、VS Code で実行される AI を活用したコーディングアシスタントです。 Loguru
は Python 用のデータ検証ライブラリです。 Model Context Protocol (MCP)
は、AI 支援開発ツールを構築するためのオープンソースフレームワークです。 Pydantic
は Python 用のデータ検証ライブラリです。 Semgrep
は、ソースコードでセキュリティの脆弱性とバグを分析します。複数のプログラミング言語をサポートしています。Semgrep は、セキュリティに焦点を当てたルールセットを使用して包括的な分析を行います。詳細な信頼度と重要度の評価を提供します。
コードリポジトリ
このパターンのコードは、GitHub MCP Security Scanner: Real-Time Protection for AI Code Assistants
リポジトリ構造には以下が含まれます。
security_scanner_mcp_server/- メインサーバーの実装docs/- ドキュメントとデモ資料tests/- テストファイルmcp-config-example.json- MCP 設定の例requirements.txt- プロジェクトの依存関係
ベストプラクティス
セキュリティスキャンの実装
セキュリティの検出結果を確認して、問題を検証し、優先順位を付けます。
スキャンツール (Checkov、Semgrep、Bandit) を最新バージョンに更新し続けます。
このパターンの MCP セキュリティツールは、他のセキュリティ対策やツールと組み合わせて使用します。
セキュリティルールセットとポリシーを定期的に更新します。
設定管理
公式バージョン管理ソースの MCP 設定ファイルを使用します。
カスタムルールと設定を文書化します。
Integration
開発サイクルの早い段階でセキュリティスキャンを統合します。
コミット前フックまたは継続的インテグレーションと継続的デプロイ (CI/CD) パイプラインで自動スキャンを設定します。
環境に適した重要度のしきい値を設定します。
セキュリティの検出結果を処理するための明確な手順を確立します。
運用上の考慮事項
スキャンパフォーマンスとリソース使用量をモニタリングします。
適切なエラー処理とログ記録を実装します。
カスタム設定のドキュメントを維持します。
セキュリティルールを確認および更新するプロセスを確立します。
また、次のベストプラクティスにも注意してください。
常に特定のコンテキストでセキュリティ検出結果を検証します。
セキュリティツールと依存関係を最新の状態に保ちます。
包括的なカバレッジを実現するには、複数のセキュリティツールを使用します。
開発プロセスでセキュリティのベストプラクティスに従ってください。
エピック
| タスク | 説明 | 必要なスキル |
|---|---|---|
MCP 設定を構成します。 | Kiro の設定ファイルは、 (オプション 1) で設定ファイルを手動で検索するか、(オプション 2) で Kiro IDE を使用して編集できます。
| アプリ開発者 |
| タスク | 説明 | 必要なスキル |
|---|---|---|
MCP 設定を構成します。 | MCP 設定を手動で設定するには、次の手順を実行します。
| アプリ開発者 |
| タスク | 説明 | 必要なスキル |
|---|---|---|
MCP 設定を構成します。 | MCP 設定を手動で設定するには、次の手順を実行します。
| アプリ開発者 |
| タスク | 説明 | 必要なスキル |
|---|---|---|
コード分析を実行します。 | Python と Bandit を使用してコード分析を実行するには、次の手順を実行します。
| アプリ開発者 |
| タスク | 説明 | 必要なスキル |
|---|---|---|
コード分析を実行します。 | Terraform と Checkov を使用してコード分析を実行するには、次の手順を実行します。
| アプリ開発者 |
| タスク | 説明 | 必要なスキル |
|---|---|---|
ターゲットスキャンを実行します。 | ターゲットスキャンの実行に使用できるリクエストの例を次に示します。
| アプリ開発者 |
コード生成でセキュリティスキャンを使用します。 | コード生成ループを使用してセキュリティ上の検出結果を解決するには、次のステップを使用します (この例では、コーディングアシスタントとして Kiro を使用します)。
| アプリデベロッパー |
トラブルシューティング
| 問題 | ソリューション |
|---|---|
環境設定の問題 |
|
スキャナーの問題 |
|
統合の問題 |
|
追加のサポート |
|
関連リソース
AWS ドキュメント
Infrastructure as Code (AWS ホワイトペーパー「DevOps の概要 DevOps AWS」)
その他の AWS リソース
その他のリソース
追加情報
自動承認が有効になっている MCP 設定の例
autoApprove 設定されていない場合、ユーザーはスキャンのために MCP セキュリティサーバーにコードを送信する承認を付与する必要があります。autoApprove を設定すると、コードアシスタントはユーザーの承認なしでツールを呼び出すことができます。これらのツールはマシン上でローカルに実行され、データは送信されず、コードスキャンのみが実行されます。
次の設定では、すべてのセキュリティスキャン関数の自動実行を有効にします。
{ "mcpServers": { "security-scanner": { "command": "uvx", "args": [ "--from", "git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main", "security_scanner_mcp_server" ], "env": { "FASTMCP_LOG_LEVEL": "ERROR" }, "disabled": false, "autoApprove": [ "scan_with_checkov", "scan_with_semgrep", "scan_with_bandit", "get_supported_formats" ] } } }
デバッグログ記録を有効にするには、 "FASTMCP_LOG_LEVEL"を に設定します"DEBUG"。
セキュリティスキャンツールでサポートされているファイル形式
このソリューションの各セキュリティスキャンツールは、次のファイル形式をサポートしています。
Checkov (IaC)
Terraform – .tf、.tfvars、.tfstate
CloudFormation – .yaml、.yml、.json、.template
Kubernetes – .yaml、.yml
Dockerfile – Dockerfile
ARM – .json (Azure リソースマネージャー)
Bicep – .bicep
サーバーレス – .yml、.yaml
Helm – .yaml、.yml、.tpl
GitHub アクション – .yml、.yaml
GitLab_ci – .yml、.yaml
Ansible – .yml、.yaml
Semgrep (ソースコード)
Python – .py
JavaScript – .js
TypeScript – .ts
Java – .java
Go – .go
C – .c
C++ – .cpp
C# – .cs
Ruby – .rb
PHP – .php
Scala – .scala
Kotlin – .kt
Rust – .rs
Bandit (Python のみ)
Python – .py
デモ
コードスキャンでは、AI アシスタントで次のサンプルプロンプトを試してください。
「現在のスクリプトをスキャンして結果を教えてください。」
「20~60 行をスキャンして結果を教えてください」
「この Amazon DynamoDB テーブルリソースをスキャンして結果を教えてください。」
詳細については、このパターンの GitHub リポジトリにあるこのコードスキャンデモ
安全なコードを生成するには、次のサンプルプロンプトを試してください。
「Terraform 設定を生成して、暗号化が有効になっている DynamoDB テーブルを作成し、セキュリティ上の問題がないかスキャンします。」
DynamoDB に書き込み、脆弱性がないかスキャンする Python Lambda 関数を作成します。」
「適切なセキュリティ設定で S3 バケットの CloudFormation テンプレートを生成し、セキュリティチェックに合格することを確認します。」
「ページ分割を使用して DynamoDB をクエリし、セキュリティのベストプラクティスをスキャンする Python スクリプトを作成します。」
「セキュリティを強化したマイクロサービスの Kubernetes デプロイマニフェストを作成し、検証します。」
詳細については、このパターンの GitHub リポジトリの「セキュリティスキャンデモを使用したこのコード生成