Jenkins ログを収集する
以下でサポートされています。
Google SecOpsSIEM
概要
このパーサーは、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 プラグインをインストールする
- [Manage Jenkins] > [Plugins] に移動します。
- [Available plugins] を選択します。
- Google Cloud Storage プラグインを検索します。
- プラグインをインストールし、必要に応じて Jenkins を再起動します。
Jenkins に Google OAuth 認証情報プラグインをインストールする
- [Manage Jenkins] > [Plugins] に移動します。
- [Available plugins] を選択します。
- Google OAuth 認証情報プラグインを検索します。
- プラグインをインストールし、必要に応じて Jenkins を再起動します。
Google Cloud で認証するように Jenkins を構成する
[Jenkins の管理] > [認証情報] > [システム] に移動します。
[ 追加 ] [認証情報を追加] をクリックします。
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 ログ)。
- [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 マッピング | ロジック |
---|---|---|
act | security_result.action_details | msg1 フィールドまたは msg2 フィールドから抽出されます。実行されたアクションを表します。先頭の空白文字は削除されます。 |
データ | 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 | オブジェクトとアクションを抽出するために使用されます。/ が存在する場合は、オブジェクトとアクションに分割されます。» が存在する場合は、オブジェクトとアクションに分割されます。それ以外の場合は、アクションとして扱われ、さらに解析される可能性があります。 |
msg2 | metadata.description または security_result.action_details | 存在する場合は、最初は metadata.description にマッピングされます。「completed:」が含まれている場合は、その後の値が抽出され、security_result.action_details にマッピングされます。 |
オブジェクト | target.asset.product_object_id | msg1 から抽出されました。操作対象のオブジェクトを表します。 |
object_id | target.resource.attribute.labels.value | / が存在する場合は、オブジェクトから抽出されます。より具体的なオブジェクト ID を表します。このキーは「プラグイン名」としてハードコードされています。 |
src_ip | principal.ip | メッセージまたはデータから抽出されます。送信元 IP アドレスを表します。 |
ユーザー | principal.user.userid | メッセージまたはデータから抽出されます。イベントに関連付けられたユーザーを表します。 |
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
- 新しく作成されたパーサー。