收集 Cisco Catalyst Center (舊稱 DNA Center) 記錄

剖析器版本:2.0

支援:

本文說明如何使用兩種不同方法,將 Cisco Catalyst Center (舊稱 DNA Center) 記錄擷取至 Google Security Operations。請選擇最符合環境和需求的選項。

Cisco Catalyst Center 是集中式網路管理和自動化平台,適用於企業園區、分支機構和 IoT 網路。可跨有線和無線基礎架構提供意圖式網路、政策管理、裝置佈建、保證分析,以及 AI 驅動的問題偵測。Catalyst Center 會產生與網路健康狀態、裝置狀態變更、違反安全性政策和保證問題相關的事件。

事前準備

請確認您已完成下列事前準備事項:

  • Google SecOps 執行個體。
  • Cisco Catalyst Center 管理控制台的特殊權限存取權。
  • 選項 1:Windows Server 2016 以上版本,或搭載 systemd 的 Linux 主機,用於 Bindplane 代理程式。
  • 方法 2:Cisco Catalyst Center 與 Google SecOps Webhook 端點之間的網路連線。

選項 1:使用 Bindplane 代理程式整合 Syslog

這個選項會將 syslog 從 Cisco Catalyst Center 轉送至 Bindplane 代理程式,再由代理程式將結構化記錄轉送至 Google SecOps。

取得 Bindplane 代理程式的 Google SecOps 憑證

如要向 Google SecOps 驗證 Bindplane 代理程式,請選擇下列其中一種方法:

  • 新部署作業:使用 Chronicle API (選項 1)。
  • 舊版部署作業:繼續使用擷取驗證檔案 (選項 2),直到 Ingestion API 於 2027 年 7 月 20 日停用。
  1. 登入 Google Cloud 控制台,選取連結至 Google SecOps 執行個體的 Google Cloud 專案。
  2. 依序前往「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。
  3. 按一下「建立服務帳戶」。
  4. 提供下列設定詳細資料:
    • 「Service account name」(服務帳戶名稱):輸入帳戶名稱 (例如 bindplane-ingest)。
    • 「服務帳戶說明」:輸入說明 (例如 Bindplane agent log ingestion)。
  5. 點按「Create and continue」(建立並繼續)。
  6. 在「將專案存取權授予這個服務帳戶」部分,按一下「選取角色」,然後選取「Chronicle 編輯者」。
  7. 依序點選「繼續」和「完成」。
  8. 按一下您建立的服務帳戶,然後前往「金鑰」分頁。
  9. 依序點選「新增金鑰」>「建立新的金鑰」。
  10. 選取「JSON」,然後按一下「建立」。金鑰檔案會下載到電腦。
  11. 將金鑰檔案儲存為 Bindplane 收集器目錄中的 ingestion-auth.json (Linux 為 /opt/observiq-otel-collector/ingestion-auth.json,Windows 為 C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json),或更新 config.yaml 中的 creds_file_path,使其與儲存檔案的路徑相符。
  12. 依序前往「IAM & Admin」(IAM 與管理) >「Settings」(設定),然後複製「Project number」(專案編號)。設定匯出工具時會用到。

方法 2:下載擷取驗證檔案 (舊版)

  1. 登入 Google SecOps 控制台。
  2. 依序前往「SIEM Settings」 > 「Collection Agents」。
  3. 下載擷取驗證檔案。
  4. 將檔案安全地儲存在要安裝 Bindplane 代理程式的系統上。

取得 Google SecOps 客戶 ID

  1. 登入 Google SecOps 控制台。
  2. 依序前往「SIEM 設定」 > 「設定檔」。
  3. 複製並儲存「機構詳細資料」部分的客戶 ID。

安裝 Bindplane 代理程式

請按照下列操作說明,在 Windows 或 Linux 作業系統上安裝 Bindplane 代理程式。

Windows 安裝

  1. 以管理員身分開啟「命令提示字元」或「PowerShell」。
  2. 執行下列指令:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. 等待安裝完成。

  4. 執行下列指令,確認安裝成功:

    sc query observiq-otel-collector
    

服務應顯示為「RUNNING」。

安裝 Linux

  1. 開啟具有 root 或 sudo 權限的終端機。
  2. 執行下列指令:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. 等待安裝完成。

  4. 執行下列指令,確認安裝成功:

    sudo systemctl status observiq-otel-collector
    

服務應顯示為「active (running)」。

其他安裝資源

如需其他安裝選項和疑難排解資訊,請參閱 Bindplane 代理程式安裝指南。

設定 Bindplane 代理程式,擷取系統記錄並傳送至 Google SecOps

找出設定檔

  • 在作業系統中找出設定檔,方法如下:

    • Linux:
    sudo nano /opt/observiq-otel-collector/config.yaml
    
    • Windows:
    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

編輯設定檔

  • 將 config.yaml 的全部內容替換為下列設定:

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/cisco_catalyst_center:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: chronicle.googleapis.com
        log_type: CISCO_DNAC
        raw_log_field: body
    
    service:
      pipelines:
        logs/cisco_catalyst_center_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/cisco_catalyst_center
    

設定參數

請替換下列預留位置:

  • 接收器設定:

    • listen_address:要監聽的 IP 位址和通訊埠。使用 0.0.0.0 監聽所有介面。視需要更換通訊埠 (例如非根 Linux 的 1514)。
  • 匯出工具設定:

    • creds_file_path:服務帳戶 JSON 金鑰檔案的完整路徑 (選項 1):
      • Linux:/opt/observiq-otel-collector/ingestion-auth.json
      • Windows:C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • YOUR_CUSTOMER_ID:您的 Google SecOps 客戶 ID。
    • location:將 <LOCATION> 替換為 Google SecOps 執行個體的區域 (例如 us、europe 或 asia-southeast1)。匯出工具會以這個值做為 chronicle.googleapis.com 的前置字元。如需完整清單,請參閱「區域性端點」。
    • project:將 <PROJECT_NUMBER> 替換為「IAM 與管理」>「設定」中的專案編號。
    • endpoint:請將此值設為 chronicle.googleapis.com。

舊版擷取 API 匯出工具

  • 如果您使用選項 2 的擷取驗證檔案,請將 exporters 區塊替換為下列內容。將 creds_file_path 設為擷取驗證檔案的路徑。如果執行個體位於美國境外,請將 malachiteingestion-pa.googleapis.com 替換為區域端點 (例如 europe-malachiteingestion-pa.googleapis.com)。

    exporters:
      chronicle/cisco_catalyst_center:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: CISCO_DNAC
        raw_log_field: body
    

儲存設定檔

  • 編輯完畢後,請儲存檔案:
    • Linux:依序按下 Ctrl+O、Enter 和 Ctrl+X
    • Windows:依序點選「檔案」 > 「儲存」

重新啟動 Bindplane 代理程式,套用變更

如要在 Linux 中重新啟動 Bindplane 代理程式,請按照下列步驟操作:

  1. 執行下列指令:

    sudo systemctl restart observiq-otel-collector
    
  2. 確認服務是否正在執行:

    sudo systemctl status observiq-otel-collector
    
  3. 查看記錄檔是否有錯誤:

    sudo journalctl -u observiq-otel-collector -f
    

如要在 Windows 重新啟動 Bindplane 代理程式,請按照下列步驟操作:

  1. 您可以選擇下列其中一個選項:

    • 以管理員身分開啟命令提示字元或 PowerShell:
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • 服務控制台:
      1. 按下 Win+R 鍵,輸入 services.msc,然後按下 Enter 鍵。
      2. 找出「observIQ OpenTelemetry Collector」。
      3. 按一下滑鼠右鍵,然後選取「重新啟動」。
  2. 確認服務正在執行:

    sc query observiq-otel-collector
    
  3. 查看記錄檔是否有錯誤:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    

在 Cisco Catalyst Center 設定 syslog 轉送

  1. 登入 Cisco Catalyst Center。
  2. 依序前往 「System」 > 「Settings」 > 「External Services」 > 「Destinations」 > 「Syslog」。
  3. 按一下「新增」圖示 (+),建立新的系統記錄目的地。
  4. 提供下列設定詳細資料:
    • 名稱:輸入描述性名稱 (例如 Google SecOps-Bindplane)。
    • 說明:輸入簡短說明 (例如 Syslog forwarding to Google SecOps via Bindplane)。
    • Hostname/IP Address:輸入 Bindplane 代理程式主機的 IP 位址。
    • Port:輸入 514 (或 Bindplane 代理程式中設定的通訊埠)。
    • 通訊協定:視 Bindplane 設定選取「UDP」或「TCP」。
  5. 按一下 [儲存]。

選項 2 - Webhook 整合

這個選項會使用 Cisco Catalyst Center 的原生 Webhook 功能,即時將結構化 JSON 事件直接傳送至 Google SecOps。

在 Google SecOps 中建立 Webhook 動態饋給

建立動態饋給

  1. 依序前往「SIEM 設定」>「動態饋給」。
  2. 按一下「新增動態消息」。
  3. 在下一個頁面中,按一下「設定單一動態饋給」。
  4. 在「Feed name」(動態饋給名稱) 欄位中,輸入動態饋給名稱 (例如 Cisco Catalyst Center Webhook)。
  5. 「Source type」(來源類型) 請選取「Webhook」。
  6. 在「Log type」(記錄類型) 中選取「Cisco Catalyst Center」。
  7. 點選「下一步」。
  8. 指定下列輸入參數的值:
    • 分割分隔符 (選用):輸入 \n,以換行符號分隔事件。
    • 資產命名空間:資產命名空間。
    • 擷取標籤:要套用至這個動態饋給事件的標籤。
  9. 點選「下一步」。
  10. 在「Finalize」(完成) 畫面中檢查新的新聞動態消息設定,然後按一下「Submit」(提交)。

產生並儲存密鑰

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

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

取得動態饋給端點網址

  1. 前往動態饋給的「詳細資料」分頁。
  2. 在「Endpoint Information」部分,複製「Feed endpoint URL」。
  3. 請儲存這個網址,以便進行後續步驟。
  4. 按一下「完成」。

建立 Google Cloud API 金鑰

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

建立 API 金鑰

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

限制 API 金鑰

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

在 Cisco Catalyst Center 中設定 Webhook 目的地

  1. 登入 Cisco Catalyst Center。
  2. 依序前往「System」 >「Settings」 >「External Services」 >「Destinations」 >「Webhook」。
  3. 按一下「新增」圖示 (+),建立新的 Webhook 目的地。
  4. 提供下列設定詳細資料:
    • 名稱:輸入描述性名稱 (例如 Google SecOps-Webhook)。
    • 說明:輸入簡短說明 (例如 Webhook to Google SecOps)。
    • 網址:貼上 Google SecOps Webhook 端點網址。
    • 方法:選取「POST」。
    • 驗證:選取「不驗證」。
    • 信任憑證:選取「是」。
    • 標頭:按一下「新增標頭」,然後新增下列標頭:
      • 名稱:Content-Type,值:application/json
      • 名稱:X-goog-api-key,值:您的 Google Cloud API 金鑰
      • 名稱:X-Webhook-Access-Key,值:Google SecOps 摘要的密鑰
  5. 按一下 [儲存]。

訂閱 Webhook 通知的事件

  1. 在 Cisco Catalyst Center 中,依序前往 Platform > Developer Toolkit > 事件通知。
  2. 在「通知」分頁中,按一下「建立新通知」。
  3. 在「步驟 1 (選取網站和事件)」中,選取要監控的網站和事件:
    • 網路事件:裝置無法連線、介面中斷、設定變更。
    • 安全性事件:違反安全性政策、驗證失敗。
    • 系統事件:平台事件、軟體更新、維護。
    • 保證事件:效能降低、連線問題。
  4. 點選「下一步」。
  5. 在「步驟 2 (選取管道)」中,選取「REST」做為通知管道。
  6. 在「端點」下拉式選單中,選取上一節建立的 Webhook 目的地 (例如 Google SecOps-Webhook)。
  7. 點選「下一步」。
  8. 在「Step 3 (Summary)」(步驟 3 (摘要)) 中,查看通知設定。
  9. 輸入訂閱項目的「名稱」 (例如 Google SecOps Events)。
  10. 按一下「完成」。

UDM 對應表

記錄欄位 UDM 對應 邏輯
category security_result.severity_details 原始記錄中的 category 值會對應至 security_result.severity_details 欄位。
ciscoDnaEventLink target.url 原始記錄中的 ciscoDnaEventLink 值會對應至 target.url 欄位。
date_time metadata.event_timestamp 使用 grok 模式從原始記錄訊息中擷取,並轉換為時間戳記格式。
details.Assurance_Issue_Category security_result.about.resource.attribute.labels[].value 原始記錄中的 details.Assurance_Issue_Category 值會對應至「Assurance_Issue_Category」鍵。
details.Assurance_Issue_Details security_result.summary 原始記錄中的 details.Assurance_Issue_Details 值會對應至 security_result.summary 欄位。
details.Assurance_Issue_Name security_result.about.resource.attribute.labels[].value 原始記錄中的 details.Assurance_Issue_Name 值會對應至「Assurance_Issue_Name」鍵。
details.Assurance_Issue_Priority security_result.about.resource.attribute.labels[].value 原始記錄中的 details.Assurance_Issue_Priority 值會對應至「Assurance_Issue_Priority」鍵。
details.Assurance_Issue_Status security_result.about.resource.attribute.labels[].value 原始記錄中的 details.Assurance_Issue_Status 值會對應至「Assurance_Issue_Status」鍵。
details.Device target.ip、target.hostname 如果值為 IP 位址,則會對應至 target.ip,否則會對應至 target.hostname。
dnacIp target.ip 如果原始記錄中的 dnacIp 值是有效的 IP 位址,則會對應至 target.ip。
domain additional.fields[].value.string_value 原始記錄中的 domain 值會以鍵/值組合的形式新增至 additional.fields,鍵為「網域」。
eventId metadata.product_event_type 原始記錄中的 eventId 值會對應至 metadata.product_event_type 欄位。
instanceId target.resource.product_object_id 原始記錄中的 instanceId 值會對應至 target.resource.product_object_id 欄位。
name target.resource.attribute.labels[].value 原始記錄中的 name 值會對應至「name」鍵。
namespace target.namespace 原始記錄中的 namespace 值會對應至 target.namespace 欄位。
network.deviceId target.asset.asset_id 原始記錄中 network.deviceId 的值會加上「deviceId: 」前置字元,並對應至 target.asset.asset_id。
note additional.fields[].value.string_value 原始記錄中的 note 值會以鍵/值組合的形式新增至 additional.fields,鍵為「note」。
severity security_result.severity 用於判斷 security_result.severity、is_alert 和 is_significant 的值。
source target.resource.attribute.labels[].value 原始記錄中的 source 值會對應至「source」鍵。
src_ip principal.ip 使用 grok 模式從原始記錄訊息中擷取,並對應至 principal.ip。
subDomain additional.fields[].value.string_value 原始記錄中的 subDomain 值會以鍵/值組合的形式新增至 additional.fields,鍵為「subDomain」。
tntId target.resource.attribute.labels[].value 原始記錄中的 tntId 值會對應至「tntId」鍵。
type target.resource.attribute.labels[].value 原始記錄中的 type 值會對應至「type」鍵。
userId target.user.userid 原始記錄中的 userId 值會對應至 target.user.userid 欄位。
version metadata.product_version 原始記錄中的 version 值會對應至 metadata.product_version 欄位。
不適用 metadata.event_type 根據 has_principal、has_target 和 userId 欄位是否存在和值來設定。可能的值:NETWORK_CONNECTION、USER_UNCATEGORIZED、STATUS_UPDATE、GENERIC_EVENT。
不適用 is_alert 如果嚴重程度為 0 或 1,則設為 true,否則設為 false。
不適用 is_significant 如果嚴重性為 0 或 1,則設為 true,否則設為 false。
correlationId event.idm.read_only_udm.additional.fields 從變更記錄對應
isSimulated event.idm.read_only_udm.additional.fields 從變更記錄對應
startTime event.idm.read_only_udm.extensions.vulns.vulnerabilities.scan_start_time 從變更記錄對應
details.wlcIp event.idm.read_only_udm.intermediary.ip 從變更記錄對應
details.detectingApName event.idm.read_only_udm.observer.hostname 從變更記錄對應
details.detectingApLocation event.idm.read_only_udm.observer.location.name 從變更記錄對應
details.detectingApMacAddress event.idm.read_only_udm.observer.mac 從變更記錄對應
network.siteId event.idm.read_only_udm.observer.resource.attribute.labels 從變更記錄對應
src_ip event.idm.read_only_udm.principal.hostname 從變更記錄對應
details event.idm.read_only_udm.security_result.detection_fields 從變更記錄對應
details.threatType event.idm.read_only_udm.security_result.threat_name 從變更記錄對應
tenantId event.idm.read_only_udm.target.resource.attribute.labels 從變更記錄對應

變更記錄

查看這個剖析器的變更記錄

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求解答。