Jenkins ログを収集する
概要
このパーサーは、JSON 形式と SYSLOG 形式のログからタイムスタンプ、ユーザー ID、送信元 IP、アクション、オブジェクト ID などの重要な情報を抽出します。Grok パターンを使用してさまざまなログメッセージ形式を照合し、構造の違いを処理し、抽出されたフィールドを統合データモデル(UDM)に入力します。また、パーサーは、ユーザー情報または IP 情報の有無に基づいてイベントを分類します。
始める前に
- Google SecOps インスタンスがあることを確認します。
- Google Cloud IAM への特権アクセス権があることを確認します。
- Google Cloud Storage への特権アクセス権があることを確認します。
- Jenkins への特権アクセス権があることを確認します。
Google Cloud Storage バケットを作成する
- [Cloud Storage] に移動します。
- バケットを新規作成します。 一意の名前と適切なリージョンを選択します。
- バケットに適切なアクセス制御があることを確認します(たとえば、承認されたサービス アカウントのみが書き込み可能)。
Google Cloud サービス アカウントを作成する
- [IAM と管理] > [サービス アカウント] に移動します。
- 新しいサービス アカウントを作成します。わかりやすい名前を付けます(例: jenkins-logs)。
- 前の手順で作成した GCS バケットに対するストレージ オブジェクト作成者ロールをサービス アカウントに付与します。
- サービス アカウントの SSH キーを作成します: サービス アカウント キーを作成、削除します。
サービス アカウントの JSON キーファイルをダウンロードします。
Jenkins に Google Cloud Storage プラグインをインストールする
- [Jenkins の管理] > [プラグイン] に移動します。
- [使用可能なプラグイン] を選択します。
- Google Cloud Storage プラグインを検索します。
- プラグインをインストールし、必要に応じて Jenkins を再起動します。
Jenkins に Google OAuth 認証情報プラグインをインストールする
- [Jenkins の管理] > [プラグイン] に移動します。
- [使用可能なプラグイン] を選択します。
- Google OAuth 認証情報プラグインを検索します。
- プラグインをインストールし、必要に応じて Jenkins を再起動します。
Google Cloud で認証するように Jenkins を構成する
[Jenkins の管理] > [認証情報] > [システム] に移動します。
add [認証情報を追加] をクリックします。
Kind: [Google Service Account from private key] を選択します。
プロジェクト名: 認証情報の名前を設定します。
Google Cloud サービス アカウントの作成時に取得した JSON 鍵ファイルをアップロードします。
[作成] をクリックします。
Google SecOps をアップロードするように Jenkins ログを構成する
- Jenkins ジョブ構成で、ポストビルド アクションに Google Storage Build Log Upload を追加し、次のパラメータを指定します。
- Google 認証情報: 前の手順で作成した Google 認証情報の名前。
- ログ名: 指定したストレージ パスに Jenkins ビルドログを保存するファイルの名前。
- ストレージの場所: ログをアップロードするバケットの名前。作成したサービス アカウントからバケットにアクセスできる必要があります。
- ログのアップロードをテストします。
Jenkins ログを取り込むように Google SecOps でフィードを構成する
- [SIEM 設定] > [フィード] に移動します。
- [新しく追加] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Jenkins Logs)。
- [Source type] として [Google Cloud Storage] を選択します。
- [ログタイプ] として [Jenkins] を選択します。
- [Chronicle サービス アカウント] として [サービス アカウントを取得する] をクリックします。
- [次へ] をクリックします。
次の入力パラメータの値を指定します。
- Storage Bucket URI:
gs://my-bucket/<value>
形式の Google Cloud Storage バケット URL。 - URI is a: [サブディレクトリを含むディレクトリ] を選択します。
- ソース削除オプション: 必要に応じて削除オプションを選択します。
- アセットの名前空間: アセットの名前空間。
- 取り込みラベル: このフィードのイベントに適用されるラベル。
- Storage Bucket URI:
[次へ] をクリックします。
[Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
UDM マッピング テーブル
ログフィールド | UDM マッピング | 論理 |
---|---|---|
対処 | security_result.action_details | msg1 フィールドまたは msg2 フィールドから抽出されます。実行されたアクションを表します。先頭の空白文字は削除されます。 |
data | principal.user.userid または principal.ip または metadata.description | data が IP アドレス パターンと一致する場合、principal.ip にマッピングされます。ユーザー名のパターンと一致する場合は、principal.user.userid にマッピングされます。それ以外の場合は、metadata.description にマッピングされます。 |
msg1 | target.asset.product_object_id または security_result.action_details | object と act を抽出するために使用されます。/ が存在する場合は、object と act に分割されます。» が存在する場合は、object と act に分割されます。それ以外の場合は、act として扱われ、さらに解析される可能性があります。 |
msg2 | metadata.description または security_result.action_details | 存在する場合は、最初は metadata.description にマッピングされます。「completed:」が含まれている場合、その後の値が抽出され、security_result.action_details にマッピングされます。 |
object | target.asset.product_object_id | msg1 から抽出されます。操作対象のオブジェクトを表します。 |
object_id | target.resource.attribute.labels.value | / が存在する場合は、object から抽出されます。より具体的なオブジェクト ID を表します。キーは「Plugin Name」としてハードコードされています。 |
src_ip | principal.ip | message または data から抽出されます。送信元 IP アドレスを表します。 |
ユーザー | principal.user.userid | message または data から抽出されます。イベントに関連付けられたユーザーを表します。 |
metadata.event_timestamp | 計算された @timestamp フィールドからコピーされます。 | |
metadata.event_type | パーサー ロジックによって決定されます。user が存在する場合は USER_UNCATEGORIZED、src_ip が存在する場合は STATUS_UNCATEGORIZED、それ以外の場合は GENERIC_EVENT に設定します。 | |
metadata.product_name | Jenkins としてハードコードされています。 | |
metadata.product_version | Jenkins としてハードコードされています。 | |
metadata.vendor_name | JENKINS としてハードコードされています。 | |
metadata.event_timestamp | year、month、day、time、ampm フィールドから構築されます。 |
変更
2023-11-27
- 新しく作成されたパーサー。
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps の専門家から回答を得る。