🏢 ビルのセキュリティシステムで例えると超わかりやすい!
GuardDutyは「AI搭載の警備員」のようなもの!
ビルの警備員が監視カメラの映像をチェックして不審者を発見するように、
GuardDutyは
3種類の「監視カメラ」(ログソース)
の情報を分析して
AWSアカウント内の脅威を自動検出します。
カメラを全部設置しないと死角ができるように、
すべてのログソースを正しく設定
しないと検知漏れが発生します!
🎬 GuardDutyを映画の警備システムで理解しよう
🔐 高層ビルのセキュリティシステム
あなたは高層ビルの警備責任者です。
ビルには3種類の監視システムがあります:
📋
入退館記録システム
(= CloudTrail)
→ 誰がいつビルに入ったか、どの部屋に行ったかを記録
📦
倉庫監視カメラ
(= S3データイベント)
→ 貴重品倉庫で何が取り出され、何が保管されたかを監視
🚗
駐車場・エレベーター監視
(= VPCフローログ)
→ ビル内の人や車の移動パターンを監視
GuardDutyはこれら全ての情報を統合分析するAI警備員です!
🔍 Detector(検出器)とは?
GuardDutyの「心臓部」となるリソース
Detector(検出器)は、GuardDutyを有効化すると自動作成されるリソースです。
リージョンごとに1つ存在し、そのリージョン内の脅威検出を担当します。
ほぼ全てのGuardDuty API操作で
Detector ID
が必要になります。
• 高層ビルの各フロア(= AWSリージョン)に1つずつ警備室がある
• 警備室が監視カメラの映像を受け取り、分析する
• 不審者を発見したら「Finding」というレポートを作成
• 警備室のID(= Detector ID)で、どのフロアの警備室か識別できる
- 作成タイミング: GuardDuty有効化時に自動作成
- スコープ: リージョンごとに1つ
- 識別子: 32文字の一意なDetector ID
- 役割: データソース分析、Finding生成、設定管理
- 1リージョン = 1 Detector の関係
- 東京リージョンと大阪リージョンでは別々のDetectorが必要
- 同一リージョンに複数のDetector作成は不可
- 全リージョン監視には各リージョンでGuardDutyを有効化
Detectorを削除 = そのリージョンのGuardDutyが停止
削除前に必ずFindingをS3へエクスポートしましょう
# Detector IDを取得 aws guardduty list-detectors # 出力例: {"DetectorIds": ["12abc34d567e8fa901bc2d34e56789f0"]} # Detectorの詳細を確認 aws guardduty get-detector --detector-id $DETECTOR_ID # GuardDutyを有効化(Detectorを新規作成) aws guardduty create-detector --enable # Detectorを一時無効化 aws guardduty update-detector \ --detector-id $DETECTOR_ID \ --no-enable # Detectorを削除(GuardDuty無効化) aws guardduty delete-detector \ --detector-id $DETECTOR_ID
CLI:
aws guardduty list-detectors
推奨: CloudFormation StackSetsを使用して一括有効化
削除前にS3へエクスポートすることを強く推奨します。
Detector IDはGuardDuty有効化時に自動生成される固定値です。
変更が必要な場合は、削除→再作成が必要ですが、Findingが失われます。
📊 GuardDutyが依存する3つのログソース
誰がいつ何をしたかの記録
• IAMアクティビティ
• リソースの作成・変更・削除
GuardDutyが内部で独自に収集するため、
別途CloudTrailを設定する必要なし
• 認証情報の不正使用
• 疑わしいリソース作成
• 特権昇格の試み
貴重品の出し入れを監視
• PutObject(アップロード)
• DeleteObject(削除)
• ListBucket(一覧取得)
「S3保護」機能を有効にする必要あり
※追加コストが発生
• 不審なデータアクセスパターン
• マルウェアのアップロード
• 匿名アクセス検知
人・車の移動パターンを監視
• ポート番号
• プロトコル
• パケット数・バイト数
GuardDutyが内部で独自に収集するため、
別途VPCフローログを設定する必要なし
• C&Cサーバーとの通信
• 暗号通貨マイニング
• DoS攻撃の兆候
🔄 GuardDutyのデータ処理フロー
管理イベント
脅威分析エンジン
(検知結果)
イベント
異常検知
EventBridge
ログ
照合
Lambda
🎯 最大カバレッジを実現する設定チェックリスト
→ ステータス:「有効」を確認
→ 全リージョンで有効化を推奨
→ 「有効化」をクリック
※追加コスト:S3イベント量に依存
→ EKS監査ログモニタリング:有効
→ EKSランタイムモニタリング:有効
→ 「GuardDutyが開始したスキャン」:有効
→ オンデマンドスキャンも設定可能
→ RDSログイン
アクティビティモニタリング:有効
→ Lambda Network Activity
Monitoring:有効
📊 ログソース・保護機能 比較表
| データソース | デフォルト | 追加設定 | 追加コスト | 検知範囲 |
|---|---|---|---|---|
| 📋 CloudTrail管理イベント | ✅ 自動有効 | 不要 | 基本料金に含む | API操作全般 |
| 🚗 VPCフローログ | ✅ 自動有効 | 不要 | 基本料金に含む | ネットワーク通信 |
| 🌐 DNS クエリログ | ✅ 自動有効 | 不要 | 基本料金に含む | DNS解決パターン |
| 📦 S3データイベント | ❌ 無効 | 要有効化 | イベント量に依存 | S3オブジェクト操作 |
| 🔑 EKS監査ログ | ❌ 無効 | 要有効化 | イベント量に依存 | Kubernetes操作 |
| 💻 EBSマルウェアスキャン | ❌ 無効 | 要有効化 | スキャン量に依存 | ファイルベースの脅威 |
| 🗄️ RDSログインアクティビティ | ❌ 無効 | 要有効化 | イベント量に依存 | DB認証・アクセス |
| λ Lambdaネットワーク | ❌ 無効 | 要有効化 | イベント量に依存 | Lambda通信パターン |
✅ 最大カバレッジ達成チェックリスト
基本設定(全環境必須)
- GuardDutyを全リージョンで有効化
- マスターアカウントで委任管理者を設定
- 全メンバーアカウントを招待・追加
- Finding のエクスポート先(S3)を設定
- EventBridge ルールでアラート設定
データ保護(S3利用時)
- S3保護を有効化
- 重要バケットを特定
- マルウェア保護を有効化
- 自動スキャン設定を確認
30日間の無料トライアルで
コスト見積もりを確認しましょう。
コンテナ保護(EKS利用時)
- EKS監査ログモニタリングを有効化
- EKSランタイムモニタリングを有効化
- GuardDutyエージェント自動管理を有効化
- ECSランタイムモニタリングも検討
運用設定(継続的改善)
- 信頼できるIPリストを設定
- 脅威リスト(カスタム)を追加
- 抑制ルールで誤検知を管理
- 定期的なFinding レビューを実施
- Security Hub との統合を確認
💰 コストに関する重要な注意点
VPCフローログ、DNSログは
基本料金に含まれる
(分析量に応じた従量課金)
Lambda保護、マルウェア保護は
追加コストが発生
(30日無料トライアルあり)
各機能のコストを確認
必要な機能のみ有効化
で最適化しましょう
# GuardDuty 検出器IDを取得 DETECTOR_ID=$(aws guardduty list-detectors --query 'DetectorIds[0]' --output text) # S3保護を有効化 aws guardduty update-detector \ --detector-id $DETECTOR_ID \ --data-sources '{"S3Logs":{"Enable":true}}' # EKS保護を有効化 aws guardduty update-detector \ --detector-id $DETECTOR_ID \ --features '[{"Name":"EKS_AUDIT_LOGS","Status":"ENABLED"},{"Name":"EKS_RUNTIME_MONITORING","Status":"ENABLED"}]' # マルウェア保護を有効化 aws guardduty update-detector \ --detector-id $DETECTOR_ID \ --features '[{"Name":"EBS_MALWARE_PROTECTION","Status":"ENABLED"}]' # RDS保護を有効化 aws guardduty update-detector \ --detector-id $DETECTOR_ID \ --features '[{"Name":"RDS_LOGIN_EVENTS","Status":"ENABLED"}]' # Lambda保護を有効化 aws guardduty update-detector \ --detector-id $DETECTOR_ID \ --features '[{"Name":"LAMBDA_NETWORK_LOGS","Status":"ENABLED"}]' # 現在の設定を確認 aws guardduty get-detector --detector-id $DETECTOR_ID
GuardDutyを有効化するだけでCloudTrail、VPCフローログ、DNSログの分析が自動開始。これだけで基本的な脅威は検知可能。
2. 利用サービスに応じて拡張:
• S3に重要データ → S3保護を有効化
• EKSを利用 → EKS保護を有効化
• RDSを利用 → RDS保護を有効化
• Lambdaを利用 → Lambda保護を有効化
3. Organizations統合を活用:
委任管理者を設定して、全アカウントを一元管理。新規アカウント作成時も自動でGuardDutyが有効化されるように設定。
4. コストを監視しながら最適化:
「使用状況」ページで各機能のコストを定期確認。不要な機能は無効化してコスト最適化。
5. Security Hubと連携:
GuardDutyのFindingをSecurity Hubに集約して、他のセキュリティサービスと統合管理。優先度付けと対応の効率化を実現。
🎓 まとめ
🏢 ビルの警備システム = GuardDuty
3種類の「監視カメラ」(ログソース)で
AWSアカウント全体を守るAI警備員です
入退館記録
自動有効
倉庫監視カメラ
要有効化
動線監視カメラ
自動有効
🎯 最大カバレッジの鉄則:
1️⃣ GuardDuty有効化で
基本3ソースは自動ON
2️⃣ S3保護・EKS保護等は
手動で有効化が必要
3️⃣ 利用サービスに応じて
必要な保護機能を追加
4️⃣ Organizations統合で
全アカウント一元管理
全ての「監視カメラ」を設置して
死角のないセキュリティ体制
を構築しましょう!🛡️✨