Imperva CEF ログを収集する

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

このドキュメントでは、Bindplane エージェントを使用して Imperva CEF ログを Google Security Operations に取り込む方法について説明します。

このパーサーは、CEF(Common Event Format)の Imperva syslog 形式のログからフィールドを抽出します。grok や kv を使用して CEF メッセージを解析し、これらの値を統合データモデル(UDM)にマッピングします。また、イベントソースとタイプのデフォルトのメタデータ値も設定します。

始める前に

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

  • Google SecOps インスタンス
  • Windows 2016 以降、または systemd を使用する Linux ホスト
  • プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
  • Imperva 管理コンソールまたはアプライアンスへの特権アクセス

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. [Settings] > [Administration] > [Profile] に移動します。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
    

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
    

その他のインストール リソース

その他のインストール オプションについては、Bindplane エージェントのインストール ガイドをご覧ください。

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

  1. 構成ファイルにアクセスします。

    • config.yaml ファイルを見つけます。通常、Linux の場合は /opt/observiq-otel-collector/ ディレクトリ、Windows の場合はインストール ディレクトリにあります。
    • テキスト エディタ(nano、vi、メモ帳など)を使用してファイルを開きます。
  2. config.yaml ファイルを次のように編集します。

    receivers:
      udplog:
        # Replace the port and IP address as required
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        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
        # Adjust the path to the credentials file you downloaded in Step 1
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: <CUSTOMER_ID>
        endpoint: chronicle.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'IMPERVA_CEF'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
    • 自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。
    • <LOCATION> は、Google SecOps インスタンスのリージョン(us、europe、asia-southeast1 など)に置き換えます。エクスポーターは、chronicle.googleapis.com の先頭にこの値を付加します。
    • <PROJECT_NUMBER> は、[IAM と管理] > [設定] のプロジェクト番号に置き換えます。
    • <CUSTOMER_ID> は、実際のお客様 ID に置き換えます。
    • /path/to/ingestion-authentication-file.json を、ステップ 1 でサービス アカウント キー ファイル(オプション 1)を保存したファイルパスに更新します。

以前の Ingestion API エクスポータ

  • オプション 2 の取り込み認証ファイルを使用する場合は、exporters ブロックを次のように置き換えます。creds_file_path を取り込み認証ファイルのパスに設定します。インスタンスが米国以外にある場合は、malachiteingestion-pa.googleapis.com をリージョン エンドポイント(例: europe-malachiteingestion-pa.googleapis.com)に置き換えます。

    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Adjust the path to the credentials file you downloaded in Step 1
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: <CUSTOMER_ID>
        endpoint: malachiteingestion-pa.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'IMPERVA_CEF'
        raw_log_field: body
        ingestion_labels:
    

Bindplane エージェントを再起動して変更を適用する

  1. Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。

    sudo systemctl restart observiq-otel-collector
    
  2. Windows で Bindplane エージェントを再起動するには、Services コンソールを使用するか、次のコマンドを入力します。

    net stop observiq-otel-collector && net start observiq-otel-collector
    

syslog 経由で CEF を送信するように Imperva WAF Gateway(SecureSphere)を構成する

  1. MX コンソールで、アクション セットを作成します。

    • [Policies] > [Action Sets] に移動します。
    • [新規] をクリックして名前を付けます(例: Google SecOps CEF)。
  2. CEF syslog アクション インターフェースを追加します。

    • [Available Action Interfaces] で [システムログ] を開き、必要に応じて次のいずれかを追加します。
      • CEF 標準を使用してセキュリティ イベントをシステムログ(syslog)に記録する
      • CEF 標準を使用してネットワーク セキュリティ イベントをシステムログ(syslog)に記録する
      • CEF 標準を使用してシステム イベントをシステムログ(syslog)に記録する
      • CEF 標準を使用してカスタム セキュリティ イベントをシステムログ(syslog)に記録する
  3. アクション インターフェースのパラメータを構成します。

    • Syslog ホスト: Bindplane エージェントの IP アドレスを入力します。デフォルト以外のポートを使用するには、:PORT を追加します(指定しない場合、デフォルトは 514 です)。例: 10.0.0.10:514
    • Facility / Log Level: ポリシーの要件に従って設定します。
    • メッセージ: カスタム マッピングがない限り、CEF のベンダーのデフォルトのままにします。
  4. アクション セットをポリシーにアタッチします。

    • セキュリティ / ネットワーク セキュリティ イベントの場合: 関連するポリシーを開き、[Followed Action] をアクション セットに設定します。
    • システム イベントの場合: システム イベント ポリシーを作成または確認し、[Followed Action] をアクション セットに設定して、これらのイベントも CEF 経由で送信されるようにします。
  5. (省略可)ゲートウェイ固有のターゲットを構成します。

    • 異なるゲートウェイ グループが異なる syslog サーバーに送信する必要がある場合は、各ゲートウェイ グループ > 外部ロガーを構成し、ポリシーで [Use gateway configuration if exists] を有効にします。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
act security_result.action 派生。act が「allowed」、「alert」の場合、または「REQ_PASSED」で始まるか、「REQ_CACHED」で始まる場合、action は「ALLOW」になります。act が「deny」、「blocked」の場合、または「REQ_BLOCKED」で始まる場合、または「REQ_CHALLENGE」で始まる場合、action は「BLOCK」になります。act が正規表現 (?i)REQ_BAD と一致する場合、action は「FAIL」です。それ以外の場合、action は「UNKNOWN_ACTION」です。security_result.action は action の値に設定されます。
act security_result.action_details 派生。act の値に基づいて、詳細な説明が生成されます。例: 「REQ_CACHED_FRESH: レスポンスがデータセンターのキャッシュから返されました」、「REQ_BLOCKED: リクエストがブロックされました」。
app network.application_protocol 大文字に変換された後に直接マッピングされます。
cs1 security_result.detection_fields.value cs1 が空でないか「NA」でない場合、条件付きでマッピングされます。security_result.detection_fields.key は cs1Label の値に設定されます。
cs1Label security_result.detection_fields.key cs1 が空でないか「NA」でない場合、条件付きでマッピングされます。security_result.detection_fields.value は cs1 の値に設定されます。
cs2 security_result.detection_fields.value 空でない場合、条件付きでマッピングされます。security_result.detection_fields.key は cs2Label の値に設定されます。
cs2Label security_result.detection_fields.key cs2 が空でない場合、条件付きでマッピングされます。security_result.detection_fields.value は cs2 の値に設定されます。
cs3 security_result.detection_fields.value 空でないか「-」でない場合、条件付きでマッピングされます。security_result.detection_fields.key は cs3Label の値に設定されます。
cs3Label security_result.detection_fields.key cs3 が空でないか「-」でない場合、条件付きでマッピングされます。security_result.detection_fields.value は cs3 の値に設定されます。
cs4 security_result.detection_fields.value 空でない場合、条件付きでマッピングされます。security_result.detection_fields.key は cs4Label の値に設定されます。
cs4Label security_result.detection_fields.key cs4 が空でない場合、条件付きでマッピングされます。security_result.detection_fields.value は cs4 の値に設定されます。
cs5 security_result.detection_fields.value 空でない場合、条件付きでマッピングされます。security_result.detection_fields.key は cs5Label の値に設定されます。
cs5Label security_result.detection_fields.key cs5 が空でない場合、条件付きでマッピングされます。security_result.detection_fields.value は cs5 の値に設定されます。
cs6 security_result.detection_fields.value 空でない場合、条件付きでマッピングされます。security_result.detection_fields.key は cs6Label の値に設定されます。
cs6Label security_result.detection_fields.key cs6 が空でない場合、条件付きでマッピングされます。security_result.detection_fields.value は cs6 の値に設定されます。
cs7 principal.location.region_latitude cs7Label が「latitude」の場合、条件付きでマッピングされます。
cs8 principal.location.region_longitude cs8Label が「longitude」の場合、条件付きでマッピングされます。
cn1 security_result.detection_fields.value 空でなく、cn1Label が空でない場合、条件付きでマッピングされます。security_result.detection_fields.key は cn1Label の値に設定されます。
cn1Label security_result.detection_fields.key cn1 と cn1Label が空でない場合、条件付きでマッピングされます。security_result.detection_fields.value は cn1 の値に設定されます。
fileType security_result.detection_fields.value 空でない場合、条件付きでマッピングされます。security_result.detection_fields.key は「fileType」に設定されています。
filePermission security_result.detection_fields.value 空でない場合、条件付きでマッピングされます。security_result.detection_fields.key は「filePermission」に設定されています。
request target.url 直接マッピングされます。
requestClientApplication network.http.user_agent 空でない場合、条件付きでマッピングされます。CEF ペイロードの requestContext または requestClientApplication の Key-Value ペアから抽出された user_agent フィールドからマッピングされた値を上書きします。
requestMethod network.http.method 直接マッピングされます。
siteid security_result.detection_fields.value 空でない場合、条件付きでマッピングされます。security_result.detection_fields.key が「siteid」に設定されている。
sourceServiceName target.hostname 直接マッピングされます。dhost の値が存在する場合は、その値を上書きします。
src principal.ip 直接マッピングされます。
start metadata.event_timestamp.seconds Grok パターンを使用して抽出され、タイムスタンプに変換されます。deviceReceiptTime が存在しない場合、そのフォールバックとして使用されます。deviceReceiptTime と start の両方が空の場合、ログのタイムスタンプが使用されます。
suid principal.user.userid 空でない場合、条件付きでマッピングされます。
なし metadata.event_type 「NETWORK_HTTP」にハードコードされています。
なし metadata.log_type 最上位の log_type フィールドから直接マッピングされます。
なし metadata.product_event_type 空でない場合、csv.event_id からマッピングされます。
なし metadata.product_name 「ウェブ アプリケーション ファイアウォール」にハードコードされています。
なし metadata.vendor_name 「Imperva」にハードコードされています。
kv.act event.idm.read_only_udm.security_result.action_details 変更履歴からマッピング
kv.sourceServiceName event.idm.read_only_udm.target.resource.name 変更履歴からマッピング
cicode event.idm.read_only_udm.principal.location.city 変更履歴からマッピング
ccode event.idm.read_only_udm.principal.location.country_or_region 変更履歴からマッピング
Customer event.idm.read_only_udm.network.organization_name 変更履歴からマッピング
tls_cipher event.idm.read_only_udm.network.tls.cipher 変更履歴からマッピング
cpt event.idm.read_only_udm.target.port 変更履歴からマッピング
fileId event.idm.read_only_udm.target.resource.product_object_id 変更履歴からマッピング
dproc event.idm.read_only_udm.security_result.category_details 変更履歴からマッピング
deviceFacility event.idm.read_only_udm.security_result.detection_fields 変更履歴からマッピング
deviceExternalId event.idm.read_only_udm.security_result.detection_fields 変更履歴からマッピング
end event.idm.read_only_udm.metadata.collected_timestamp 変更履歴からマッピング

変更ログ

このパーサーの変更ログを表示する

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。