收集 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 執行個體
- 有效的 Oracle Cloud Infrastructure 租用戶,且已啟用 Cloud Guard
- Oracle Cloud Infrastructure 主控台的管理員存取權
- 建立及管理 OCI Functions 應用程式的權限
- 建立 OCI 事件規則和通知主題的權限
- 可存取 OCI Cloud Shell 或已安裝 Fn Project CLI 的本機環境
- 已安裝 Docker (用於在本機建構 OCI Functions)
- 存取 Google Cloud 控制台 (用於建立 API 金鑰)
在 Google SecOps 中建立 Webhook 動態饋給
建立動態饋給
- 依序前往 「SIEM 設定」 > 「動態饋給」。
- 按一下「新增動態饋給」。
- 在下一頁,點按「設定單一動態饋給」。
- 在「Feed name」(動態饋給名稱) 欄位中,輸入動態饋給名稱 (例如
OCI Cloud Guard Problems)。 - 選取「Webhook」做為「來源類型」。
- 選取「Oracle Cloud Infrastructure - Oracle Cloud Guard」做為「記錄類型」。
- 點選「下一步」。
- 指定下列輸入參數的值:
- 分割分隔符 (選用):留空 (每次函式叫用都會傳送單一事件)。
- 資產命名空間:資產命名空間
- 擷取標籤:要套用至這個動態饋給事件的標籤
- 點選「下一步」。
- 在「Finalize」(完成) 畫面中檢查新的新聞動態消息設定,然後按一下「Submit」(提交)。
產生並儲存密鑰
建立動態饋給後,您必須產生用於驗證的密鑰:
- 在動態饋給詳細資料頁面中,按一下「產生密鑰」。
- 對話方塊會顯示密鑰。
- 複製並妥善儲存密鑰。
重要事項:密鑰只會顯示一次,之後便無法擷取,如果遺失,就必須產生新的密鑰。
取得動態饋給端點網址
- 前往動態饋給的「詳細資料」分頁。
- 在「端點資訊」部分,複製「動態消息端點網址」。
網址格式如下:
https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import其中
{region}是 Google SecOps 執行個體的區域 (例如us、europe或asia-southeast1),{parent}是資源路徑,格式為projects/<PROJECT_ID>/locations/<LOCATION>/instances/<INSTANCE_ID>/logTypes/<LOG_TYPE>。請儲存這個網址,以便進行後續步驟。
按一下「完成」。
建立 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 金鑰」欄位複製 API 金鑰值。
妥善保存 API 金鑰。
啟用 Cloud Guard Cloud Event 回應程式
Cloud Guard 會使用 Cloud Event 回應程式,將問題詳細資料傳送至 OCI Events Service。Cloud Event 回覆者是回覆者配方的一部分,必須啟用並設為自動執行。
在 Responder 方案中啟用 Cloud Event 規則
- 登入 Oracle Cloud Infrastructure 控制台。
- 開啟導覽選單,依序選取「身分與安全性」>「Cloud Guard」>「配方」。
- 選取「Responder Recipes」。
- 按一下附加至目標的回覆者食譜。
- 在「回應者規則」部分,找出「雲端事件」規則。
- 如果狀態為「停用」:
- 開啟「動作」選單 (三點圖示),然後選取「編輯」。
- 將「狀態」變更為「已啟用」。
- 按一下 [儲存]。
在目標上設定自動執行
- 在 Oracle Cloud Infrastructure 控制台中,開啟導覽選單,然後依序選取「Identity & Security」>「Cloud Guard」>「Configuration」>「Targets」。
- 選取目標區間。
- 在「資源」下方,選取「應變人員食譜」。
- 按一下回覆者食譜連結。
- 找出「Cloud Event」回應者規則。
- 開啟「動作」選單 (三點圖示),然後選取「編輯」。
- 將「規則觸發條件」設為「自動執行」。
- 勾選「CONFIRM EXECUTE AUTOMATICALLY」核取方塊。
按一下 [儲存]。
建立 OCI Functions 應用程式
建立 OCI Functions 應用程式,用於託管負責將 Cloud Guard 事件轉送至 Google SecOps 的函式。
建立應用程式
- 在 Oracle Cloud Infrastructure Console 中,開啟導覽選單,然後依序選取「Developer Services」>「Functions」>「Applications」。
- 選取要建立應用程式的分區。
- 點選「Create Application」(建立應用程式)。
- 提供下列設定詳細資料:
- 名稱:輸入
cloudguard-chronicle-forwarder - VCN:選取可存取網際網路的 VCN (函式必須存取網際網路,才能連上 Chronicle Webhook 端點)
- 子網路:選取已設定 NAT 閘道的公用子網路或私有子網路
- 名稱:輸入
- 點選「建立」。
建立及部署函式
使用 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://{region}-chronicle.googleapis.com/v1/{parent}/logs:import)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 控制台中,開啟導覽選單,然後依序選取 「Identity & Security」 >「Policies」。
- 確認您位於根區間。
- 點按「建立政策」。
- 提供下列設定詳細資料:
- Name:輸入
cloudguard-chronicle-policy - 說明:輸入
Allows Events Service to invoke Cloud Guard Chronicle forwarder function - Compartment:確認已選取根區間。
- 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 事件規則
建立事件規則,在 Cloud Guard 偵測、關閉或修復問題時觸發 OCI 函式。
建立「事件」規則
在 Oracle Cloud Infrastructure 控制台中,開啟導覽選單,然後依序選取「Observability & Management」>「Events Service」>「Rules」。
按一下 [建立規則]。
提供下列設定詳細資料:
- 顯示名稱:輸入
cloudguard-to-chronicle - 說明:輸入
Forwards Cloud Guard problem events to Google SecOps via OCI Functions
- 顯示名稱:輸入
在「規則條件」部分:
- 將「條件」設為「事件類型」。
- 將「服務名稱」設為「Cloud Guard」。
- 將「事件類型」設為下列選項 (可選取多個):
- 已偵測到問題
- 已排除 - 問題
- 已修復 - 問題
在「Actions」(動作) 部分中:
- 將「Action Type」(動作類型) 設為「Functions」(函式)。
- 將「Function Compartment」設為包含函式應用程式的分區。
- 將「Function Application」設為「cloudguard-chronicle-forwarder」。
- 將「函式」設為 cloudguard-to-chronicle。
按一下 [建立規則]。
選用:依風險等級篩選
如要只轉送嚴重程度較高的問題,請在「事件」規則中新增屬性篩選器:
- 在「規則條件」部分,按一下「+ 新增其他條件」。
- 將「Condition」(條件) 設為「Attribute」(屬性)。
- 將「Attribute Name」(屬性名稱) 設為
riskLevel。 將「Attribute Values」設為所需的風險等級:
CRITICALHIGH
驗證整合
手動測試函式
- 在 Oracle Cloud Infrastructure 控制台中,開啟導覽選單,然後依序選取 「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依序前往「Developer Services」 > 「Functions」 > 「Applications」 > 「cloudguard-chronicle-forwarder」,然後選取「Logs」部分,驗證函式記錄。
尋找確認轉送成功的記錄項目:
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 Webhook 動態饋給支援多種驗證方式。請選擇供應商支援的方法。
方法 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://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?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 | 如果具有 has_user 和 has_target_resource,則設為 USER_RESOURCE_ACCESS;如果具有 has_user,則設為 USER_UNCATEGORIZED;如果 product_event 符合登入條件,則設為 USER_LOGIN;如果具有 principal,則設為 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_host | principal.administrative_domain | |
| data.additionalDetails.problemAdditionalDetails.public_ips | principal.asset.ip | 如果 data.additionalDetails.problemAdditionalDetails.public_ips 不為空白,則為該欄位的值;如果 vnicDetails.0.vnicPublicIp 不為空白,則為該欄位的值;如果 IP 為主體,則為主體;如果 IP 為 principal_host,則為 principal_host |
| 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),否則為主體主機 (如果是 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 或 target_host 擷取網域 |
| target_host | target.administrative_domain | |
| 目標 | target.hostname | 如果不是 IP,則為目標的值,否則為 target_host |
| target_host | target.hostname | |
| 目標 | target.ip | 如果 IP 是 target,則為 target 的值,否則為 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 專家尋求解答。