整合記錄與 Google SecOps
本文說明如何整合 Cloud Logging 與 Google Security Operations。
用途
記錄整合功能會運用 Google SecOps 功能,支援下列用途:
鑑識記錄擷取:在調查期間執行進階查詢,找出 Google Cloud 環境中的特定安全事件。
自動威脅搜尋:使用應對手冊定期查詢記錄,找出已知的入侵指標 (IoC) 或可疑模式。
事前準備
在 Google SecOps 中設定「記錄」整合功能前,請先完成下列必要步驟:
建立服務帳戶,並授予必要角色。
選擇並設定下列其中一種驗證方法:
選項 1:Workload Identity (建議做法):這個方法會透過服務帳戶模擬功能使用短期臨時存取權杖,因此您不需要儲存密鑰。
選項 2:服務帳戶 JSON 金鑰:這個方法會使用靜態的長期有效密鑰檔案。只有在環境中無法使用 Workload Identity 驗證時,才使用這個方法。
建立服務帳戶
如要為整合服務建立服務帳戶,請完成下列步驟:
在 Google Cloud 控制台中,依序前往「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。
按一下「新增」「建立服務帳戶」。
提供名稱 (例如「SecOps Logging Integration」) 和說明,然後按一下「建立並繼續」。
在「將專案存取權授予這個服務帳戶」步驟中,新增「記錄檢視者」 (
roles/logging.viewer) 角色。點按「Done」(完成)。設定時會使用這個服務帳戶的電子郵件地址。
設定 Workload Identity 憑證
選擇這個方法或 JSON 金鑰方法,驗證整合。 建議使用 Workload Identity,因為這項功能會使用
使用服務帳戶模擬功能取得短期臨時存取權杖。
找出專屬執行個體 ID
授予 Google SecOps 執行個體模擬服務帳戶的權限,是確保存取安全的最後一個步驟。
在 Google SecOps 中,依序前往「Content Hub」>「Response Integrations」。
搜尋並選取「Cloud Logging」整合服務,然後在「Workload Identity Email」中輸入服務帳戶電子郵件地址。
在「配額專案 ID」中輸入有效的專案 ID。
依序點選「儲存」>「測試」。測試預計會失敗。
按一下「測試」右側的「close_small」close_small,然後搜尋以
gke-init-python@...或soar-python@...開頭的身分識別電子郵件地址錯誤訊息。複製這個專屬電子郵件地址。
在 Google Cloud中授權執行個體身分
授權擷取的專屬身分後,即可執行服務帳戶模擬,讓平台代表您執行動作,不必使用靜態金鑰。
在 Google Cloud 控制台中,依序前往「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。
選取目標服務帳戶,然後依序前往「權限」>「授予存取權」。
將專屬電子郵件地址貼到「新增主體」欄位,並指派「服務帳戶權杖建立者」角色 (
roles/iam.serviceAccountTokenCreator)。
授予配額專案存取權
使用 Workload Identity 驗證身分時,需要 Quota Project ID 追蹤 API 用量和帳單。
在 Google Cloud 控制台中,依序前往 「IAM & Admin」(IAM 與管理) >「IAM」(身分與存取權管理),然後選取 用於配額專案 ID 的專案。
找出服務帳戶,然後按一下「編輯主體」。
按一下「Add another role」(新增其他角色),然後選取「Service Usage Consumer」(服務使用情形用戶) (
roles/serviceusage.serviceUsageConsumer)。按一下 [儲存]。
設定 JSON 金鑰
靜態的長期有效密鑰檔案需要手動管理。只有在無法使用 Workload Identity 憑證時,才應使用這個方法。
在 Google Cloud 控制台中,依序前往「IAM 與管理」>「服務帳戶」,然後選取服務帳戶。
前往「金鑰」分頁,然後依序點按「新增金鑰」>「建立新的金鑰」。
選取「JSON」做為金鑰類型,然後按一下「建立」。
複製下載檔案的完整內容,並在設定期間貼到
User's Service Account。
整合參數
記錄整合需要下列參數:
| 參數 | 說明 |
|---|---|
API Root |
選填。 Cloud Logging API 的基本網址 (例如 |
User's Service Account |
選填。 服務帳戶金鑰 JSON 檔案的完整內容。 只有在使用 JSON 金鑰進行驗證時,才需要使用這個參數。 |
Workload Identity Email |
選填。 服務帳戶的用戶端電子郵件地址。 只有在使用 Workload Identity 憑證進行驗證時,才需要使用這個參數。 |
Project ID |
選填。 整合時要使用的專案 ID。 如未提供任何值,整合功能會從服務帳戶憑證擷取 ID。 |
Quota Project ID |
選填。 用於 API 用量和帳單的專案 ID。 使用 Workload Identity 憑證驗證時,必須設定這個參數。 |
Organization ID |
選填。 用於查詢範圍的組織 ID。 |
Verify SSL |
選填。 如果選取這個選項,整合服務會在連線至記錄伺服器時驗證 SSL 憑證。 (預設為啟用)。 |
如需在 Google SecOps 中設定整合功能的操作說明,請參閱「設定整合功能」。
如有需要,您可以在稍後階段進行變更。設定整合執行個體後,您可以在應對手冊中使用該執行個體。如要進一步瞭解如何設定及支援多個執行個體,請參閱「支援多個執行個體」。
動作
如要進一步瞭解動作,請參閱「 從工作台回覆待處理動作」和「執行手動動作」。
執行查詢
使用「執行查詢」動作,在記錄中執行自訂查詢。
這項操作不會在 Google SecOps 實體上執行。
動作輸入內容
「執行查詢」動作需要下列參數:
| 參數 | 說明 |
|---|---|
Project ID |
選用 整合時要使用的專案 ID。 如未設定這個參數的值,整合服務會從 Google Cloud 服務帳戶擷取專案 ID。 |
Organization ID |
選用 要在整合中使用的組織 ID。 如未設定這個參數的值,整合服務會從 Google Cloud 服務帳戶擷取專案 ID。 |
Query |
必要 用於尋找記錄的查詢。 |
Time Frame |
選用 要擷取結果的期間。 如果選取 可能的值如下:
Last Hour。 |
Start Time |
選用 擷取結果的開始時間。 如果為 如要設定這項參數,請使用 ISO 8601 格式。 |
End Time |
選用 擷取結果的結束時間。 如果未設定這個參數的值,並為 如要設定這項參數,請使用 ISO 8601 格式。 |
Max Results To Return |
選用 要傳回的結果數上限。 預設值為 50。 |
動作輸出內容
「執行查詢」動作會提供下列輸出內容:
| 動作輸出類型 | 可用性 |
|---|---|
| 案件總覽附件 | 無法使用 |
| 案件總覽連結 | 無法使用 |
| 案件牆表格 | 無法使用 |
| 充實資料表 | 無法使用 |
| JSON 結果 | 可用 |
| 輸出訊息 | 可用 |
| 指令碼結果 | 可用 |
JSON 結果
以下範例說明使用「執行查詢」動作時收到的 JSON 結果輸出內容:
[{
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalEmail": "system:clouddns"
},
"authorizationInfo": [
{
"granted": true,
"permission": "io.k8s.coordination.v1.leases.update",
"resource": "coordination.k8s.io/v1/namespaces/kube-system/leases/clouddns-lock"
}
],
"methodName": "io.k8s.coordination.v1.leases.update",
"requestMetadata": {
"callerIp": "192.0.2.6",
"callerSuppliedUserAgent": "clouddns-leader-election"
},
"resourceName": "coordination.k8s.io/v1/namespaces/kube-system/leases/clouddns-lock",
"serviceName": "k8s.io",
"status": {
"code": 0
}
},
"insertId": "ID",
"resource": {
"type": "k8s_cluster",
"labels": {
"cluster_name": "CLUSTER_NAME",
"project_id": "PROJECT_ID",
"location": "us-central1"
}
},
"timestamp": "2024-09-18T09:46:38.647428Z",
"labels": {
"authorization.k8s.io/reason": "RBAC: allowed by ClusterRoleBinding \"system:clouddns\" of ClusterRole \"system:clouddns-role\" to User \"system:clouddns\"",
"authorization.k8s.io/decision": "allow"
},
"logName": "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity",
"operation": {
"id": "ID",
"producer": "k8s.io",
"first": true,
"last": true
},
"receiveTimestamp": "2024-09-18T09:46:39.063264993Z"
}]
輸出訊息
「執行查詢」動作會提供下列輸出訊息:
| 輸出訊息 | 訊息說明 |
|---|---|
|
動作成功。 |
Error executing action "Execute Query". Reason:
ERROR_REASON |
動作失敗。 檢查伺服器的連線、 輸入參數或憑證。 |
指令碼結果
下表說明使用「執行查詢」動作時,指令碼結果輸出的值:
| 指令碼結果名稱 | 值 |
|---|---|
is_success |
True或False |
Ping
使用「Ping」動作測試與 Logging 的連線。
這項操作不會在 Google SecOps 實體上執行。
動作輸入內容
無
動作輸出內容
「Ping」動作會提供下列輸出內容:
| 動作輸出類型 | 可用性 |
|---|---|
| 案件總覽附件 | 無法使用 |
| 案件總覽連結 | 無法使用 |
| 案件牆表格 | 無法使用 |
| 充實資料表 | 無法使用 |
| JSON 結果 | 無法使用 |
| 輸出訊息 | 可用 |
| 指令碼結果 | 可用 |
輸出訊息
「Ping」動作會提供下列輸出訊息:
| 輸出訊息 | 訊息說明 |
|---|---|
Successfully connected to the Cloud Logging server with
the provided connection parameters! |
動作成功。 |
Failed to connect to the Cloud Logging server! Error is
ERROR_REASON |
動作失敗。 檢查伺服器的連線、 輸入參數或憑證。 |
指令碼結果
下表說明使用 Ping 動作時,指令碼結果輸出的值:
| 指令碼結果名稱 | 值 |
|---|---|
is_success |
True或False |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求解答。