將 Policy Intelligence 與 Google SecOps 整合

本文說明如何將 Policy Intelligence 與 Google Security Operations 整合。

用途

Policy Intelligence 整合功能支援下列用途:

  • 找出閒置的服務帳戶:自動找出在特定時間範圍內未經驗證的服務帳戶,以便清除未使用的身分,並縮小攻擊面。

  • 調查身分遭盜用的情況:在事件調查期間,擷取服務帳戶的上次驗證時間,判斷該帳戶在疑似發生侵害事件的期間是否處於活躍狀態。

  • 自動稽核法規遵循情形:將服務帳戶驗證中繼資料彙整成易於理解的報表,滿足監控身分存取權和使用情形的法規要求。

端點

這項整合功能會與 Policy Intelligence API 中的單一 activities:query 端點互動,並針對不同動作使用不同參數。以下是整合端點的範例:

[https://policyintelligence.googleapis.com/v1/projects/](https://policyintelligence.googleapis.com/v1/projects/)PROJECT_ID/locations/global/activityTypes/serviceAccountLastAuthentication/activities:query

事前準備

在 Google SecOps 中設定 Policy Intelligence 整合功能前,請先完成下列必要步驟:

  1. 建立及設定自訂 Identity and Access Management 角色。

  2. 建立服務帳戶。

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

    • 方法 1:Workload Identity (建議):這個方法會使用服務帳戶模擬功能,產生短期權杖。

    • 方法 2:服務帳戶 JSON 金鑰:這個方法會使用靜態、長期有效的密鑰檔案。

建立及設定 IAM 角色

如要為整合項目提供必要權限,請在專案中建立自訂角色:

  1. 在 Google Cloud 控制台,依序前往 「IAM & Admin」(IAM 與管理) >「Roles」(角色)。

    前往「Roles」(角色)

  2. 按一下「add」「Create custom role」(建立自訂角色)。

  3. 提供「Title」(標題) (例如 SecOps Policy Intelligence Analyst)、「Description」(說明) 和不重複的「ID」。

  4. 將「Role Launch Stage」(角色推出階段) 設為「General Availability」(正式發布)。

  5. 為角色新增下列權限:

    • policyanalyzer.serviceAccountLastAuthenticationActivities.query
  6. 點選「建立」。

建立服務帳戶

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

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

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

  3. 輸入名稱和說明,然後按一下「Create and continue」(建立並繼續)。

  4. 在「Grant this service account access to project」(將專案存取權授予這個服務帳戶) 步驟中,指派您建立的自訂角色。

  5. 點按「Done」(完成)。記下服務帳戶的電子郵件地址。

設定 Workload Identity 憑證

建議使用 Workload Identity,因為這種方法會透過服務帳戶模擬功能,使用短期存取權杖。

找出專屬執行個體身分

建立連線時,必須授予 Google SecOps 執行個體權限,才能模擬服務帳戶。

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

  2. 選取「Policy Intelligence」整合項目,然後在 Workload Identity Email 中輸入服務帳戶電子郵件地址。

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

  4. 按一下「Test」旁邊的 close_small 按鈕,然後找出開頭為 gke-init-python@... 或 soar-python@... 的身分電子郵件。

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

在 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」。

    前往「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」,然後點選「建立」。瀏覽器會將 JSON 檔案下載到您的電腦。

整合參數

Pub/Sub 整合需要下列參數:

參數 說明
Service Account JSON File Content

選填。

服務帳戶金鑰 JSON 檔案的完整內容。

設定這個參數,即可使用服務帳戶金鑰驗證。

Workload Identity Email

選填。

服務帳戶的用戶端電子郵件地址。

只有在使用 Workload Identity 進行驗證時,才需要設定這個參數。如果設定這項屬性,則必須一併提供 Quota Project ID,系統會忽略 Service Account JSON File Content。

Project ID

選填。

Pub/Sub 中的目標專案 ID。

如未提供任何值,整合作業會從服務帳戶憑證擷取 ID。

Quota Project ID

選填。

用於 API 使用和計費的專案 ID。

使用 Workload Identity 驗證時,必須提供這個參數。

如未提供任何值,整合作業會從服務帳戶憑證擷取 ID。

Verify SSL

這是必填欄位。

驗證與伺服器連線的 SSL 憑證。(預設為啟用)。

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

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

動作

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

乒乓

使用 Ping 動作測試與 Policy Intelligence 的連線。

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

動作輸入內容

無

動作輸出內容

Ping 動作會提供下列輸出內容:

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

在案件總覽頁面中,連線偵測動作會提供下列輸出訊息:

輸出訊息 訊息說明
Successfully connected to the Google Cloud Policy Intelligence server with the provided connection parameters! 動作成功。
Failed to connect to the Google Cloud Policy Intelligence server!

動作失敗。

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

指令碼執行結果

下表說明使用 Ping 動作時,指令碼結果輸出的值:

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

搜尋服務帳戶活動

使用「搜尋服務帳戶活動」動作,在 Policy Intelligence 中搜尋與服務帳戶相關的活動。

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

動作輸入內容

「搜尋服務帳戶活動」動作需要下列參數:

參數 說明
Project ID 選用

要搜尋服務帳戶活動的專案名稱。

如未提供任何值,動作會從整合設定中擷取專案 ID。

Service Account Resource Name 必要

以半形逗號分隔的清單,其中包含用於擷取活動的服務帳戶資源名稱。

Max Activities To Return 必要

服務帳戶要傳回的活動數量。

上限為 1,000。

根據預設,這項動作會傳回 50 個活動。

動作輸出內容

「搜尋服務帳戶活動」動作會提供下列輸出內容:

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

以下範例說明使用「搜尋服務帳戶活動」動作時,收到的 JSON 結果輸出內容:

[
  {
    "Entity": "//iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT@ENTITY_ID",
    "EntityResult": [
      {
        "fullResourceName": "//iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT@ENTITY_ID",
        "activityType": "serviceAccountLastAuthentication",
        "observationPeriod": {
          "startTime": "2023-05-23T07:00:00Z",
          "endTime": "2023-08-20T07:00:00Z"
        },
        "activity": {
          "lastAuthenticatedTime": "2023-08-20T07:00:00Z",
          "serviceAccount": {
            "serviceAccountId": "SERVICE_ACCOUNT_ID",
            "projectNumber": "PROJECT_NUMBER",
            "fullResourceName": "//iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT@ENTITY_ID"
          }
        }
      }
    ]
  }
]
輸出訊息

在案件總覽中,「搜尋服務帳戶活動」動作會提供下列輸出訊息:

輸出訊息 訊息說明

Successfully found activity for the following service accounts in Google Cloud Policy Intelligence: SERVICE_ACCOUNTS

No activity was found for the following service accounts in Google Cloud Policy Intelligence: SERVICE_ACCOUNTS

No activity was found for the provided service accounts in Google Cloud Policy Intelligence

動作成功。
Error executing action "Search Service Account Activity". Reason: ERROR_REASON

動作失敗。

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

指令碼執行結果

下表說明使用「搜尋服務帳戶活動」動作時,指令碼結果輸出的值:

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

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求解答。