Jenkins ログを収集する

以下でサポートされています。

概要

このパーサーは、JSON 形式と SYSLOG 形式のログからタイムスタンプ、ユーザー ID、送信元 IP、アクション、オブジェクト ID などの重要な情報を抽出します。grok パターンを使用してさまざまなログメッセージ形式を照合し、構造の違いを処理し、抽出されたフィールドを統合データモデル(UDM)に入力します。また、パーサーは、ユーザー情報または IP 情報の有無に基づいてイベントを分類します。

始める前に

  • Google SecOps インスタンスがあることを確認します。
  • Google Cloud IAM に対する特権アクセス権があることを確認します。
  • Google Cloud Storage に対する特権アクセス権があることを確認します。
  • Jenkins への特権アクセス権があることを確認します。

Google Cloud Storage バケットを作成する

  1. [Cloud Storage] に移動します。
  2. 新しいバケットを作成します。一意の名前と適切なリージョンを選択します。
  3. バケットに適切なアクセス制御があることを確認します(たとえば、承認されたサービス アカウントのみが書き込み可能)。

Google Cloud サービス アカウントを作成する

  1. [IAM と管理] > [サービス アカウント] に移動します。
  2. 新しいサービス アカウントを作成します。わかりやすい名前を付けます(例: jenkins-logs)。
  3. 前の手順で作成した GCS バケットに対するストレージ オブジェクト作成者ロールをサービス アカウントに付与します。
  4. サービス アカウントの SSH キーを作成します。サービス アカウント キーを作成、削除する
  5. サービス アカウントの JSON キーファイルをダウンロードします。

Jenkins に Google Cloud Storage プラグインをインストールする

  1. [Manage Jenkins] > [Plugins] に移動します。
  2. [Available plugins] を選択します。
  3. Google Cloud Storage プラグインを検索します。
  4. プラグインをインストールし、必要に応じて Jenkins を再起動します。

Jenkins に Google OAuth 認証情報プラグインをインストールする

  1. [Manage Jenkins] > [Plugins] に移動します。
  2. [Available plugins] を選択します。
  3. Google OAuth 認証情報プラグインを検索します。
  4. プラグインをインストールし、必要に応じて Jenkins を再起動します。

Google Cloud で認証するように Jenkins を構成する

  1. [Jenkins の管理] > [認証情報] > [システム] に移動します。

  2. [ 追加 ] [認証情報を追加] をクリックします。

  3. Kind: [Google Service Account from private key] を選択します。

  4. プロジェクト名: 認証情報の名前を設定します。

  5. Google Cloud サービス アカウントの作成時に取得した JSON 鍵ファイルをアップロードします。

  6. [作成] をクリックします。

Google SecOps をアップロードするように Jenkins ログを構成する

  1. Jenkins ジョブ構成で、ポストビルド アクションに Google Storage Build Log Upload を追加し、次のパラメータを指定します。
    • Google 認証情報: 前の手順で作成した Google 認証情報の名前。
    • ログ名: 指定したストレージ パスに Jenkins ビルドログを保存するファイルの名前。
    • ストレージの場所: ログをアップロードするバケットの名前。作成したサービス アカウントからバケットにアクセスできる必要があります。
  2. ログのアップロードをテストします。

Jenkins ログを取り込むように Google SecOps でフィードを構成する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [新しく追加] をクリックします。
  3. [フィード名] フィールドに、フィードの名前を入力します(例: Jenkins ログ)。
  4. [Source type] として [Google Cloud Storage] を選択します。
  5. [ログタイプ] として [Jenkins] を選択します。
  6. [Chronicle サービス アカウント] として [サービス アカウントを取得する] をクリックします。
  7. [次へ] をクリックします。
  8. 次の入力パラメータの値を指定します。

    • Storage Bucket URI: gs://my-bucket/<value> 形式の Google Cloud Storage バケット URL。
    • URI is a: [サブディレクトリを含むディレクトリ] を選択します。
    • ソース削除オプション: 必要に応じて削除オプションを選択します。
    • アセットの名前空間: アセットの名前空間
    • 取り込みラベル: このフィードのイベントに適用されるラベル。
  9. [次へ] をクリックします。

  10. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
act security_result.action_details msg1 フィールドまたは msg2 フィールドから抽出されます。実行されたアクションを表します。先頭の空白文字は削除されます。
データ principal.user.useridprincipal.ipmetadata.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_UNCATEGORIZEDsrc_ip が存在する場合は STATUS_UNCATEGORIZED、それ以外の場合は GENERIC_EVENT に設定します。
metadata.product_name Jenkins としてハードコードされています。
metadata.product_version Jenkins としてハードコードされています。
metadata.vendor_name JENKINS としてハードコードされています。
metadata.event_timestamp yearmonthdaytimeampm フィールドから構築されます。

変更点

2023-11-27

  • 新しく作成されたパーサー。