GuardDuty Investigation の trigger-prompt を AWS CLI でいろいろ試してみた
- URL: https://dev.classmethod.jp/articles/guardduty-investigation-trigger-prompt-cli
- 日付: 2026-06-24
- Tier: Tier 2
- 要旨: GuardDuty Investigation の trigger-prompt は AWS CLI で自由な自然言語を記述できるが、プロンプトの内容によって分析結果が大きく変わることが実験で確認された。同じ Finding(Severity 9の EC2CompromisedInstanceGroup)に異なるプロンプトを与えると、RiskLevel と Confidence の評価が変動する。シンプルなプロンプトでは Critical と High の評価だったが、IAM認証情報に焦点を当てたプロンプトでは High と Medium に低下した。
詳細
GuardDuty Investigation CLI コマンドは AWS CLI 2.35.11 以降が必要である。基本フローは create-investigation でInvestigation を作成してから get-investigation で結果を確認する。Detector IDはすべての操作に必要で aws guardduty list-detectors –region で事前取得する。trigger-prompt は自由な自然言語で記述できるが、意図を正しく認識できないと Status が FAILED になる。例えば「Analyze findings in my account」ではエラーになったが、「Analyze my account id: XXXXXXXXXXXX」のようにアカウント IDを明示するとエラーメッセージのヒントに従って成功する。3つのパターンで同じ Finding を分析した結果:1) シンプルなプロンプト「Analyze findingId: xxx」では RiskLevel=Critical、Confidence=High、リソース名はテスター環境を示していても評価は下げず。2) テスター環境を伝えるプロンプト「This instance is part of our GuardDuty tester stack…」でも RiskLevel=Critical、Confidence=High で変わらず、リソース名やスタック名は攻撃者が制御できる情報として評価低下に使わない。3) IAM 認証情報に焦点を当てるプロンプト「Focus on whether IAM credentials attached to this instance may have been compromised…」では RiskLevel=High、Confidence=Medium に低下。この場合、cryptomining の DNS クエリが GuardDuty のテスト用カナリアドメイン由来である可能性が言及され、その不確実性が Confidence の低下につながった。trigger-prompt はFinding IDを渡すだけでなく分析観点を具体的に指示することで、調査目的に合った出力が得られやすい。EventBridge と Lambda を組み合わせた自動化フローでは trigger-prompt にテンプレートを埋め込んでおくことで一貫した分析結果が得られる。