使用 Amazon CloudWatch 活動建立自訂回應的 GuardDuty 發現項目 - Amazon GuardDuty

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon CloudWatch 活動建立自訂回應的 GuardDuty 發現項目

GuardDuty 當發現項目發生任何變更時,會為 Amazon CloudWatch 活動建立事件。尋找將建立 CloudWatch 事件的變更包括新產生的發現項目或新彙總的發現項目。盡可能發出事件。

每個 GuardDuty 發現項目都會指派一個尋找 ID。 GuardDuty 使用唯 CloudWatch 一的尋找項目 ID 為每個尋找項目建立事件。所有後續出現的現有調查結果都會彙總至原始調查結果。如需詳細資訊,請參閱 GuardDuty 尋找彙總

注意

如果您的帳戶是 GuardDuty 委派的系統管理員,則會將 CloudWatch 事件發佈到您的帳戶以及產生發現項目的成員帳戶。

透過搭配使用 CloudWatch 事件 GuardDuty,您可以自動化工作,以協助您回應 GuardDuty 發現項目所揭露的安全性問題。

若要接收根據「 CloudWatch 事件」 GuardDuty 發現項目的相關通知,您必須建立「 CloudWatch 事件」規則和目標 GuardDuty。此規則可 CloudWatch 讓您將 GuardDuty 產生之發現項目的通知傳送至規則中指定的目標。如需詳細資訊,請參閱 為 GuardDuty (CLI) 建立 CloudWatch 事件規則和目標

CloudWatch 事件通知頻率 GuardDuty

針對具有唯一調查結果 ID 的新產生調查結果的通知

GuardDuty 在發現後的 5 分鐘內根據其 CloudWatch 事件發送通知。由於產生了此具有唯一 ID 的調查結果,此事件 (以及此通知) 也包括在前 5 分鐘內所有後續出現的此調查結果。

注意

依預設,新產生調查結果的通知頻率為 5 分鐘。此頻率無法更新。

後續出現的調查結果的通知

根據預設,對於具有唯一尋找項目 ID 的每個發現項目,都會將 6 小時間隔內發生之特定尋找項目類型的所有後續發生項目 GuardDuty 彙總為單一事件。 GuardDuty 然後根據此事件發送有關這些後續事件的通知。依預設,對於現有發現項目的後續發生項目,每 6 小時會根據 CloudWatch 事件 GuardDuty 傳送通知。

只有管理員帳戶帳戶可以自訂傳送有關事件後續發現 CloudWatch 事件發生次數的通知預設頻率。成員帳戶的使用者無法自訂此頻率。系統管理員帳戶在其自己帳戶中設定的頻率值會強加在其所有成員帳戶的 GuardDuty功能上。如果來自管理員帳戶帳戶的使用者將此頻率值設定為 1 小時,則所有成員帳戶也會以 1 小時的頻率接收有關後續發現項目的通知。如需詳細資訊,請參閱 在 Amazon 管理多個帳戶 GuardDuty

注意

身為管理員帳戶,您可以自訂有關後續發現事件的預設通知頻率。可能的值有 15 分鐘、1 小時或預設的 6 小時。如需有關設定這些通知頻率的資訊,請參閱步驟 5 — 設定匯出更新的使用中發現項目的頻率

使用事件監視封存的 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_OBJECT 中全部參數的完整清單,請參閱 GetFindings。在 GUARDDUTY_FINDING_JSON_OBJECT 中出現的 id 參數,即為之前描述的調查結果 ID。

建立 CloudWatch 事件規則以通知您 GuardDuty 發現項目 (主控台)

您可以 GuardDuty 將 CloudWatch 事件與搭配使用,藉由將尋找事件傳送至訊息中樞來設定自動 GuardDuty尋找警示,以協助提高發 GuardDuty 現項目的可見度。本主題說明如何透過設定 SNS 主題,然後將該主題連接至事件事件規則,將發現項目警示傳送至電子郵 CloudWatch 件、Slack 或 Amazon Chime。

設定 Amazon SNS 主題和端點

首先,您必須先在 Amazon Simple Notification Service 中設定主題並新增端點。如需詳細資訊,請參閱《Amazon Simple Notification Service 開發人員指南》中的入門

此程序會建立您要傳送 GuardDuty 尋找資料的位置。在建立 CloudWatch 事件規則期間或之後,可將 SNS 主題新增至「事件事件」規則。

Email setup
建立 SNS 主題
  1. 登入 Amazon SNS 主控台,網址為 https://console.aws.amazon.com/sns/v3/home

  2. 從瀏覽窗格選取主題,然後選取 建立主題

  3. 在「建立主題」區段中,選取標準。接下來,輸入主題名稱 (例如 GuardDuty_to_Email)。其他詳細資料是選擇性的。

  4. 選擇建立主題。新主題的主題詳細資料隨即開啟。

  5. 在訂閱區段中,選取建立訂閱

    1. 通訊協定功能表中,選取電子郵件

    2. 端點欄位中,新增您想要接收通知的電子郵件地址。

      注意

      建立後,您需要透過您的電子郵件使用者端確認訂閱。

    3. 選擇建立訂閱

  6. 查看收件匣中的訂閱郵件,然後選擇確認訂閱

Slack setup
建立 SNS 主題
  1. 登入 Amazon SNS 主控台,網址為 https://console.aws.amazon.com/sns/v3/home

  2. 從瀏覽窗格選取主題,然後選取 建立主題

  3. 在「建立主題」區段中,選取標準。接下來,輸入主題名稱 (例如 GuardDuty_to_Slack)。其他詳細資料是選擇性的。選擇建立主題以完成。

設定 AWS Chatbot 用戶端
  1. 導覽至 AWS Chatbot 主控台

  2. 設定的用戶端面板中,選取設定新用戶端

  3. 選擇 Slack 並按「設定」進行確認。

    注意

    選擇 Slack 時,您必須透過選取「允許」來確認 AWS Chatbot 存取頻道的許可。

  4. 選取設定新頻道以開啟組態詳細資訊窗格。

    1. 輸入頻道的名稱。

    2. 對於 Slack 頻道,選擇要使用的頻道。若要搭配 AWS Chatbot 使用私有 Slack 頻道,請選擇「私有頻道」。

    3. 在 Slack 中,以滑鼠右鍵按一下頻道名稱並選取「複製連結」,以複製私有頻道的頻道 ID。

    4. 在 AWS 管理主控台的 AWS Chatbot 視窗中,將您從 Slack 複製的 ID 貼到「私有頻道 ID」欄位中。

    5. 許可中,如果您還沒有角色,則選擇使用範本建立 IAM 角色。

    6. 政策範本中,選擇「通知許可」。這是 AWS Chatbot 的 IAM 政策範本。它為 CloudWatch 警示、事件和日誌以及 Amazon SNS 主題提供必要的讀取和列出許可。

    7. 選擇您先前在其中建立 SNS 主題的區域,然後選取您建立的 Amazon SNS 主題,將通知傳送至 Slack 頻道。

  5. 選取設定

Chime setup
建立 SNS 主題
  1. 登入 Amazon SNS 主控台,網址為 https://console.aws.amazon.com/sns/v3/home

  2. 從瀏覽窗格選取主題,然後選取 建立主題

  3. 在「建立主題」區段中,選取標準。接下來,輸入主題名稱 (例如 GuardDuty_to_Chime)。其他詳細資料是選擇性的。選擇建立主題以完成。

設定 AWS Chatbot 用戶端
  1. 導覽至 AWS Chatbot 主控台

  2. 設定的用戶端面板中,選取設定新用戶端

  3. 選擇 Chime 並按「設定」進行確認。

  4. 組態詳細資訊窗格中,輸入頻道的名稱。

  5. 在 Chime 中開啟所需的聊天室

    1. 選擇右上角的齒輪圖示,然後選擇管理 Webhook 和機器人

    2. 選取複製 URL,將 Webhook URL 複製到剪貼簿。

  6. 在 AWS 管理主控台的 AWS Chatbot 視窗中,將您複製的 URL 貼到 Webhook URL 欄位中。

  7. 許可中,如果您還沒有角色,則選擇使用範本建立 IAM 角色。

  8. 政策範本中,選擇「通知許可」。這是 AWS Chatbot 的 IAM 政策範本。它為 CloudWatch 警示、事件和日誌以及 Amazon SNS 主題提供必要的讀取和列出許可。

  9. 選擇您先前在其中建立 SNS 主題的區域,然後選取您建立的 Amazon SNS 主題,將通知傳送至 Chime 聊天室。

  10. 選取設定

設定發 GuardDuty現項目的 CloudWatch 事件

  1. 請在以下位置開啟 CloudWatch 主控台。 https://console.aws.amazon.com/cloudwatch/

  2. 從導覽窗格選取規則,然後選取建立規則

  3. 從「服務名稱」功能表中選擇GuardDuty

  4. 從「事件型態」功能表選擇「GuardDuty搜尋結果」。

  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. 選取目標功能表中,選擇 SNS 主題

  9. 針對選取主題,請選取您在步驟 1 中建立的 SNS 主題名稱。

  10. 設定事件的輸入。

    • 如果您要設定 Chime 或 Slack 的通知,請跳至步驟 11,輸入類型預設為符合的事件

    • 如果您要透過 SNS 設定電子郵件通知,請遵循下列步驟,使用下列步驟自訂傳送至收件匣的郵件:

    1. 展開​設定輸入,然後選擇​輸入轉換器

    2. 複製下列程式碼並貼到輸入路徑欄位中。

      { "severity": "$.detail.severity", "Account_ID": "$.detail.accountId", "Finding_ID": "$.detail.id", "Finding_Type": "$.detail.type", "region": "$.region", "Finding_description": "$.detail.description" }
    3. 複製下列程式碼並貼到 輸入範本欄位,以格式化電子郵件。

      "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. 按一下設定詳細資料

  12. 設定規則詳細資訊頁面上,輸入規則的名稱描述,然後選擇建立規則

為 GuardDuty (CLI) 建立 CloudWatch 事件規則和目標

下列程序顯示如何使用AWS CLI命令建立 CloudWatch 事件規則和目標 GuardDuty。具體而言,此程序會示範如何建立規則,以 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. 若要將 Lambda 函數附加為您在步驟 1 中建立之規則的目標,請執行下列 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 函數替換。

    注意

    在上述程序中,我們使用 Lambda 函數做為觸發 CloudWatch 事件之規則的目標。您也可以將其他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 語法的逗號分隔。