收集 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 動態饋給

建立動態饋給

  1. 依序前往 「SIEM 設定」 > 「動態饋給」。
  2. 按一下「新增動態饋給」。
  3. 在下一頁,點按「設定單一動態饋給」。
  4. 在「Feed name」(動態饋給名稱) 欄位中,輸入動態饋給名稱 (例如 OCI Cloud Guard Problems)。
  5. 選取「Webhook」做為「來源類型」。
  6. 選取「Oracle Cloud Infrastructure - Oracle Cloud Guard」做為「記錄類型」。
  7. 點選「下一步」。
  8. 指定下列輸入參數的值:
    • 分割分隔符 (選用):留空 (每次函式叫用都會傳送單一事件)。
    • 資產命名空間:資產命名空間
    • 擷取標籤:要套用至這個動態饋給事件的標籤
  9. 點選「下一步」。
  10. 在「Finalize」(完成) 畫面中檢查新的新聞動態消息設定,然後按一下「Submit」(提交)。

產生並儲存密鑰

建立動態饋給後,您必須產生用於驗證的密鑰:

  1. 在動態饋給詳細資料頁面中,按一下「產生密鑰」。
  2. 對話方塊會顯示密鑰。
  3. 複製並妥善儲存密鑰。

重要事項:密鑰只會顯示一次,之後便無法擷取,如果遺失,就必須產生新的密鑰。

取得動態饋給端點網址

  1. 前往動態饋給的「詳細資料」分頁。
  2. 在「端點資訊」部分,複製「動態消息端點網址」。
  3. 網址格式如下:

    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>。

  4. 請儲存這個網址,以便進行後續步驟。

  5. 按一下「完成」。

建立 Google Cloud API 金鑰

Chronicle 需要 API 金鑰才能進行驗證。在 Google Cloud 控制台中建立受限制的 API 金鑰。

建立 API 金鑰

  1. 前往 Google Cloud 控制台憑證頁面。
  2. 選取專案 (與 Chronicle 執行個體相關聯的專案)。
  3. 依序點選「建立憑證」>「API 金鑰」。
  4. 系統會建立 API 金鑰,並在對話方塊中顯示。
  5. 按一下「編輯 API 金鑰」,即可限制金鑰。

限制 API 金鑰

  1. 在「API 金鑰」設定頁面中:
    • 名稱:輸入描述性名稱 (例如 Chronicle Webhook API Key)
  2. 在「API 限制」下方:
    1. 選取「Restrict key」(限制金鑰)。
    2. 在「選取 API」下拉式選單中,搜尋並選取「Google SecOps API」 (或「Chronicle API」)。
  3. 按一下 [儲存]。
  4. 從頁面頂端的「API 金鑰」欄位複製 API 金鑰值。
  5. 妥善保存 API 金鑰。

啟用 Cloud Guard Cloud Event 回應程式

Cloud Guard 會使用 Cloud Event 回應程式,將問題詳細資料傳送至 OCI Events Service。Cloud Event 回覆者是回覆者配方的一部分,必須啟用並設為自動執行。

在 Responder 方案中啟用 Cloud Event 規則

  1. 登入 Oracle Cloud Infrastructure 控制台。
  2. 開啟導覽選單,依序選取「身分與安全性」>「Cloud Guard」>「配方」。
  3. 選取「Responder Recipes」。
  4. 按一下附加至目標的回覆者食譜。
  5. 在「回應者規則」部分,找出「雲端事件」規則。
  6. 如果狀態為「停用」:
    1. 開啟「動作」選單 (三點圖示),然後選取「編輯」。
    2. 將「狀態」變更為「已啟用」。
    3. 按一下 [儲存]。

在目標上設定自動執行

  1. 在 Oracle Cloud Infrastructure 控制台中,開啟導覽選單,然後依序選取「Identity & Security」>「Cloud Guard」>「Configuration」>「Targets」。
  2. 選取目標區間。
  3. 在「資源」下方,選取「應變人員食譜」。
  4. 按一下回覆者食譜連結。
  5. 找出「Cloud Event」回應者規則。
  6. 開啟「動作」選單 (三點圖示),然後選取「編輯」。
  7. 將「規則觸發條件」設為「自動執行」。
  8. 勾選「CONFIRM EXECUTE AUTOMATICALLY」核取方塊。
  9. 按一下 [儲存]。

建立 OCI Functions 應用程式

建立 OCI Functions 應用程式,用於託管負責將 Cloud Guard 事件轉送至 Google SecOps 的函式。

建立應用程式

  1. 在 Oracle Cloud Infrastructure Console 中,開啟導覽選單,然後依序選取「Developer Services」>「Functions」>「Applications」。
  2. 選取要建立應用程式的分區。
  3. 點選「Create Application」(建立應用程式)。
  4. 提供下列設定詳細資料:
    • 名稱:輸入 cloudguard-chronicle-forwarder
    • VCN:選取可存取網際網路的 VCN (函式必須存取網際網路,才能連上 Chronicle Webhook 端點)
    • 子網路:選取已設定 NAT 閘道的公用子網路或私有子網路
  5. 點選「建立」。

建立及部署函式

使用 OCI Cloud Shell 或本機環境搭配 Fn Project CLI,建立及部署函式。

  1. 從 Oracle Cloud Infrastructure 控制台開啟 OCI Cloud Shell (點選頂端導覽列中的 Cloud Shell 圖示)。
  2. 為 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
    
  3. 初始化新的 Python 函式:

    fn init --runtime python cloudguard-to-chronicle
    cd cloudguard-to-chronicle
    
  4. 將 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
            )
    
  5. 取代 requirements.txt 檔案的內容:

    fdk>=0.1.0
    requests>=2.25.0
    
  6. 將函式部署至應用程式:

    fn -v deploy --app cloudguard-chronicle-forwarder
    
  7. 等待部署作業完成。

設定函式環境變數

  1. 在 Oracle Cloud Infrastructure Console 中,開啟導覽選單,然後依序選取「Developer Services」>「Functions」>「Applications」。
  2. 按一下「cloudguard-chronicle-forwarder」應用程式。
  3. 在「資源」下方,選取「函式」。
  4. 按一下「cloudguard-to-chronicle」函式。
  5. 在「資源」下方,選取「設定」。
  6. 按一下「編輯」,然後新增下列鍵/值組合:

    鍵 值
    CHRONICLE_ENDPOINT Chronicle Webhook 端點網址 (例如 https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import)
    CHRONICLE_API_KEY 為 Chronicle Webhook 建立的 Google Cloud API 金鑰
    CHRONICLE_SECRET Chronicle Webhook 密鑰
  7. 按一下 [儲存]。

建立 OCI Functions 的 IAM 政策

OCI Functions 服務和 Events 服務需要 IAM 政策才能叫用函式。

為函式建立動態群組

  1. 在 Oracle Cloud Infrastructure 控制台中,開啟導覽選單,然後依序選取「Identity & Security」>「Domains」。
  2. 選取「預設」網域。
  3. 在「身分網域資源」下方,選取「動態群組」。
  4. 按一下「建立動態群組」。
  5. 提供下列設定詳細資料:

    • Name:輸入 cloudguard-chronicle-functions
    • 說明:輸入 Dynamic group for Cloud Guard to Chronicle forwarder function
    • 比對規則:輸入下列規則:
    ALL {resource.type = 'fnfunc', resource.compartment.id = '<compartment_OCID>'}
    
  6. 點選「建立」。

建立 IAM 政策

  1. 在 Oracle Cloud Infrastructure 控制台中,開啟導覽選單,然後依序選取 「Identity & Security」 >「Policies」。
  2. 確認您位於根區間。
  3. 點按「建立政策」。
  4. 提供下列設定詳細資料:
    • Name:輸入 cloudguard-chronicle-policy
    • 說明:輸入 Allows Events Service to invoke Cloud Guard Chronicle forwarder function
    • Compartment:確認已選取根區間。
  5. 在「政策建立工具」部分,切換「顯示手動編輯器」。
  6. 在「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>
    
  7. 點選「建立」。

建立 Cloud Guard 的 OCI 事件規則

建立事件規則,在 Cloud Guard 偵測、關閉或修復問題時觸發 OCI 函式。

建立「事件」規則

  1. 在 Oracle Cloud Infrastructure 控制台中,開啟導覽選單,然後依序選取「Observability & Management」>「Events Service」>「Rules」。

  2. 按一下 [建立規則]。

  3. 提供下列設定詳細資料:

    • 顯示名稱:輸入 cloudguard-to-chronicle
    • 說明:輸入 Forwards Cloud Guard problem events to Google SecOps via OCI Functions
  4. 在「規則條件」部分:

    1. 將「條件」設為「事件類型」。
    2. 將「服務名稱」設為「Cloud Guard」。
    3. 將「事件類型」設為下列選項 (可選取多個):
      • 已偵測到問題
      • 已排除 - 問題
      • 已修復 - 問題
  5. 在「Actions」(動作) 部分中:

    1. 將「Action Type」(動作類型) 設為「Functions」(函式)。
    2. 將「Function Compartment」設為包含函式應用程式的分區。
    3. 將「Function Application」設為「cloudguard-chronicle-forwarder」。
    4. 將「函式」設為 cloudguard-to-chronicle。
  6. 按一下 [建立規則]。

選用:依風險等級篩選

如要只轉送嚴重程度較高的問題,請在「事件」規則中新增屬性篩選器:

  1. 在「規則條件」部分,按一下「+ 新增其他條件」。
  2. 將「Condition」(條件) 設為「Attribute」(屬性)。
  3. 將「Attribute Name」(屬性名稱) 設為 riskLevel。
  4. 將「Attribute Values」設為所需的風險等級:

    • CRITICAL
    • HIGH

驗證整合

手動測試函式

  1. 在 Oracle Cloud Infrastructure 控制台中,開啟導覽選單,然後依序選取 「Developer Services」>「Functions」>「Applications」。
  2. 按一下「cloudguard-chronicle-forwarder」應用程式。
  3. 在「資源」下方,選取「函式」。
  4. 按一下「cloudguard-to-chronicle」函式。
  5. 按一下「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
    
  6. 依序前往「Developer Services」 > 「Functions」 > 「Applications」 > 「cloudguard-chronicle-forwarder」,然後選取「Logs」部分,驗證函式記錄。

  7. 尋找確認轉送成功的記錄項目:

    Received Cloud Guard event: com.oraclecloud.cloudguard.problemdetected
    Successfully forwarded event to Chronicle (HTTP 200)
    

在 Google SecOps 中驗證

  1. 登入 Google SecOps。
  2. 前往「搜尋」,並查詢記錄類型為 OCI_CLOUDGUARD 的事件。
  3. 確認 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 動態饋給支援多種驗證方式。請選擇供應商支援的方法。

如果供應商支援自訂 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 專家尋求解答。