將 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:Workload Identity (建議):這個方法會使用服務帳戶模擬功能,產生短期權杖。
選項 2:服務帳戶 JSON 金鑰:這個方法依賴靜態的長期密鑰檔案。
建立及設定 IAM 角色
如要為整合功能提供必要權限,請在專案中建立自訂角色:
在 Google Cloud 控制台中,依序前往 「IAM & Admin」(IAM 與管理) >「Roles」(角色)。
按一下「建立自訂角色」。
提供標題 (例如
SecOps Policy Intelligence Analyst)、說明和不重複的 ID。將「角色發布階段」設為「正式發布」。
為角色新增下列權限:
policyanalyzer.serviceAccountLastAuthenticationActivities.query
點選「建立」。
建立服務帳戶
在 Google Cloud 控制台中,依序前往 「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。
按一下「add」(新增)「Create service account」(建立服務帳戶)。
提供名稱和說明,然後按一下「建立並繼續」。
在「將專案存取權授予這個服務帳戶」步驟中,指派您建立的自訂角色。
點按「Done」(完成)。記下服務帳戶的電子郵件地址。
設定 Workload Identity 憑證
建議使用 Workload Identity,因為這項功能會透過服務帳戶模擬功能,使用短期存取權杖。
找出專屬執行個體 ID
建立連線時,您必須授予 Google SecOps 執行個體權限,模擬您的服務帳戶。
在 Google SecOps 中,依序前往「Content Hub」>「Response Integrations」。
選取「Policy Intelligence」整合,然後在
Workload Identity Email中輸入服務帳戶電子郵件地址。依序點選「儲存」>「測試」。測試預計會失敗。
按一下「測試」旁邊的 close_small 按鈕,找出開頭為
gke-init-python@...或soar-python@...的身分識別電子郵件。複製這個專屬電子郵件地址。
在 Google Cloud中授權執行個體身分
在 Google Cloud 控制台中,依序前往 「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。
選取目標服務帳戶,然後依序前往「權限」> 授予存取權。
將專屬電子郵件地址貼到「新增主體」欄位,並指派「服務帳戶權杖建立者」角色 (
roles/iam.serviceAccountTokenCreator)。
授予配額專案存取權
如要使用 Workload Identity 進行驗證,必須有 Quota Project ID 才能追蹤 API 使用量和帳單。
在 Google Cloud 控制台中,前往做為配額專案的專案的「IAM」。
找出服務帳戶,然後按一下「編輯主體」(編輯)。
按一下「Add another role」(新增其他角色),然後選取「Service Usage Consumer」(服務使用情形用戶) (
roles/serviceusage.serviceUsageConsumer)。按一下 [儲存]。
設定 JSON 金鑰
靜態的長期密鑰檔案需要手動輪替。只有在無法使用 Workload Identity 驗證時,才使用這個方法。
在 Google Cloud 控制台中,依序前往「IAM 與管理」>「服務帳戶」,然後選取您的服務帳戶。
前往「金鑰」分頁,依序點按「新增金鑰 > 建立新的金鑰」。
選取「JSON」,然後按一下「建立」。瀏覽器會將 JSON 檔案下載至您的電腦。
整合參數
整合 Pub/Sub 需要下列參數:
| 參數 | 說明 |
|---|---|
Service Account JSON File Content |
選填。 服務帳戶金鑰 JSON 檔案的完整內容。 為服務帳戶金鑰驗證設定這個參數。 |
Workload Identity Email |
選填。 服務帳戶的用戶端電子郵件地址。 只有在使用 Workload Identity 驗證時,才需要設定這個參數。如果已設定,則必須提供 |
Project ID |
選填。 Pub/Sub 中要指定的專案 ID。 如未提供值,整合服務會從服務帳戶憑證擷取 ID。 |
Quota Project ID |
選填。 用於 API 使用量和帳單的專案 ID。 使用 Workload Identity 驗證時,必須提供這個參數。 如未提供值,整合服務會從服務帳戶憑證擷取 ID。 |
Verify SSL |
必填。 驗證連線至伺服器的 SSL 憑證。預設為啟用。 |
如需在 Google SecOps 中設定整合功能的操作說明,請參閱「設定整合功能」。
如有需要,您可以在稍後階段進行變更。設定整合執行個體後,您可以在應對手冊中使用該執行個體。如要進一步瞭解如何設定及支援多個執行個體,請參閱「支援多個執行個體」。
動作
如要進一步瞭解動作,請參閱「 從工作台回覆待處理動作」和「執行手動動作」。
Ping
使用 Ping 動作測試與 Policy Intelligence 的連線。
這項操作不會在 Google SecOps 實體上執行。
動作輸入內容
無
動作輸出內容
Ping 動作會提供下列輸出內容:
| 動作輸出類型 | 可用性 |
|---|---|
| 案件總覽附件 | 無法使用 |
| 案件總覽連結 | 無法使用 |
| 案件牆表格 | 無法使用 |
| 充實資料表 | 無法使用 |
| JSON 結果 | 無法使用 |
| 輸出訊息 | 可用 |
| 指令碼結果 | 可用 |
輸出訊息
在案件牆上,Ping 動作會提供下列輸出訊息:
| 輸出訊息 | 訊息說明 |
|---|---|
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 實體上執行。
動作輸入內容
Search Service Account Activity 動作需要下列參數:
| 參數 | 說明 |
|---|---|
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"
}
}
}
]
}
]
輸出訊息
在案件總覽中,「搜尋服務帳戶活動」動作會提供下列輸出訊息:
| 輸出訊息 | 訊息說明 |
|---|---|
|
動作成功。 |
Error executing action "Search Service Account Activity".
Reason: ERROR_REASON |
動作失敗。 檢查伺服器的連線、 輸入參數或憑證。 |
指令碼結果
下表說明使用「搜尋服務帳戶活動」動作時,指令碼結果輸出的值:
| 指令碼結果名稱 | 值 |
|---|---|
is_success |
True或False |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求解答。