將 Cloud Identity 與 Google SecOps 整合

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

用途

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

  • 管理存取權控管:直接從調查劇本建立及更新 IAM 設定。
  • 稽核政策定義:列出可用政策的相關資訊,以追蹤存取權變更。
  • 維護偵測工具清單屬性:將實體和指標附加至特定偵測工具網址清單,以進行監控。

事前準備

在 Google SecOps 平台中設定 Cloud Identity 整合功能前,請先按照下列步驟確認環境設定:

  1. 建立服務帳戶
  2. 將網域層級的權限委派給服務帳戶
  3. 為專案啟用必要的 API
  4. 選擇並設定下列其中一種驗證方法:
    • 方法 1:JSON 金鑰:這個方法會使用靜態的長期有效密鑰檔案。只有在環境中無法使用 Workload Identity 時,才使用這個方法。
    • 選項 2:Workload Identity (建議使用):這個方法會使用服務帳戶模擬功能,產生短期臨時存取權杖,因此不需要儲存任何密鑰。

建立服務帳戶

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

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

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

  2. 按一下「建立服務帳戶」

  3. 提供名稱和說明,然後按一下「完成」建立帳戶。

將全網域授權委派給服務帳戶

  1. 在網域的 Google 管理控制台中,依序前往「主選單」「安全性」「存取權與資料控管」「API 控制項」
  2. 在「全網域委派」窗格中,選取「管理全網域委派設定」
  3. 按一下「新增」
  4. 在「用戶端 ID」欄位中,輸入從「建立服務帳戶」部分取得的用戶端 ID。
  5. 在「OAuth 範圍」欄位中,輸入下列以半形逗號分隔的範圍清單,這些範圍是應用程式的必要範圍:

    https://www.googleapis.com/auth/cloud-platform,
    https://www.googleapis.com/auth/cloud-identity.policies,
    https://www.googleapis.com/auth/admin.directory.orgunit
    
  6. 按一下 [授權]。

服務帳戶現在有權使用指定範圍存取網域資料。

為專案啟用必要的 API

  1. 在 Google Cloud 控制台中,前往「APIs & Services」(API 與服務)

    前往「API 與服務」頁面

  2. 點選「啟用 API 和服務」

  3. 為專案搜尋並啟用下列 API:

    • Admin SDK API (admin.googleapis.com)
    • Cloud Identity API (cloudidentity.googleapis.com)

設定 JSON 金鑰

您可以透過靜態 JSON 金鑰檔或 Workload Identity Federation 驗證整合。如要盡可能確保環境安全,請使用 Workload Identity 方法。只有在基礎架構不支援 Workload Identity 時,才使用 JSON 金鑰方法,因為靜態金鑰需要手動輪替,且會增加憑證曝光風險。

如要產生驗證整合功能所需的 JSON 金鑰檔案,請完成下列步驟:

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

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

  2. 前往「金鑰」分頁。

  3. 按一下「Add key」

  4. 選取「建立新的金鑰」

  5. 金鑰類型請選取「JSON」,然後按一下「建立」。JSON 檔案會下載至您的電腦。

  6. 複製這個檔案的完整內容,並在整合設定期間貼到 User's Service Account JSON 中。

設定 Cloud Identity 權限

請按照下列程序,定義整合功能管理機構資源所需的管理權限:

  1. 在 Google 管理控制台中,依序前往「帳戶」>「管理員角色」
  2. 按一下 [建立新角色]
  3. 為新的自訂角色命名,然後按一下「繼續」
  4. 在「選取權限」頁面中,前往「Admin API」權限部分。
  5. 在「Admin API 權限」下方,選取下列權限:
    • Organization Units
    • Users
    • Groups
  6. 按一下「繼續」
  7. 如要建立新的自訂角色,請按一下「建立角色」
為使用者指派自訂角色

請按照下列程序將角色指派給使用者帳戶,授權整合服務代您執行動作:

  1. 如要建立新使用者,請前往「目錄」> 使用者」頁面。
  2. 新增與服務帳戶相關聯的使用者。
  3. 開啟新建立的使用者設定。系統會開啟使用者帳戶分頁。
  4. 按一下 [管理員角色與權限]。
  5. 按一下「編輯」
  6. 選取您建立的自訂角色。
  7. 針對所選角色,將切換鈕切換為「已指派」

設定 Workload Identity 憑證

選擇這個方法或 JSON 金鑰方法,驗證整合服務。 Workload Identity 是建議採用的安全做法,因為這項功能會使用服務帳戶模擬功能,產生短期臨時存取權權杖,盡量降低長期機密憑證外洩的風險。

找出專屬執行個體 ID

如要使用 Workload Identity,您必須授予 Google SecOps 執行個體模擬服務帳戶的權限。這個步驟可讓執行個體安全存取 Google Cloud 資源。

  1. 在 Google SecOps 中,依序前往「Content Hub」>「Response Integrations」
  2. 選取要設定的整合服務,然後在 Workload Identity Email 欄位中輸入服務帳戶電子郵件地址。
  3. Delegated Email 欄位中,輸入要讓整合服務模擬的電子郵件地址。
  4. 依序點選「儲存」>「測試」。測試預計會失敗。
  5. 按一下「測試」右側的 close_small,然後搜尋開頭為 gke-init-python@...soar-python@... 的身分識別電子郵件地址,找出錯誤訊息。

    複製這個專屬電子郵件地址,然後在整合設定期間貼到 Workload Identity Email 中。

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

取得 Google SecOps 執行個體的專屬身分後,您必須授權該身分存取 Google Cloud 資源。這個步驟會啟用服務帳戶模擬功能,讓平台產生短期權杖並代表您執行動作,無須使用靜態金鑰。

  1. 在 Google Cloud 控制台中,依序前往「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。
  2. 選取目標服務帳戶,然後依序前往「權限」> 授予存取權
  3. 將專屬電子郵件地址貼到「New principals」(新增主體) 欄位。
  4. 指派「服務帳戶權杖建立者」角色 (roles/iam.serviceAccountTokenCreator)。

整合參數

整合 Cloud Identity 時需要下列參數:

參數 說明
Service Account JSON File Content

選填。

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

您可以設定這個參數或「Workload Identity 電子郵件」。如要使用這個方法,請貼上您在建立服務帳戶時下載的金鑰檔案中的完整 JSON 字串。

Workload Identity Email

選填。

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

您可以設定這個參數或「服務帳戶 JSON 檔案內容」

如要使用這個方法進行服務帳戶模擬,您必須將「服務帳戶權杖建立者」角色授予 Google SecOps 服務帳戶。

Delegated Email

必填。

整合服務用來執行動作的電子郵件地址。

請確認這個帳戶在您的環境中具備適當的委派權限,可執行必要的整合工作。

Verify SSL

選填。

如果選取這個選項,整合服務會在連線至 Cloud Identity 伺服器時驗證 SSL 憑證。

(預設為啟用)。

如需在 Google SecOps 中設定整合功能的操作說明,請參閱「設定整合功能」。

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

動作

如要進一步瞭解動作,請參閱「 從工作台回覆待處理動作」和「執行手動動作」。

Ping

使用「Ping」動作測試與 Cloud Identity 的連線。

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

動作輸入內容

這項動作不需要輸入參數。

動作輸出內容

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

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

「Ping」動作可能會傳回下列輸出訊息:

輸出訊息 訊息說明

Successfully connected to the Cloud Identity server with the provided connection parameters!

動作成功。
Failed to connect to the Cloud Identity server! Error is ERROR_REASON

動作失敗。

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

指令碼結果

下表列出使用「Ping」動作時,指令碼結果輸出的值:

指令碼結果名稱
is_success truefalse

將實體新增至偵測工具網址清單

使用「Add Entity To Detector URL List」(將實體新增至偵測器網址清單) 動作,將實體新增至 Cloud Identity 政策偵測清單

這項動作會在下列 Google SecOps 實體上執行:

  • 網址
  • 網域

動作輸入內容

「將實體新增至偵測器網址清單」動作需要下列參數:

參數 說明
Detector Policy ID

必填。

要更新的偵測器政策專屬 ID。

URL

選填。

以逗號分隔的網址清單,可新增至偵測工具清單。

Domain

選填。

請以逗號分隔的清單形式列出要新增至偵測器清單的網域。

動作輸出內容

「將實體新增至偵測工具網址清單」動作會提供下列輸出內容:

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

下列範例顯示使用「將實體新增至偵測工具網址清單」動作時收到的 JSON 結果輸出內容:

{
 "type": "ADMIN",
 "customer": "customers/<CUSTOMER_ID>",
 "policyQuery": {
   "query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('<ORG_UNIT_ID>'))",
   "orgUnit": "orgUnits/<ORG_UNIT_ID>"
 },
 "setting": {
   "type": "settings/detector.url_list",
   "value": {
     "displayName": "test_url_list_detector",
     "description": "test_url_list_detector desc",
     "urlList": {
       "urls": [
         "[http://example.com](http://example.com)",
         "example.org",
         "bad_entity.com"
       ]
     }
   }
 }
}
輸出訊息

「將實體新增至偵測器網址清單」動作可以傳回下列輸出訊息:

輸出訊息 訊息說明

Successfully blocked the following URLs using Cloud Identity: ENTITY_IDENTIFIER

動作成功。
Error executing action "Add Entity To Detector URL List". Reason: ERROR_REASON

動作失敗。

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

指令碼結果

下表列出使用「將實體新增至偵測器網址清單」動作時,指令碼結果輸出的值:

指令碼結果名稱
is_success truefalse

建立政策

使用「建立政策」動作,在 Cloud Identity 中建立新的政策項目。

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

動作輸入內容

「建立政策」動作需要下列參數:

參數 說明
Policy Entry

必填。

代表要新增政策項目設定的 JSON 物件。

政策設定範例

下列設定範例說明如何建構 Policy Entry 參數:

範例 1:網址清單偵測工具

{
  "type": "ADMIN",
  "customer": "customers/<CUSTOMER_ID>",
  "policyQuery": {
    "orgUnit": "orgUnits/<ORG_UNIT_ID>",
    "sortOrder": 1
  },
  "setting": {
    "type": "settings/detector.url_list",
    "value": {
      "displayName": "BlockUrlDetector",
      "description": "Blocked urls for security reasons",
      "urlList": {
        "urls": [
          "www.medium.com",
          "medium.com",
          "wikipedia.org"
        ]
      }
    }
  }
}

範例 2:資料遺失防護規則

{
  "type": "ADMIN",
  "customer": "customers/<CUSTOMER_ID>",
  "policyQuery": {
    "query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('<ORG_UNIT_ID>'))",
    "orgUnit": "orgUnits/<ORG_UNIT_ID>",
    "sortOrder": 1
  },
  "setting": {
    "type": "settings/rule.dlp",
    "value": {
      "display_name": "TestRule",
      "description": "GoogleSecOps URL Blocklist Rule. Keeps state of blocked URLs. Manual modification is not advised",
      "triggers": [
        "google.workspace.chrome.url.v1.navigation"
      ],
      "condition": {
        "contentCondition": "url.matches_url_list('policies/<DETECTOR_POLICY_ID>')"
      },
      "action": {
        "chromeAction": {
          "blockContent": {
            "actionParams": {
              "customEndUserMessage": {
                "unsafeHtmlMessageBody": "(EQ)🚫 BlockedAccess denied."
              }
            }
          }
        }
      },
      "state": "ACTIVE"
    }
  }
}

動作輸出內容

「建立政策」動作會提供下列輸出內容:

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

以下範例顯示使用「建立政策」動作時收到的 JSON 結果輸出內容:

{
  "type": "ADMIN",
  "customer": "customers/<CUSTOMER_ID>",
  "policyQuery": {
    "query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('<ORG_UNIT_ID>'))",
    "orgUnit": "orgUnits/<ORG_UNIT_ID>"
  },
  "setting": {
    "type": "settings/rule.dlp",
    "value": {
      "display_name": "test_create_rule",
      "triggers": [
        "google.workspace.chrome.file.v1.download"
      ],
      "state": "ACTIVE",
      "action": {
        "chromeAction": {
          "warnUser": {}
        }
      }
    }
  }
}
輸出訊息

「建立政策」動作可能會傳回下列輸出訊息:

輸出訊息 訊息說明

Successfully added a new policy in Cloud Identity.

動作成功。
Error executing action "Create Policy". Reason: ERROR_REASON

動作失敗。

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

指令碼結果

下表列出使用「建立政策」動作時,指令碼結果輸出的值:

指令碼結果名稱
is_success truefalse

可列出政策

使用「列出政策」動作,從 Cloud Identity 擷取現有政策清單。

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

動作輸入內容

「列出政策」動作需要下列參數:

參數 說明
Organization Unit Name

必填。

要列出政策的機構單位名稱。

Policy Type Filter

選填。

用來篩選清單的政策類型。可能的值:AdminSystemBoth

預設值為 Both

Settings Type Filter

選填。

用於依設定類型篩選政策的規則運算式模式。這個篩選器會直接套用至 API 要求。

Settings Display Name Filter

選填。

以逗號分隔的顯示名稱清單,用於篩選政策設定。

Max Results To Return

選填。

動作執行作業要傳回的結果數上限。預設值為 50。最大值為 100

動作輸出內容

「列出政策」動作會提供下列輸出內容:

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

下列範例顯示使用「列出政策」動作時收到的 JSON 結果輸出內容:

[
  {
    "name": "policies/123",
    "customer": "customers/123",
    "type": "ADMIN",
    "policy_query": {
      "query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('12345'))",
      "orgUnit": "orgUnits/12345",
      "sortOrder": 1
    },
    "setting": {
      "type": "settings/rule.dlp",
      "value": {
        "display_name": "Test DLP Rule"
      }
    }
  }
]
輸出訊息

「列出政策」動作可能會傳回下列輸出訊息:

輸出訊息 訊息說明

Successfully listed policies based on the provided criteria in Cloud Identity.

No policies found based on the provided criteria in Cloud Identity.

動作成功。
Error executing action "List Policies". Reason: ERROR_REASON

動作失敗。

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

指令碼結果

下表列出使用「列出政策」動作時,指令碼結果輸出的值:

指令碼結果名稱
is_success truefalse

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