收集 Oracle Cloud Infrastructure - Oracle Cloud Guard 記錄
本文說明如何設定 Oracle Cloud Infrastructure Cloud Guard,透過 Webhook 將記錄檔推送至 Google Security Operations。
Oracle Cloud Guard 是一項雲端原生安全防護服務,可監控及識別 Oracle Cloud Infrastructure (OCI) 的安全狀態,並協助維持強大的安全防護。Cloud Guard 會檢查 OCI 資源的設定相關安全弱點,並偵測異常活動。Cloud Guard 發現偵測器規則有偏差時,會建立問題事件,全面監控 OCI 租戶的安全。這項整合功能會使用 OCI Events Service 和 OCI Functions,將 Cloud Guard 問題事件近乎即時轉送至 Google SecOps。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體
- 已啟用 Cloud Guard 的有效 Oracle Cloud Infrastructure 租戶
- Oracle Cloud Infrastructure 主控台的管理員存取權
- 建立及管理 OCI Functions 應用程式的權限
- 建立 OCI Events 規則和通知主題的權限
- 存取 OCI Cloud Shell,或安裝 Fn Project CLI 的本機環境
- 已安裝 Docker (用於在本機建構 OCI 函式)
- 存取 Google Cloud 控制台 (用於建立 API 金鑰)
在 Google SecOps 中建立 Webhook 動態饋給
建立動態饋給
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態消息」。
- 在下一個頁面中,按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如
OCI Cloud Guard Problems)。 - 選取「Webhook」做為「來源類型」。
- 選取「Oracle Cloud Infrastructure - Oracle Cloud Guard」做為「記錄類型」。
- 點選「下一步」。
- 指定下列輸入參數的值:
- 分割分隔符 (選填):留空 (每次函式叫用都會傳送單一事件)。
- 資產命名空間:資產命名空間
- 擷取標籤:要套用至這個動態饋給事件的標籤
- 點選「下一步」。
- 在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)。
產生並儲存密鑰
建立動態饋給後,您必須產生驗證用的密鑰:
- 在動態饋給詳細資料頁面中,按一下「產生密鑰」。
- 對話方塊會顯示密鑰。
- 複製並妥善儲存密鑰。
重要事項:密鑰只會顯示一次,之後便無法擷取,如果遺失,就必須產生新的密鑰。
取得動態消息端點網址
- 前往動態消息的「詳細資料」分頁。
- 在「端點資訊」部分,複製「動態消息端點網址」。
網址格式為:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate或
https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate請儲存這個網址,以供後續步驟使用。
按一下 [完成]。
建立 Google Cloud API 金鑰
Chronicle 需要 API 金鑰才能進行驗證。在 Google Cloud 控制台中建立受限制的 API 金鑰。
建立 API 金鑰
- 前往 Google Cloud 控制台的「憑證」頁面。
- 選取專案 (與 Chronicle 執行個體相關聯的專案)。
- 依序按一下「建立憑證」>「API 金鑰」。
- 系統會建立 API 金鑰,並顯示在對話方塊中。
- 按一下「編輯 API 金鑰」即可限制金鑰。
限制 API 金鑰
- 在「API 金鑰」設定頁面中:
- 名稱:輸入描述性名稱 (例如
Chronicle Webhook API Key)
- 名稱:輸入描述性名稱 (例如
- 在「API 限制」下方:
- 選取「Restrict key」(限制金鑰)。
- 在「選取 API」下拉式選單中,搜尋並選取「Google SecOps API」 (或「Chronicle API」)。
- 按一下 [儲存]。
- 從頁面頂端的「API key」(API 金鑰) 欄位複製 API 金鑰值。
安全地儲存 API 金鑰。
啟用 Cloud Guard Cloud Event 回應程式
Cloud Guard 會使用 Cloud Event 回應程式,將問題詳細資料發送至 OCI Events Service。Cloud Event 回覆者是 Responder 配方的一部分,必須啟用並設為自動執行。
在 Responder 食譜中啟用 Cloud Event 規則
- 登入 Oracle Cloud Infrastructure Console。
- 開啟導覽選單,依序選取「身分與安全性」>「Cloud Guard」>「配方」。
- 選取「Responder Recipes」。
- 按一下附加至目標的回覆者配方。
- 在「回應者規則」部分,找出「雲端事件」規則。
- 如果狀態為「已停用」:
- 開啟「動作」選單 (三點圖示),然後選取「編輯」。
- 將「狀態」變更為「已啟用」。
- 按一下 [儲存]。
在目標上設定自動執行
- 在 Oracle Cloud Infrastructure Console 中,開啟導覽選單,然後依序選取「Identity & Security」>「Cloud Guard」>「Configuration」>「Targets」。
- 選取目標區間。
- 在「資源」下方,選取「回覆者食譜」。
- 按一下回覆者方案連結。
- 找到「Cloud Event」回應者規則。
- 開啟「動作」選單 (三點圖示),然後選取「編輯」。
- 將「規則觸發條件」設為「自動執行」。
- 勾選「確認自動執行」核取方塊。
按一下 [儲存]。
建立 OCI Functions 應用程式
建立 OCI Functions 應用程式,用於代管負責將 Cloud Guard 事件轉送至 Google SecOps 的函式。
建立應用程式
- 在 Oracle Cloud Infrastructure Console 中,開啟導覽選單,然後依序選取「Developer Services」>「Functions」>「Applications」。
- 選取要建立應用程式的區間。
- 點選「Create Application」(建立應用程式)。
- 請提供下列設定詳細資料:
- 「Name」(名稱):輸入
cloudguard-chronicle-forwarder - VCN:選取可存取網際網路的 VCN (函式必須存取網際網路,才能連上 Chronicle Webhook 端點)
- 子網路:選取已設定 NAT 閘道的公用子網路或私有子網路
- 「Name」(名稱):輸入
- 點選「建立」。
建立及部署函式
使用 OCI Cloud Shell 或本機環境搭配 Fn Project CLI,建立及部署函式。
- 從 Oracle Cloud Infrastructure 控制台開啟 OCI Cloud Shell (按一下頂端導覽列中的 Cloud Shell 圖示)。
為 OCI Functions 應用程式設定 Fn 環境:
fn list context fn use context <your-region-context> fn update context oracle.compartment-id <compartment_OCID> fn update context registry <region-key>.ocir.io/<tenancy-namespace>/cloudguard-chronicle初始化新的 Python 函式:
fn init --runtime python cloudguard-to-chronicle cd cloudguard-to-chronicle將
func.py檔案的內容替換成以下程式碼:import io import json import logging import requests from fdk import response def handler(ctx, data: io.BytesIO = None): """ OCI Function that receives Cloud Guard events from OCI Events Service and forwards them to Google SecOps (Chronicle) webhook endpoint. """ logger = logging.getLogger() try: cfg = ctx.Config() chronicle_endpoint = cfg.get("CHRONICLE_ENDPOINT") chronicle_api_key = cfg.get("CHRONICLE_API_KEY") chronicle_secret = cfg.get("CHRONICLE_SECRET") if not all([chronicle_endpoint, chronicle_api_key, chronicle_secret]): logger.error("Missing required configuration: CHRONICLE_ENDPOINT, CHRONICLE_API_KEY, or CHRONICLE_SECRET") return response.Response( ctx, response_data=json.dumps({"error": "Missing configuration"}), headers={"Content-Type": "application/json"}, status_code=500 ) event_data = json.loads(data.getvalue()) logger.info(f"Received Cloud Guard event: {event_data.get('eventType', 'unknown')}") webhook_url = f"{chronicle_endpoint}?key={chronicle_api_key}&secret={chronicle_secret}" headers = { "Content-Type": "application/json" } resp = requests.post( webhook_url, json=event_data, headers=headers, timeout=30 ) if resp.status_code >= 200 and resp.status_code < 300: logger.info(f"Successfully forwarded event to Chronicle (HTTP {resp.status_code})") else: logger.error(f"Failed to forward event to Chronicle (HTTP {resp.status_code}): {resp.text}") return response.Response( ctx, response_data=json.dumps({"status": resp.status_code}), headers={"Content-Type": "application/json"}, status_code=200 ) except Exception as e: logger.error(f"Error processing Cloud Guard event: {str(e)}") return response.Response( ctx, response_data=json.dumps({"error": str(e)}), headers={"Content-Type": "application/json"}, status_code=500 )取代
requirements.txt檔案的內容:fdk>=0.1.0 requests>=2.25.0將函式部署至應用程式:
fn -v deploy --app cloudguard-chronicle-forwarder等待部署作業完成。
設定函式環境變數
- 在 Oracle Cloud Infrastructure Console 中,開啟導覽選單,然後依序選取「Developer Services」>「Functions」>「Applications」。
- 按一下 cloudguard-chronicle-forwarder 應用程式。
- 在「資源」下方,選取「函式」。
- 按一下「cloudguard-to-chronicle」函式。
- 在「資源」下方,選取「設定」。
按一下「編輯」,然後新增下列鍵/值組合:
鍵 值 CHRONICLE_ENDPOINTChronicle Webhook 端點網址 (例如 https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate)CHRONICLE_API_KEY為 Chronicle webhook 建立的 Google Cloud API 金鑰 CHRONICLE_SECRETChronicle Webhook 密鑰 按一下 [儲存]。
為 OCI Functions 建立 IAM 政策
OCI Functions 服務和 Events 服務需要 IAM 政策才能叫用函式。
為函式建立動態群組
- 在 Oracle Cloud Infrastructure 控制台中,開啟導覽選單,然後依序選取「Identity & Security」>「Domains」。
- 選取「預設」網域。
- 在「身分網域資源」下方,選取「動態群組」。
- 按一下「建立動態群組」。
請提供下列設定詳細資料:
- 「Name」(名稱):輸入
cloudguard-chronicle-functions - 說明:輸入
Dynamic group for Cloud Guard to Chronicle forwarder function - 相符規則:輸入下列規則:
ALL {resource.type = 'fnfunc', resource.compartment.id = '<compartment_OCID>'}- 「Name」(名稱):輸入
點選「建立」。
建立 IAM 政策
- 在 Oracle Cloud Infrastructure Console 中,開啟導覽選單,然後依序選取「Identity & Security」>「Policies」。
- 確認您位於根區間。
- 點選「建立政策」。
- 請提供下列設定詳細資料:
- 「Name」(名稱):輸入
cloudguard-chronicle-policy - 說明:輸入
Allows Events Service to invoke Cloud Guard Chronicle forwarder function - 區間:確認已選取根區間。
- 「Name」(名稱):輸入
- 在「政策建立工具」部分,切換「顯示手動編輯器」。
在「Statement」欄位中,輸入下列政策陳述式:
Allow dynamic-group cloudguard-chronicle-functions to use fn-function in compartment <compartment_name> Allow dynamic-group cloudguard-chronicle-functions to use fn-invocation in compartment <compartment_name> Allow service cloudguardevents to use fn-function in compartment <compartment_name> Allow service cloudguardevents to use fn-invocation in compartment <compartment_name>點選「建立」。
為 Cloud Guard 建立 OCI Events 規則
建立事件規則,在 Cloud Guard 偵測到、排除或修正問題時觸發 OCI 函式。
建立「Events」規則
在 Oracle Cloud Infrastructure 控制台中,開啟導覽選單,然後依序選取「可觀測性與管理」>「事件服務」>「規則」。
按一下 [建立規則]。
請提供下列設定詳細資料:
- 「顯示名稱」:輸入
cloudguard-to-chronicle - 說明:輸入
Forwards Cloud Guard problem events to Google SecOps via OCI Functions
- 「顯示名稱」:輸入
在「規則條件」部分中:
- 將「Condition」設為「Event Type」。
- 將「Service Name」(服務名稱) 設為「Cloud Guard」。
- 將「活動類型」設為下列項目 (可選取多個):
- 偵測到問題
- 已排除 - 問題
- 已修正 - 問題
在「Actions」(動作) 部分中:
- 將「動作類型」設為「函式」。
- 將「函式區間」設為包含函式應用程式的區間。
- 將「函式應用程式」設為「cloudguard-chronicle-forwarder」。
- 將「函式」設為「cloudguard-to-chronicle」。
按一下 [建立規則]。
選用:依風險等級篩選
如要只轉送嚴重程度較高的問題,請在「事件」規則中新增屬性篩選條件:
- 在「規則條件」部分,按一下「+ 其他條件」。
- 將「Condition」設為「Attribute」。
- 將「Attribute Name」(屬性名稱) 設為
riskLevel。 將「屬性值」設為所需的風險等級:
CRITICALHIGH
驗證整合
手動測試函式
- 在 Oracle Cloud Infrastructure Console 中,開啟導覽選單,然後依序選取「Developer Services」>「Functions」>「Applications」。
- 按一下 cloudguard-chronicle-forwarder 應用程式。
- 在「資源」下方,選取「函式」。
- 按一下「cloudguard-to-chronicle」函式。
按一下「Invoke」(叫用),使用範例資料測試函式,或使用 OCI Cloud Shell:
echo '{"eventType":"com.oraclecloud.cloudguard.problemdetected","cloudEventsVersion":"0.1","eventID":"test-event-001","data":{"compartmentId":"ocid1.compartment.oc1..example","resourceName":"test-problem","additionalDetails":{"riskLevel":"HIGH","problemDescription":"Test problem for integration verification","status":"OPEN","region":"us-ashburn-1"}}}' | fn invoke cloudguard-chronicle-forwarder cloudguard-to-chronicle依序前往「開發人員服務」>「函式」>「應用程式」>「cloudguard-chronicle-forwarder」,然後選取「記錄」部分,即可驗證函式記錄。
尋找確認轉送成功的記錄項目:
Received Cloud Guard event: com.oraclecloud.cloudguard.problemdetected Successfully forwarded event to Chronicle (HTTP 200)
在 Google SecOps 中驗證
- 登入 Google SecOps。
- 前往「搜尋」,並查詢記錄類型為
OCI_CLOUDGUARD的事件。 - 確認搜尋結果中顯示 Cloud Guard 問題事件。
如果活動未顯示,請按照下列步驟操作:
- 在函式設定中驗證 Chronicle Webhook 端點網址、API 金鑰和密鑰
- 確認事件規則位於正確的 OCI 區域 (Cloud Guard 報告區域)
- 確認已啟用 Cloud Event 回應程式,並設為自動執行
- 查看函式記錄檔中的錯誤訊息
Cloud Guard 事件類型參考資料
Cloud Guard 會透過 OCI Events Service 發出下列事件類型:
| 事件類型 | 觸發條件 |
|---|---|
com.oraclecloud.cloudguard.problemdetected |
偵測到新問題 |
com.oraclecloud.cloudguard.problemdismissed |
問題已關閉 |
com.oraclecloud.cloudguard.problemremediated |
問題已修正 |
com.oraclecloud.cloudguard.sightingdetected |
偵測到新的目擊事件 |
驗證方法參考資料
Chronicle 網頁掛鉤動態消息支援多種驗證方法。選擇供應商支援的方法。
方法 1:自訂標頭 (建議)
如果供應商支援自訂 HTTP 標頭,請使用這個方法,以提升安全性。
要求格式:
POST <ENDPOINT_URL> HTTP/1.1 Content-Type: application/json x-goog-chronicle-auth: <API_KEY> x-chronicle-auth: <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
優點:
- 網址中不會顯示 API 金鑰和密鑰
- 更安全 (標頭不會記錄在網路伺服器存取記錄中)
- 如果供應商支援,則為首選方法
方法 2:查詢參數
如果供應商不支援自訂標頭,請將憑證附加至網址。
網址格式:
<ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>範例:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...&secret=abcd1234...要求格式:
POST <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY> HTTP/1.1 Content-Type: application/json { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
缺點:
- 網址中顯示憑證
- 可能會記錄在網路伺服器存取記錄中
- 安全性不如標頭
方法 3:混合式 (網址 + 標頭)
部分設定會在網址中使用 API 金鑰,並在標頭中使用密鑰。
要求格式:
POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1 Content-Type: application/json x-chronicle-auth: <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
驗證標頭名稱
Chronicle 接受下列驗證標頭名稱:
API 金鑰:
x-goog-chronicle-auth(建議)X-Goog-Chronicle-Auth(不區分大小寫)
密鑰:
x-chronicle-auth(建議)X-Chronicle-Auth(不區分大小寫)
Webhook 限制和最佳做法
要求限制
| 限制 | 值 |
|---|---|
| 要求大小上限 | 4 MB |
| 每秒查詢次數 (QPS) 上限 | 15,000 |
| 要求逾時 | 30 秒 |
| 重試行為 | 自動執行指數輪詢 |
UDM 對應表
| 記錄欄位 | UDM 對應 | 邏輯 |
|---|---|---|
| contentType | additional.fields | 從各種額外欄位合併 |
| cloudEventsVersion | additional.fields | |
| data.additionalDetails.reason | additional.fields | |
| data.additionalDetails.tenantId | additional.fields | |
| data.additionalDetails.problemType | additional.fields | |
| data.resourceName | additional.fields | |
| data.resourceId | additional.fields | |
| 狀態 | additional.fields | |
| problem_recommendation | additional.fields | |
| compartment_id | additional.fields | |
| compartment_name | additional.fields | |
| product_event | extensions.auth.type | 如果 product_event 與登入相符,請設為「AUTHTYPE_UNSPECIFIED」 |
| data.additionalDetails.problemDescription | metadata.description | 如果 data.additionalDetails.problemDescription 不為空值,則為該值,否則為 data.additionalDetails.description |
| data.additionalDetails.description | metadata.description | |
| has_user | metadata.event_type | 如果具有使用者和目標資源,則設為 USER_RESOURCE_ACCESS;如果具有使用者,則設為 USER_UNCATEGORIZED;如果 product_event 符合登入條件,則設為 USER_LOGIN;如果具有主體,則設為 STATUS_UPDATE;否則設為 GENERIC_EVENT |
| has_target_resource | metadata.event_type | |
| product_event | metadata.event_type | |
| has_principal | metadata.event_type | |
| eventType | metadata.product_event_type | 如果 eventType 不為空白,則為該值,否則為 product_event |
| product_event | metadata.product_event_type | |
| eventID | metadata.product_log_id | 直接複製值 |
| 版本 | metadata.product_version | 直接複製值 |
| 觀察員 | observer.domain.name | 使用 grok 從觀察者擷取的網域 |
| 觀察員 | observer.hostname | 如果不是 IP,則為觀察者的值 |
| 觀察員 | observer.ip | 如果是 IP,則為觀察者提供的值 |
| 主體 | principal.administrative_domain | 使用 grok 從主體或主體主機擷取的網域 |
| principal_host | principal.administrative_domain | |
| data.additionalDetails.problemAdditionalDetails.public_ips | principal.asset.ip | 如果 data.additionalDetails.problemAdditionalDetails.public_ips 不為空白,則為該值;否則如果 vnicDetails.0.vnicPublicIp 不為空白,則為該值;否則如果主體為 IP,則為該值;否則如果 principal_host 為 IP,則為該值 |
| vnicDetails.0.vnicPublicIp | principal.asset.ip | |
| 主體 | principal.asset.ip | |
| principal_host | principal.asset.ip | |
| 主體 | principal.hostname | 如果不是 IP,則為來自主體的 Value,否則如果不是 IP,則為 principal_host |
| principal_host | principal.hostname | |
| data.additionalDetails.problemAdditionalDetails.public_ips | principal.ip | 如果 data.additionalDetails.problemAdditionalDetails.public_ips 不為空白,則為該值;否則如果 vnicDetails.0.vnicPublicIp 不為空白,則為該值;否則如果主體為 IP,則為該值;否則如果 principal_host 為 IP,則為該值 |
| vnicDetails.0.vnicPublicIp | principal.ip | |
| 主體 | principal.ip | |
| principal_host | principal.ip | |
| data.additionalDetails.region | principal.location.name | 直接複製值 |
| principal_port | principal.port | 從 principal_port 轉換為整數 |
| data.additionalDetails.resourceName | principal.resource.name | 如果 data.additionalDetails.resourceName 不為空白,則為該值,否則為 data.additionalDetails.principalResourceName |
| data.additionalDetails.principalResourceName | principal.resource.name | |
| data.additionalDetails.resourceId | principal.resource.product_object_id | 如果 data.additionalDetails.resourceId 不為空值,則為該值;否則為 data.additionalDetails.principalResourceId |
| data.additionalDetails.principalResourceId | principal.resource.product_object_id | |
| data.additionalDetails.resourceType | principal.resource.resource_subtype | 如果 data.additionalDetails.resourceType 不是空白,則為該值;否則為 data.additionalDetails.principalResourceType |
| data.additionalDetails.principalResourceType | principal.resource.resource_subtype | |
| data.additionalDetails.resourceName | principal.user.userid | 如果 data.additionalDetails.resourceType ==「User」,則為 data.additionalDetails.resourceName 的值;如果 data.additionalDetails.principalResourceType ==「User」,則為 data.additionalDetails.principalResourceName 的值 |
| data.additionalDetails.principalResourceName | principal.user.userid | |
| 動作 | security_result.action | 如果動作符合封鎖條件,請設為 BLOCK;如果動作成功,請設為 ALLOW;如果動作失敗,請設為 FAIL;否則請設為 UNKNOWN |
| 動作 | security_result.action_details | 直接複製值 |
| data.additionalDetails.tacticName | security_result.attack_details.tactics | 值直接複製到 tactic_data.name,然後合併 |
| data.additionalDetails.techniqueName | security_result.attack_details.techniques | 值直接複製到 technique_data.name,然後合併 |
| data.additionalDetails.confidence | security_result.confidence_score | 直接複製值 |
| sightingType | security_result.detection_fields | 從 sightingType、sightingScore、riskScore 標籤合併 |
| sightingScore | security_result.detection_fields | |
| riskScore | security_result.detection_fields | |
| data.additionalDetails.detectorRuleId | security_result.rule_id | 直接複製值 |
| data.additionalDetails.detectorRuleType | security_result.rule_name | 直接複製值 |
| 嚴重性 | security_result.severity | 如果嚴重程度為 INFO,請設為 INFORMATIONAL;如果為 Low,請設為 LOW;如果為 WARN,請設為 MEDIUM;如果為 High,請設為 HIGH;如果為 Critical,請設為 CRITICAL |
| 嚴重性 | security_result.severity_details | 直接複製值 |
| 目標 | target.administrative_domain | 使用 grok 從目標或 target_host 擷取的網域 |
| target_host | target.administrative_domain | |
| 目標 | target.hostname | 如果不是 IP,則為目標中的值;如果不是 IP,則為 target_host |
| target_host | target.hostname | |
| 目標 | target.ip | 如果為 IP,則為目標的值;如果為 IP,則為 target_host |
| target_host | target.ip | |
| target_port | target.port | 從 target_port 轉換為整數 |
| targetId | target.resource.attribute.labels | 從各種標籤欄位合併 |
| 標籤 | target.resource.attribute.labels | |
| vnicAttachmentId | target.resource.attribute.labels | |
| vnicAttachmentDisplayName | target.resource.attribute.labels | |
| subnets | target.resource.attribute.labels | |
| instance_ocid | target.resource.attribute.labels | |
| route_table_ocids | target.resource.attribute.labels | |
| security_list_ocids | target.resource.attribute.labels | |
| data.additionalDetails.impactedResourceName | target.resource.name | 如果 data.additionalDetails.impactedResourceName 不為空白,則為該值,否則為 vnicDetails.0.vnicDisplayName |
| vnicDetails.0.vnicDisplayName | target.resource.name | |
| data.additionalDetails.impactedResourceId | target.resource.product_object_id | 如果 data.additionalDetails.impactedResourceId 不為空值,則為該值;否則為 vnicDetails.0.vnicId |
| vnicDetails.0.vnicId | target.resource.product_object_id | |
| data.additionalDetails.impactedResourceType | target.resource.resource_subtype | 直接複製值 |
| target_url | target.url | 直接複製值 |
| target_user | target.user.userid | 直接複製值 |
| 產品 | metadata.product_name | 直接複製值 |
| vendor | metadata.vendor_name | 直接複製值 |
data.additionalDetails.tacticName |
security_result.attack_details.tactics.name |
從變更記錄對應 |
data.additionalDetails.techniqueName |
security_result.attack_details.techniques.name |
從變更記錄對應 |
變更記錄
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。