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. [Jenkins の管理] > [プラグイン] に移動します。
  2. [使用可能なプラグイン] を選択します。
  3. Google Cloud Storage プラグインを検索します。
  4. プラグインをインストールし、必要に応じて Jenkins を再起動します。

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

  1. [Jenkins の管理] > [プラグイン] に移動します。
  2. [使用可能なプラグイン] を選択します。
  3. Google OAuth Credentials プラグインを検索します。
  4. プラグインをインストールし、必要に応じて Jenkins を再起動します。

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

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

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

  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 Credentials: 前の手順で作成した Google 認証情報の名前。
    • ログ名: 指定された保存パスに Jenkins ビルドログを保存するファイルの名前。
    • ストレージの場所: ログをアップロードするバケットの名前。バケットは、作成したサービス アカウントからアクセス可能である必要があります。
  2. ログのアップロードをテストします。

フィードを設定する

Google SecOps プラットフォームでフィードを設定するには、次の 2 つのエントリ ポイントがあります。

  • [SIEM 設定] > [フィード]
  • [Content Hub] > [Content Packs]

[SIEM 設定] > [フィード] でフィードを設定する

フィードを構成する手順は次のとおりです。

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

    • Storage Bucket URI:gs://my-bucket/<value> 形式の Google Cloud ストレージ バケット URL。
    • URI is a: [サブディレクトリを含むディレクトリ] を選択します。
    • Source deletion options: 必要に応じて削除オプションを選択します。
  10. [次へ] をクリックします。

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

コンテンツ ハブからフィードを設定する

次のフィールドに値を指定します。

  • Storage Bucket URI:gs://my-bucket/<value> 形式の Google Cloud ストレージ バケット URL。
  • URI is a: [サブディレクトリを含むディレクトリ] を選択します。
  • Source deletion options: 必要に応じて削除オプションを選択します。

詳細オプション

  • フィード名: フィードを識別する事前入力された値。
  • ソースタイプ: Google SecOps にログを収集するために使用される方法。
  • アセットの名前空間: フィードに関連付けられた名前空間。
  • Ingestion Labels: このフィードのすべてのイベントに適用されるラベル。

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 objectact を抽出するために使用されます。/ が存在する場合は、objectact に分割されます。» が存在する場合は、objectact に分割されます。それ以外の場合は、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 から抽出されます。より具体的なオブジェクト識別子を表します。キーは「Plugin Name」としてハードコードされています。
src_ip principal.ip message または data から抽出されます。送信元 IP アドレスを表します。
ユーザー principal.user.userid message または data から抽出されます。イベントに関連付けられたユーザーを表します。
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 の各フィールドから構成されます。

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。