將 Logging 與 Google SecOps 整合

本文說明如何將 Cloud Logging 與 Google Security Operations 整合。

用途

Logging 整合功能會使用 Google SecOps 功能,支援下列用途:

  • 鑑識記錄擷取:執行進階查詢,在調查期間找出 Google Cloud 環境中的特定安全性事件。

  • 自動威脅搜尋:使用應對手冊定期查詢記錄,找出已知的入侵指標 (IoC) 或可疑模式。

事前準備

在 Google SecOps 中設定記錄整合之前,請先完成下列必要步驟:

  1. 建立服務帳戶並授予必要角色。

  2. 選擇並設定下列其中一種驗證方式:

    • 方法 1:Workload Identity (建議做法):這個方法會透過服務帳戶模擬功能,使用短期臨時存取權杖,因此您不必儲存密鑰。

    • 方法 2:服務帳戶 JSON 金鑰:這個方法仰賴靜態、長期有效的密鑰檔案。只有在環境不支援 Workload Identity 驗證時,才應使用這個方法。

建立服務帳戶

如要為整合作業建立服務帳戶,請完成下列步驟:

  1. 在 Google Cloud 控制台,依序前往 「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。

    前往「Service Accounts」(服務帳戶)

  2. 按一下「add」「Create service account」(建立服務帳戶)。

  3. 提供名稱 (例如「SecOps Logging Integration」) 和說明,然後按一下「Create and continue」(建立並繼續)。

  4. 在「Grant this service account access to project」(將專案存取權授予這個服務帳戶) 步驟中,新增「記錄檢視器」(記錄檢視者) (roles/logging.viewer) 角色。

  5. 點按「Done」(完成)。設定時會用到這個服務帳戶的電子郵件地址。

設定 Workload Identity 憑證

請選擇這個方法或 JSON 金鑰方法,驗證整合。建議使用 Workload Identity,因為這種方法

使用服務帳戶模擬的短期臨時存取權杖。

找出專屬執行個體身分

最後,請授予 Google SecOps 執行個體權限,允許其模擬服務帳戶,確保安全存取。

  1. 在 Google SecOps 中,依序前往 「Content Hub」 >「Response Integrations」。

  2. 搜尋並選取「Cloud Logging」整合,然後在「Workload Identity Email」(Workload Identity 電子郵件) 中輸入服務帳戶電子郵件。

  3. 在「Quota Project ID」(配額專案 ID) 中輸入有效的專案 ID。

  4. 依序點選「儲存」 > 「測試」。測試預計會失敗。

  5. 按一下「Test」(測試) 右側的 close_small,然後在錯誤訊息中搜尋以 gke-init-python@... 或 soar-python@... 開頭的身分電子郵件。

  6. 複製這個專屬電子郵件地址。

在 Google Cloud中授權執行個體身分

授權擷取的專屬身分,即可啟用服務帳戶模擬功能,讓平台代表您執行操作,不需使用靜態金鑰。

  1. 在 Google Cloud 控制台,依序前往 「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。

    前往「Service Accounts」(服務帳戶)

  2. 選取目標服務帳戶,然後依序前往 「Permissions」(權限) >「Grant Access」(授予存取權)。

  3. 將不重複的電子郵件地址貼到「New principals」(新增主體) 欄位,並指派「Service Account Token Creator」(服務帳戶權杖建立者) 角色 (roles/iam.serviceAccountTokenCreator)。

授予配額專案存取權

使用 Workload Identity 驗證時,必須提供 Quota Project ID,才能追蹤 API 使用情形和帳單。

  1. 在 Google Cloud 控制台,依序前往 「IAM & Admin」(IAM 與管理) >「IAM」,然後選取 用於配額專案 ID 的專案。

    前往「IAM」(身分與存取權管理) 頁面

  2. 找出服務帳戶,然後按一下「Edit principal」(編輯主體)。

  3. 按一下「Add another role」(新增其他角色),然後選取「Service Usage Consumer」(服務使用情形消費者) (roles/serviceusage.serviceUsageConsumer)。

  4. 按一下 [儲存]。

設定 JSON 金鑰

靜態、長期有效的密鑰檔案需要手動管理。只有在無法使用 Workload Identity 憑證時,才應使用這個方法。

  1. 在 Google Cloud 控制台中,依序前往 「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶),然後選取 服務帳戶。

    前往「Service Accounts」(服務帳戶)

  2. 前往「金鑰」分頁,依序點選「新增金鑰」 > 「建立新的金鑰」。

  3. 選取「JSON」做為金鑰類型,然後按一下「建立」。

  4. 複製下載檔案的完整內容,並在設定期間貼到 User's Service Account。

整合參數

Logging 整合需要下列參數:

參數 說明
API Root

選填。

Cloud Logging API 的基準網址 (例如 https://logging.googleapis.com)。

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

選填。

如果選取,整合項目會在連線至 Logging 伺服器時驗證 SSL 憑證。

(預設為啟用)。

如要瞭解如何在 Google SecOps 中設定整合功能,請參閱「設定整合功能」。

如有需要,您可以在後續階段進行變更。設定整合執行個體後,即可在應對手冊中使用。如要進一步瞭解如何設定及支援多個執行個體,請參閱「支援多個執行個體」。

動作

如要進一步瞭解動作,請參閱「 在工作區回應待處理動作」和「在案件中執行手動動作」。

執行查詢

使用「Execute Query」(執行查詢) 動作,在 Logging 中執行自訂查詢。

這項動作不會在 Google SecOps 實體上執行。

動作輸入內容

「Execute Query」(執行查詢) 動作需要下列參數:

參數 說明
Project ID 選用

要在整合作業中使用的專案 ID。

如未設定這個參數的值,整合功能會從 Google Cloud 服務帳戶擷取專案 ID。

Organization ID 選用

要在整合中使用的組織 ID。

如未設定這個參數的值,整合功能會從 Google Cloud 服務帳戶擷取專案 ID。

Query 必要

用於尋找記錄的查詢。

Time Frame 選用

要擷取結果的時間範圍。

如果選取 Custom,請一併設定 Start Time 參數。

可能的值如下:

  • Last Hour
  • Last 6 Hours
  • Last 24 Hours
  • Last Week
  • Last Month
  • Custom
預設值為 Last Hour。
Start Time 選用

要擷取結果的開始時間。

如果您為 Time Frame 參數選取 Custom 選項,則必須提供這項參數。

如要設定這項參數,請使用 ISO 8601 格式。

End Time 選用

擷取結果的結束時間。

如果您未設定這個參數的值,並為 Time Frame 參數選取 Custom 選項,動作會使用目前時間做為結束時間。

如要設定這項參數,請使用 ISO 8601 格式。

Max Results To Return 選用

要傳回的結果數上限。

預設值為 50。

動作輸出內容

「Execute Query」(執行查詢) 動作會提供下列輸出內容:

動作輸出類型 可用性
案件總覽附件 無法使用
案件總覽連結 無法使用
案件總覽表格 無法使用
補充資訊表格 無法使用
JSON 結果 可用
輸出訊息 可用
指令碼執行結果 可用
JSON 結果

以下範例說明使用「Execute Query」動作時,收到的 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"
}]
輸出訊息

「執行查詢」動作會提供下列輸出訊息:

輸出訊息 訊息說明

Successfully executed query "QUERY" in Cloud Logging.

No results were found for the provided query.

動作成功。
Error executing action "Execute Query". Reason: ERROR_REASON

動作失敗。

請檢查伺服器連線、輸入參數或憑證。

指令碼執行結果

下表說明使用「Execute Query」(執行查詢) 動作時,指令碼結果輸出的值:

指令碼結果名稱 值
is_success True或False

乒乓

使用 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 專業人員尋求解答。