Delinea Secret Server のログを収集する
このドキュメントでは、Delinea(旧 Thycotic)Secret Server のログを収集する方法について説明します。パーサーは、未加工ログを Google Security Operations UDM に準拠した構造化形式に変換します。まず、タイムスタンプ、イベントタイプ、ユーザー情報などの主要なフィールドを抽出します。次に、特定のイベントタイプに基づく条件付きロジックを使用して、データを適切な UDM フィールドにマッピングします。最終的には、Google SecOps で分析できるようにデータを拡充します。
始める前に
- Google Security Operations インスタンスがあることを確認します。
- Windows 2016 以降、または
systemd
を使用する Linux ホストを使用していることを確認します。 - プロキシの背後で実行している場合は、ファイアウォールのポートが開いていることを確認します。
- Delinea への特権アクセス権があることを確認します。
Google SecOps の取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [コレクション エージェント] に移動します。
- Ingestion Authentication File をダウンロードします。Bindplane エージェントをインストールするシステムにファイルを安全に保存します。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
- [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。
Bindplane エージェントをインストールする
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: udplog: # Replace with your specific IP and port listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Path to the ingestion authentication file creds: '/path/to/your/ingestion-auth.json' # Your Chronicle customer ID customer_id: 'your_customer_id' endpoint: malachiteingestion-pa.googleapis.com ingestion_labels: log_type: SYSLOG namespace: thycotic raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog 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
Syslog を使用してログを送信するように Delinea Secret Server を構成する
- 管理者認証情報を使用して Delinea Secret Server にログインします。
- [管理] > [構成] に移動します。
- [編集] をクリックします。
- [Syslog/CEF ロギングを有効にする] チェックボックスをオンにして、次の詳細を指定します。
- Syslog/CEF サーバー: Bindplane の IP アドレスを入力します。
- Syslog/CEF プロトコル: Bindplane の構成に応じて、[UDP] または [TCP] を選択します。
- Syslog/CEF port: Bindplane がリッスンするように構成されているポート番号を入力します。
- [保存] をクリックします。
UDM マッピング
ログフィールド | UDM マッピング | ロジック |
---|---|---|
Account_Domain | event1.idm.read_only_udm.principal.domain | この値は、未加工ログの「msg」フィールドの「Account_Domain」フィールドから取得されます。 |
ユーザー別 | event1.idm.read_only_udm.principal.user.userid | この値は、未加工ログの「msg」フィールドの「By User」フィールドから取得されます。 |
コンテナ ID | event1.idm.read_only_udm.principal.asset.asset_id | この値は、未加工ログの「msg」フィールドの「Container Id」フィールドから取得され、「container_id:」という接頭辞が付いています。 |
コンテナ名 | event1.idm.read_only_udm.principal.resource.name | この値は、未加工ログの「msg」フィールドの「Container name」フィールドから取得されます。 |
cs2 | event1.idm.read_only_udm.additional.fields[].value.string_value | この値は、未加工ログの「msg」フィールドの「cs2」フィールドから取得されます。 |
cs3 | event1.idm.read_only_udm.target.file.full_path | この値は、未加工ログの「msg」フィールドの「cs3」フィールドから取得されます。 |
cs4 | event1.idm.read_only_udm.principal.user.user_display_name | この値は、未加工ログの「msg」フィールドの「cs4」フィールドから取得されます。 |
詳細 | event1.idm.read_only_udm.additional.fields[].value.string_value | この値は、未加工ログの「msg」フィールドの「Details」フィールドから取得されます。 |
fname | event1.idm.read_only_udm.target.file.full_path | この値は、未加工ログの「msg」フィールドの「fname」フィールドから取得されます。 |
ホスト | event1.idm.read_only_udm.principal.hostname、event1.idm.read_only_udm.principal.asset.hostname | この値は、未加工ログの「msg」フィールドの「Host」フィールドから取得されます。 |
項目名 | event1.idm.read_only_udm.target.user.userid | この値は、未加工ログの「msg」フィールドの「Item Name」フィールドから取得されます。 |
event1.idm.read_only_udm.additional.fields[].key | 値は「fname」にハードコードされています。 | |
event1.idm.read_only_udm.additional.fields[].key | この値は「グループまたはユーザー」にハードコードされています。 | |
event1.idm.read_only_udm.additional.fields[].key | 値は「Details」にハードコードされています。 | |
event1.idm.read_only_udm.additional.fields[].key | 値は「type_id」にハードコードされています。 | |
event1.idm.read_only_udm.extensions.auth.type | 値は「MACHINE」にハードコードされています。 | |
event1.idm.read_only_udm.metadata.description | 値は「thycotic_event」フィールドから取得されます。このフィールドは、grok パターンを使用して未加工ログから抽出されます。 | |
event1.idm.read_only_udm.metadata.event_timestamp.seconds | この値は、存在する場合は「rt」フィールドから、存在しない場合は「ts」フィールドから取得されます。どちらのフィールドも、grok パターンを使用して未加工ログから抽出されます。 | |
event1.idm.read_only_udm.metadata.event_type | この値は、「thycotic_event」フィールドとその他の条件に基づいて決定されます。たとえば、「thycotic_event」が「USER - LOGIN」の場合、イベントタイプは「USER_LOGIN」に設定されます。 | |
event1.idm.read_only_udm.metadata.log_type | この値は「THYCOTIC」にハードコードされています。 | |
event1.idm.read_only_udm.metadata.product_event_type | 値は「thycotic_event」フィールドから取得されます。このフィールドは、grok パターンを使用して未加工ログから抽出されます。 | |
event1.idm.read_only_udm.metadata.product_log_id | 値は「action_id」フィールドから取得されます。このフィールドは、Grok パターンを使用して未加工ログから抽出されます。 | |
event1.idm.read_only_udm.metadata.product_name | 値は「device_product」フィールドから取得されます。このフィールドは、grok パターンを使用して未加工ログから抽出されます。このフィールドが空の場合、値は「Secret Server」にハードコードされます。 | |
event1.idm.read_only_udm.metadata.product_version | 値は「device_version」フィールドから取得されます。このフィールドは、grok パターンを使用して未加工ログから抽出されます。 | |
event1.idm.read_only_udm.metadata.vendor_name | この値は「Thycotic」にハードコードされています。 | |
event1.idm.read_only_udm.network.ip_protocol | 「input.type」フィールドが「tcp」の場合、値は「TCP」に設定されます。 | |
event1.idm.read_only_udm.observer.application | この値は、「agent.type」フィールドから取得されます(存在する場合)。存在しない場合は、「Secret Server」にハードコードされます。 | |
event1.idm.read_only_udm.observer.asset_id | 値は、「agent.id」フィールドと連結された「Agent ID:」に設定されます。 | |
event1.idm.read_only_udm.observer.hostname | この値は、「agent.hostname」フィールド(存在する場合)から取得されます。存在しない場合は、「server」フィールドから取得されます。 | |
event1.idm.read_only_udm.observer.platform_version | この値は「agent.version」フィールドから取得されます。 | |
event1.idm.read_only_udm.observer.user.userid | この値は「agent.name」フィールドから取得されます。 | |
event1.idm.read_only_udm.principal.asset.asset_id | 値は、「host.id」フィールドと連結された「ID:」に設定されます。 | |
event1.idm.read_only_udm.principal.asset.hardware.cpu_platform | この値は「host.architecture」フィールドから取得されます。 | |
event1.idm.read_only_udm.principal.asset.hostname | この値は、「server」フィールド(存在する場合)から取得されます。存在しない場合は、「host.hostname」フィールドから取得されます。 | |
event1.idm.read_only_udm.principal.asset.ip | 値は、「src」フィールド(存在する場合)から取得されます。存在しない場合は、「src_ip」フィールドから取得されます。 | |
event1.idm.read_only_udm.principal.hostname | この値は、「host.hostname」フィールド(存在する場合)から取得されます。存在しない場合は、「server」フィールドから取得されます。 | |
event1.idm.read_only_udm.principal.ip | 値は、「src」フィールド(存在する場合)から取得されます。存在しない場合は、「src_ip」フィールドまたは「host.ip」フィールドから取得されます。 | |
event1.idm.read_only_udm.principal.mac | この値は「host.mac」フィールドから取得されます。 | |
event1.idm.read_only_udm.principal.platform | 「host_os_platform」フィールドが「centos」の場合、値は「LINUX」に設定されます。それ以外の場合は、「host_os_platform」フィールドの大文字の値に設定されます。 | |
event1.idm.read_only_udm.principal.platform_patch_level | この値は「host.os.kernel」フィールドから取得されます。 | |
event1.idm.read_only_udm.principal.platform_version | この値は「host.os.version」フィールドから取得されます。 | |
event1.idm.read_only_udm.principal.port | 値は「src_port」フィールドから取得されます。このフィールドは、Grok パターンを使用して「log.source.address」フィールドから抽出されます。 | |
event1.idm.read_only_udm.principal.user.user_display_name | この値は、未加工ログの「msg」フィールドの「cs4」フィールドから取得されます。 | |
event1.idm.read_only_udm.principal.user.userid | この値は、未加工ログの「msg」フィールドの「suser」フィールドから取得されます。または、「thycotic_event」が「USER - LOGIN」、「USER - LOGOUT」、「USER - LOGINFAILURE」、「USER - EDIT」の場合、「By User」フィールドから取得されます。 | |
event1.idm.read_only_udm.security_result.action | この値は、未加工ログの「msg」フィールドの「Action」フィールドから取得されます。「thycotic_event」の値に基づいて「ALLOW」または「BLOCK」に設定することもできます。 | |
event1.idm.read_only_udm.security_result.description | この値は「temp_message」フィールドから取得されます。このフィールドには、他のフィールドを抽出した後の「msg」フィールドの残りの部分が含まれています。 | |
event1.idm.read_only_udm.security_result.severity | この値は「syslog_severity」フィールドに基づいて決定されます。たとえば、「syslog_severity」に「error」または「warning」が含まれている場合、重大度は「HIGH」に設定されます。「thycotic_event」が「System Log」の場合、重大度は「INFORMATIONAL」に設定されます。 | |
event1.idm.read_only_udm.security_result.severity_details | この値は「syslog_severity」フィールドから取得されます。 | |
event1.idm.read_only_udm.target.file.full_path | 値は、「cs3」フィールドと「fname」フィールドを「/」セパレータで連結して作成されます(両方のフィールドが存在する場合)。フィールドが 1 つしかない場合は、そのフィールドから値が取得されます。 | |
event1.idm.read_only_udm.target.resource.product_object_id | 値は「type_id」フィールドから取得されます。 | |
event1.idm.read_only_udm.target.user.userid | この値は、未加工ログの「msg」フィールドの「item_name」フィールドから取得されます。または、「thycotic_event」が「USER - LOGIN」、「USER - LOGOUT」、「USER - LOGINFAILURE」、「USER - EDIT」の場合、「Item Name」フィールドから取得されます。 | |
events.timestamp.seconds | この値は、存在する場合は「rt」フィールドから、存在しない場合は「ts」フィールドから取得されます。どちらのフィールドも、grok パターンを使用して未加工ログから抽出されます。 | |
rt | event1.idm.read_only_udm.metadata.event_timestamp.seconds | この値は、未加工ログの「msg」フィールドの「rt」フィールドから取得され、イベント タイムスタンプの設定に使用されます。 |
src | event1.idm.read_only_udm.principal.asset.ip、event1.idm.read_only_udm.principal.ip | この値は、未加工ログの「msg」フィールドの「src」フィールドから取得されます。 |
src_ip | event1.idm.read_only_udm.principal.asset.ip、event1.idm.read_only_udm.principal.ip | 値は「src_ip」フィールドから取得されます。このフィールドは、Grok パターンを使用して「log.source.address」フィールドから抽出されます。 |
変更点
2024-06-04
- 未解析ログの解析を改善しました。
- 「Host」フィールドと「server」フィールドを、ホスト名に関連する UDM フィールドにマッピングしました。
- 「Container_Id」と「Container_name」を、アセット名とリソース名に関連する UDM フィールドにマッピングしました。
2023-09-22
- 未解析ログを適切に処理するように解析ロジックを調整しました。
- 「rt」フィールドと「ts」フィールドのエラー処理を追加しました。
2023-06-12
- 新しいログ形式をサポートするように解析ロジックを更新しました。
- 追加情報とセキュリティ結果の概要を取得するための UDM フィールドに「fname」、「cs2」、「details」フィールドをマッピングしました。
2022-08-01
- JSON 形式のログの解析のサポートを追加しました。
- デバイスとエージェントの情報、IP アドレス、ホストの詳細、プラットフォーム情報、セキュリティの重大度に関連するフィールドなど、JSON ログの多くのフィールドを対応する UDM フィールドにマッピングしました。
- タイプが「SECRET - SECRETPASSWORDCHANGEFAILURE」のログの解析を追加しました。
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。