を使用して GuardDuty の結果に対するカスタムレスポンスを作成するAmazon CloudWatch Events - Amazon GuardDuty

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

を使用して GuardDuty の結果に対するカスタムレスポンスを作成するAmazon CloudWatch Events

GuardDuty では、結果が変更されると、Amazon CloudWatch Events に基づいて通知を送信できます。CloudWatch イベントを作成する変更の検出には、新しく生成された結果または新しく集計された結果が含まれます。

GuardDuty の検索結果にはそれぞれ結果 ID が割り当てられます。GuardDuty によって、一意の結果 ID を持つ各結果に対して CloudWatch イベントが作成されます。その後に発生した既存の結果は、すべて元の結果に集約されます。

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

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

CloudWatch イベント の 通知の頻度 GuardDuty

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

重要

新しく生成される結果に関して送信される通知のデフォルトの頻度 (5 分) をカスタマイズすることはできません。

その後の結果の発生に関する通知 – デフォルトでは、一意の結果 ID を持つ結果ごとに、GuardDuty は、6 時間間隔で行われる特定の結果のその後の発生を単一のイベントに集約します。その後、GuardDuty は、このイベントに基づいてこれらの後続の発生に関する通知を送信します。つまり、デフォルトでは、既存の結果の後続の発生は、GuardDuty によって、CloudWatch イベントに基づいて 6 時間ごとに通知が送信されます。

重要

その後の結果の発生に関する通知のデフォルトの頻度はカスタマイズできます。有効な値は、15 分、1 時間、またはデフォルトの 6 時間です。この値を更新するには、CreateDetector または UpdateDetector API オペレーションを使用します。GuardDuty コンソールからこの値を更新することもできます。[設定] を選択し、[CloudWatch イベント] で、[更新された結果] プルダウンメニューからいずれかの値を選択します。

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

を使用した、アーカイブされた GuardDuty 結果のモニタリングCloudWatch イベント

手動でアーカイブされた結果の場合、これらのうち最初の結果と、それ以降に発生したすべての結果 (アーカイブ完了後に生成された結果) は、前述のとおり頻度ごとに 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_OBJECTGetFindings」を参照してください。 に表示される id パラメータは、前述の結果 ID です。GUARDDUTY_FINDING_JSON_OBJECT

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

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

トピックとエンドポイントの設定Amazon SNS

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

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

Email setup

SNS トピックを作成する

  1. https://console.aws.amazon.com/sns/v3/home で Amazon SNS コンソールにサインインします。

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

  3. [トピックの作成] セクションで、[標準] を選択します。次に、トピック名 (例: GuardDuty_to_Email) を入力します。 その他の詳細はオプションです。

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

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

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

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

      注記

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

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

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

Slack setup

SNS トピックを作成する

  1. https://console.aws.amazon.com/sns/v3/home で Amazon SNS コンソールにサインインします。

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

  3. [トピックの作成] セクションで、[標準] を選択します。次に、トピック名 (例: GuardDuty_to_Slack) を入力します。 その他の詳細はオプションです。[トピックの作成] を選択して終了します。

クライアントの設定AWS Chatbot

  1. コンソールに移動しますAWS Chatbot

  2. [Configured clients] パネルで、[Configure new client] を選択します。

  3. Slack を選択して [Configure] で確定します。

    注記

    Slack を選択する場合は、[許可] を選択することにより、AWS Chatbot がチャネルにアクセスするためのアクセス許可を確認する必要があります。

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

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

    2. Slack チャネルの場合は、使用するチャネルを選択します。でプライベート Slack チャネルを使用するには、[プライベートチャネル] を選択します。AWS Chatbot

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

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

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

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

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

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

Chime setup

SNS トピックを作成する

  1. https://console.aws.amazon.com/sns/v3/home で Amazon SNS コンソールにサインインします。

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

  3. [トピックの作成] セクションで、[標準] を選択します。次に、トピック名 (例: GuardDuty_to_Chime) を入力します。 その他の詳細はオプションです。[トピックの作成] を選択して終了します。

クライアントの設定AWS Chatbot

  1. AWS 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 のコピー)] を選択して、ウェブフック URL をクリップボードにコピーします。

  6. AWS マネジメントコンソールの [AWS Chatbot] ウィンドウで、コピーした URL を [Webhook URL] フィールドに貼り付けます。

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

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

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

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

の結果に対する CloudWatch イベントのセットアップGuardDuty

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

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

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

  4. [Event Type] メニューから、[GuardDutyFinding] を選択します。

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

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

    { "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 ] } }
    注記

    上記のコードでは、中〜高の結果が警告されます。

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

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

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

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

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

    • SNS 経由の E メールの通知を設定する場合は、以下の手順に従って、以下の手順を使用して受信トレイに送信されるメッセージをカスタマイズします。

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

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

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

      "You have 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. [詳細の設定] をクリックします。

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

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

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

注記

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

GuardDuty の CloudWatch イベント ルールおよびターゲットは、CloudWatch イベント コンソールで作成することもできます。詳細な手順については、「イベントでトリガーする CloudWatch イベント ルールの作成」を参照してください。[イベントソース] セクションで、[GuardDutyサービス名] として 、[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」を参照してください。