JFrog Artifactory のログを収集する
このドキュメントでは、Bindplane を使用して Jfrog Artifactory ログを Google Security Operations に取り込む方法について説明します。パーサーは、2 つの異なる JFrog Artifactory ログ形式を処理します。grok パターンを使用して、各形式のフィールドを識別して抽出します。次に、これらのフィールドを UDM にマッピングし、いずれかの形式で JSON ペイロードを処理して、いずれの形式にも一致しないログをドロップします。
始める前に
- Google SecOps インスタンスがあることを確認します。
- Windows 2016 以降、または
systemd
を使用する Linux ホストを使用していることを確認します。 - プロキシの背後で実行している場合は、ファイアウォール ポートが開いていることを確認します。
- Jfrog Artifactory インスタンスへの特権アクセス権があることを確認します。
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 エージェントを構成する
構成ファイルにアクセスします。
config.yaml
ファイルを見つけます。通常、Linux では/etc/bindplane-agent/
ディレクトリに、Windows ではインストール ディレクトリにあります。- テキスト エディタ(
nano
、vi
、メモ帳など)を使用してファイルを開きます。
config.yaml
ファイルを次のように編集します。```yaml receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds: '/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 ingestion_labels: log_type: 'JFROG_ARTIFACTORY' 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 エージェントを再起動して変更を適用する
Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。
sudo systemctl restart bindplane-agent
Windows で Bindplane エージェントを再起動するには、Services コンソールを使用するか、次のコマンドを入力します。
net stop BindPlaneAgent && net start BindPlaneAgent
JFrog Artifactory Syslog を構成する
- Jfrog Artifactory インスタンスに接続します。
vi を使用して
$JFROG_HOME/artifactory/var/etc/artifactory/logback.xml
ファイルを編集します。vi $JFROG_HOME/artifactory/var/etc/artifactory/logback.xml
次の syslog アペンダーをファイルに追加します。
<appender name="SYSLOG" class= "ch.qos.logback.classic.net.SyslogAppender"> <syslogHost>Bindplane-Agent-IP</syslogHost> <facility>SYSLOG</facility> <suffixPattern>[%thread] %logger %msg</suffixPattern> </appender>
- syslogHost の
Bindplane-Agent-IP
を、Bindplane エージェント用に構成された実際の IP アドレスに置き換えます。
- syslogHost の
ファイルに構成データを追加します。
<root> < level value="debug"/> <appender-ref ref="CONSOLE"/> <appender-ref ref="FILE"/> <appender-ref ref="SYSLOG"/> </root>
キーボードの
ESC
(エスケープ)ボタンをクリックし、:wq
と入力して、ファイルを保存します。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
操作 | read_only_udm.metadata.product_event_type |
未加工ログの action の値は小文字に変換されてマッピングされます。 |
datetime | read_only_udm.metadata.event_timestamp |
未加工ログの datetime フィールドが解析され、タイムスタンプに変換されます。 |
hostname | read_only_udm.principal.hostname |
未加工ログの hostname フィールドから直接マッピングされます。 |
id | read_only_udm.metadata.product_log_id |
未加工ログの id フィールド(JSON ペイロードから)から直接マッピングされます。 |
ip | read_only_udm.principal.ip |
未加工ログの ip フィールドから直接マッピングされます。「USER_RESOURCE_ACCESS」にハードコードされています。「JFROG_ARTIFACTORY」にハードコードされます。「Artifactory」にハードコードされます。「JFROG」にハードコードされます。 |
owner | read_only_udm.principal.user.userid |
username が未加工ログ(JSON ペイロード)に存在しない場合にマッピングされます。 |
repo_name | read_only_udm.target.resource.name |
未加工ログの repo_name フィールドから直接マッピングされます。 |
repo_type | read_only_udm.target.resource.resource_subtype |
未加工ログの repo_type フィールドから直接マッピングされます。 |
scope | read_only_udm.target.resource.name |
未加工ログの scope フィールド(JSON ペイロードから)から直接マッピングされます。 |
scope | read_only_udm.target.resource.resource_subtype |
未加工ログに scope が存在する場合は「scope」にハードコードされます。 |
sequenceId | read_only_udm.metadata.product_log_id |
引用符が sequenceId フィールドから削除され、マッピングされます。 |
subject | read_only_udm.about.labels.key |
未加工ログに subject が存在する場合は「subject」にハードコードされます。 |
subject | read_only_udm.about.labels.value |
未加工ログの subject フィールド(JSON ペイロードから)から直接マッピングされます。 |
type | read_only_udm.metadata.product_event_type |
未加工ログの type フィールド(JSON ペイロードから)から直接マッピングされます。 |
ユーザー | read_only_udm.principal.user.userid |
未加工ログの user フィールドから直接マッピングされます。 |
ユーザー名 | read_only_udm.principal.user.userid |
未加工ログの username フィールド(JSON ペイロードから)から直接マッピングされます。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。