JFrog Artifactory のログを収集する

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

このパーサーは、2 つの異なる JFrog Artifactory ログ形式を処理します。grok パターンを使用して、各形式からフィールドを識別して抽出します。その後、これらのフィールドを UDM にマッピングし、いずれかの形式内の JSON ペイロードを処理し、どちらの形式にも一致しないログを破棄します。

始める前に

  • Google SecOps インスタンスがあることを確認します。
  • JFrog への特権アクセス権があることを確認します。

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

  1. [SIEM 設定] > [フィード] に移動します。
  2. [新しく追加] をクリックします。
  3. [フィード名] フィールドに、フィードの名前を入力します(例: JFrog Artifactory Logs)。
  4. [ソースタイプ] として [Webhook] を選択します。
  5. [Log type] で [JFrog Artifactory] を選択します。
  6. [次へ] をクリックします。
  7. 省略可: 次の入力パラメータの値を指定します。
    • 分割区切り文字: ログ行を区切るために使用される区切り文字(\n など)。
    • アセットの名前空間: アセットの名前空間
    • 取り込みラベル: このフィードのイベントに適用されるラベル。
  8. [次へ] をクリックします。
  9. [Finalize] 画面でフィードの設定を確認し、[送信] をクリックします。
  10. [秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
  11. シークレット キーをコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、この操作により以前の秘密鍵は無効になります。
  12. [詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント URL をコピーします。このエンドポイント URL は、クライアント アプリケーションで指定する必要があります。
  13. [完了] をクリックします。

Webhook フィードの API キーを作成する

  1. Google Cloud コンソール > [認証情報] に移動します。

    [認証情報] に移動

  2. [認証情報を作成] をクリックして [API キー] を選択します。

  3. API キーのアクセスを Google Security Operations API に制限します。

エンドポイント URL を指定する

  1. クライアント アプリケーションで、Webhook フィードで指定された HTTPS エンドポイント URL を指定します。
  2. 次の形式でカスタム ヘッダーの一部として API キーとシークレット キーを指定して、認証を有効にします。

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    推奨事項: API キーは URL ではなくヘッダーとして指定してください。

  3. Webhook クライアントがカスタム ヘッダーをサポートしていない場合は、次の形式のクエリ パラメータを使用して API キーとシークレット キーを指定できます。

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    次のように置き換えます。

    • ENDPOINT_URL: フィードのエンドポイント URL。
    • API_KEY: Google SecOps に対する認証に使用する API キー。
    • SECRET: フィードの認証用に生成したシークレット キー。

JFrog Artifactory で Webhook を作成し、Google SecOps にデータを送信する

  1. 管理者の認証情報を使用して JFrog インスタンスにログインします。
  2. [管理] > [全般] > [Webhooks] に移動します。
  3. [+ 新しい Webhook] をクリックします。
  4. 次の webhook 設定を構成します。

    • Webhook Key: わかりやすい名前を入力します(例: Google SecOps)。
    • URL: Google SecOps API エンドポイントの <ENDPOINT_URL> を入力します。

    • イベント: Webhook をトリガーする Artifactory イベントを選択し、セキュリティ モニタリングのニーズに関連するイベントを選択します(デプロイ済みダウンロード済み削除済みなど)。

    • ドメイン: 仮想リポジトリを使用している場合は、該当するドメインを選択します。それ以外の場合は、このフィールドを [Any Local] のままにします。

    • リポジトリ: 特定のリポジトリを選択するか、要件に応じて [任意のリモート] または [任意のローカル] のままにします。

  5. [テスト] をクリックすると、テストイベントが Google SecOps に送信されます。

  6. [保存] をクリックします。

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 未加工のログ(JSON ペイロードから)に username がない場合、マッピングされます。
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 フィールドから直接マッピングされます。
username read_only_udm.principal.user.userid 未加工ログの username フィールド(JSON ペイロードから)から直接マッピングされます。

変更点

2024-09-23

  • 機能強化:
  • 解析されていないログの解析のサポートを追加しました。
  • 「target_ip」を「target.ip」と「target.asset.ip」にマッピングしました。
  • 「desc」を「metadata.description」にマッピングしました。
  • 「method」を「network.http.method」にマッピングしました。
  • 「url」を「target.url」にマッピングしました。
  • 「prin_url」を「principal.url」にマッピングしました。
  • 「response_code」を「network.http.response_code」にマッピングしました。
  • 「RequestMethod」を「network.http.method」にマッピングしました。
  • 「RequestPath」を「target.url」にマッピングしました。
  • 「DownstreamContentSize」と「DownstreamStatus」を「Additional.Fields」にマッピングしました。
  • 「ServiceAddr」を「principal.hostname」と「principal.port」にマッピングしました。
  • 「ClientAddr」を「target.ip」と「target.port」にマッピングしました。
  • 「user_agent」を「network.http.user_agent」にマッピングしました。
  • 「level」を「security_result.severity」にマッピングしました。
  • 「msg」を「security_result.description」にマッピングしました。
  • 「protocol」を「network.application_protocol」にマッピングしました。

2023-08-25

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