將日誌記錄與 Google SecOps 集成
本文檔說明如何將雲端日誌記錄與 Google 安全營運整合。
用途
Logging 整合利用 Google SecOps 功能支援以下用例:
取證日誌檢索: 在調查期間執行進階查詢,以在您的 Google Cloud 環境中尋找特定的安全事件。
自動化威脅狩獵:使用劇本定期查詢日誌,尋找已知的入侵指標 (IoC) 或可疑模式。
事前準備
在 Google SecOps 中設定 Logging 整合之前,請完成以下先決條件步驟:
建立服務帳戶並授予其必要的角色。
選擇並設定下列其中一種驗證方法:
選項 1:Workload Identity (建議做法):這個方法會透過服務帳戶模擬使用短期臨時存取權杖,因此您不需要儲存密鑰。
選項 2:服務帳戶 JSON 金鑰:這個方法依賴靜態的長期密鑰檔案。只有在環境中無法使用 Workload Identity 驗證時,才使用這個方法。
建立服務帳戶
如要為整合服務建立服務帳戶,請完成下列步驟:
在 Google Cloud 控制台中,依序前往 「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。
按一下「add」(新增)「Create service account」(建立服務帳戶)。
提供名稱(例如,「SecOps 日誌整合」)和描述,然後按一下 建立並繼續。
在授予此服務帳戶對項目的存取權限步驟,新增日誌檢視器(
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 按鈕,找出開頭為
gke-init-python@...或soar-python@...的身分識別電子郵件。複製這個專屬電子郵件地址,並在整合設定期間貼到
Workload Identity Email中。
在 Google Cloud中授權執行個體身分
授權擷取的專屬身分識別資訊後,即可模擬服務帳戶,讓平台代表您執行作業,不必使用靜態金鑰。
在 Google Cloud 控制台中,依序前往 「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。
選取目標服務帳戶,然後依序前往「權限」> 授予存取權。
將不重複的電子郵件地址貼到「New principals」(新增主體) 欄位。
指派「服務帳戶憑證建立者」角色 (
roles/iam.serviceAccountTokenCreator)。
授予配額專案存取權
如要使用 Workload Identity 進行驗證,必須提供 Quota Project ID,才能追蹤 API 使用量和帳單。
在 Google Cloud 控制台中,依序前往 「IAM & Admin」(IAM 與管理) >「IAM」(身分與存取權管理),然後選取 用於配額專案 ID 的專案。
找到您的服務帳戶,然後按一下 編輯主體。
點選 新增另一個角色,然後選擇 服務使用消費者 (
roles/serviceusage.serviceUsageConsumer)。按一下 [儲存]。
設定 JSON 金鑰
靜態的、長期存在的密鑰檔案需要手動管理。僅當工作負載身分憑證不可用時才應使用此方法。
在 Google Cloud 控制台中,依序前往「IAM 與管理」>「服務帳戶」,然後選取您的服務帳戶。
前往「金鑰」分頁,依序點按「新增金鑰 > 建立新的金鑰」。
選取「JSON」做為金鑰類型,然後按一下「建立」。
複製下載檔案的全部內容,並在設定過程中將其貼上到
User's Service Account中。
整合參數
Logging 整合需要以下參數:
| 參數 | 說明 |
|---|---|
API Root |
選填。 雲端日誌 API 的基本 URL(例如, |
User's Service Account |
選填。 服務帳戶金鑰 JSON 檔案的完整內容。 僅當您使用 JSON 金鑰進行身份驗證時才使用此參數。 |
Workload Identity Email |
選填。 服務帳戶的用戶端電子郵件地址。 僅當您使用工作負載身分憑證進行驗證時才使用此參數。 |
Project ID |
選填。 整合中要使用的項目 ID。 如未提供值,整合服務會從服務帳戶憑證擷取 ID。 |
Quota Project ID |
選填。 用於 API 使用量和帳單的專案 ID。 使用工作負載身分憑證進行驗證時,此參數為必填項。 |
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 專業人員尋求解答。