整合 Cloud Identity 與 Google SecOps
本文說明如何將 Cloud Identity 與 Google Security Operations 整合。
用途
Cloud Identity 整合功能會使用 Google SecOps 功能,支援下列用途:
- 管理存取控管:直接透過調查手冊建立及更新 IAM 設定。
- 稽核政策定義:列出可用政策的資訊,追蹤存取權變動。
- 維護偵測工具清單屬性:將實體和指標附加至特定偵測工具網址清單,以便監控。
事前準備
在 Google SecOps 平台設定 Cloud Identity 整合功能前,請先按照下列步驟確認環境已設定完成:
- 建立服務帳戶。
- 將全網域權限委派給服務帳戶
- 為專案啟用必要的 API。
- 選擇並設定下列其中一種驗證方式:
- 方法 1:JSON 金鑰:這個方法仰賴靜態、長期有效的密鑰檔案。只有在環境不支援 Workload Identity 時,才應使用這個方法。
- 方法 2:Workload Identity (建議):這個方法會使用服務帳戶模擬功能,產生短期臨時存取權杖,因此不需要儲存任何密鑰。
建立服務帳戶
如要為整合作業建立服務帳戶,請完成下列步驟:
在 Google Cloud 控制台,依序前往 「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶),然後選取專案。
按一下「建立服務帳戶」。
提供名稱和說明,然後按一下「完成」建立帳戶。
將全網域授權委派給服務帳戶
- 在網域的 Google 管理控制台中,依序前往「 主選單」>「安全性」>「存取權與資料控管」>「API 控制項」。
- 在「Domain wide delegation」(全網域委派) 窗格中,選取「Manage Domain Wide Delegation」(管理全網域委派設定)。
- 按一下「新增」。
- 在「用戶端 ID」欄位中,輸入從「建立服務帳戶」一節取得的用戶端 ID。
在「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按一下 [授權]。
服務帳戶現在有權使用指定範圍存取網域中的資料。
為專案啟用必要的 API
在 Google Cloud 控制台中,前往「APIs & Services」(API 與服務)。
點選「啟用 API 和服務」。
搜尋並為專案啟用下列 API:
- Admin SDK API (
admin.googleapis.com) - Cloud Identity API (
cloudidentity.googleapis.com)
- Admin SDK API (
設定 JSON 金鑰
您可以使用靜態 JSON 金鑰檔案或 Workload Identity Federation 驗證整合。為盡可能提高環境安全性,請使用 Workload Identity 方法。只有在基礎架構不支援 Workload Identity 時,才應使用 JSON 金鑰方法,因為靜態金鑰需要手動輪替,且會增加憑證外洩風險。
如要產生驗證整合所需的 JSON 金鑰檔案,請完成下列步驟:
在 Google Cloud 控制台中,依序前往 「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶),然後選取您建立的服務帳戶 。
前往「金鑰」分頁。
按一下「Add key」。
選取「建立新的金鑰」。
選取「JSON」做為金鑰類型,然後按一下「建立」。JSON 檔案會下載到您的電腦。
複製這個檔案的完整內容,並在整合設定期間貼到
User's Service Account JSON。
設定 Cloud Identity 權限
請按照下列程序,定義整合功能管理組織資源所需的管理員權限:
- 在 Google 管理控制台中,依序前往「帳戶」>「管理員角色」。
- 按一下 [建立新角色]。
- 輸入新自訂角色的名稱,然後按一下「Continue」(繼續)。
- 在「選取權限」頁面,前往「Admin API」權限部分。
- 在「Admin API 權限」下方,選取下列權限:
Organization UnitsUsersGroups
- 按一下「繼續」。
- 如要建立新的自訂角色,請按一下「Create Role」(建立角色)。
為使用者指派自訂角色
請按照下列程序將角色指派給使用者帳戶,授權整合功能代您執行動作:
- 如要建立新使用者,請依序前往「目錄」>「使用者」頁面。
- 新增與服務帳戶相關聯的使用者。
- 開啟新建立使用者的設定。使用者帳戶分頁隨即開啟。
- 按一下 [管理員角色與權限]。
- 按一下「編輯」圖示 。
- 選取您建立的自訂角色。
- 將所選角色的切換鈕切換至「已指派」。
設定 Workload Identity 憑證
請選擇這個方法或 JSON 金鑰方法,驗證整合。Workload Identity 是建議且更安全的做法,因為它會使用服務帳戶模擬功能,產生短期的臨時存取權杖,盡可能降低長期密鑰憑證外洩的風險。
找出專屬執行個體身分
如要使用 Workload Identity,您必須授予 Google SecOps 執行個體權限,才能模擬服務帳戶。這個步驟可讓執行個體安全存取 Google Cloud 資源。
- 在 Google SecOps 中,依序前往 「Content Hub」 >「Response Integrations」。
- 選取要設定的整合項目,然後在「
Workload Identity Email」欄位中輸入服務帳戶電子郵件地址。 - 在
Delegated Email欄位中,輸入要由整合功能模擬的電子郵件地址。 - 依序點選「儲存」 > 「測試」。測試預計會失敗。
按一下「Test」(測試) 右側的 close_small,然後在錯誤訊息中搜尋以
gke-init-python@...或soar-python@...開頭的身分電子郵件。複製這個專屬電子郵件地址。
在 Google Cloud中授權執行個體身分
取得 Google SecOps 執行個體的專屬身分後,您必須授權該身分存取 Google Cloud 資源。這個步驟會啟用服務帳戶模擬功能,讓平台產生短期權杖,並代表您執行操作,不需使用靜態金鑰。
在 Google Cloud 控制台,依序前往 「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。
選取目標服務帳戶,然後依序前往 「Permissions」(權限) >「Grant Access」(授予存取權)。
將不重複的電子郵件地址貼到「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 動作可能會傳回下列輸出訊息:
| 輸出訊息 | 訊息說明 |
|---|---|
|
動作成功。 |
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」(將實體新增至偵測工具網址清單) 動作可能會傳回下列輸出訊息:
| 輸出訊息 | 訊息說明 |
|---|---|
|
動作成功。 |
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」動作可能會傳回下列輸出訊息:
| 輸出訊息 | 訊息說明 |
|---|---|
|
動作成功。 |
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 |
選填。 用於篩選清單的政策類型。可能的值: 預設值為 |
Settings Type Filter |
選填。 規則運算式模式,用於依設定類型篩選政策。這個篩選器會直接套用至 API 要求。 |
Settings Display Name Filter |
選填。 以半形逗號分隔的顯示名稱清單,用於篩選政策設定。 |
Max Results To Return |
選填。 動作執行作業傳回的結果數量上限。預設值為 |
動作輸出內容
「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」動作可能會傳回下列輸出訊息:
| 輸出訊息 | 訊息說明 |
|---|---|
|
|
動作成功。 |
Error executing action "List Policies". Reason: ERROR_REASON |
動作失敗。 請檢查伺服器連線、輸入參數或憑證。 |
指令碼執行結果
下表列出使用「List Policies」動作時,指令碼結果輸出的值:
| 指令碼結果名稱 | 值 |
|---|---|
is_success |
true或false |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求解答。