Zscaler クラウド アクセス セキュリティ ブローカー(CASB)のアラートログを収集する

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

このドキュメントでは、Zscaler クラウド アクセス セキュリティ ブローカー(CASB)のアラートログを収集する方法について説明します。このパーサーは、JSON 形式のログからフィールドを抽出し、形式の不整合を処理します。抽出されたフィールドを UDM にマッピングし、principalmetadataadditionalsecurity_result オブジェクト内のフィールドを作成または統合し、最終的にすべてを統合された @output フィールドに統合します。また、文字列操作や日付の解析など、いくつかのデータ変換も行います。

始める前に

  • Google Security Operations インスタンスがあることを確認します。
  • Windows 2016 以降、または systemd を使用する Linux ホストを使用していることを確認します。
  • プロキシの背後で実行している場合は、ファイアウォールのポートが開いていることを確認します。
  • ZScaler に対する管理者権限があることを確認します。

Google SecOps の取り込み認証ファイルを取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [コレクション エージェント] に移動します。
  3. Ingestion Authentication File をダウンロードします。BindPlane をインストールするシステムにファイルを安全に保存します。

Google SecOps のお客様 ID を取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [プロファイル] に移動します。
  3. [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。

BindPlane Agent をインストールする

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
    

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

Syslog を取り込んで Google SecOps に送信するように BindPlane Agent を構成する

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

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

    receivers:
        tcplog:
            # Replace the below port <54525> and IP <0.0.0.0> with your specific values
            listen_address: "0.0.0.0:54525" 
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the creds location below according the placement of the credentials file you downloaded
            creds: '{ json file for creds }'
            # Replace <customer_id> below with your actual ID that you copied
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # You can apply ingestion labels below as preferred
            ingestion_labels:
            log_type: SYSLOG
            namespace: vmware_nsx
            raw_log_field: body
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. 自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。

  4. <customer_id> は、実際のお客様 ID に置き換えます。

  5. /path/to/ingestion-authentication-file.json の値を、Google SecOps の取り込み認証ファイルを取得するで認証ファイルを保存したパスに更新します。

BindPlane Agent を再起動して変更を適用する

  • Linux で BindPlane Agent を再起動するには、次のコマンドを実行します。

    sudo systemctl restart bindplane-agent
    
  • Windows で BindPlane Agent を再起動するには、Services コンソールを使用するか、次のコマンドを入力します。

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Zscaler Cloud Web Security を構成する

  1. Zscaler Analytics 管理コンソールにログインします。
  2. [Administration] > [Settings] > [Nanolog streaming service (NSS)] を選択します。
  3. [NSS feeds] を選択します。
  4. [追加] をクリックします。
  5. 表示された [Add NSS feed] ウィンドウで、次の操作を行います。

    1. Feed name: フィード名を入力します。
    2. NSS type: 要件に応じて、[NSS for web] または [NSS for firewall] を選択します。
    3. NSS name: クラウドからログを収集する NSS 仮想マシン(VM)を選択します(1 つのフィードにマッピングできる NSS VM は 1 つのみです)。
    4. Status: フィードを有効にするには [Enabled] を選択します。
    5. SIEM IP: Syslog サーバーまたは Bindplane の IP アドレスを入力します。
    6. SIEM TCP port: TCP 通信用の Syslog サーバーまたは Bindplane のポート番号を入力します(Zscaler は TCP 接続のみをサポートしています)。
    7. Log type: 選択した NSS タイプに基づいて、[Web log] または [Firewall logs] を選択します。
    8. Feed output type: [Custom] を選択します。
    9. Feed output format: ウェブログまたはファイアウォール ログを指定します。
    10. User obfuscation: 出力にログイン ユーザー名が表示されるようにするには、[Disabled] を選択します。ランダムな値を表示するには、[Enabled] を選択します。
    11. Time zone: 適切なタイムゾーンを選択します(デフォルトのタイムゾーンは GMT です)。
    12. Duplicate logs: NSS が重複ログを送信するまでの時間を入力します(要件に応じて時間を指定できます)。
    13. Transactions filters: NSS 仮想マシンから送信されたログをフィルタするために使用できるさまざまなパラメータがあります。

    さまざまなフィルタセットの詳細については、ヘルプポータルの NSS ドキュメント セクションをご覧ください。

  6. Policy 管理コンソールまたは Analytics 管理コンソールを使用する:

    1. Policy 管理コンソールを使用するには、[Done] をクリックします。
    2. Analytics 管理コンソールを使用するには、[Save] をクリックします。[Add NSS feed] ウィンドウを閉じて前のウィンドウに戻ると、追加したフィードの詳細が [Configure feeds] セクションに表示されます。
  7. Policy 管理コンソールまたは Analytics 管理コンソールを使用する:

    1. Policy 管理コンソールを使用するには、次の操作を行います。
      • [Configure feeds] セクションで [Save] をクリックします。
      • [Activate now] をクリックします(結果のステータスが新しいウィンドウに表示されます)。
      • [完了] をクリックします。
    2. Analytics 管理コンソールを使用するには、[Activate now] をクリックします(結果のステータスがウィンドウの上部に表示されます)。

ウェブとファイアウォールのログフィードを構成する

[Feed output format] フィールドで、次のフィードを使用します。

  • コレクタがカスタマイズされた形式をサポートしている場合は、次のウェブログ フィードを指定します。

    |ZSCALER|DATE|%s{mon} %d{dd} %02d{hh}:%02d{mm}:%02d{ss}|NSSFEEDIP|%s{nsssvcip}|CLIENTINTIP|%s{cintip}|RECORDID|%d{recordid}|LOGINNAME|%s{login}|PROTOCOL|%s{proto}|URL|%s{url}|HOST|%s{host}|ACTION|%s{action}|REASON|%s{reason}|RISKSCORE|%d{riskscore}|APPNAME|%s{appname}|APPCLASS|%s{appclass}|REQSIZE|%d{reqsize}|RESPSIZE|%d{respsize}|CTIME|%d{ctime}|URLCLASS|%s{urlclass}|SUPERCAT|%s{urlsupercat}|URLCAT|%s{urlcat}|MALWARECAT|%s{malwarecat}|MALWARECLASS|%s{malwareclass}|THREATNAME|%s{threatname}|FILETYPE|%s{filetype}|FILECLASS|%s{fileclass}|DLPENGINE|%s{dlpeng}|DLPDICT|%s{dlpdict}|BWTHROTTLE|%s{bwthrottle}|LOCATION|%s{location}|DEPARTMENT|%s{dept}|CLIENTIP|%s{cip}|DESTINATIONIP|%s{sip}|REQMETHOD|%s{reqmethod}|RESPCODE|%s{respcode}|USERAGENT|%s{ua}|REFERER|%s{referer}|MD5HASH|%s{bamd5}|DLPRULENAME|%s{dlprulename}|DLPMD5|%s{dlpmd5}|DLPIDENTIFIER|%d{dlpidentifier}|DLPDICTHITCOUNT|%s{dlpdicthitcount}|\n
            ```
    
  • コレクタがファイアウォール フィードのサブスクリプションをサポートしている場合は、次のファイアウォール フィードを指定します。

    |ZSCALERFIREWALL|DATE|%s{mon}%d{dd} %02d{hh}:%02d{mm}:%02d{ss}|CLIENTIP|%s{csip}|RECORDID|%d{recordid}|LOGINNAME|%s{login}|PROTOCOL|%s{ipproto}|ACTION|%s{action}|DESTINATIONIP|%s{cdip}|SOURCEPORT|%d{csport}|DESTINATIONPORT|%d{cdport}|CLIENTTUNIP|%s{tsip}|CLIENTTUNPORT|%d{tsport}|LOCATION|%s{location}|DEPARTMENT|%s{dept}|DESTINATIONCOUNTRY|%s{destcountry}|INCOMINGBYTES|%ld{inbytes}|NETWORKAPP|%s{nwapp}|NETWORKSVC|%s{nwsvc}|RULELABEL|%s{rulelabel}|NATTING|%s{dnat}|SESSIONDURATION|%d{duration}|AGGREGATEDSESSION|%d{numsessions}|AVERAGEDURATION|%d{avgduration}|TUNNELTYPE|%s{ttype}|SERVERDESTPORT|%d{sdport}|SERVERSOURCEIP|%s{ssip}|SERVERSOURCEPORT|%d{ssport}|IPCAT|%s{ipcat}|\n
    

Zscaler Private Access を構成する

  1. User activity: [Log type] を選択します。
  2. Log template: [CSV] を選択します。
  3. Log stream: 次のコマンドを実行します。

    *%s{LogTimestamp:time} User Activity zpa-lss: %s{Username},%d{ServicePort},%s{ClientPublicIP},%s{ClientCountryCode},%s{ConnectionStatus},%d{IPProtocol},%s{ClientZEN},%s{Policy},%s{Connector},%s{ConnectorZEN},%s{ConnectorIP},%s{Host},%s{ServerIP},%s{TimestampConnectionStart:iso8601},%d{ServerPort}\n*
    

UDM マッピング テーブル

ログフィールド UDM マッピング 論理
applicationname principal.application 未加工ログの applicationname の値がこの UDM フィールドに割り当てられます。
company principal.user.company_name 未加工ログの company の値がこの UDM フィールドに割り当てられます。
datetime metadata.event_timestamp 未加工ログの datetime の値が解析され、タイムスタンプに変換されて、この UDM フィールドに割り当てられます。パーサーは複数の日付形式を使用して、未加工ログのバリエーションを処理します。
dept principal.user.department 未加工ログの dept の値がこの UDM フィールドに割り当てられます。
dlpdictcount additional.fields 未加工ログに dlpdictcount が存在し、「None」でも空でもない場合は、キーが「dlpdictcount」で文字列値が dlpdictcount の新しいフィールドが additional.fields 配列に追加されます。
dlpdictnames additional.fields 未加工ログに dlpdictnames が存在し、「None」でも空でもない場合は、キーが「dlpdictnames」で文字列値が dlpdictnames の新しいフィールドが additional.fields 配列に追加されます。
dlpenginenames additional.fields 未加工ログに dlpenginenames が存在し、「None」でも空でもない場合は、キーが「dlpenginenames」で文字列値が dlpenginenames の新しいフィールドが additional.fields 配列に追加されます。
event.extcollabnames additional.fields 未加工ログに extcollabnames が存在する場合、それは「
event.extownername additional.fields 未加工ログに extownername が存在する場合、キーが「extownername」で文字列値が extownername の新しいフィールドが additional.fields 配列に追加されます。
filedownloadtimems additional.fields 未加工ログに filedownloadtimems が存在する場合、キーが「File Download Time」で文字列値が filedownloadtimems の新しいフィールドが additional.fields 配列に追加されます。
fileid additional.fields 未加工ログに fileid が存在する場合、キーが「fileid」で文字列値が fileid の新しいフィールドが additional.fields 配列に追加されます。
filename principal.process.file.full_path 未加工ログの filename の値がこの UDM フィールドに割り当てられます。パーサーは、ファイル名のエスケープ文字と特殊なケースを処理します。
filemd5 principal.process.file.md5 未加工ログに filemd5 が存在し、「None」でも空でもない場合は、その値がこの UDM フィールドに割り当てられます。
filescantimems additional.fields filescantimems が未加工ログに存在する場合、キーが「File Scan Time」で文字列値が filescantimems の新しいフィールドが additional.fields 配列に追加されます。
filesource additional.fields 未加工ログに filesource が存在する場合、キーが「File Source」で文字列値が filesource の新しいフィールドが additional.fields 配列に追加されます。パーサーは、ファイルソース内のエスケープ文字と特殊なケースを処理します。
fullurl principal.url 未加工ログに fullurl が存在し、「Unknown URL」でも空でもない場合は、その値がこの UDM フィールドに割り当てられます。
intcollabnames additional.fields 未加工ログに intcollabnames が存在する場合、それは「
lastmodtime metadata.event_timestamp 未加工ログに lastmodtime が存在する場合、解析されてタイムスタンプに変換され、この UDM フィールドに割り当てられます。パーサーは複数の日付形式を使用して、未加工ログのバリエーションを処理します。
login principal.user.email_addressesprincipal.user.userid login が存在し、メールアドレスの形式と一致する場合、その値は principal.user.email_addressesprincipal.user.userid の両方に割り当てられます。login が存在してもメールアドレスの形式と一致しない場合、その値は principal.user.userid にのみ割り当てられます。login が存在しない場合、principal.user.userid は「n/a」に設定されます。
policy security_result.rule_name 未加工ログに policy が存在し、「None」でも空でもない場合は、その値がこの UDM フィールドに割り当てられます。
recordid metadata.product_log_id recordid が未加工ログに存在する場合、その値がこの UDM フィールドに割り当てられます。
tenant additional.fields 未加工ログに tenant が存在する場合、キーが「Tenant」で文字列値が tenant の新しいフィールドが additional.fields 配列に追加されます。
threatname security_result.threat_name 未加工ログに threatname が存在し、「None」でも空でもない場合は、その値がこの UDM フィールドに割り当てられます。
(パーサー ロジック) metadata.event_type パーサーは、このフィールドを「USER_UNCATEGORIZED」に設定します。
(パーサー ロジック) metadata.log_type パーサーは、このフィールドを「ZSCALER_CASB」に設定します。
(パーサー ロジック) metadata.product_name パーサーは、このフィールドを「Zscaler CASB」に設定します。
(パーサー ロジック) metadata.vendor_name パーサーは、このフィールドを「Zscaler」に設定します。

変更

2024-06-04

  • 「filename」、「fileid」、「filemd5」、「filesource」の各フィールドの無効なエスケープ文字を処理する「gsub」関数を追加しました。

2024-03-27

  • 「filename」内の無効なエスケープ文字を処理する「gsub」関数を追加しました。

2024-03-05

  • 「event.fileid」、「event.intcollabnames」、「event.extownername」、「event.extcollabnames」を「additional.fields」にマッピングしました。

2024-01-29

  • 「filesource」内の無効なエスケープ文字「,」を処理する「gsubs」関数を追加しました。
  • 「filename」内の無効なエスケープ文字を処理する「gsubs」関数を追加しました。

2023-12-21

  • 解析されていない JSON ログの無効な文字を処理するための gsub を追加しました。

2023-09-30

  • 「event.login」を「principal.user.userid」にマッピングしました。利用できない場合は、「principal.user.userid」を「n/a」に設定します。
  • 「event.lastmodtime」というオプション パラメータに対して、「date」フィルタの「on_error」チェックを追加しました。

2022-08-16

  • 新しく作成されたパーサー

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