收集 AWS Control Tower 記錄
支援以下發布途徑:
Google secops
Siem
本文件說明如何將 AWS Control Tower 記錄匯入 Google Security Operations。AWS Control Tower 可跨多個 AWS 帳戶進行治理、法規遵循和安全監控。這項整合功能可讓您分析 AWS Control Tower 的記錄,進一步掌握現況和安全防護機制。
事前準備
請確認您已完成下列必要條件:
- Google SecOps 執行個體
- AWS 特權存取權
設定 Amazon S3 儲存貯體
- 按照這份使用者手冊的說明建立 Amazon S3 值區:建立值區
- 請儲存值區的「名稱」和「區域」,以便日後使用。
- 請按照建立 IAM 使用者中的使用者指南建立使用者。
- 選取已建立的「使用者」。
- 選取「安全性憑證」分頁標籤。
- 在「Access Keys」部分中,按一下「Create Access Key」。
- 選取「第三方服務」做為用途。
- 點選「下一步」。
- 選用:新增說明標記。
- 按一下「建立存取金鑰」。
- 按一下「下載 CSV 檔案」,即可儲存存取金鑰和密式存取金鑰,以供日後使用。
- 按一下 [完成]。
- 選取 [權限] 分頁標籤。
- 在「權限政策」部分,按一下「新增權限」。
- 選取「新增權限」。
- 選取「直接附加政策」。
- 搜尋並選取「AmazonS3FullAccess」和「CloudWatchLogsFullAccess」政策。
- 點選「下一步」。
- 按一下「新增權限」。
在 AWS Control Tower 中設定 CloudTrail
- 登入 AWS 管理主控台。
- 前往 AWS Control Tower。
- 在搜尋列中輸入「CloudTrail」,然後從服務清單中選取。
按一下「建立課程」建立新課程。
指定追蹤記錄設定:
- 追蹤記錄名稱:為追蹤記錄提供有意義的名稱 (例如 ControlTowerTrail)。
- 將記錄檔套用至所有區域:請務必選取「將記錄檔套用至所有區域」的「是」。
- 管理事件:請確認「讀取/寫入」事件已設為「全部」。
- 選用:資料事件:啟用 S3 資料事件和 Lambda 資料事件,以便擷取詳細資料活動。
- 選用:日誌檔案驗證:啟用此選項,可確保儲存的日誌檔案不會遭到竄改。
在「事件」選取器中,選擇記錄管理事件和資料事件。
如何設定 CloudTrail
- 前往 AWS IAM 主控台。
- 按一下「角色」。
- 搜尋 CloudTrail 使用的角色
AWSServiceRoleForCloudTrail
(您設定 CloudTrail 時,系統會自動建立這個角色)。 - 在角色的「權限」分頁中,按一下「附加政策」。
- 搜尋
CloudTrailS3DeliveryPolicy
。 - 勾選「
CloudTrailS3DeliveryPolicy
」政策旁的核取方塊。 - 按一下「附加政策」。
- 前往 AWS CloudTrail 控制台。
- 在「Storage location」(儲存位置) 部分,選取「S3」做為記錄檔的儲存位置。
- 選取先前建立的 S3 值區。
- 系統顯示提示時,請點選「允許」,授予 CloudTrail 寫入所選值區的記錄權限。
- 查看設定,然後按一下「建立」 (如果您要編輯現有課程,請按一下「儲存變更」)。
設定動態饋給
在 Google SecOps 平台中,有兩個不同的入口可用來設定動態消息:
- SIEM 設定 > 動態饋給
- 內容中心 > 內容包
依序前往「SIEM 設定」>「動態」設定動態
如要針對這個產品系列中的不同記錄類型設定多個動態饋給,請參閱「依產品設定動態饋給」。
如要設定單一動態饋給,請按照下列步驟操作:
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態消息」。
- 在下一頁中,按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中輸入動態饋給的名稱 (例如「AWS Control Tower Logs」)。
- 選取「Amazon S3」做為「來源類型」。
- 選取「AWS Control Tower」做為「記錄類型」。
- 點選「下一步」。
指定下列輸入參數的值:
- 區域:Amazon S3 值區所在的區域。
- S3 URI:值區 URI。
s3://your-log-bucket-name/
- 請將
your-log-bucket-name
替換為實際的 S3 值區名稱。
- 請將
- URI 是:請根據您的桶層結構,選取「目錄」或「目錄 (包含子目錄)」。
來源刪除選項:根據擷取偏好設定選取刪除選項。
存取金鑰 ID:使用者具備從 S3 值區讀取權限的存取金鑰。
私密存取金鑰:使用者具備 S3 值區讀取權限的私密金鑰。
資產命名空間:資產命名空間。
攝入標籤:要套用至這個動態饋給事件的標籤。
點選「下一步」。
在「完成」畫面中查看新的動態饋給設定,然後按一下「提交」。
透過內容中心設定動態饋給
指定下列欄位的值:
- 區域:Amazon S3 值區所在的區域。
- S3 URI:值區 URI。
s3://your-log-bucket-name/
- 請將
your-log-bucket-name
替換為實際的 S3 值區名稱。
- 請將
- URI 是:請根據您的桶層結構,選取「目錄」或「目錄 (包含子目錄)」。
- 來源刪除選項:根據擷取偏好設定選取刪除選項。
存取金鑰 ID:使用者具備從 S3 值區讀取權限的存取金鑰。
私密存取金鑰:使用者具備 S3 值區讀取權限的私密金鑰。
進階選項
- 動態饋給名稱:預先填入的值,用於識別動態饋給。
- 來源類型:用於收集記錄並匯入 Google SecOps 的方法。
- 資產命名空間:與動態饋給相關聯的命名空間。
- 攝入標籤:套用至這個動態饋給中所有事件的標籤。
UDM 對應表
記錄欄位 | UDM 對應 | 邏輯 |
---|---|---|
awsAccountId | target.user.group_identifiers | 與事件相關聯的 AWS 帳戶 ID。 |
digestPublicKeyFingerprint | target.file.sha1 | 用來簽署摘要的公開金鑰指紋。 |
digestPublicKeyFingerprint | target.resource.attribute.labels.value | 用來簽署摘要的公開金鑰指紋。 |
digestS3Bucket | target.resource.name | 摘要儲存位置的 S3 值區名稱。 |
digestS3Object | target.file.full_path | S3 bucket 中摘要物件的路徑。 |
digestSignatureAlgorithm | network.tls.cipher | 用於簽署摘要的演算法。 |
digestSignatureAlgorithm | target.resource.attribute.labels.value | 用於簽署摘要的演算法。 |
digestStartTime | metadata.event_timestamp | 摘要期間的開始時間。如果無法取得 eventTime,系統會使用此值做為事件時間。 |
eventCategory | security_result.category_details | 事件類別。 |
eventID | metadata.product_log_id | 事件的專屬 ID。 |
eventName | metadata.product_event_type | 事件的名稱。 |
eventName | security_result.summary | 事件名稱,用於產生安全性結果摘要。 |
eventSource | target.application | 事件的來源。 |
eventTime | metadata.event_timestamp | 事件發生的時間。 |
eventType | additional.fields.value.string_value | 事件類型。 |
logFiles.hashValue | about.file.sha256 | 記錄檔案的 SHA-256 雜湊值。 |
logFiles.s3Bucket | about.resource.name | 記錄檔案儲存位置的 S3 值區名稱。 |
logFiles.s3Object | about.file.full_path | S3 bucket 中記錄檔物件的路徑。 |
previousDigestHashValue | target.file.sha256 | 先前摘要的 SHA-256 雜湊。 |
recipientAccountId | target.resource.attribute.labels.value | 事件接收者的 AWS 帳戶 ID。 |
Records.awsRegion | principal.location.name | 事件發生的 AWS 區域。 |
Records.errorCode | security_result.rule_id | 與要求相關的錯誤代碼 (如果有的話)。 |
Records.errorMessage | security_result.description | 與要求相關聯的錯誤訊息 (如有)。 |
Records.eventCategory | security_result.category_details | 事件類別。 |
Records.eventID | metadata.product_log_id | 事件的專屬 ID。 |
Records.eventName | metadata.product_event_type | 事件的名稱。 |
Records.eventName | security_result.summary | 事件名稱,用於產生安全性結果摘要。 |
Records.eventSource | target.application | 事件的來源。 |
Records.eventTime | metadata.event_timestamp | 事件發生的時間。 |
Records.eventType | additional.fields.value.string_value | 事件類型。 |
Records.requestID | target.resource.attribute.labels.value | 要求的 ID。 |
Records.requestParameters.groupName | target.group.group_display_name | 與要求相關聯的群組名稱 (如有)。 |
Records.requestParameters.userName | src.user.userid | 與要求相關聯的使用者名稱 (如果有的話)。 |
Records.requestParameters.userName | src.user.user_display_name | 與要求相關聯的使用者名稱 (如果有的話)。 |
Records.responseElements.ConsoleLogin | security_action | 主控台登入嘗試的結果。 |
Records.responseElements.ConsoleLogin | security_result.summary | 控制台登入嘗試的結果,用於產生安全性結果摘要。 |
Records.sourceIPAddress | principal.hostname | 主體的 IP 位址。如果不是有效的 IP 位址,則會用做主機名稱。 |
Records.sourceIPAddress | principal.ip | 主體的 IP 位址。 |
Records.tlsDetails.cipherSuite | network.tls.cipher | 用於 TLS 連線的加密套件。 |
Records.tlsDetails.tlsVersion | network.tls.version | 用於連線的 TLS 版本。 |
Records.userAgent | network.http.user_agent | 要求的使用者代理程式。 |
Records.userIdentity.accessKeyId | additional.fields.value.string_value | 用於要求的存取金鑰 ID。 |
Records.userIdentity.accountId | principal.user.group_identifiers | 使用者的 AWS 帳戶 ID。 |
Records.userIdentity.arn | principal.user.attribute.labels.value | 使用者的 ARN。 |
Records.userIdentity.arn | target.user.userid | 使用者的 ARN。如果無法取得 userName,則使用此值做為 userid。 |
Records.userIdentity.principalId | principal.user.product_object_id | 使用者的主要 ID。 |
Records.userIdentity.sessionContext.attributes.mfaAuthenticated | principal.user.attribute.labels.value | 要求是否使用了多重身份驗證。 |
Records.userIdentity.sessionContext.sessionIssuer.userName | principal.user.userid | 發出工作階段的使用者使用者名稱。 |
Records.userIdentity.type | principal.resource.type | 要求使用的身分類型。 |
Records.userIdentity.userName | target.user.userid | 使用者的使用者名稱。 |
- | extensions.auth.mechanism | 設為「REMOTE」。 |
- | metadata.event_type | 根據 eventName 將這個欄位設為「STATUS_UPDATE」、「USER_RESOURCE_ACCESS」、「USER_LOGIN」或「GENERIC_EVENT」。 |
- | metadata.log_type | 設為「AWS_CONTROL_TOWER」。 |
- | metadata.product_name | 將其設為「AWS Control Tower」。 |
- | metadata.vendor_name | 設為「AWS」。 |
- | principal.asset.attribute.cloud.environment | 設為「AMAZON_WEB_SERVICES」。 |
- | security_result.action | 根據 errorCode 設為「ALLOW」或「BLOCK」。 |
- | security_result.severity | 設為「INFORMATIONAL」。 |
異動
2024-03-17
- 改善:
- 將「req.userIdentity.arn」和「req.userIdentity.userName」對應至「target.user.userid」。
2023-01-04
- 改善:
- 初始化變數,避免在 For 迴圈中複製資料。
2022-12-15
- 改善:
- 將「metadata.vendor_name」對應至「AWS」。
- 將「metadata.product_name」對應至「AWS Control Tower」。
- 當「eventName」為「ConsoleLogin」時,將「metadata.event_type」對應至「USER_LOGIN」。
- 當「eventName」為「ConsoleLogin」時,將「security_result.severity」對應至「INFORMATIONAL」。
2022-11-17
- 改善:
- 將「req.userIdentity.userName」和「req.userIdentity.sessionContext.sessionIssuer.userName」對應至「target.user.id」。
- 將「ConsoleLogin:Success」對應至「security_result.action」。
- 從「sourceIPAddress」對應至「principal.port」的通訊埠資訊。
2022-10-31
- 新建的剖析器。
還有其他問題嗎?向社群成員和 Google SecOps 專家尋求解答。