Aws Security Mcp について
AWS Security MCP は、Claude などの AI アシスタントが自然言語で AWS インフラストラクチャのセキュリティ上の問題や設定ミスを照会・分析できるようにする MCP サーバーです。複数の AWS アカウントをまたいでリソースを検出し、GuardDuty、SecurityHub、Access Analyzer の結果を統合します。
主な機能
- 01AWS Organizations によるクロスアカウント検出
- 02GuardDuty、SecurityHub、Access Analyzer の結果統合
- 03Athena による CloudTrail・VPC フローログの分析
- 04ネットワークマッピングとブラストラジウス分析
活用シーン
- 01EC2 や Lambda などのリソースのセキュリティ設定確認
- 02管理者権限を持つ IAM ロールの分析
- 03調査時の GuardDuty 検出結果とログイベントの相関分析
MCP 対応
本プロジェクトは MCP サーバーとして、Claude Desktop や Cline などの MCP クライアントに AWS セキュリティ分析機能を提供し、AI アシスタントから照会・分析を実行できるようにします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
AWS Security MCP
AI アシスタントが自然言語のクエリを通じて、AWS の包括的なセキュリティ分析を実行できるようにする Model Context Protocol(MCP)サーバーです。
概要
AWS Security MCP は、Claude などの AI アシスタントと AWS セキュリティサービスを連携させ、会話形式のクエリを通じてインフラストラクチャをリアルタイムに分析できるようにします。このシステムは複数の AWS アカウントにまたがるリソースを自動的に検出して分析するため、AWS CLI の深い知識がなくてもセキュリティに関する分析情報を得られます。
主な機能
- アカウント横断の検出:AWS Organization アカウントを自動的に検出し、アクセスします
- 自然言語インターフェース:平易な英語で AWS リソースをクエリします
- セキュリティ分析:GuardDuty、SecurityHub、Access Analyzer の検出結果を統合します
- インフラストラクチャのマッピング:ネットワークトポロジ、脅威モデリング、セキュリティレビュー、爆発範囲の分析
- ログ分析:Athena を活用して、CloudTrail、VPC Flow Logs、セキュリティイベントを分析します
前提条件
- Python:3.11 以上
- パッケージマネージャー:uv
- AWS アカウント:適切な IAM 権限が必要です
- MCP クライアント:Claude Desktop、Cline、または互換性のあるクライアント
AWS の要件
MCP サーバーの AWS 認証情報には、次の権限が必要です。
MCP のコア権限
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CrossAccountAccess",
"Effect": "Allow",
"Action": [
"sts:AssumeRole"
],
"Resource": "arn:aws:iam::*:role/aws-security-mcp-cross-account-access"
},
{
"Sid": "OrganizationDiscovery",
"Effect": "Allow",
"Action": [
"organizations:ListAccounts"
],
"Resource": "*"
}
]
}
Athena 統合の権限
高度なログ分析機能を利用するには、追加の権限が必要です。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AthenaQueryExecution",
"Effect": "Allow",
"Action": [
"athena:BatchGetQueryExecution",
"athena:GetQueryExecution",
"athena:GetQueryResults",
"athena:GetWorkGroup",
"athena:GetTableMetadata",
"athena:ListQueryExecutions",
"athena:StartQueryExecution",
"athena:GetQueryResultsStream",
"athena:GetDataCatalog",
"athena:ListDataCatalogs",
"athena:ListDatabases",
"athena:ListTableMetadata"
],
"Resource": "*"
},
{
"Sid": "GlueCatalogAccess",
"Effect": "Allow",
"Action": [
"glue:GetDatabase",
"glue:GetDatabases",
"glue:GetTable",
"glue:GetTables",
"glue:GetPartition",
"glue:GetPartitions",
"glue:BatchGetPartition"
],
"Resource": "*"
},
{
"Sid": "S3LogDataAccess",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::your-cloudtrail-bucket/*",
"arn:aws:s3:::your-cloudtrail-bucket",
"arn:aws:s3:::your-vpc-flow-logs-bucket/*",
"arn:aws:s3:::your-vpc-flow-logs-bucket",
"arn:aws:s3:::your-security-logs-bucket/*",
"arn:aws:s3:::your-security-logs-bucket"
]
},
{
"Sid": "AthenaResultsAccess",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::your-athena-results-bucket/*",
"arn:aws:s3:::your-athena-results-bucket"
]
}
]
}
必須の AWS 管理ポリシー
SecurityAudit ポリシー(必須)
AWS 管理の SecurityAudit ポリシーを、MCP サーバーの IAM ユーザーまたは IAM ロールにアタッチしてください。
Policy ARN: arn:aws:iam::aws:policy/SecurityAudit
このポリシーは、AWS のセキュリティサービスへの包括的な読み取り専用アクセスを提供し、AWS Security MCP の機能に不可欠です。次の権限が含まれます。
- IAM:ユーザー、ロール、ポリシー、アクセス分析
- EC2:セキュリティグループ、インスタンス、VPC の設定
- S3:バケットポリシー、ACL、パブリックアクセス設定
- GuardDuty:検出結果、ディテクター、脅威インテリジェンス
- SecurityHub:セキュリティ標準、コンプライアンスの検出結果
- Access Analyzer:IAM アクセス分析と検出結果
- Lambda:関数の設定と権限
- CloudFront:ディストリビューションのセキュリティ設定
- Route53:DNS の設定とヘルスチェック
- WAF:Web ACL のルールと設定
- その他すべてのセキュリティ関連 AWS サービス
任意の管理ポリシー
- AthenaFullAccess:
arn:aws:iam::aws:policy/AmazonAthenaFullAccess(Athena を使ったログ分析を簡素化する場合)
重要な注意事項
- この MCP サーバーは、Claude Desktop Pro/Max プラン、または 100,000 を超えるトークンサイズを扱える他のプラットフォームで使用することをおすすめします
- S3 権限にあるバケット名を、実際の CloudTrail、VPC Flow Logs、Athena の結果用バケット名に置き換えてください
- SecurityAudit ポリシーは、AWS Security MCP の基本機能に必須です
- Athena 統合の権限は任意であり、高度なログ分析機能にのみ必要です
- すべての権限は最小権限の原則に従い、可能な場合は読み取り専用アクセスを使用します
クイックスタート ~ ローカルセットアップ
- config.yml を更新する
aws:
region: "us-east-1"
profile: {profileName}
.
.
.
- ~ ローカルセットアップを使用して AWS 認証情報を設定する
- aws sso
$ aws configure sso SSO Session Name - [email protected] URL - https://yourDomain.awsapps.com/start/# Region - us-east-1 - 環境変数
export AWS_ACCESS_KEY_ID= export export AWS_SECRET_ACCESS_KEY= export export AWS_SESSION_TOKEN=
-
次のコマンドを実行する
git clone https://github.com/groovyBugify/aws-security-mcp.git uv venv source .venv/bin/activate uv pip install -r requirements.txt -
MCP クライアントを設定する
# Install mcp-proxy uv tool install mcp-proxy # Check location of mcp-proxy which mcp-proxy # Add to Claude Desktop config { "mcpServers": { "aws-security": { "command": "/path/to/mcp-proxy", "args": ["http://localhost:8000/sse"] } } }
クイックスタート ~ AWS ECS サービスとして
- AWS ECR にログイン
$ aws ecr get-login-password --region {region} | docker login --username AWS --password-stdin {accountID}.dkr.ecr.{region}.amazonaws.com
- ECR リポジトリを作成
$ aws ecr create-repository --repository-name aws-security-mcp --region {region}
- Docker イメージをビルド
$ cd aws-security-mcp/
$ docker buildx build --platform linux/amd64 -t aws-security-mcp .
$ docker tag aws-security-mcp:latest {accountID}.dkr.ecr.{region}.amazonaws.com/aws-security-mcp:latest
$ docker push {accountID}.dkr.ecr.{region}.amazonaws.com/aws-security-mcp:latest
-
AWS ECS サービスとしてデプロイ
- CPU を「2048」、メモリを「4096」に設定したタスク定義を作成します。これは任意で、任意の値を選択できます
- ポート 8000 のポートマッピングを行うようタスク定義を設定します
- 以下の権限を持つ ECS タスクロールを作成します
- SecurityAudit IAM ポリシー
- Athena アクセス(上記で説明したポリシー)
- クロスアカウントロールを引き受けるための STS Assume Role 権限
- 基本的な権限を持つ ECS タスク実行ロールを作成します
- タスク定義が完了したら、
- タスク定義を使用して AWS ECS サービスを作成します
- ロードバランサーも設定できます
- ロードバランサーのスティッキーセッションは必ずオフにしてください
- ALB のターゲットグループとリスナーをポート 80/443 から ECS サービス(8000)へ登録します
- ALB を Route53 ドメインに登録します
-
MCP クライアントを設定
# Install mcp-proxy uv tool install mcp-proxy # Check location of mcp-proxy which mcp-proxy # Add to Claude Desktop config { "mcpServers": { "aws-security": { "command": "/path/to/mcp-proxy", "args": ["http://{alb}/sse"] } } }
設定
YAML 設定
プロジェクトのルートにある config.yaml を必要に応じて編集します。
aws:
region: "us-east-1"
profile: null
server:
log_level: "info"
startup_quiet: false
tool_quiet: false
cross_account:
role_name: "aws-security-mcp-cross-account-access"
auto_setup_on_startup: true
max_concurrent_assumptions: 5
環境変数による上書き
環境変数は YAML 設定より優先されます。
export MCP_LOG_LEVEL=debug
export MCP_STARTUP_QUIET=false
export AWS_DEFAULT_REGION=eu-west-1
使用例
基本的なインフラストラクチャクエリ
Query: "Can you share a list of running ec2 instances?"
Query: "Share all the secrets stored on env variables of Lambda functions, and share a list of functions for remediating this issue."
Query: "Check my 'prod-ecs-cluster' and share more details about the 'user-login' service, is it deployed?"
セキュリティ分析
Query: "Show all GuardDuty findings from the last 7 days, and priortise based on the risk of exposure."
Query: "Analyze IAM roles with administrative privileges"
Query: "Generate blast radius analysis for IP 172.16.1.10"
Query: "Fetch more details about the ip - 172.22.141.11, and share a network map for this resource.
クロスアカウント操作
Query: "List all connected AWS accounts"
Query: "Refresh my AWS session"
Query: "Find resources tagged Team:Security across all accounts"
Query: "Show compliance status across organization"
アーキテクチャ
クロスアカウントアクセス
AWS Security MCP は、複数アカウントへのアクセスにハブアンドスポークモデルを実装しています。
- 検出:
organizations:ListAccountsを使用して対象アカウントを特定します - ロールの引き受け:各アカウントで
aws-security-mcp-cross-account-accessロールを引き受けます - セッション管理:自動更新機能を備えた一時的な認証情報を維持します
- フォールバック:Organizations に属さないアカウントでは、デフォルトの認証情報チェーンを使用します
必須の IAM ロール設定
各対象 AWS アカウントにこのロールを作成します。
ロール名:aws-security-mcp-cross-account-access
信頼ポリシー:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::YOUR-MASTER-ACCOUNT-ID:root"
},
"Action": "sts:AssumeRole"
}
]
}
権限:AWS 管理ポリシー arn:aws:iam::aws:policy/SecurityAudit をアタッチします
Athena 統合
概要
AWS Security MCP は Amazon Athena と統合し、高度なログ分析機能を提供します。この機能を使用するには、セキュリティ関連ログを含む Athena テーブルがあらかじめ存在している必要があります。
サポート対象のログタイプ
MCP サーバーは Athena を通じてあらゆるログソースを分析できますが、MCP クライアントに包括的なセキュリティメタデータを提供するため、以下のソースを推奨します。最適なセキュリティカバレッジを実現するため、少なくとも CloudTrail と VPC Flow Logs を導入することを推奨します。
推奨ログソース:
- AWS CloudTrail:API 呼び出しの監査とユーザーアクティビティの追跡
- VPC Flow Logs:ネットワークトラフィックパターンの分析
- CloudFront Logs:CDN のリクエストとレスポンスの分析
- ALB Access Logs:アプリケーションロードバランサーのトラフィック分析
- WAF Logs:ウェブアプリケーションファイアウォールのイベントとブロック(Cloudflare/AWS WAF/Akamai)
- AWS Shield Logs:DDoS 保護および緩和イベント
カスタムログソースの柔軟なサポート
MCP サーバーは、S3 に保存されたあらゆる種類のログに対するクエリをサポートしているため、カスタムまたは追加のログソースを柔軟に分析できます。あらゆるログソースの分析を有効にするには、次の条件を満たしてください。
- S3 ストレージ:ログが S3 バケットに保存されていること
- Athena テーブル:ログ形式に対応する適切に設定された Athena テーブルが存在すること
- IAM 権限:MCP サーバーが対象バケットに対する
s3:GetObjectおよびs3:ListBucket権限を持っていること
このアーキテクチャにより、標準的な AWS ログに加え、アプリケーションログ、カスタムセキュリティイベント、サードパーティ製セキュリティツールの出力まで、セキュリティ分析を拡張できます。
クエリ機能
テーブルを設定すると、高度なクエリを実行できます。
Query: "Show all failed login attempts from external IPs in the last 24 hours"
Query: "Can you share what did '[email protected]' did in past 24 hours on my aws account? and share a timeline report?"
Query: "Can you check for all the 'Access Denied/Error/Forbidden' on my PCI(123456789012) aws account and share the username and userIP of the principal, and do a reverse IP checkup if this IP is coming from my own AWS Org or external party."
Query: "Correlate GuardDuty findings with CloudTrail and VPC Flow logs events"
セットアップの前提条件
- S3 バケット:CloudTrail と VPC フローログを S3 に保存する必要があります
- Athena ワークグループ:結果の保存先を設定した適切なワークグループを構成します
- パーティショニング:パフォーマンス向上のためにパーティションプロジェクションを有効にします
- IAM 権限:MCP の実行ロールに Athena のクエリ権限を付与します
対応している AWS サービス
現在利用可能
| サービス | 機能 |
|---|---|
| IAM | ユーザー、ロール、ポリシー、アクセスキー、権限分析 |
| EC2 | インスタンス、セキュリティグループ、VPC、サブネット、ネットワークインターフェイス |
| S3 | バケット、権限、パブリックアクセス分析 |
| GuardDuty | 検出結果、検出器、脅威インテリジェンス |
| SecurityHub | 検出結果、コンプライアンス標準、セキュリティスコア |
| Lambda | 関数、権限、設定、トリガー |
| CloudFront | ディストリビューション、オリジン、ビヘイビア、セキュリティポリシー |
| ELB/ALB/NLB | ロードバランサー、ターゲットグループ、リスナー、ヘルスチェック |
| Route53 | ホストゾーン、DNS レコード、ヘルスチェック |
| WAF | Web ACL、ルール、レート制限 |
| Shield | DDoS 保護のステータスとメトリクス |
| Access Analyzer | IAM アクセス分析と検出結果 |
| ECS/ECR | コンテナサービス、リポジトリ、イメージスキャン |
| Organizations | アカウント構成、SCP、組織単位 |
| Athena | ログ分析、セキュリティイベントの相関分析 |
追加予定
- Oauth 認証
- AWS Config コンプライアンス分析
- AWS Security Hub CSPM 統合
- 外部 CSPM 統合
高度な設定
本番環境へのデプロイ
本番環境では、次の設定を使用してください。
server:
host: "0.0.0.0"
log_level: "error"
startup_quiet: true
tool_quiet: true
minimal_logging: true
cross_account:
max_concurrent_assumptions: 10
session_duration_seconds: 7200
Docker デプロイ
FROM python:3.11-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
EXPOSE 8000
CMD ["python", "aws_security_mcp/main.py", "sse"]
docker build -t aws-security-mcp .
docker run -p 8000:8000 \
-e AWS_ACCESS_KEY_ID=your_key \
-e AWS_SECRET_ACCESS_KEY=your_secret \
aws-security-mcp
ロードバランサーの設定
- ヘルスチェック:
GET /health - SSE エンドポイント:
/sse - タイムアウト:最低 60 秒
- スティッキーセッション:不要
トラブルシューティング
よくある問題
ツールの検出に失敗する
# Check AWS credentials
aws sts get-caller-identity
# Verify cross-account role exists
aws iam get-role --role-name aws-security-mcp-cross-account-access
クロスアカウントアクセスが拒否される
# Test role assumption manually
aws sts assume-role \
--role-arn arn:aws:iam::TARGET-ACCOUNT:role/aws-security-mcp-cross-account-access \
--role-session-name test-session
パフォーマンスの問題
# Reduce concurrent operations
cross_account:
max_concurrent_assumptions: 3
# Enable minimal logging
server:
minimal_logging: true
デバッグモード
トラブルシューティングのために詳細なログを有効にします。
export MCP_LOG_LEVEL=debug
export MCP_STARTUP_QUIET=false
python3 aws_security_mcp/main.py sse
ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細については LICENSE ファイルをご覧ください。
サポート
- 問題:GitHub Issues
- ドキュメント:プロジェクト Wiki
- セキュリティ上の問題:メンテナーに非公開で報告してください
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。