將 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 控制項」。
- 在「全網域委派」窗格中,選取「管理全網域委派設定」。
- 按一下「新增」。
- 在「用戶端 ID」欄位中,輸入從「建立服務帳戶」部分取得的用戶端 ID。
在「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 管理控制台中,依序前往「帳戶」>「管理員角色」。
- 按一下 [建立新角色]。
- 為新的自訂角色命名,然後按一下「繼續」。
- 在「選取權限」頁面中,前往「Admin API」權限部分。
- 在「Admin API 權限」下方,選取下列權限:
Organization UnitsUsersGroups
- 按一下「繼續」。
- 如要建立新的自訂角色,請按一下「建立角色」。
為使用者指派自訂角色
請按照下列程序將角色指派給使用者帳戶,授權整合服務代您執行動作:
- 如要建立新使用者,請前往「目錄」> 使用者」頁面。
- 新增與服務帳戶相關聯的使用者。
- 開啟新建立的使用者設定。系統會開啟使用者帳戶分頁。
- 按一下 [管理員角色與權限]。
- 按一下「編輯」。
- 選取您建立的自訂角色。
- 針對所選角色,將切換鈕切換為「已指派」。
設定 Workload Identity 憑證
選擇這個方法或 JSON 金鑰方法,驗證整合服務。 Workload Identity 是建議採用的安全做法,因為這項功能會使用服務帳戶模擬功能,產生短期臨時存取權權杖,盡量降低長期機密憑證外洩的風險。
找出專屬執行個體 ID
如要使用 Workload Identity,您必須授予 Google SecOps 執行個體模擬服務帳戶的權限。這個步驟可讓執行個體安全存取 Google Cloud 資源。
- 在 Google SecOps 中,依序前往「Content Hub」>「Response Integrations」。
- 選取要設定的整合服務,然後在
Workload Identity Email欄位中輸入服務帳戶電子郵件地址。 - 在
Delegated Email欄位中,輸入要讓整合服務模擬的電子郵件地址。 - 依序點選「儲存」>「測試」。測試預計會失敗。
按一下「測試」右側的 close_small,然後搜尋開頭為
gke-init-python@...或soar-python@...的身分識別電子郵件地址,找出錯誤訊息。複製這個專屬電子郵件地址,然後在整合設定期間貼到
Workload Identity Email中。
在 Google Cloud 中授權執行個體身分
取得 Google SecOps 執行個體的專屬身分後,您必須授權該身分存取 Google Cloud 資源。這個步驟會啟用服務帳戶模擬功能,讓平台產生短期權杖並代表您執行動作,無須使用靜態金鑰。
- 在 Google Cloud 控制台中,依序前往「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。
- 選取目標服務帳戶,然後依序前往「權限」> 授予存取權。
- 將專屬電子郵件地址貼到「New principals」(新增主體) 欄位。
- 指派「服務帳戶權杖建立者」角色 (
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」動作可能會傳回下列輸出訊息:
| 輸出訊息 | 訊息說明 |
|---|---|
|
動作成功。 |
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 實體上執行:
- 網址
- 網域
動作輸入內容
「將實體新增至偵測器網址清單」動作需要下列參數:
| 參數 | 說明 |
|---|---|
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"
]
}
}
}
}
輸出訊息
「將實體新增至偵測器網址清單」動作可以傳回下列輸出訊息:
| 輸出訊息 | 訊息說明 |
|---|---|
|
動作成功。 |
Error executing action "Add Entity To Detector URL List". Reason: ERROR_REASON |
動作失敗。 請檢查伺服器連線、輸入參數或憑證。 |
指令碼結果
下表列出使用「將實體新增至偵測器網址清單」動作時,指令碼結果輸出的值:
| 指令碼結果名稱 | 值 |
|---|---|
is_success |
true或false |
建立政策
使用「建立政策」動作,在 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": {}
}
}
}
}
}
輸出訊息
「建立政策」動作可能會傳回下列輸出訊息:
| 輸出訊息 | 訊息說明 |
|---|---|
|
動作成功。 |
Error executing action "Create Policy". Reason: ERROR_REASON |
動作失敗。 請檢查伺服器連線、輸入參數或憑證。 |
指令碼結果
下表列出使用「建立政策」動作時,指令碼結果輸出的值:
| 指令碼結果名稱 | 值 |
|---|---|
is_success |
true或false |
可列出政策
使用「列出政策」動作,從 Cloud Identity 擷取現有政策清單。
這項操作不會在 Google SecOps 實體上執行。
動作輸入內容
「列出政策」動作需要下列參數:
| 參數 | 說明 |
|---|---|
Organization Unit Name |
必填。 要列出政策的機構單位名稱。 |
Policy Type Filter |
選填。 用來篩選清單的政策類型。可能的值: 預設值為 |
Settings Type Filter |
選填。 用於依設定類型篩選政策的規則運算式模式。這個篩選器會直接套用至 API 要求。 |
Settings Display Name Filter |
選填。 以逗號分隔的顯示名稱清單,用於篩選政策設定。 |
Max Results To Return |
選填。 動作執行作業要傳回的結果數上限。預設值為 |
動作輸出內容
「列出政策」動作會提供下列輸出內容:
| 動作輸出類型 | 可用性 |
|---|---|
| 案件總覽附件 | 無法使用 |
| 案件總覽連結 | 無法使用 |
| 案件總覽表格 | 無法使用 |
| 補充資訊表格 | 無法使用 |
| 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"
}
}
}
]
輸出訊息
「列出政策」動作可能會傳回下列輸出訊息:
| 輸出訊息 | 訊息說明 |
|---|---|
|
|
動作成功。 |
Error executing action "List Policies". Reason: ERROR_REASON |
動作失敗。 請檢查伺服器連線、輸入參數或憑證。 |
指令碼結果
下表列出使用「列出政策」動作時,指令碼結果輸出的值:
| 指令碼結果名稱 | 值 |
|---|---|
is_success |
true或false |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。