Zscaler クラウド アクセス セキュリティ ブローカー(CASB)のアラートログを収集する
このドキュメントでは、Zscaler クラウド アクセス セキュリティ ブローカー(CASB)のアラートログを収集する方法について説明します。このパーサーは、JSON 形式のログからフィールドを抽出し、形式の不整合を処理します。抽出されたフィールドを UDM にマッピングし、principal
、metadata
、additional
、security_result
オブジェクト内のフィールドを作成または統合し、最終的にすべてを統合された @output
フィールドに統合します。また、文字列操作や日付の解析など、いくつかのデータ変換も行います。
始める前に
- Google Security Operations インスタンスがあることを確認します。
- Windows 2016 以降、または
systemd
を使用する Linux ホストを使用していることを確認します。 - プロキシの背後で実行している場合は、ファイアウォールのポートが開いていることを確認します。
- ZScaler に対する管理者権限があることを確認します。
Google SecOps の取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [コレクション エージェント] に移動します。
- Ingestion Authentication File をダウンロードします。BindPlane をインストールするシステムにファイルを安全に保存します。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
- [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。
BindPlane Agent をインストールする
Windows へのインストール
- 管理者として コマンド プロンプトまたは PowerShell を開きます。
次のコマンドを実行します。
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux へのインストール
- root 権限または sudo 権限でターミナルを開きます。
次のコマンドを実行します。
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 を構成する
構成ファイルにアクセスします。
config.yaml
ファイルを見つけます。通常、Linux では/etc/bindplane-agent/
ディレクトリ、Windows ではインストール ディレクトリにあります。- テキスト エディタ(
nano
、vi
、メモ帳など)を使用してファイルを開きます。
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
自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。
<customer_id>
は、実際のお客様 ID に置き換えます。/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 を構成する
- Zscaler Analytics 管理コンソールにログインします。
- [Administration] > [Settings] > [Nanolog streaming service (NSS)] を選択します。
- [NSS feeds] を選択します。
- [追加] をクリックします。
表示された [Add NSS feed] ウィンドウで、次の操作を行います。
- Feed name: フィード名を入力します。
- NSS type: 要件に応じて、[NSS for web] または [NSS for firewall] を選択します。
- NSS name: クラウドからログを収集する NSS 仮想マシン(VM)を選択します(1 つのフィードにマッピングできる NSS VM は 1 つのみです)。
- Status: フィードを有効にするには [Enabled] を選択します。
- SIEM IP: Syslog サーバーまたは Bindplane の IP アドレスを入力します。
- SIEM TCP port: TCP 通信用の Syslog サーバーまたは Bindplane のポート番号を入力します(Zscaler は TCP 接続のみをサポートしています)。
- Log type: 選択した NSS タイプに基づいて、[Web log] または [Firewall logs] を選択します。
- Feed output type: [Custom] を選択します。
- Feed output format: ウェブログまたはファイアウォール ログを指定します。
- User obfuscation: 出力にログイン ユーザー名が表示されるようにするには、[Disabled] を選択します。ランダムな値を表示するには、[Enabled] を選択します。
- Time zone: 適切なタイムゾーンを選択します(デフォルトのタイムゾーンは GMT です)。
- Duplicate logs: NSS が重複ログを送信するまでの時間を入力します(要件に応じて時間を指定できます)。
- Transactions filters: NSS 仮想マシンから送信されたログをフィルタするために使用できるさまざまなパラメータがあります。
さまざまなフィルタセットの詳細については、ヘルプポータルの NSS ドキュメント セクションをご覧ください。
Policy 管理コンソールまたは Analytics 管理コンソールを使用する:
- Policy 管理コンソールを使用するには、[Done] をクリックします。
- Analytics 管理コンソールを使用するには、[Save] をクリックします。[Add NSS feed] ウィンドウを閉じて前のウィンドウに戻ると、追加したフィードの詳細が [Configure feeds] セクションに表示されます。
Policy 管理コンソールまたは Analytics 管理コンソールを使用する:
- Policy 管理コンソールを使用するには、次の操作を行います。
- [Configure feeds] セクションで [Save] をクリックします。
- [Activate now] をクリックします(結果のステータスが新しいウィンドウに表示されます)。
- [完了] をクリックします。
- Analytics 管理コンソールを使用するには、[Activate now] をクリックします(結果のステータスがウィンドウの上部に表示されます)。
- Policy 管理コンソールを使用するには、次の操作を行います。
ウェブとファイアウォールのログフィードを構成する
[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 を構成する
- User activity: [Log type] を選択します。
- Log template: [CSV] を選択します。
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_addresses 、principal.user.userid |
login が存在し、メールアドレスの形式と一致する場合、その値は principal.user.email_addresses と principal.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 のプロフェッショナルから回答を得ることができます。