セキュリティ運用の可能性を感じた AWS Well-Architected Security Assessment Tool MCP を試す

に公開

こんにちは、CSC の平木です!

みなさんは AI でセキュリティ運用をもっと効率化したいと思ったことはありますか?

自分はいつも思っています。

実際、定型業務や文章の作文などでは生成 AI をがっつり活用していますが、
アドホックな調査などのタスクはどうしても人力になってしまうケースはまだまだあります。

そんな時ふと AWS Labs の MCP のリポジトリを眺めていたところ、 AWS Well-Architected Security Assessment Tool MCP Server という MCP が登場しているのを見つけました。

なかなか良さげなものの予感がしたので、今回はこちらを解説していきます。

https://awslabs.github.io/mcp/servers/well-architected-security-mcp-server

https://github.com/awslabs/mcp/tree/main/src/well-architected-security-mcp-server

3 点まとめ

  • AWS Well-Architected Framework のセキュリティの柱に沿った AWS 環境を監視・評価するための運用をサポートする MCP サーバ
  • セキュリティサービスの検知結果を収集するだけでなく、与えられた権限の範囲で追加調査や対応の提案が可能
  • セキュリティに関する情報を AI に与えるので最小権限に基づいた適切なプロファイルを付与する必要がある

まずはやってみる

細かい内容はさておき、まずは実際どのようなものかを見ていきましょう。

前提

今回は、以下の環境で動かしてみました。

  • Security Hub CSPM,GuardDuty,IAM Access Analyzer が東京とバージニア北部で有効化されている AWS アカウント
  • Amazon Q Developer CLI を活用

MCP の設定

以下の内容を mcp.json に追記します。

{
  "mcpServers": {
    "well-architected-security-mcp-server": {
      "command": "uvx",
      "args": [
        "--from",
        "awslabs.well-architected-security-mcp-server",
        "well-architected-security-mcp-server"
        ],
      "env": {
        "AWS_PROFILE": "your-aws-profile", //参照したい AWS 環境へのプロファイル
        "AWS_REGION": "your-aws-region", //任意のリージョン ID
        "FASTMCP_LOG_LEVEL": "ERROR"
      }
    }
  }
}

使ってみる

とりあえず現在時点で何から対処すべきか聞いてみます。

質問内容
現在、東京リージョンとバージニア北部リージョンで Security Hub,GuardDuty,IAM Access Analyzer を有効化しています。
そのアカウントにてまず最優先で取り組むべきセキュリティ対策を Well Architected Security MCP を活用して調査してください。
展開すると途中経過が見られます
プロセス
> 東京リージョン(ap-northeast-1)とバージニア北部リージョン(us-east-1)のセキュリティ状況を調査し、最優先で取り組むべき対策を特定します。

まず、両リージョンのセキュリティサービスの状況とファインディングを確認します。

🛠️  Using tool: CheckSecurityServices from mcp server well-architected-security-mcp-server
 ⋮
 ● Running CheckSecurityServices with the param:
 ⋮  {
 ⋮    "region": "ap-northeast-1",
 ⋮    "services": [
 ⋮      "guardduty",
 ⋮      "securityhub",
 ⋮      "accessanalyzer"
 ⋮    ]
 ⋮  }

Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

 ⋮
 ● Completed in 4.163s

🛠️  Using tool: CheckSecurityServices from mcp server well-architected-security-mcp-server
 ⋮
 ● Running CheckSecurityServices with the param:
 ⋮  {
 ⋮    "region": "us-east-1",
 ⋮    "services": [
 ⋮      "guardduty",
 ⋮      "securityhub",
 ⋮      "accessanalyzer"
 ⋮    ]
 ⋮  }

Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

 ⋮
 ● Completed in 6.14s

> 次に、各サービスのファインディングを確認して、最優先で対処すべき問題を特定します。

🛠️  Using tool: GetSecurityFindings from mcp server well-architected-securiity-mcp-server
 ⋮
 ● Running GetSecurityFindings with the param:
 ⋮  {
 ⋮    "service": "accessanalyzer",
 ⋮    "region": "ap-northeast-1",
 ⋮    "max_findings": 20
 ⋮  }

Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

 ⋮
 ● Completed in 2.139s
🛠️  Using tool: GetSecurityFindings from mcp server well-architected-securiity-mcp-server
 ⋮
 ● Running GetSecurityFindings with the param:
 ⋮  {
 ⋮    "region": "us-east-1",
 ⋮    "max_findings": 20,
 ⋮    "service": "accessanalyzer"
 ⋮  }

Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

 ⋮
 ● Completed in 2.632s

🛠️  Using tool: GetSecurityFindings from mcp server well-architected-securiity-mcp-server
 ⋮
 ● Running GetSecurityFindings with the param:
 ⋮  {
 ⋮    "region": "ap-northeast-1",
 ⋮    "max_findings": 20,
 ⋮    "service": "guardduty",
 ⋮    "severity_filter": "HIGH"
 ⋮  }

Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

 ⋮
 ● Completed in 2.524s

🛠️  Using tool: GetSecurityFindings from mcp server well-architected-securiity-mcp-server
 ⋮
 ● Running GetSecurityFindings with the param:
 ⋮  {
 ⋮    "region": "us-east-1",
 ⋮    "max_findings": 20,
 ⋮    "service": "guardduty",
 ⋮    "severity_filter": "HIGH"
 ⋮  }

Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

 ⋮
 ● Completed in 4.631s

🛠️  Using tool: GetSecurityFindings from mcp server well-architected-securiity-mcp-server
 ⋮
 ● Running GetSecurityFindings with the param:
 ⋮  {
 ⋮    "region": "ap-northeast-1",
 ⋮    "max_findings": 20,
 ⋮    "service": "securityhub",
 ⋮    "severity_filter": "HIGH"
 ⋮  }

Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

 ⋮
 ● Completed in 2.814s

🛠️  Using tool: GetSecurityFindings from mcp server well-architected-securiity-mcp-server
 ⋮
 ● Running GetSecurityFindings with the param:
 ⋮  {
 ⋮    "region": "us-east-1",
 ⋮    "max_findings": 20,
 ⋮    "service": "securityhub",
 ⋮    "severity_filter": "HIGH"
 ⋮  }

Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

 ⋮
 ● Completed in 7.810s
回答結果
> 調査結果に基づいて、最優先で取り組むべきセキュリティ対策を分析します。

## セキュリティ調査結果と最優先対策

### 現在の状況
両リージョンで Security Hub、GuardDuty、IAM Access Analyzer が正常に有効化されており、基本的なセキュリティ監視体制は整っています。

### 最優先で取り組むべきセキュリティ対策

#### 1. 緊急対応が必要(HIGH 優先度)

a) GuardDuty の異常行動検知への対応
• **問題**: バージニア北部リージョンで \<検知した IAM ロール名> による異常な API 呼び出しが検知
• **詳細**: Datacamp Limited(ASN=XXXXX)からの未知の組織による疑わしい API 活動
• **対策**: 
  • 該当ロールの使用状況を即座に調査
  • 必要に応じてロールの一時停止
  • アクセスログの詳細分析

b) S3 バケットのパブリックアクセス設定
• **問題**: 東京リージョンの \<検知した S3 バケット名> バケットがパブリックアクセスを許可
• **対策**: 即座にパブリックアクセスブロック設定を有効化

#### 2. セキュリティ機能の強化(HIGH 優先度)

a) Amazon Inspector の有効化
• **問題**: 両リージョンで Inspector の EC2、ECR、Lambda スキャンが無効
• **対策**: 
  • EC2 インスタンスの脆弱性スキャン有効化
  • ECR コンテナイメージスキャン有効化
  • Lambda コードスキャン有効化

b) GuardDuty Runtime Monitoring の有効化
• **問題**: 両リージョンでランタイム監視が無効
• **対策**: EC2、ECS、EKS のランタイム脅威検知を有効化

#### 3. ネットワークセキュリティの改善(HIGH 優先度)

a) EC2 インスタンスのパブリック IP 削除
• **問題**: バージニア北部の EC2 インスタンスがパブリック IP を使用
• **対策**: プライベートサブネットへの移行または NAT Gateway 経由のアクセス設定

b) セキュリティグループの見直し
• **問題**: 
  • デフォルトセキュリティグループが不適切な設定
  • 未承認ポート(5678、50021、8101)への全開放
• **対策**: 
  • デフォルト SG のルール削除
  • 必要最小限のポートのみ許可

### 実装優先順位

1. 即座に実施(24 時間以内)
   • GuardDuty ファインディングの調査と対応
   • S3 バケットのパブリックアクセス無効化
   • セキュリティグループの緊急修正

2. 短期実施(1 週間以内)
   • Amazon Inspector 有効化
   • GuardDuty Runtime Monitoring 有効化
   • EC2 インスタンスのネットワーク設定見直し

3. 中期実施(1 ヶ月以内)
   • セキュリティ監視の自動化
   • インシデント対応プロセスの整備

これらの対策により、AWS Well-Architected Framework Security Pillar に準拠した包括的なセキュリティ体制を構築できます。

かなり良くないですか???

今回の環境、実は GuardDuty で Critical で検出している項目もありました。
実際に AWS のセキュリティ運用をしている方であれば分かる通り、Critical だからと言って必ずしも最優先に取り組むべきとは限りません。
実際に GuardDuty で Critical で検知していた箇所は誤検知のものでした。(たまたまかもしれません)

AI によるトリアージの善し悪しは置いておき、そういった本当に何を優先的に対応すべきかというのを考慮して、1 文調査を指示しただけでここまで提案してくれている点に感服しました。

感動したのでこの MCP の中身を詳しく見ていこうと思います。

AWS Well-Architected Security Assessment Tool MCP Server について

機能概要

AWS Well-Architected Security Assessment Tool MCP Server は、
AWS Well-Architected Framework の セキュリティの柱 に沿って AWS 環境を監視・評価するための運用ツールを提供する MCP サーバーです。

機能の種類としては以下となっています。

  • 運用セキュリティ監視
  • セキュリティ運用ダッシュボード
  • コンプライアンス運用
  • リソース運用管理
  • コスト効率に優れたデータ保護
  • ネットワーク運用セキュリティ
  • コンプライアンス監視
  • セキュリティ運用のコンテキスト

使用できるツール

この MCP サーバでは 6 つのツールが提供されています。

  1. CheckSecurityServices
  2. GetSecurityFindings
  3. GetStoredSecurityContext
  4. CheckStorageEncryption
  5. ListServicesInRegion
  6. CheckNetworkSecurity

それぞれ解説していきます。

CheckSecurityServices

このツールは、サポートしている以下のサービスの中で指定したセキュリティサービスが、指定したリージョンとアカウントで有効になっているかどうかを確認します。

  • GuardDuty
  • Security Hub
  • Inspector
  • IAM Access Analyzer
  • Trusted Advisor
  • Macie

(2025/09/28 時点)

このツールは、1 回の呼び出しで複数の AWS セキュリティサービスのステータスをチェックし、セキュリティ体制の包括的な概要を提供します。

必要な IAM の権限
  • GuardDuty をチェックする場合
    • guardduty:ListDetectors
    • guardduty:GetDetector
  • Inspector をチェックする場合
    • inspector2:GetStatus
  • IAM Access Analyzer をチェックする場合
    • accessanalyzer:ListAnalyzers
  • Security Hub CSPM をチェックする場合
    • securityhub:DescribeHub
  • Trusted Advisor をチェックする場合
    • support:DescribeTrustedAdvisorChecks

GetSecurityFindings

このツールは、各種セキュリティサービスから調査結果を取得できます。

まず CheckSecurityServices 呼び出しからのデータを使用し、指定されたセキュリティサービスがリージョンで有効になっているかどうかをチェックします。
その後、サービスが有効になっている場合にのみ調査結果を取得します。

必要な IAM の権限
  • 指定されたセキュリティサービスの読み取り権限

GetStoredSecurityContext

このツールは、CheckSecurityServices 呼び出しのコンテキストに格納されたセキュリティサービスのデータを取得します。

このツールを使用すると、CheckSecurityServices ツールによって保存されたセキュリティサービスのステータスデータに、AWS API を追加コールすることなくアクセスできます。
これは、次のステップでセキュリティサービスのステータスを参照する必要があるワークフローに便利です。

CheckStorageEncryption

このツールは、AWS のストレージリソースの暗号化が有効かどうかを確認します。

まず Resource Explorer を使ってストレージリソースを特定します。
それらのリソースが Well-Architected Framework セキュリティの柱のベストプラクティスに従い、保管時のデータ保護のために適切に構成されているかどうかをチェックします。

必要な IAM の権限
  • resource-explorer-2:ListResources
  • 分析対象の各ストレージサービスの読み取り権限(s3:GetEncryptionConfiguration など)

ListServicesInRegion

このツールは、特定のリージョンで使用されているすべての AWS サービスを一覧表示します。

AWS Resource Explorer または直接 API コールを通じてリソースを検出します。
その中で指定したリージョンでアクティブに使用されている AWS サービスを特定します。

必要な IAM の権限
  • resource-explorer-2:Search
  • 様々な AWS サービスの読み取り権限

CheckNetworkSecurity

このツールは、AWS のネットワークリソースが転送時のデータがセキュアに設定されているかどうかを確認します。

Resource Explorer を使用してネットワークリソースを特定します。
その後、 Well-Architected Framework セキュリティの柱のベストプラクティスに従って、転送中のデータ保護のために適切に構成されているかどうかをチェックします。

必要な IAM の権限
  • resource-explorer-2:ListResources
  • 分析対象の各ネットワークサービス (elb:DescribeLoadBalancers など) の読み取り権限

サンプルプロンプト

AWS Well-Architected Security Assessment Tool MCP Server の GitHub ページをよく見るとサンプルのプロンプトがいくつかあったため参考にしてみると良さそうです。

https://github.com/awslabs/mcp/blob/main/src/well-architected-security-mcp-server/PROMPT_TEMPLATE.md

指示したい内容によっては明示的にリージョンやプロファイル、リソース ID を指定してあげることでより精度の高い回答が得られそうですね。

気を付けるべきこと

セキュリティに関する情報を参照させることになるため、与えるプロファイルの権限に注意を払う必要があります。

各種セキュリティサービスの公式ドキュメントを参照し最小権限を与えましょう。

おわりに

今回は、AWS Well-Architected Security Assessment Tool MCP Server という MCP を見ていきました。

前回、AI を活用したセキュリティ運用に関する ブログ について執筆しましたが、今回の MCP を組み合わせることでより精度の高い検知通知に対する一次調査の実行ができるのではないかと思いました。
後日検証をし、得られるものがあればブログ化したいと思います。

この記事がどなたかの役に立つと嬉しいです。

株式会社サイバーセキュリティクラウド テックブログ

Discussion