Symantec CloudSOC CASB のログを収集する
このドキュメントでは、Bindplane エージェントを使用して Symantec CloudSOC CASB ログを Google Security Operations に取り込む方法について説明します。
Symantec CloudSOC は、クラウド アプリケーション アクティビティ、DLP ポリシー違反、脅威検出、コンテンツ検査結果、ユーザー アクセス イベントの syslog メッセージを生成するクラウド アクセス セキュリティ ブローカー(CASB)です。パーサーは、JSON 形式と syslog 形式のログからフィールドを抽出し、統合データモデル(UDM)にマッピングします。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- Windows Server 2016 以降、または
systemdを使用する Linux ホスト - Bindplane エージェントと Symantec CloudSOC ホスト間のネットワーク接続
- プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
- Symantec CloudSOC ホストへの管理者権限
Bindplane エージェントの Google SecOps 認証情報を取得する
Bindplane エージェントを Google SecOps に対して認証するには、次のいずれかの方法を選択します。
- 新規デプロイ: Chronicle API を使用します(オプション 1)。
- 以前のデプロイ: 2027 年 7 月 20 日に Ingestion API が廃止されるまで、取り込み認証ファイル(オプション 2)を引き続き使用します。
オプション 1: Chronicle API のサービス アカウントを作成する(推奨)
- Google Cloud コンソールにログインし、Google SecOps インスタンスにリンクされている Google Cloud プロジェクトを選択します。
- [IAM と管理] > [サービス アカウント] に移動します。
- [サービス アカウントを作成] をクリックします。
- 次の構成情報を指定します。
- サービス アカウント名: アカウントの名前を入力します(例:
bindplane-ingest)。 - サービス アカウントの説明: 説明を入力します(例:
Bindplane agent log ingestion)。
- サービス アカウント名: アカウントの名前を入力します(例:
- [作成して続行] をクリックします。
- [このサービス アカウントにプロジェクトへのアクセスを許可する] セクションで、[ロールを選択] をクリックし、[Chronicle 編集者] を選択します。
- [続行] をクリックして [完了] をクリックします。
- 作成したサービス アカウントをクリックし、[キー] タブに移動します。
- [鍵を追加] > [新しい鍵を作成] の順にクリックします。
- [JSON] を選択し、[作成] をクリックします。鍵ファイルがパソコンにダウンロードされます。
- 鍵ファイルを
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を更新して、保存先のパスと一致させます。 - [IAM と管理] > [設定] に移動し、プロジェクト番号をコピーします。これはエクスポータの構成に必要です。
オプション 2: 取り込み認証ファイルをダウンロードする(レガシー)
- Google SecOps コンソールにログインします。
- [設定] > [データ管理] > [収集エージェント] に移動します。SIEM のみのプラットフォームを使用している場合は、[設定] > [収集エージェント] に移動します。
- 取り込み認証ファイルをダウンロードします。
- Bindplane エージェントがインストールされるシステムにファイルを安全に保存します。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [Settings] > [Administration] > [Profile] に移動します。SIEM のみのプラットフォームを使用している場合は、[設定] > [プロファイル] に移動します。
[組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。
Bindplane エージェントをインストールする
次の手順に沿って、Windows または Linux オペレーティング システムに Bindplane エージェントをインストールします。
Windows へのインストール
- 管理者としてコマンド プロンプトまたは PowerShell を開きます。
次のコマンドを実行します。
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietインストールが完了するまで待ちます。
次のコマンドを実行して、インストールの内容を確認します。
sc query observiq-otel-collectorサービスが RUNNING と表示されます。
Linux へのインストール
- root 権限または sudo 権限でターミナルを開きます。
次のコマンドを実行します。
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shインストールが完了するまで待ちます。
次のコマンドを実行して、インストールの内容を確認します。
sudo systemctl status observiq-otel-collectorサービスが active (running) と表示されます。
その他のインストール リソース
その他のインストール オプションとトラブルシューティングについては、Bindplane エージェントのインストール ガイドをご覧ください。
syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する
構成ファイルを探す
Linux:
sudo nano /opt/observiq-otel-collector/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
構成ファイルを編集します。
config.yamlの内容全体を次の構成に置き換えます。receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/symantec_casb: 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: '<customer_id>' endpoint: chronicle.googleapis.com log_type: SYMANTEC_CASB raw_log_field: body service: pipelines: logs/symantec_casb_to_chronicle: receivers: - udplog exporters: - chronicle/symantec_casb
構成パラメータ
各プレースホルダを次のように置き換えます。
レシーバーの構成:
listen_address: リッスンする IP アドレスとポート。0.0.0.0: すべてのインターフェースでリッスンします(推奨)。- ポート
514は標準の syslog ポートです(Linux では root が必要です。root 以外の場合は1514を使用します)。
エクスポータの構成:
creds_file_path: サービス アカウントの JSON キーファイルのフルパス(オプション 1):- Linux:
/opt/observiq-otel-collector/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: Google SecOps コンソールからコピーしたお客様 IDlocation:<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/symantec_casb: compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: SYMANTEC_CASB raw_log_field: body
構成ファイルを保存する
- 編集が完了したら、ファイルを保存します。
- Linux:
Ctrl+O、Enter、Ctrl+Xの順に押します。 - Windows の場合: [ファイル] > [保存] をクリックします。
- Linux:
Bindplane エージェントを再起動して変更を適用する
Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。
sudo systemctl restart observiq-otel-collectorサービスが実行されていることを確認します。
sudo systemctl status observiq-otel-collectorログでエラーを確認します。
sudo journalctl -u observiq-otel-collector -f
Windows で Bindplane エージェントを再起動するには、次のいずれかのオプションを選択します。
管理者としてコマンド プロンプトまたは PowerShell を実行します。
net stop observiq-otel-collector && net start observiq-otel-collectorサービス コンソール:
Win+Rを押し、「services.msc」と入力して Enter キーを押します。- observIQ OpenTelemetry Collector を見つけます。
- 右クリックして [再起動] を選択します。
サービスが実行されていることを確認します。
sc query observiq-otel-collectorログでエラーを確認します。
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Symantec CloudSOC CASB で syslog を構成する
- Symantec CloudSOC ホストにログインします。
次のコマンドを実行して、システムが使用しているロガーを特定します。
ls -d /etc/*syslog*回答に応じて、該当するセクションに移動します。
- syslog.conf: 以前の Syslog。
- syslog-ng.conf: Syslog-ng。
以前の syslog 構成
syslogdファイルを開きます。通常は/etc/defaultディレクトリにあります。vi /etc/default/syslogdSYSLOGD値に-rフラグが含まれていることを確認します。SYSLOGD="-r"ファイルを保存し、エディタを終了します。
servicesファイルを開きます。通常は/etcディレクトリにあります。vi /etc/servicessyslog サービスのポート値を編集します。
syslog 514/udpファイルを保存し、エディタを終了します。
syslog.confファイルを開きます。通常は/etcディレクトリにあります。vi /etc/syslog.confすべてのログを Bindplane エージェントに転送するように構成を更新します。
*.* @<BINDPLANE_IP><BINDPLANE_IP>は、Bindplane エージェントの IP アドレスに置き換えます。
hostsファイルを開きます。通常は/etcディレクトリにあります。vi /etc/hostsBindplane エージェントのローカル DNS エントリを作成します。
<BINDPLANE_IP> bindplane_agent_hostファイルを保存し、エディタを終了します。
syslog デーモン サービスを再起動します。
syslog-ng の構成
syslog-ng.confファイルを開きます。通常は/etcディレクトリにあります。vi /etc/syslog-ng.confファイルの末尾に次のコードを追加します。
destination d_bindplane { udp("<BINDPLANE_IP>" port(514)); }; log { source(s_src); destination(d_bindplane); };<BINDPLANE_IP>は、Bindplane エージェントの IP アドレスに置き換えます。
hostsファイルを開きます。通常は/etcディレクトリにあります。vi /etc/hostsBindplane エージェントのローカル DNS エントリを作成します。
<BINDPLANE_IP> bindplane_agent_hostファイルを保存し、エディタを終了します。
syslog-ng デーモン サービスを再起動します。
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック |
|---|---|---|
_domain |
target.hostname |
_domain フィールドの値。 |
_domain |
target.asset.hostname |
_domain フィールドの値。 |
_id |
metadata.product_log_id |
_id フィールドの値。 |
actions_taken |
security_result.detection_fields[].value |
actions_taken フィールドの値。キーは Action_ + インデックスとして動的に生成されます。 |
activity_type |
metadata.product_event_type |
product_data.activity_type が空の場合は activity_type フィールドの値。空でない場合は product_data.activity_type の値。 |
collector_device_ip |
principal.ip |
collector_device_ip フィールドの値(Unknown IP 以外の場合)。 |
collector_device_ip |
principal.asset.ip |
collector_device_ip フィールドの値(Unknown IP 以外の場合)。 |
collector_device_name |
principal.hostname |
collector_device_name フィールドの値。 |
collector_device_name |
principal.asset.hostname |
collector_device_name フィールドの値。 |
content_checks.dlp.raw_response.contentdetails[].contentBlockId |
security_result.detection_fields[].value |
content_checks.dlp.raw_response.contentdetails[].contentBlockId の値。キーは contentBlockId_ + インデックスとして動的に生成されます。 |
content_checks.dlp.raw_response.contentdetails[].topLevelFileType |
security_result.detection_fields[].value |
content_checks.dlp.raw_response.contentdetails[].topLevelFileType の値。キーは topLevelFileType_ + インデックスとして動的に生成されます。 |
content_checks.dlp.raw_response.requestid |
security_result.detection_fields[].value |
content_checks.dlp.raw_response.requestid の値。キーは Request ID です。 |
content_checks.dlp.raw_response.responseaction |
security_result.detection_fields[].value |
content_checks.dlp.raw_response.responseaction の値。キーは Response Action です。 |
content_checks.dlp.raw_response.violation[].name |
security_result.detection_fields[].value |
content_checks.dlp.raw_response.violation[].name の値。キーは Violation_Policy_Name_ + インデックスとして動的に生成されます。 |
content_checks.dlp.raw_response.violation[].policyId |
security_result.detection_fields[].value |
content_checks.dlp.raw_response.violation[].policyId の値。キーは Violation_Policy_ID_ + インデックスとして動的に生成されます。 |
content_checks.dlp.updated_timestamp |
additional.fields[].value.string_value |
content_checks.dlp.updated_timestamp の値。キーは Updated TimeStamp です。 |
content_checks.filename |
target.file.full_path |
content_checks.filename の値。 |
content_checks.mimetype |
target.file.mime_type |
content_checks.mimetype の値。 |
content_checks.risktype_list[] |
security_result.detection_fields[].value |
content_checks.risktype_list[] の値。キーは RiskType_ + インデックスとして動的に生成されます。 |
content_checks.vba_macros.expressions[].values[].key |
security_result.detection_fields[].key |
content_checks.vba_macros.expressions[].values[].key の値にインデックスを連結したもの。 |
content_checks.vba_macros.expressions[].values[].value |
security_result.detection_fields[].value |
content_checks.vba_macros.expressions[].values[].value の値。 |
content_checks.vk_content_iq_violations[] |
security_result.detection_fields[].value |
content_checks.vk_content_iq_violations[] の値。キーは content_violation_ + インデックスとして動的に生成されます。 |
content_checks.vk_dlp_policy_violations[] |
security_result.detection_fields[].value |
content_checks.vk_dlp_policy_violations[] の値。キーは dlp_policy_violation_ + インデックスとして動的に生成されます。 |
content_checks.vk_encryption |
security_result.detection_fields[].value |
content_checks.vk_encryption の値。キーは vk_encryption です。 |
content_checks.vk_glba |
security_result.detection_fields[].value |
content_checks.vk_glba の値。キーは vk_glba です。 |
content_checks.vk_hipaa |
security_result.detection_fields[].value |
content_checks.vk_hipaa の値。キーは vk_hipaa です。 |
content_checks.vk_pci |
security_result.detection_fields[].value |
content_checks.vk_pci の値。キーは vk_pci です。 |
content_checks.vk_pii |
security_result.detection_fields[].value |
content_checks.vk_pii の値。キーは vk_pii です。 |
content_checks.vk_source_code |
security_result.detection_fields[].value |
content_checks.vk_source_code の値。キーは vk_source_code です。 |
content_checks.vk_vba_macros |
security_result.detection_fields[].value |
content_checks.vk_vba_macros の値。キーは vk_vba_macros です。 |
content_checks.vk_virus |
security_result.detection_fields[].value |
content_checks.vk_virus の値。キーは vk_virus です。 |
content_checks.violations |
security_result.detection_fields[].value |
content_checks.violations の値。キーは violations です。 |
created_timestamp |
additional.fields[].value.string_value |
created_timestamp の値。キーは Created TimeStamp です。 |
date |
metadata.event_timestamp.seconds |
date フィールドから抽出されたエポック秒。 |
device_ip |
target.ip |
device_ip フィールドの値(Unknown IP 以外の場合)。 |
device_ip |
target.asset.ip |
device_ip フィールドの値(Unknown IP 以外の場合)。 |
file_size |
target.file.size |
file_size の値。 が空の場合は product_data.file_size の値。符号なし整数に変換されます。 |
file_url |
target.file.full_path |
product_data.file_url の値。 |
group_name |
target.group.group_display_name |
group_name フィールドから抽出された表示名。 |
hosts[] |
principal.ip |
hosts フィールドの値(カンマ区切り)。 |
inserted_timestamp |
additional.fields[].value.string_value |
inserted_timestamp の値。キーは Inserted TimeStamp です。 |
instance |
principal.hostname |
instance フィールドが配列の場合はその最初の値、文字列の場合はそのinstance値。 |
instance |
principal.asset.hostname |
instance フィールドが配列の場合はその最初の値、文字列の場合はそのinstance値。 |
ioi_code |
security_result.summary |
ioi_code フィールドの値。 |
_latency |
security_result.detection_fields[].value |
_latency フィールドの値。キーは Latency です。 |
locations |
security_result.detection_fields[].value |
locations フィールドの値。キーは Locations です。 |
log_name |
intermediary.asset.asset_id |
log_name フィールドから抽出されたログ ID。接頭辞 logid: が付いています。 |
mailbox_owner |
target.user.userid |
product_data.mailbox owner の値。 |
metadata.log_type |
metadata.log_type |
SYMANTEC_CASB にハードコードされています。 |
metadata.product_name |
metadata.product_name |
SYMANTEC_CASB にハードコードされています。 |
metadata.vendor_name |
metadata.vendor_name |
SYMANTEC にハードコードされています。 |
msg |
metadata.description |
msg フィールドの値。msg が存在しない場合は message フィールドの値。 |
name |
security_result.detection_fields[].value |
name フィールドの値。キーは Name です。 |
object_name |
security_result.detection_fields[].value |
object_name フィールドの値。キーは Object Name です。 |
object_type |
target.resource.name |
object_type フィールドの値。 |
org_unit |
security_result.detection_fields[].value |
org_unit フィールドの値。キーは org_unit ID です。 |
policy_action |
security_result.action_details |
policy_action フィールドの値。 |
policy_type |
security_result.detection_fields[].value |
policy_type フィールドの値。キーは policy_type です。 |
policy_violated |
security_result.detection_fields[].value |
policy_violated フィールドの値。キーは policy_violated です。 |
product_data._domain |
target.hostname |
product_data._domain の値。 |
product_data._domain |
target.asset.hostname |
product_data._domain の値。 |
product_data.activity_type |
metadata.product_event_type |
product_data.activity_type の値。 |
product_data.file url |
target.file.full_path |
product_data.file url の値。 |
product_data.file_size |
target.file.size |
product_data.file_size の値。 |
product_data.group |
target.group.group_display_name |
product_data.group の値。 |
product_data.location |
principal.location.country_or_region |
product_data.location の値。 |
product_data.logon error |
security_result.summary |
product_data.logon error の値。 |
product_data.mailbox owner |
target.user.userid |
product_data.mailbox owner の値。 |
product_data.name |
target.file.full_path |
product_data.name の値。 |
product_data.object_name |
target.file.full_path |
product_data.object_name の値。 |
product_data.originatingserver product_data.service |
target.application |
product_data.service の値。 |
product_data.site url |
target.url |
product_data.site url の値。 |
product_data.target |
target.user.userid |
product_data.target の値。 |
product_data.useragent |
network.http.user_agent |
product_data.useragent の値。 |
product_name |
intermediary.application |
product_name フィールドの値。 |
product_uid |
metadata.product_name |
product_uid フィールドの値。 |
responsible_logs |
additional.fields[].value.string_value |
responsible_logs フィールドの値。キーは responsible_logs です。 |
resource_id |
target.resource.product_object_id |
resource_id フィールドの値。 |
risks |
security_result.detection_fields[].value |
risks フィールドの値。キーは Risks です。 |
security_result.action |
security_result.action |
product_data.logon error から取得されます。product_data.logon error が BlockedByConditionalAccess の場合、BLOCK に設定します。 |
security_result.severity |
security_result.severity |
severity フィールドの大文字の値(サポートされている重大度レベルのいずれかの場合)。 |
security_result.severity_details |
security_result.severity_details |
severity フィールドの値(サポートされている重大度レベルのいずれでもない場合)。 |
security_result.summary |
security_result.summary |
ioi_code フィールドの値。ioi_code が存在しない場合は product_data.logon error。 |
service |
target.application |
product_data.service が空の場合の service フィールドの値。 |
site_url |
target.url |
product_data.site url の値。 |
source |
principal.resource.attribute.labels[].value |
source フィールドの値。キーは Source です。 |
sub_feature |
additional.fields[].value.string_value |
sub_feature フィールドの値。キーは Sub Feature です。 |
target.application |
target.application |
product_data.activity_type と、プリンシパルとターゲットの存在に基づいて導出されます。 |
target.resource.name |
target.resource.name |
product_data.activity_type と、プリンシパルとターゲットの存在に基づいて導出されます。 |
threat_score |
security_result.detection_fields[].value |
threat_score フィールドの値。キーは Threat Score です。 |
transaction_id |
security_result.detection_fields[].value |
transaction_id フィールドの値。キーは Transaction ID です。 |
updated_timestamp |
additional.fields[].value.string_value |
updated_timestamp の値。 が空の場合は content_checks.dlp.updated_timestamp の値。キーは Updated TimeStamp です。 |
user |
principal.user.userid |
user フィールドの値。 |
user_email |
target.user.userid |
user_email フィールドの値。 |
user_mail |
target.user.userid |
msg フィールドから抽出された user_mail フィールドの値。 |
user_name |
principal.user.user_display_name |
user_name フィールドの値。 |
user_uid |
principal.user.userid または target.user.userid |
user_uid フィールドの値。product_data.activity_type が InvalidLogin または Login でない場合は principal.user.userid にマッピングされ、それ以外の場合は target.user.userid にマッピングされます。 |
uuid |
intermediary.asset.product_object_id |
uuid フィールドの値。 |
version |
metadata.product_version |
version フィールドの値。 |
user", "user_mail", and "user_uid |
principal.user.email_addresses |
変更履歴からマッピング |
user_email", "mailbox_owner", "product_data.target", and "user_uid |
target.user.email_addresses |
変更履歴からマッピング |
__event_timestamp |
metadata.event_timestamp |
変更履歴からマッピング |
_elastic_timestamp", "created_timestamp", "inserted_timestamp", "updated_timestamp", "responsible_logs" and "sub_feature |
additional.fields |
変更履歴からマッピング |
threat_score", "locations", "transaction_id", "content_checks.dlp.raw_response.requestid", "content_checks.dlp.raw_response.responseaction", "org_unit", "policy_type", "content_checks.vk_pci", "content_checks.vk_vba_macros", "content_checks.vk_glba", "content_checks.vk_source_code", "content_checks.vk_pii", "content_checks.vk_virus", "content_checks.vk_hipaa", "content_checks.violations", "object_name", "multi_user", "risks", "name", "_latency", "content_checks.dlp.raw_response.warning", "content_checks.dlp.raw_response.violation", "content_checks.dlp.raw_response.contentdetails", "content_checks.vk_dlp_policy_violations", "content_checks.risktype_list", "content_checks.vk_content_iq_violations", "actions_taken", "__detect_source", "multi_facility", "content_checks.vba_macros.expressions" and "policy_violated |
security_result.detection_fields |
変更履歴からマッピング |
resource_id |
target.resource.id |
変更履歴からマッピング |
変更ログ
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。