將 Security Command Center 與 Google SecOps 整合
本文說明如何將 Security Command Center 與 Google Security Operations 整合。
事前準備
在 Google SecOps 中設定 Security Command Center 整合功能前,請先完成下列必要步驟:
選擇並設定下列其中一種驗證方式:
方法 1:Workload Identity (建議):這個方法會使用服務帳戶模擬功能,產生短期臨時存取權杖,因此不需要儲存任何密鑰。
方法 2:服務帳戶 JSON 金鑰:這個方法會使用靜態、長期有效的密鑰檔案。只有在環境不支援 Workload Identity 時,才應使用這個方法。
建立及設定 IAM 角色
如要為整合建立及設定自訂角色,請完成下列步驟:
在 Google Cloud 控制台,依序前往 「IAM & Admin」(IAM 與管理) >「Roles」(角色)。
按一下「Create role」(建立角色),建立具有整合所需權限的自訂角色。
輸入「標題」、「說明」和專屬「ID」。
將「Role Launch Stage」(角色推出階段) 設為
General Availability。將下列權限新增至建立的角色:
securitycenter.assets.listsecuritycenter.findings.listsecuritycenter.findings.setMutesecuritycenter.findings.setStateserviceusage.services.use(API 使用和配額歸因的必要資訊)
點選「建立」。
建立服務帳戶
如要為整合作業建立服務帳戶,請完成下列步驟:
在 Google Cloud 控制台,依序前往 「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。
按一下「建立服務帳戶」。
輸入名稱和說明,然後按一下「Create and continue」(建立並繼續)。
在「Grant this service account access to project」(將專案存取權授予這個服務帳戶) 步驟中,新增您建立的自訂角色。
按一下「Done」(完成),完成帳戶建立作業。在驗證設定程序中,會使用這個服務帳戶的電子郵件地址。
設定 Workload Identity 憑證
請選擇這個方法或 JSON 金鑰方法,驗證整合。Workload Identity 是建議採用的做法,安全性也較高,因為這項功能會使用服務帳戶模擬功能,產生短期臨時存取權杖,因此不需要儲存或輪替長期密鑰。
找出專屬執行個體身分
如要使用 Workload Identity,您必須授予 Google SecOps 執行個體權限,才能模擬服務帳戶。這是最後一個步驟,可讓執行個體安全存取 Google Cloud 資源。
在 Google SecOps 中,依序前往 「Content Hub」>「Response Integrations」。
選取要設定的整合項目,然後在「
Workload Identity Email」欄位中輸入服務帳戶電子郵件地址。在「
Quota Project ID」欄位中輸入有效的專案 ID。依序點選「儲存」>「測試」。測試預計會失敗。
按一下「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)。
授予配額專案存取權
使用 Workload Identity 進行驗證時,您必須在整合設定中指定Quota Project ID,以便追蹤 API 使用情形和帳單。
如要授權,您必須在指定的配額專案中,將下列角色授予服務帳戶:
在 Google Cloud 控制台,依序前往「IAM & Admin」(IAM 與管理) >「IAM」,然後選取專案。
在主體清單中找出服務帳戶,然後按一下該帳戶的 edit (編輯主體)。
按一下「Add another role」(新增其他角色),然後選取「Service Usage Consumer」(服務使用情形消費者) (
roles/serviceusage.serviceUsageConsumer)。按一下「儲存」。
設定 JSON 金鑰
請選擇這個方法或 Workload Identity 方法來驗證整合。Workload Identity 是建議採用的做法,安全性也較高,因此只有在環境不支援 Workload Identity 時,才應使用 JSON 金鑰方法。這個方法仰賴靜態、長期有效的密鑰檔案,需要手動管理和輪替。
請按照下列程序,產生驗證整合所需的 JSON 金鑰檔案:
在 Google Cloud 控制台中,依序前往 「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶),然後選取您建立的 服務帳戶。
前往「金鑰」分頁。
依序點選「新增金鑰」>「建立新的金鑰」。
選取「
JSON」做為金鑰類型,然後按一下「建立」。JSON 檔案會下載到您的電腦。複製這個檔案的完整內容,並在設定整合時貼到
User's service account。
整合參數
Security Command Center 整合功能需要下列參數:
| 參數 | 說明 |
|---|---|
API Root |
必填。 Security Command Center 執行個體的 API 根目錄。 |
Organization ID |
選填。 Google Cloud 組織的 ID,用於界定 Security Command Center 整合查詢的範圍。 |
Project ID |
選填。 Google Cloud :用於界定 Security Command Center 執行個體查詢範圍的專案 ID。 |
Quota Project ID |
選填。 用於 API 使用和計費的 Google Cloud 專案 ID。 如果使用 Workload Identity 進行驗證,則必須提供這個參數。 |
User's Service Account |
選填。 服務帳戶金鑰 JSON 檔案的完整內容。 只有在使用 JSON 金鑰進行驗證時,才需要設定這個參數。 |
Workload Identity Email |
選填。 服務帳戶的用戶端電子郵件地址。 只有在使用 Workload Identity 進行驗證時,才需要設定這個參數。 如果設定這項參數,也必須設定 |
Verify SSL |
必填。 如果選取這個選項,整合功能會在連線至 Security Command Center 伺服器時驗證 SSL 憑證。 (預設為啟用)。 |
如要瞭解如何在 Google SecOps 中設定整合功能,請參閱「設定整合功能」。
如有需要,您可以在後續階段進行變更。設定整合執行個體後,即可在應對手冊中使用。如要進一步瞭解如何設定及支援多個執行個體,請參閱「支援多個執行個體」。
動作
如要進一步瞭解動作,請參閱「在工作區回應待處理動作」和「在案件中執行手動動作」。
取得發現項目詳細資料
使用「Get Finding Details」(取得發現項目詳細資料) 動作,擷取 Security Command Center 中發現項目的詳細資料。
這項動作不會在 Google SecOps 實體上執行。
動作輸入內容
「Get Finding Details」動作需要下列參數:
| 參數 | 說明 |
|---|---|
Finding Name |
必填。 要傳回詳細資料的發現項目完整資源名稱,格式為 這項參數接受多個值,請以逗號分隔。 |
動作輸出內容
「Get Finding Details」動作會提供下列輸出內容:
| 動作輸出類型 | 可用性 |
|---|---|
| 案件總覽附件 | 無法使用 |
| 案件總覽連結 | 無法使用 |
| 案件總覽表格 | 可用 |
| 補充資訊表格 | 無法使用 |
| JSON 結果 | 可用 |
| 輸出訊息 | 可用 |
| 指令碼結果 | 可用 |
案件總覽表格
「Get Finding Details」動作可傳回下列資料表:
表格標題:發現項目詳細資料
表格欄:
- 類別
- 「State」
- 嚴重性
- 類型
JSON 結果
以下範例顯示使用「Get Finding Details」動作時,收到的 JSON 結果輸出內容:
{
{
"finding_name": "organizations/ORGANIZATION_ID/sources/2678067631293752869/findings/hvX6WwbvFyBGqPbEs9WH9m",
"finding": {
"name": "organizations/ORGANIZATION_ID/sources/2678067631293752869/findings/hvX6WwbvFyBGqPbEs9WH9m",
"parent": "organizations/ORGANIZATION_ID/sources/2678067631293752869",
"resourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
"state": "ACTIVE",
"category": "Discovery: Service Account Self-Investigation",
"sourceProperties": {
"sourceId": {
"projectNumber": "PROJECT_ID",
"customerOrganizationNumber": "ORGANIZATION_ID"
},
"detectionCategory": {
"technique": "discovery",
"indicator": "audit_log",
"ruleName": "iam_anomalous_behavior",
"subRuleName": "service_account_gets_own_iam_policy"
},
"detectionPriority": "LOW",
"affectedResources": [
{
"gcpResourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID"
}
],
"evidence": [
{
"sourceLogId": {
"projectId": "PROJECT_ID",
"resourceContainer": "projects/PROJECT_ID",
"timestamp": {
"seconds": "1622678907",
"nanos": 448368000
},
"insertId": "ID"
}
}
],
"properties": {
"serviceAccountGetsOwnIamPolicy": {
"principalEmail": "prisma-cloud-serv@PROJECT_ID.iam.gserviceaccount.com",
"projectId": "PROJECT_ID",
"callerIp": "192.0.2.41",
"callerUserAgent": "Redlock/GC-MDC/resource-manager/PROJECT_ID Google-API-Java-Client HTTP-Java-Client/1.34.0 (gzip),gzip(gfe)",
"rawUserAgent": "Redlock/GC-MDC/resource-manager/PROJECT_ID Google-API-Java-Client HTTP-Java-Client/1.34.0 (gzip),gzip(gfe)"
}
},
"contextUris": {
"mitreUri": {
"displayName": "Permission Groups Discovery: Cloud Groups",
"url": "https://attack.mitre.org/techniques/ID/003/"
},
"cloudLoggingQueryUri": [
{
"displayName": "Cloud Logging Query Link",
"url": "https://console.cloud.google.com/logs/query;query=timestamp%3D%222021-06-03T00:08:27.448368Z%22%0AinsertId%3D%22ID%22%0Aresource.labels.project_id%3D%22PROJECT_ID%22?project=PROJECT_ID"
}
]
}
},
"securityMarks": {
"name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks"
},
"eventTime": "2021-06-03T00:08:27.448Z",
"createTime": "2021-06-03T00:08:31.074Z",
"severity": "LOW",
"canonicalName": "projects/PROJECT_ID/sources/SOURCE_ID/findings/FINDING_ID",
"mute": "UNDEFINED",
"findingClass": "THREAT",
"mitreAttack": {
"primaryTactic": "DISCOVERY",
"primaryTechniques": [
"PERMISSION_GROUPS_DISCOVERY",
"CLOUD_GROUPS"
]
}
},
"resource": {
"name": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
"projectName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
"projectDisplayName": "PROJECT_ID",
"parentName": "//cloudresourcemanager.googleapis.com/organizations/ORGANIZATION_ID",
"parentDisplayName": "example.net",
"type": "google.cloud.resourcemanager.Project",
"displayName": "PROJECT_ID"
}
}
}
輸出訊息
「Get Finding Details」動作可傳回下列輸出訊息:
| 輸出訊息 | 訊息說明 |
|---|---|
|
動作成功。 |
Error executing action "Get Finding Details". Reason: ERROR_REASON |
動作失敗。 請檢查伺服器連線、輸入參數或憑證。 |
指令碼結果
下表列出使用「Get Finding Details」動作時,指令碼結果輸出的值:
| 指令碼結果名稱 | 值 |
|---|---|
is_success |
true或false |
列出資產安全漏洞
使用「List Asset Vulnerabilities」(列出資產安全漏洞) 動作,列出 Security Command Center 中與實體相關的安全漏洞。
這項動作不會在 Google SecOps 實體上執行。
動作輸入內容
「List Asset Vulnerabilities」(列出資產安全漏洞) 動作需要下列參數:
| 參數 | 說明 |
|---|---|
Asset Resource Names |
必填。 以半形逗號分隔的專屬 ID (完整資源名稱) 清單,用於擷取相關資料。 |
Timeframe |
選填。 搜尋安全漏洞或設定錯誤的時間範圍。 可能的值如下:
預設值為 |
Record Types |
選填。 要傳回的記錄類型。 可能的值如下:
預設值為 |
Output Type |
選填。 每項資產的 JSON 結果中要傳回的輸出類型。 可能的值如下:
預設值為 |
Max Records To Return |
選填。 每種記錄類型可傳回的記錄數量上限。 預設值為 |
動作輸出內容
「List Asset Vulnerabilities」動作會提供下列輸出內容:
| 動作輸出類型 | 可用性 |
|---|---|
| 案件總覽附件 | 無法使用 |
| 案件總覽連結 | 無法使用 |
| 案件總覽表格 | 可用 |
| 補充資訊表格 | 無法使用 |
| JSON 結果 | 可用 |
| 輸出訊息 | 可用 |
| 指令碼結果 | 可用 |
案件總覽表格
「List Asset Vulnerabilities」動作可傳回下列資料表:
表格標題:ASSET_ID 個安全漏洞
表格欄:
- 類別
- 說明
- 嚴重性
- 事件時間
- CVE
表格標題:ASSET_ID 項設定錯誤
表格欄:
- 類別
- 說明
- 嚴重性
- 事件時間
- 建議
JSON 結果
以下範例顯示使用「List Asset Vulnerabilities」(列出資產安全漏洞) 動作時,收到的 JSON 結果輸出內容:
{
."siemplify_asset_display_name":[1] [2] ""
"vulnerabilities": {
"statistics": {
"critical": 1,
"high": 1,
"medium": 1,
"low": 1,
"undefined": 1
},
"data": [
{
"category": "CATEGORY"
"description": "DESCRIPTION"
"cve_id": "CVE_ID"
"event_time": "EVENT_TIME"
"related_references": "RELATED_REFERENCES"
"severity": "SEVERITY"
}
]
},
"misconfigurations": {
"statistics": {
"critical": 1,
"high": 1,
"medium": 1,
"low": 1,
"undefined": 1
},
"data": [
{
"category": "CATEGORY"
"description": "DESCRIPTION"
"recommendation": "RECOMMENDATION"
"event_time": "EVENT_TIME"
"severity": "SEVERITY"
}
]
},
}
輸出訊息
「List Asset Vulnerabilities」(列出資產安全漏洞) 動作可能會傳回下列輸出訊息:
| 輸出訊息 | 訊息說明 |
|---|---|
|
動作成功。 |
Error executing action "List Asset Vulnerabilities". Reason:
ERROR_REASON |
動作失敗。 請檢查伺服器連線、輸入參數或憑證。 |
指令碼結果
下表列出使用「List Asset Vulnerabilities」(列出資產安全漏洞) 動作時,指令碼結果輸出的值:
| 指令碼結果名稱 | 值 |
|---|---|
is_success |
true或false |
乒乓
使用 Ping 動作,測試與 Security Command Center 的連線。
這項動作不會在 Google SecOps 實體上執行。
動作輸入內容
無。
動作輸出內容
Ping 動作會提供下列輸出內容:
| 動作輸出類型 | 可用性 |
|---|---|
| 案件總覽附件 | 無法使用 |
| 案件總覽連結 | 無法使用 |
| 案件總覽表格 | 無法使用 |
| 補充資訊表格 | 無法使用 |
| JSON 結果 | 無法使用 |
| 輸出訊息 | 可用 |
| 指令碼結果 | 可用 |
輸出訊息
Ping 動作可能會傳回下列輸出訊息:
| 輸出訊息 | 訊息說明 |
|---|---|
Successfully connected to the Security Command Center server
with the provided connection parameters! |
動作成功。 |
Failed to connect to the Security Command Center server! Error
is ERROR_REASON |
動作失敗。 請檢查伺服器連線、輸入參數或憑證。 |
指令碼結果
下表列出使用 Ping 動作時,指令碼結果輸出的值:
| 指令碼結果名稱 | 值 |
|---|---|
is_success |
true或false |
更新發現項目
使用「Update Finding」(更新發現項目) 動作,更新 Security Command Center 中的現有發現項目。
這項動作不會在 Google SecOps 實體上執行。
動作輸入內容
「Update Finding」動作需要下列參數:
| 參數 | 說明 |
|---|---|
Finding Name |
必填。 要傳回詳細資料的發現項目完整資源名稱,格式為 這項參數接受多個值,請以逗號分隔。 |
Mute Status |
選填。 發現項目的忽略狀態。 可能的值如下:
|
State Status |
選填。 發現項目的狀態。 可能的值如下:
|
動作輸出內容
「Update Finding」(更新發現項目) 動作會提供下列輸出內容:
| 動作輸出類型 | 可用性 |
|---|---|
| 案件總覽附件 | 無法使用 |
| 案件總覽連結 | 無法使用 |
| 案件總覽表格 | 無法使用 |
| 補充資訊表格 | 無法使用 |
| JSON 結果 | 無法使用 |
| 輸出訊息 | 可用 |
| 指令碼結果 | 可用 |
輸出訊息
Update Finding 動作可能會傳回下列輸出訊息:
| 輸出訊息 | 訊息說明 |
|---|---|
|
動作成功。 |
Error executing action "Update Finding". Reason: ERROR_REASON |
動作失敗。 請檢查伺服器連線、輸入參數或憑證。 |
指令碼結果
下表列出使用「Update Finding」動作時,指令碼結果輸出的值:
| 指令碼結果名稱 | 值 |
|---|---|
is_success |
true或false |
連接器
如要進一步瞭解如何在 Google SecOps 中設定連接器,請參閱「擷取資料 (連接器)」。
Security Command Center - 發現項目連接器
使用 Security Command Center - Findings Connector,從 Security Command Center 擷取發現項目的相關資訊。
這個連接器支援使用動態清單,依類別篩選發現項目。
連接器輸入
Security Command Center - Findings Connector 需要下列參數:
| 參數 | 說明 |
|---|---|
Product Field Name |
必填。 儲存產品名稱的欄位名稱。 產品名稱主要會影響對應。為簡化及改善連接器的對應程序,預設值會解析為程式碼參照的備用值。根據預設,如果這個參數的輸入值無效,系統會解析為備用值。 預設值為 |
Event Field Name |
必填。 決定事件名稱 (子類型) 的欄位名稱。 |
Environment Field Name |
選填。 儲存環境名稱的欄位名稱。 如果缺少環境欄位,連接器會使用預設值。 預設值為 |
Environment Regex Pattern |
選填。 規則運算式模式,用於對 使用預設值 如果規則運算式模式為空值或空白,或環境值為空值,則最終環境結果為預設環境。 |
API Root |
必填。 Security Command Center 執行個體的 API 根目錄。 |
Organization ID |
選填。 要使用的 Google Cloud 組織 ID |
Project ID |
選填。 要使用的 Google Cloud 專案 ID。 |
Quota Project ID |
選填。 要使用的 Google Cloud 專案 ID。 |
Location ID |
選填。 要使用的位置 ID。 預設值為 |
User's Service Account |
必填。 服務帳戶金鑰 JSON 檔案的完整內容。 只有在使用 JSON 金鑰進行驗證時,才需要使用這個參數。 |
Workload Identity Email |
選填。 服務帳戶的用戶端電子郵件地址。 只有在使用 Workload Identity 進行驗證時,才需要使用這個參數。 如果設定這項參數,也必須設定 |
Finding Class Filter |
選填。 從來源擷取資料時,要納入的安全發現項目類型清單 (以半形逗號分隔)。 可能的值如下:
如未提供值,系統會擷取所有類別的發現項目。 |
Lowest Severity To Fetch |
選填。 要擷取的快訊最低嚴重性。 如未設定這項參數,連接器會擷取所有嚴重程度等級的快訊。 可能的值如下:
如果未定義嚴重性的發現項目獲派 如未提供值,系統會擷取所有嚴重性類型。 |
Fallback Severity |
選填。 如果擷取的安全性發現項目沒有來源定義或可辨識的嚴重性評等,則會指派這個嚴重性等級。 可能的值如下:
預設值為 |
Max Hours Backwards |
選填。 要擷取多久以前的發現項目 (以小時為單位)。 這個參數可套用至首次啟用連接器後的初始連接器疊代,或過期連接器時間戳記的備用值。 最大值為 預設值為 |
Max Findings To Fetch |
選填。 每次連接器疊代要處理的發現項目數量。 最大值為 預設值為 |
Use dynamic list as a blacklist |
必填。 如果選取,連接器會將動態清單做為封鎖清單。 預設為停用。 |
Verify SSL |
必填。 如果選取這個選項,整合功能會在連線至 Security Command Center 伺服器時驗證 SSL 憑證。 預設為停用。 |
Proxy Server Address |
選填。 要使用的 Proxy 伺服器位址。 |
Proxy Username |
選填。 用於驗證的 Proxy 使用者名稱。 |
Proxy Password |
選填。 用於驗證的 Proxy 密碼。 |
PythonProcessTime |
必填。 執行目前指令碼的 Python 程序逾時限制 (以秒為單位)。 預設值為 |
還有其他問題嗎?向社群成員和 Google SecOps 專家尋求解答。