收集 AWS Control Tower 記錄
本文說明如何將 AWS Control Tower 記錄擷取至 Google Security Operations。AWS Control Tower 可跨多個 AWS 帳戶進行治理、法規遵循和安全監控。整合後,您就能分析 AWS Control Tower 的記錄,進一步掌握現況並強化安全防護機制。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體
- AWS 的特殊存取權
設定 Amazon S3 儲存貯體
- 按照這份使用者指南建立 Amazon S3 值區:建立值區
- 請儲存 bucket 的「名稱」和「區域」,以供後續使用。
- 按照這份使用者指南建立使用者:建立 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 時,系統會自動建立該角色)。 - 在角色的「Permissions」(權限) 分頁中,按一下「Attach policies」(附加政策)。
- 搜尋
CloudTrailS3DeliveryPolicy
。 - 勾選「
CloudTrailS3DeliveryPolicy
」政策旁的核取方塊。 - 按一下「附加政策」。
- 前往 AWS CloudTrail 控制台。
- 在「儲存位置」部分,選取「S3」做為記錄檔的目的地。
- 選取您先前建立的 S3 值區。
- 系統提示您授予 CloudTrail 權限,將記錄寫入所選值區時,請按一下「允許」。
- 檢查設定,然後按一下「建立」 (或「儲存變更」,如果編輯的是現有追蹤記錄)。
設定動態饋給
在 Google SecOps 平台中,有兩種不同的進入點可設定動態饋給:
- 「SIEM 設定」>「動態消息」
- 內容中心 > 內容包
依序前往「SIEM 設定」>「動態消息」,設定動態消息
如要為這個產品系列中的不同記錄類型設定多個動態饋給,請參閱「依產品設定動態饋給」。
如要設定單一動態饋給,請按照下列步驟操作:
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態消息」。
- 在下一個頁面中,按一下「設定單一動態饋給」。
- 在「Feed name」(動態消息名稱) 欄位中,輸入動態消息的名稱 (例如「AWS Control Tower Logs」)。
- 選取「Amazon S3」做為「來源類型」。
- 選取「AWS Control Tower」做為「記錄類型」。
- 點選「下一步」。
指定下列輸入參數的值:
- 區域:Amazon S3 值區所在的區域。
- S3 URI:bucket URI。
s3://your-log-bucket-name/
- 請將
your-log-bucket-name
替換為 S3 值區的實際名稱。
- 請將
- URI 是:根據 bucket 結構,選取「Directory」(目錄) 或「Directory which includes subdirectories」(包含子目錄的目錄)。
來源刪除選項:根據擷取偏好設定選取刪除選項。
存取金鑰 ID:具備 S3 值區讀取權限的使用者存取金鑰。
存取密鑰:使用者的存取密鑰,具備從 S3 bucket 讀取的權限。
資產命名空間:資產命名空間。
擷取標籤:要套用至這個動態饋給事件的標籤。
點選「下一步」。
在「Finalize」畫面上檢查新的動態饋給設定,然後按一下「Submit」。
從內容中心設定動態饋給
為下列欄位指定值:
- 區域:Amazon S3 值區所在的區域。
- S3 URI:bucket URI。
s3://your-log-bucket-name/
- 請將
your-log-bucket-name
替換為 S3 值區的實際名稱。
- 請將
- URI 是:根據 bucket 結構,選取「Directory」(目錄) 或「Directory which includes subdirectories」(包含子目錄的目錄)。
- 來源刪除選項:根據擷取偏好設定選取刪除選項。
存取金鑰 ID:具備 S3 值區讀取權限的使用者存取金鑰。
存取密鑰:使用者的存取密鑰,具備從 S3 bucket 讀取的權限。
進階選項
- 動態饋給名稱:系統預先填入的值,用於識別動態饋給。
- 來源類型:將記錄收集到 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 | 要求的 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」。 |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。