使用主控台建立自訂整合 - AWS CloudTrail

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

使用主控台建立自訂整合

您可以用 CloudTrail 來記錄和儲存混合式環境中任何來源的使用者活動資料,例如內部部署或雲端中託管的 SaaS 應用程式、虛擬機器或容器。在 CloudTrail Lake 主控台中執行此程序的前半部分,然後呼叫 PutAuditEventsAPI 以擷取事件,提供您的頻道 ARN 和事件承載。使用 PutAuditEvents API 擷取應用程式活動後 CloudTrail,您可以使用 CloudTrail Lake 搜尋、查詢和分析應用程式記錄的資料。

  1. 請登入 AWS Management Console 並開啟 CloudTrail 主控台,網址為 https://console.aws.amazon.com/cloudtrail/

  2. 在導覽窗格中,選擇 Lake 下方的整合

  3. Add integration (新增整合) 頁面上,輸入通道的名稱。名稱長度範圍是 3-128 個字元。只能使用字母、數字、句號、底線和破折號。

  4. 選擇 My custom integration (我的自訂整合)。

  5. Event delivery location (事件傳送位置) 中,選擇將相同的活動事件記錄到現有事件資料存放區,或建立新的事件資料存放區。

    如果您選擇建立新的事件資料存放區,請輸入事件資料存放區的名稱,並指定保留期間 (以天為單位)。如果您選擇一年可延長保留定價選項,則可將事件資料保留在事件資料存放區中最多 3,653 天 (約 10 年);如果您選擇七年保留定價選項,則最多可保留 2,557 天 (約 7 年)。

    如果您選擇將活動事件記錄到一或多個現有事件資料存放區,請從清單中選擇事件資料存放區。事件資料存放區只能包含活動事件。主控台中的事件類型必須是 Events from integrations (來自整合的事件)。在 API 中,eventCategory 值必須是 ActivityAuditLog

  6. Resource policy (資源政策) 中,為整合的通道設定資源政策。資源政策是 JSON 政策文件,這些文件會指出指定的主體可對資源執行哪些動作以及相關條件。在資源政策中定義為主體的帳戶可以呼叫 PutAuditEvents API,將事件傳送至您的通道。

    注意

    如果您沒有為通道建立資源政策,則只有通道擁有者可以在通道上呼叫 PutAuditEvents API。

    1. (選用) 輸入唯一外部 ID,多提供一層保護。外部 ID 是唯一字串,例如帳戶 ID 或隨機產生的字串,用於預防混淆代理人。

      注意

      如果資源政策包含外部 ID,則對 PutAuditEvents API 的所有呼叫都必須包含外部 ID。不過,如果政策未定義外部 ID,您仍可呼叫 PutAuditEvents API 並指定 externalId 參數。

    2. 選擇 [新增 AWS 帳號] 以指定要新增為通道資源策略中主參與者的每個 AWS 帳號 ID。

  7. (選用) 在 Tags (標籤) 區域中,您最多可以新增 50 個標籤索引鍵和值組,以協助您識別、排序和控制對事件資料存放區及通道的存取權限。如需使用 IAM 政策,對以標籤為基礎的事件資料存放區授與存取權限的詳細資訊,請參閱範例:拒絕以標籤為基礎建立或刪除事件資料存放區的存取權限。如需有關如何在中使用標籤的詳細AWS 資訊 AWS,請參閱 AWS 一般參考.

  8. 當您準備好建立新整合時,請選擇 Add integration (新增整合)。沒有評論頁面。 CloudTrail 建立整合,但若要整合您的自訂事件,您必須在PutAuditEvents請求中指定通道 ARN。

  9. 呼叫 PutAuditEvents API 以擷取您的活動事件 CloudTrail。每個 PutAuditEvents 請求最多可供新增 100 個活動事件 (或最多 1 MB 大小)。您需要在先前步驟中建立的通道 ARN、要 CloudTrail 新增的事件承載,以及外部 ID (如果為您的資源策略指定)。請確定事件裝載中沒有任何敏感或個人識別資訊,然後再將其導入。 CloudTrail您內CloudTrail 湖集成事件架構嵌的事件 CloudTrail 必須遵循.

    提示

    AWS CloudShell來確保您執行的是最新的 AWS API。

    下列範例顯示如何使用 put-audit-events CLI 命令。--audit-events--channel-arn 是必要參數。您需要在先前步驟中建立的通道 ARN (可以從整合詳細資訊頁面複製)。的值--audit-events是事件物件的 JSON 陣列。 --audit-events包含來自事件的必要 ID、事件的必要裝載作為的值EventData,以及可在擷取到之後協助驗證事件完整性的選用總和檢查碼。 CloudTrail

    aws cloudtrail-data put-audit-events \ --region region \ --channel-arn $ChannelArn \ --audit-events \ id="event_ID",eventData='"{event_payload}"' \ id="event_ID",eventData='"{event_payload}"',eventDataChecksum="optional_checksum"

    以下是包含兩個事件範例的範例命令。

    aws cloudtrail-data put-audit-events \ --region us-east-1 \ --channel-arn arn:aws:cloudtrail:us-east-1:01234567890:channel/EXAMPLE8-0558-4f7e-a06a-43969EXAMPLE \ --audit-events \ id="EXAMPLE3-0f1f-4a85-9664-d50a3EXAMPLE",eventData='"{\"eventVersion\":\0.01\",\"eventSource\":\"custom1.domain.com\", ... \}"' \ id="EXAMPLE7-a999-486d-b241-b33a1EXAMPLE",eventData='"{\"eventVersion\":\0.02\",\"eventSource\":\"custom2.domain.com\", ... \}"',eventDataChecksum="EXAMPLE6e7dd61f3ead...93a691d8EXAMPLE"

    下列範例命令會新增 --cli-input-json 參數,以指定事件承載的 JSON 檔案 (custom-events.json)。

    aws cloudtrail-data put-audit-events \ --channel-arn $channelArn \ --cli-input-json file://custom-events.json \ --region us-east-1

    以下是範例 JSON 檔案 custom-events.json 的範例內容。

    { "auditEvents": [ { "eventData": "{\"version\":\"eventData.version\",\"UID\":\"UID\", \"userIdentity\":{\"type\":\"CustomUserIdentity\",\"principalId\":\"principalId\", \"details\":{\"key\":\"value\"}},\"eventTime\":\"2021-10-27T12:13:14Z\",\"eventName\":\"eventName\", \"userAgent\":\"userAgent\",\"eventSource\":\"eventSource\", \"requestParameters\":{\"key\":\"value\"},\"responseElements\":{\"key\":\"value\"}, \"additionalEventData\":{\"key\":\"value\"}, \"sourceIPAddress\":\"source_IP_address\",\"recipientAccountId\":\"recipient_account_ID\"}", "id": "1" } ] }

(選用) 計算總和檢查碼值

EventDataChecksumPutAuditEvents要求中指定為值的總和檢查碼,可協助您驗證是否 CloudTrail 接收到符合總和檢查碼的事件;它有助於驗證事件的完整性。總和檢查碼值是您執行下列命令來計算的 base64-SHA256 演算法。

printf %s "{"eventData": "{\"version\":\"eventData.version\",\"UID\":\"UID\", \"userIdentity\":{\"type\":\"CustomUserIdentity\",\"principalId\":\"principalId\", \"details\":{\"key\":\"value\"}},\"eventTime\":\"2021-10-27T12:13:14Z\",\"eventName\":\"eventName\", \"userAgent\":\"userAgent\",\"eventSource\":\"eventSource\", \"requestParameters\":{\"key\":\"value\"},\"responseElements\":{\"key\":\"value\"}, \"additionalEventData\":{\"key\":\"value\"}, \"sourceIPAddress\":\"source_IP_address\", \"recipientAccountId\":\"recipient_account_ID\"}", "id": "1"}" \ | openssl dgst -binary -sha256 | base64

命令會傳回總和檢查碼。以下是範例。

EXAMPLEHjkI8iehvCUCWTIAbNYkOgO/t0YNw+7rrQE=

總和檢查碼值會成為 PutAuditEvents 請求中的 EventDataChecksum 值。如果總和檢查碼與所提供事件的總和檢查碼不相符,則會 CloudTrail 拒絕該事件並顯示錯誤InvalidChecksum