Cisco Catalyst Center(旧 DNA Center)のログを収集する

パーサーのバージョン: 2.0

以下でサポートされています。

このドキュメントでは、2 つの異なるアプローチを使用して Cisco Catalyst Center(以前の DNA Center)のログを Google Security Operations に取り込む方法について説明します。環境と要件に最適なオプションを選択してください。

Cisco Catalyst Center は、エンタープライズ キャンパス、ブランチ、IoT ネットワーク向けの一元化されたネットワーク管理および自動化プラットフォームです。有線インフラストラクチャと無線インフラストラクチャ全体で、インテント ベースのネットワーキング、ポリシー管理、デバイスのプロビジョニング、保証分析、AI による問題検出を提供します。Catalyst Center は、ネットワークの健全性、デバイスのステータスの変更、セキュリティ ポリシー違反、保証の問題に関連するイベントを生成します。

始める前に

次の前提条件を満たしていることを確認してください。

  • Google SecOps インスタンス。
  • Cisco Catalyst Center 管理コンソールへの特権アクセス。
  • オプション 1 の場合: Windows Server 2016 以降、または Bindplane エージェント用の systemd を備えた Linux ホスト。
  • オプション 2 の場合: Cisco Catalyst Center と Google SecOps Webhook エンドポイント間のネットワーク接続。

オプション 1 - Bindplane エージェントを使用した Syslog の統合

このオプションでは、Cisco Catalyst Center から Bindplane エージェントへの syslog 転送を使用し、Bindplane エージェントが構造化ログを Google SecOps に転送します。

Bindplane エージェントの Google SecOps 認証情報を取得する

Bindplane エージェントを Google SecOps に対して認証するには、次のいずれかの方法を選択します。

  • 新規デプロイ: Chronicle API を使用します(オプション 1)。
  • 以前のデプロイ: 2027 年 7 月 20 日に Ingestion API が廃止されるまで、取り込み認証ファイル(オプション 2)を引き続き使用します。
  1. Google Cloud コンソールにログインし、Google SecOps インスタンスにリンクされている Google Cloud プロジェクトを選択します。
  2. [IAM と管理] > [サービス アカウント] に移動します。
  3. [サービス アカウントを作成] をクリックします。
  4. 次の構成情報を指定します。
    • サービス アカウント名: アカウントの名前を入力します(例: bindplane-ingest)。
    • サービス アカウントの説明: 説明を入力します(例: Bindplane agent log ingestion)。
  5. [作成して続行] をクリックします。
  6. [このサービス アカウントにプロジェクトへのアクセスを許可する] セクションで、[ロールを選択] をクリックし、[Chronicle 編集者] を選択します。
  7. [続行] をクリックして [完了] をクリックします。
  8. 作成したサービス アカウントをクリックし、[キー] タブに移動します。
  9. [鍵を追加] > [新しい鍵を作成] の順にクリックします。
  10. [JSON] を選択し、[作成] をクリックします。鍵ファイルがパソコンにダウンロードされます。
  11. 鍵ファイルを ingestion-auth.json として Bindplane コレクタ ディレクトリ(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 と管理] > [設定] に移動し、[プロジェクト番号] をコピーします。これはエクスポータの構成に必要です。

オプション 2: 取り込み認証ファイルをダウンロードする(レガシー)

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [収集エージェント] に移動します。
  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 エージェントのインストール ガイドをご覧ください。

Syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する

構成ファイルを探します。

  • オペレーティング システムで構成ファイルを見つけます。

    • 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 を使用します。必要に応じてポートを置き換えます(たとえば、非 root 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 に設定したままにします。

以前の Ingestion 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. 追加アイコン(+)をクリックして、新しい syslog 宛先を作成します。
  4. 次の構成情報を指定します。
    • [名前]: わかりやすい名前を入力します(例: Google SecOps-Bindplane)。
    • 説明: 簡単な説明を入力します(例: Syslog forwarding to Google SecOps via Bindplane)。
    • ホスト名/IP アドレス: Bindplane エージェント ホストの IP アドレスを入力します。
    • ポート: 514(または Bindplane エージェントで構成されたポート)を入力します。
    • プロトコル: Bindplane の構成に応じて、[UDP] または [TCP] を選択します。
  5. [保存] をクリックします。

オプション 2 - Webhook 統合

このオプションでは、Cisco Catalyst Center のネイティブ Webhook 機能を使用して、構造化された JSON イベントをリアルタイムで Google SecOps に直接配信します。

Google SecOps で Webhook フィードを作成する

フィードを作成する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [Add New Feed] をクリックします。
  3. 次のページで、[単一のフィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: Cisco Catalyst Center Webhook)。
  5. [Source type] として [Webhook] を選択します。
  6. [Log type] として [Cisco Catalyst Center] を選択します。
  7. [次へ] をクリックします。
  8. 次の入力パラメータの値を指定します。
    • Split delimiter(省略可): 改行区切りのイベントの場合は、\n と入力します。
    • アセットの名前空間: アセットの名前空間。
    • Ingestion labels: このフィードのイベントに適用されるラベル。
  9. [次へ] をクリックします。
  10. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

秘密鍵を生成して保存する

フィードを作成したら、認証用の秘密鍵を生成する必要があります。

  1. フィードの詳細ページで、[秘密鍵を生成] をクリックします。
  2. ダイアログに秘密鍵が表示されます。
  3. 秘密鍵をコピーして安全に保存します。

フィード エンドポイントの URL を取得する

  1. フィードの [詳細] タブに移動します。
  2. [エンドポイント情報] セクションで、[フィード エンドポイント URL] をコピーします。
  3. 次の手順で使用するために、この URL を保存します。
  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. [キーを制限] を選択します。
    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)。
    • URL: Google SecOps Webhook エンドポイント URL を貼り付けます。
    • Method: [POST] を選択します。
    • Authentication: [No Authentication] を選択します。
    • 証明書を信頼する: [はい] を選択します。
    • Headers: [Add Header] をクリックして、次のヘッダーを追加します。
      • 名前: 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] > [Event Notifications] に移動します。
  2. [Notifications] タブで、[Create New Notification] をクリックします。
  3. ステップ 1(サイトとイベントの選択)で、モニタリングするサイトとイベントを選択します。
    • ネットワーク イベント: デバイスにアクセスできない、インターフェースがダウンしている、構成が変更されている。
    • セキュリティ イベント: セキュリティ ポリシー違反、認証の失敗。
    • システム イベント: プラットフォーム イベント、ソフトウェア アップデート、メンテナンス。
    • アシュアランス イベント: パフォーマンスの低下、接続性の問題。
  4. [次へ] をクリックします。
  5. ステップ 2(チャンネルを選択)で、通知チャンネルとして [REST] を選択します。
  6. [エンドポイント] プルダウンで、前のセクションで作成した Webhook の宛先(Google SecOps-Webhook など)を選択します。
  7. [次へ] をクリックします。
  8. ステップ 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 の値は、キー「domain」で Key-Value ペアとして 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 の値は、キー「note」で Key-Value ペアとして additional.fields に追加されます。
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 の値は、キー「subDomain」で Key-Value ペアとして additional.fields に追加されます。
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 のプロフェッショナルから回答を得ることができます。