Amazon CloudWatch Events を使用した GuardDuty 結果へのカスタムレスポンスの作成 - Amazon GuardDuty

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon CloudWatch Events を使用した GuardDuty 結果へのカスタムレスポンスの作成

GuardDuty は、結果に変更があったときに Amazon CloudWatch Events のイベントを作成します。 CloudWatch イベントを作成する変更には、新しく生成された結果や新しく集約された結果が含まれます。イベントは、ベストエフォートベースで発生します。

すべての GuardDuty 結果には結果 ID が割り当てられます。 は、一意の結果 ID を持つすべての結果に対して CloudWatch イベント GuardDuty を作成します。その後に発生した既存の検出結果は、すべて元の検出結果に集約されます。詳細については、「GuardDuty アグリゲーションの検索」を参照してください。

注記

アカウントが GuardDuty 委任された管理者である場合、 CloudWatch イベントはアカウントだけでなく、結果が生成されたメンバーアカウントにも発行されます。

で CloudWatch イベントを使用すると GuardDuty、タスクを自動化して、 GuardDuty 検出結果によって明らかになったセキュリティ問題に対応できます。

CloudWatch イベントに基づいて GuardDuty 検出結果に関する通知を受信するには、 CloudWatch イベントルールと のターゲットを作成する必要があります GuardDuty。このルールにより CloudWatch 、 は、 が GuardDuty 生成する検出結果の通知を、ルールで指定されたターゲットに送信できます。詳細については、「の CloudWatch イベントルールとターゲットの作成 GuardDuty (CLI)」を参照してください。

CloudWatch のイベント通知頻度 GuardDuty

一意の調査結果 ID を含む新しく生成された結果の通知

GuardDuty は、検出結果から 5 分以内に CloudWatch イベントに基づいて通知を送信します。このイベント (およびこの通知) には、この検出結果が一意の ID を伴って生成されてから最初の 5 分に発生したこの検出結果のそれ以降のすべての発生も含まれています。

注記

デフォルトでは、新しく生成された検出結果に関する通知の頻度は 5 分です。この頻度は更新できません。

以降に検出結果が見つかった場合の通知

デフォルトでは、一意の検出結果 ID を持つすべての検出結果について、 は 6 時間間隔内で発生した特定の検出結果タイプの後続のすべての出現を 1 つのイベントに GuardDuty 集約します。 GuardDuty その後、このイベントに基づいてこれらの後続の発生に関する通知を送信します。デフォルトでは、既存の検出結果の後続の発生について、 は 6 時間ごとに CloudWatch イベントに基づいて通知 GuardDuty を送信します。

管理者アカウントアカウントのみが、その後の検出結果の発生に関する通知のデフォルトの頻度を CloudWatch イベントにカスタマイズできます。メンバーアカウントのユーザーはこの頻度をカスタマイズできません。自分のアカウントで管理者アカウントによって設定された頻度値は、すべてのメンバーアカウントの機能に適用されます GuardDuty。管理者アカウントのユーザーがこの頻度値を 1 時間に設定すると、すべてのメンバーアカウントは、それ以降の結果に関する通知を受け取る頻度も 1 時間になります。詳細については、「Amazon での複数のアカウントの管理 GuardDuty」を参照してください。

注記

管理者アカウントは、その後の検出結果の発生に関する通知のデフォルトの頻度をカスタマイズできます。有効な値は、15 分、1 時間、またはデフォルトの 6 時間です。これらの通知の頻度の設定については、ステップ 5 – 更新されたアクティブな検出結果をエクスポートする頻度を設定する を参照してください。

CloudWatch イベントによるアーカイブされた GuardDuty検出結果のモニタリング

手動でアーカイブされた検出結果の場合、これらの検出結果の最初の発生とその後のすべての発生 (アーカイブ完了後に生成された) は、上記の頻度ごとに CloudWatch イベントに送信されます。

自動アーカイブされた検出結果の場合、これらの検出結果の最初の出現とそれ以降のすべての出現 (アーカイブの完了後に生成された) は CloudWatch イベントに送信されません

CloudWatch の イベント形式 GuardDuty

の CloudWatch イベント GuardDuty は次の形式です。

{ "version": "0", "id": "cd2d702e-ab31-411b-9344-793ce56b1bc7", "detail-type": "GuardDuty Finding", "source": "aws.guardduty", "account": "111122223333", "time": "1970-01-01T00:00:00Z", "region": "us-east-1", "resources": [], "detail": {GUARDDUTY_FINDING_JSON_OBJECT} }
注記

詳細値は、配列内で複数の検出結果をサポートできる「検出結果」値を返すのとは対照的に、単一の検出結果の JSON の詳細をオブジェクトとして返します。

GUARDDUTY_FINDING_JSON_OBJECT に含まれているすべてのパラメータの完全なリストについては、「GetFindings」を参照してください。GUARDDUTY_FINDING_JSON_OBJECT に表示される id パラメータは、上記で説明した検出結果 ID です。

GuardDuty 結果を通知する CloudWatch イベントルールの作成 (コンソール)

で CloudWatch イベントを使用して GuardDuty 、結果イベントをメッセージングハブに送信 GuardDutyすることで自動結果アラートを設定し、 GuardDuty 結果の可視性を高めることができます。このトピックでは、SNS トピックを設定し、そのトピックを CloudWatch イベントイベントルールに接続して、E メール、Slack、または Amazon Chime に検出結果アラートを送信する方法について説明します。

Amazon SNS トピックおよびエンドポイントの設定

まず、Amazon Simple Notification Service でトピックを設定し、エンドポイントを追加する必要があります。詳細については、「Amazon Simple Notification Service デベロッパーガイド」の「はじめに」を参照してください。

この手順では、 GuardDuty 検出結果データの送信先を設定します。SNS トピックは、 CloudWatch イベントルールの作成中または作成後にイベントイベントイベントルールに追加できます。

Email setup
SNS トピックの作成
  1. https://console.aws.amazon.com/sns/v3/home で Amazon SNS コンソール にサインインします。

  2. ナビゲーションペインから [Topics] (トピック) を選択し、[Create Topic] (トピックの作成) を選択します。

  3. [Create topic] (トピックの作成) セクションで [Standard] (スタンダード) を選択します。次に、トピックの名前を入力します (例: GuardDuty_to_Email)。その他の詳細はオプションです。

  4. [Create Topic] (トピックの作成) を選択します。新しいトピックのトピック詳細が開きます。

  5. [Subscriptions] (サブスクリプション) セクションで、[Create Subscription] (サブスクリプションの作成) を選択します。

    1. [Protocol] (プロトコル) メニューから [Email] (E メール) を選択します。

    2. [Endpoint] (エンドポイント) フィールドに、通知を受信する E メールアドレスを追加します。

      注記

      作成後、E メールクライアントを通じてサブスクリプションを確認する必要があります。

    3. [Create subscription] (サブスクリプションの作成) を選択します。

  6. 受信トレイでサブスクリプションのメッセージを確認し、[Confirm Subscription] (サブスクリプションの確認) を選択します。

Slack setup
SNS トピックの作成
  1. https://console.aws.amazon.com/sns/v3/home で Amazon SNS コンソール にサインインします。

  2. ナビゲーションペインから [Topics] (トピック) を選択し、[Create Topic] (トピックの作成) を選択します。

  3. [Create topic] (トピックの作成) セクションで [Standard] (スタンダード) を選択します。次に、トピックの名前を入力します (例: GuardDuty_to_Slack)。その他の詳細はオプションです。[Create topic] (トピックの作成)を選択し、確定します。

AWS Chatbot クライアントの設定
  1. AWS Chatbot コンソールに移動します。

  2. [Configured clients] (設定されたクライアント) パネルから [Configure new client] (新しいクライアントを設定) を選択します。

  3. Slack を選択し、[Configure] (設定) で確認します。

    注記

    Slack を選択するときは、[allow] (許可) を選択してチャンネルにアクセスするために、AWS Chatbot のための許可を確認する必要があります。

  4. [Configure new channel] (新しいチャンネルを設定)を選択し、設定の詳細ペインを開きます。

    1. チャンネルの名前を入力します。

    2. [Slack channel] (Slack チャンネル) で、使用したいチャネルを選択します。AWS Chatbot を用いてプライベート Slack チャンネルを使用するには、[Private channel] (プライベートチャンネル) を選択します。

    3. Slack で、チャンネル名を右クリックして [Copy Link] (リンクのコピー) を選択して、コピーのリンクを選択することでプライベートチャンネルのチャンネル ID をコピーします。

    4. AWS Chatbot ウインドウの AWS マネジメントコンソールで、Slack からコピーした ID を [Private channel ID] (プライベートチャンネル ID) フィールドに貼り付けます。

    5. [Permissions] (許可)で、まだロールを持っていない場合は、テンプレートを使用して IAM ロールを作成することを選択します。

    6. [Policy] (ポリシー) テンプレートで、[Notification permissions] (通知の許可) を選択します。これは AWS Chatbot のためのIAM ポリシーテンプレートです。 CloudWatch アラーム、イベント、ログ、および Amazon SNS トピックに必要な読み取りおよび一覧表示のアクセス許可を提供します。

    7. 以前に SNS トピックを作成したリージョンを選択し、Slack チャンネルに通知を送信するために作成した Amazon SNS トピックを選択します。

  5. [Configure] (設定) を選択します。

Chime setup
SNS トピックの作成
  1. https://console.aws.amazon.com/sns/v3/home で Amazon SNS コンソール にサインインします。

  2. ナビゲーションペインから [Topics] (トピック) を選択し、[Create Topic] (トピックの作成) を選択します。

  3. [Create topic] (トピックの作成) セクションで [Standard] (スタンダード) を選択します。次に、トピックの名前を入力します (例: GuardDuty_to_Chime)。その他の詳細はオプションです。[Create topic] (トピックの作成)を選択し、確定します。

AWS Chatbot クライアントの設定
  1. AWS Chatbot コンソールに移動します。

  2. [Configured clients] (設定されたクライアント) パネルから [Configure new client] (新しいクライアントを設定) を選択します。

  3. Chime を選択し、[Configure] (設定) で確認します。

  4. [Configuration details] (設定の詳細) ペインから、チャンネルの名前を入力します。

  5. Chime で目的のチャットルームを開きます。

    1. 右上の歯車アイコンを選択してから、[Manage webhooks and bots] (ウェブフックとボットの管理) を選択します。

    2. [Copy URL] (URL をコピー)を選択し、Webhook URL をクリップボードにコピーします。

  6. AWS Chatbot ウィンドウのリポジトリの AWS マネジメントコンソール上で、コピーした URL を [Webhook URL] (ウェブフック URL) フィールドに貼り付けてください。

  7. [Permissions] (許可)で、まだロールを持っていない場合は、テンプレートを使用して IAM ロールを作成することを選択します。

  8. [Policy] (ポリシー) テンプレートで、[Notification permissions] (通知の許可) を選択します。これは AWS Chatbot のためのIAM ポリシーテンプレートです。 CloudWatch アラーム、イベント、ログ、および Amazon SNS トピックに必要な読み取りおよび一覧表示のアクセス許可を提供します。

  9. 以前に SNS トピックを作成したリージョンを選択し、Chime ルームに通知を送信するために作成した Amazon SNS トピックを選択します。

  10. [Configure] (設定) を選択します。

検出結果の CloudWatch GuardDutyイベントを設定する

  1. https://console.aws.amazon.com/cloudwatch/ で CloudWatch コンソールを開きます。

  2. ナビゲーションペインから [Rules] (ルール) を選択し、[Create Rule] (ルールの作成) を選択します。

  3. サービス名 メニューから を選択しますGuardDuty

  4. イベントタイプメニューから、 GuardDuty の検索を選択します。

  5. [Event Pattern Preview] (イベントパターンのプレビュー) の [Edit] (編集) を選択します。

  6. 以下の JSON コードを [Event Pattern Preview] (イベントパターンプレビュー) に貼り付け、[Save] (保存) を選択します。

    { "source": [ "aws.guardduty" ], "detail-type": [ "GuardDuty Finding" ], "detail": { "severity": [ 4, 4.0, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 6, 6.0, 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 6.9, 7, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9, 8, 8.0, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 8.7, 8.8, 8.9 ] } }
    注記

    上記のコードでは、[Medium] (中)〜[High] (高) の検出結果が警告されます。

  7. [Targets] (ターゲット) セクションで、[Add Target] (ターゲットの追加) をクリックします。

  8. [Select Targets] (ターゲットの選択) メニューから、[SNS Topic] (SNS トピック) を選択します。

  9. [Select Topic] (トピックの選択) で、ステップ 1 で作成した SNS トピックの名前を選択します。

  10. イベントの入力を設定します。

    • Chime または Slack の通知をステップ 11 にスキップするように設定している場合、タイプデフォルトを [Matched event] (一致したイベント) に入力します。

    • SNS 経由でメールの通知を設定する場合は、次のステップで示されるとおりに、以下のステップに従って受信トレイに送信されるメッセージをカスタマイズします。

    1. [Configure input] (入力の設定) を展開して、[Input Transformer] (インプットトランスフォーマー) を閉じます。

    2. 次のコードをコピーして、[Input Path] (入力パス) フィールドに貼り付けます。

      { "severity": "$.detail.severity", "Account_ID": "$.detail.accountId", "Finding_ID": "$.detail.id", "Finding_Type": "$.detail.type", "region": "$.region", "Finding_description": "$.detail.description" }
    3. 次のコードをコピーして [Input Template] (入力テンプレート) フィールドに貼り付け、E メールをフォーマットします。

      "AWS <Account_ID> has a severity <severity> GuardDuty finding type <Finding_Type> in the <region> region." "Finding Description:" "<Finding_description>. " "For more details open the GuardDuty console at https://console.aws.amazon.com/guardduty/home?region=<region>#/findings?search=id%3D<Finding_ID>"
  11. [Configure Details] (詳細の設定) をクリックします。

  12. [Configure rule details] (ルール詳細の設定) ページでルールの [Name] (名前) と [Description] (説明) を入力してから、[Create Rule] (ルールの作成) を選択してルールを有効化します。

の CloudWatch イベントルールとターゲットの作成 GuardDuty (CLI)

次の手順は、 AWS CLI コマンドを使用して の CloudWatch イベントルールとターゲットを作成する方法を示しています GuardDuty。具体的には、 が GuardDuty を生成し、 AWS Lambda関数をルールのターゲットとして追加するすべての検出結果のイベント CloudWatch を送信できるようにするルールを作成する方法を示します。

注記

Lambda 関数に加えて、 GuardDuty は、Amazon EC2 インスタンス、Amazon Kinesis ストリーム、Amazon ECS タスク、AWS Step Functionsステートマシン、 run コマンド、組み込みターゲットのターゲットタイプ CloudWatch をサポートします。

CloudWatch イベントコンソール GuardDuty を使用して、 の CloudWatch イベントルールとターゲットを作成することもできます。詳細と詳細な手順については、 CloudWatch 「イベント でトリガーするイベントルールの作成」を参照してください。[Event Source] (イベントソース) セクションで、[Service name] (サービス名) のための GuardDuty[Event Type] (イベントタイプ) のための GuardDuty Finding を選択します。

ルールおよびターゲットを作成するには
  1. が生成する GuardDutyすべての検出結果のイベント CloudWatch を送信できるようにするルールを作成するには、次の CloudWatch CLI コマンドを実行します。

    AWS events put-rule --name Test --event-pattern "{\"source\":[\"aws.guardduty\"]}"

    重要

    ルールをさらにカスタマイズして、 GuardDutyによって生成された結果のサブセットに対してのみイベントを送信する CloudWatch ように に指示できます。このサブセットは、ルールで指定されている検出結果の属性に基づきます。例えば、次の CLI コマンドを使用して、 CloudWatch が重要度が 5 または 8 の検出 GuardDuty 結果のイベントのみを送信できるようにするルールを作成します。

    AWS events put-rule --name Test --event-pattern "{\"source\":[\"aws.guardduty\"],\"detail-type\":[\"GuardDuty Finding\"],\"detail\":{\"severity\":[5,8]}}"

    この目的のために、JSON で利用可能な任意のプロパティ値を GuardDuty 結果に使用できます。

  2. ステップ 1 で作成したルールのターゲットとして Lambda 関数をアタッチするには、次の CloudWatch CLI コマンドを実行します。

    AWS events put-targets --rule Test --targets Id=1,Arn=arn:aws:lambda:us-east-1:111122223333:function:<your_function>

    注記

    上記のコマンドの <your_function> を GuardDuty イベントの実際の Lambda 関数に置き換えてください。

  3. ターゲットを呼び出す上で必要な許可を追加するには、次の Lambda CLI コマンドを実行します。

    AWS lambda add-permission --function-name <your_function> --statement-id 1 --action 'lambda:InvokeFunction' --principal events.amazonaws.com

    注記

    上記のコマンドの <your_function> を GuardDuty イベントの実際の Lambda 関数に置き換えてください。

    注記

    上記の手順では、 CloudWatch イベントをトリガーするルールのターゲットとして Lambda 関数を使用しています。他のAWSリソースをターゲットとして設定して、 CloudWatch イベントをトリガーすることもできます。詳細については、「PutTargets」を参照してください。

CloudWatch GuardDuty マルチアカウント環境のイベント

アカウントの GuardDuty 管理者 CloudWatch イベントルールは、メンバーアカウントからの該当する結果に基づいてトリガーされます。つまり、前のセクションで説明したように、管理者アカウントで CloudWatch イベントを通じて検出結果通知を設定すると、自分のものに加えて、メンバーアカウントによって生成された重要度の高い検出結果と中程度の検出結果の通知が届きます。

GuardDuty 結果の JSON 詳細の accountIdフィールドを使用して、結果の発生元のメンバーアカウントを特定できます。

コンソールで環境内の特定のメンバーアカウントのカスタムイベントルールの作成を開始するには、新しいルールを作成し、イベントパターンプレビューに次のテンプレートを貼り付け、イベントをトリガーしたいメンバーアカウントのアカウント ID を追加します。

{ "source": [ "aws.guardduty" ], "detail-type": [ "GuardDuty Finding" ], "detail": { "accountId": [ "123456789012" ] } }
注記

この例では、リストされたアカウント ID のすべての検出結果に対してトリガーします。複数の ID を JSON 構文の後にカンマで区切って追加できます。