はじめに
kyonosukeです。
今回はaws-diagram-mcp-server
を使用してGuardDutyのインシデントの可視化を行います。
セキュリティの観点から脆弱なアーキテクチャについて、MCPの力を借りて可視化をすることでGuardDuty運用の効率化につながると考えています。
目次
MCP設定方法
前提として、本記事では Amazon Q Developer 環境でMCPを利用します。
/.aws/amazonq/mcp.json
に以下を追加します。
"mcpServers": {
"awslabs.aws-diagram-mcp-server": {
"command": "uvx",
"args": ["awslabs.aws-diagram-mcp-server"],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
},
"autoApprove": [],
"disabled": false
}
}
やってみる
さっそくMCPサーバを動かしてみましょう。
インシデントの可視化
今回はGuardDutyの検知タイプのひとつであるPolicy:S3/BucketAnonymousAccessGrantedを題材とします。S3バケットのバケットポリシーが変更され、パブリックアクセスが可能になったことを検知したインシデントです。
以下のプロンプトを与えて、インシデント状況の可視化をさせてみます。
GuardDutyの検出結果"52cbf6ee67eefdc5db20422539352f42"について、アーキテクチャを作図して可視化してください。
まずはDetectorIDを取得してきます。
🛠️ Using tool: use_aws (trusted)
⋮
● Running aws cli command:
Service name: guardduty
Operation name: list-detectors
Profile name: audit
Region: ap-northeast-1
Label: GuardDuty Detector IDの取得
⋮
● Completed in 1.315s
Detector IDが取得できました。次に、指定された検出結果の詳細を取得します。
取得したDetectorIDを使用して、検出結果の分析を始めます。
🛠️ Using tool: use_aws (trusted)
⋮
● Running aws cli command:
Service name: guardduty
Operation name: get-findings
Parameters:
- finding-ids: ["XXXXXXXXXXXX"]
- detector-id: "XXXXXXXXXXXX"
Profile name: audit
Region: ap-northeast-1
Label: GuardDuty検出結果の詳細取得
⋮
● Completed in 0.975s
GuardDutyの検出結果を分析しました。これはS3バケットに対する重要なセキュリティ問題です。次に、この問題を可視化するアーキテクチャ図
を作成します。
S3バケットのセキュリティインシデントであることを分析してくれました。
作図されたアーキテクチャが以下の通りです。
すごくきれいに作図されていますね!
画像下部のAWSアカウント内の矢印を左から読むと時系列に沿っているのですが、
- Admin権限を持ったプリンシパルからPutBucketPolicyが呼ばれる
- 操作した対象はIdentity CenterのAdminであることが分かる
- パブリックアクセスが許可されるバケットポリシーをS3バケットに適用
- 危険な設定になっていることをGuardDutyが検知し、ユーザに通知
という風になぜインシデントが発生したのかを可視化することができています。
この設定ミスにより、画像上部にあるようにS3バケットがパブリックにアクセスできるようになり、Malicious User、つまり悪意のあるユーザに攻撃される可能性があることを示唆しています。
対応方法の可視化
続いてインシデントの対応方法についても可視化をしてみます。
以下のプロンプトを与えます。
本インシデントの対応手順を可視化した図を作成してください。
作成された図がコチラです。
めちゃいい感じです。対応手順をざっくり翻訳すると
- インシデント発生
- S3バケットのブロックパブリックアクセスを有効化
- 過剰なバケットポリシーを削除
- バケットポリシーを確認
- Configルールを作成して再発防止策
これだけ可視化してくれれば、誰でもインシデント対応について説明ができそうです。
ユースケース
ここからは実際のプロジェクトでのユースケースを考えます。
スキル不足を補う
まずはこれでしょう。インシデント対応には専門的な知識が要求されますが、aws-diagram-mcp-server
でインシデントを可視化することで初心者でも理解でき、初動対応が早くなります。セキュリティエンジニアでなくとも対応ができるようになり、人材不足に貢献できる可能性があります。
顧客への説明資料として
顧客がAWSやセキュリティについて精通しているとは限りません。重大なインシデントが発生して説明を求められたときやレポートを作成する際、aws-diagram-mcp-server
を使って可視化すれば説得力が向上しそうです。
まとめ
今回はaws-diagram-mcp-server
を使ってGuardDutyのインシデントの可視化を行ってみました。
可視化をすることで状況の把握が簡単にでき、即座に適切な対応ができるようになるでしょう。
今後もAmazon Q を活用したセキュリティ運用を考察します。
本記事がセキュリティ運用に困っているあなたの力になれば幸いです。