整合 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. 在「Domain wide delegation」(全網域委派) 窗格中,選取「Manage Domain Wide Delegation」(管理全網域委派設定)。
  3. 按一下「新增」。
  4. 在「用戶端 ID」欄位中,輸入從「建立服務帳戶」一節取得的用戶端 ID。
  5. 在「OAuth Scopes」(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. 輸入新自訂角色的名稱,然後按一下「Continue」(繼續)。
  4. 在「選取權限」頁面,前往「Admin API」權限部分。
  5. 在「Admin API 權限」下方,選取下列權限:
    • Organization Units
    • Users
    • Groups
  6. 按一下「繼續」。
  7. 如要建立新的自訂角色,請按一下「Create Role」(建立角色)。
為使用者指派自訂角色

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

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

設定 Workload Identity 憑證

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

找出專屬執行個體身分

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

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

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

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

取得 Google SecOps 執行個體的專屬身分後,您必須授權該身分存取 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)。

整合參數

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 動作測試與 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 true或false

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

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

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

  • 網址
  • 網域

動作輸入內容

「Add Entity To Detector URL List」動作需要下列參數:

參數 說明
Detector Policy ID

這是必填欄位。

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

URL

選填。

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

Domain

選填。

以半形逗號分隔的網域清單,用於新增至偵測工具清單。

動作輸出內容

「Add Entity To Detector URL List」動作會提供下列輸出內容:

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

以下範例顯示使用「Add Entity To Detector URL List」動作時,收到的 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"
       ]
     }
   }
 }
}
輸出訊息

「Add Entity To Detector URL List」(將實體新增至偵測工具網址清單) 動作可能會傳回下列輸出訊息:

輸出訊息 訊息說明

Successfully blocked the following URLs using Cloud Identity: ENTITY_IDENTIFIER

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

動作失敗。

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

指令碼執行結果

下表列出使用「Add Entity To Detector URL List」動作時,指令碼結果輸出的值:

指令碼結果名稱 值
is_success true或false

建立政策

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

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

動作輸入內容

「Create Policy」動作需要下列參數:

參數 說明
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"
    }
  }
}

動作輸出內容

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

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

以下範例顯示使用「Create Policy」動作時,收到的 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": {}
        }
      }
    }
  }
}
輸出訊息

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

輸出訊息 訊息說明

Successfully added a new policy in Cloud Identity.

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

動作失敗。

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

指令碼執行結果

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

指令碼結果名稱 值
is_success true或false

可列出政策

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

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

動作輸入內容

List Policies 動作需要下列參數:

參數 說明
Organization Unit Name

這是必填欄位。

要列出政策的組織單位名稱。

Policy Type Filter

選填。

用於篩選清單的政策類型。可能的值:Admin、System 或 Both。

預設值為 Both。

Settings Type Filter

選填。

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

Settings Display Name Filter

選填。

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

Max Results To Return

選填。

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

動作輸出內容

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

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

以下範例顯示使用「List Policies」動作時,收到的 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"
      }
    }
  }
]
輸出訊息

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

輸出訊息 訊息說明

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

動作失敗。

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

指令碼執行結果

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

指令碼結果名稱 值
is_success true或false

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