指紋認証のログを収集する

パーサーのバージョン: 1.0

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

このドキュメントでは、Webhook を使用してログを Google Security Operations に push するように Fingerprint(以前の FingerprintJS)を構成する方法について説明します。

Fingerprint は、訪問者の識別と不正行為の検出機能を提供するデバイス インテリジェンス プラットフォームです。一意のサイト訪問者 ID を生成し、ボット検出、VPN 検出、シークレット モード検出などのスマート シグナルや、その他のデバイス インテリジェンス分析情報を提供します。FingerprintJS JavaScript エージェントで訪問者が識別されると、Webhook は識別イベントデータを Google Security Operations にリアルタイムで送信できます。

始める前に

次の前提条件を満たしていることを確認します。

  • Google SecOps インスタンス
  • Webhook サポート付きの FingerprintJS アカウント
  • Google Cloud コンソールへのアクセス(API キーの作成用)
  • ウェブサイトまたはアプリケーションにインストールされた FingerprintJS JavaScript エージェント

Google SecOps で Webhook フィードを作成する

フィードを作成する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [Add New Feed] をクリックします。
  3. 次のページで、[単一のフィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: FingerprintJS Identification Events)。
  5. [Source type] として [Webhook] を選択します。
  6. [ログタイプ] として [FingerprintJS] を選択します。
  7. [次へ] をクリックします。
  8. 次の入力パラメータの値を指定します。
    • Split delimiter(省略可): 空白のままにします。各 Webhook リクエストには、1 つの識別イベントが含まれています。
    • アセットの名前空間: アセットの名前空間
    • Ingestion labels: このフィードのイベントに適用されるラベル。
  9. [次へ] をクリックします。
  10. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

秘密鍵を生成して保存する

フィードを作成したら、認証用のシークレット キーを生成する必要があります。

  1. フィードの詳細ページで、[シークレット キーを生成] をクリックします。
  2. ダイアログに秘密鍵が表示されます。
  3. 秘密鍵をコピーして安全に保存します。

重要: シークレット キーは一度しか表示されず、後で取得することはできません。秘密鍵を紛失した場合は、新しい秘密鍵を生成する必要があります。

フィード エンドポイントの URL を取得する

  1. フィードの [詳細] タブに移動します。
  2. [エンドポイント情報] セクションで、[フィード エンドポイント URL] をコピーします。
  3. URL の形式は次のとおりです。

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    

    または

    https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    
  4. 次の手順で使用するため、この URL を保存します。

  5. [完了] をクリックします。

Google Cloud API キーを作成する

Chronicle では、認証に API キーが必要です。Google Cloud コンソールで制限付き API キーを作成します。

API キーを作成する

  1. Google Cloud コンソールの [認証情報] ページに移動します。
  2. プロジェクト(Chronicle インスタンスに関連付けられているプロジェクト)を選択します。
  3. [認証情報を作成> API キー] をクリックします。
  4. API キーが作成され、ダイアログに表示されます。
  5. [API キーを編集] をクリックして、キーを制限します。

API キーを制限する

  1. [API キー] 設定ページで、次の操作を行います。
    • 名前: わかりやすい名前を入力します(例: Chronicle FingerprintJS Webhook API Key)。
  2. [API の制限] で次の操作を行います。
    1. [キーを制限] を選択します。
    2. [API を選択] プルダウンで、[Google SecOps API](または Chronicle API)を検索して選択します。
  3. [保存] をクリックします。
  4. ページ上部の [API キー] フィールドから API キーの値をコピーします。
  5. API キーを安全に保存します。

FingerprintJS Webhook を構成する

Webhook URL を作成する

  • Chronicle エンドポイント URL と API キーを組み合わせます。

    <ENDPOINT_URL>?key=<API_KEY>
    
    • 例:

      https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
      

FingerprintJS ダッシュボードで Webhook を作成する

  1. FingerprintJS ダッシュボードにログインします。
  2. [Dashboard] > [Webhooks] に移動します。
  3. [Add webhook] をクリックします。
  4. 次の構成の詳細を指定します。
    • URL: 上記の API キーを含む完全なエンドポイント URL を貼り付けます。
    • 環境(省略可): 環境を選択すると、Webhook は一致する環境のイベントのみをレポートします。すべての環境からイベントを受信する場合は、空欄にします。
    • 基本認証(省略可): 追加の認証を追加する場合は、[基本認証] を開きます。Chronicle との統合では、認証は API キーとシークレット キーを介して処理されるため、このフィールドは空のままにできます。
  5. [Webhook を作成] をクリックします。
  6. 成功モーダルに [Webhook が作成されました] と表示されます。
  7. 重要: ウェブフック署名を使用している場合(Enterprise プランのみ)、成功モーダルに表示された暗号鍵をコピーして保存します。キーは 1 回だけ表示されます。

Chronicle のシークレット キーを Webhook に追加する

FingerprintJS は、Webhook の作成時にカスタム HTTP ヘッダーをサポートしていません。Chronicle シークレット キーを Webhook URL のクエリ パラメータとして追加する必要があります。

  • シークレット キーを含むように Webhook URL を更新します。

    <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>
    
    • 例:

      https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...&secret=abcd1234...
      

Webhook の URL を更新するには:

  1. FingerprintJS ダッシュボードで、[Dashboard] > [Webhooks] に移動します。
  2. テーブルでウェブフックを見つけて、[編集] アイコンをクリックします。
  3. API キーとシークレット キーの両方を含む完全な URL で [URL] フィールドを更新します。
  4. [Webhook を編集] をクリックします。

Webhook をテストする

  1. FingerprintJS ダッシュボードで、[Dashboard] > [Webhooks] に移動します。
  2. テーブルで Webhook を見つけます。
  3. [テストイベントを送信] をクリックします。
  4. テストイベントが正常に送信されたことを確認します。
  5. Webhook に配信成功ステータスが表示されていることを確認します。

認証方法のリファレンス

Chronicle ウェブフック フィードは、複数の認証方法をサポートしています。FingerprintJS ウェブフックは、認証にクエリ パラメータを使用します。

クエリ パラメータ メソッド

FingerprintJS は、Webhook の作成時にカスタム HTTP ヘッダーをサポートしていないため、認証情報を URL に追加する必要があります。

  • URL 形式:

    <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>
    
    • 例:

      https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...&secret=abcd1234...
      
  • リクエストの形式:

    POST <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY> HTTP/1.1
    Content-Type: application/json
    
    {
      "visitorId": "3HNey93AkBW6CRbxV6xP",
      "requestId": "1708102555327.NLOjmg",
      "timestamp": 1582299576512
    }
    

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
rawDeviceAttributes.architecture.value、rawDeviceAttributes.audio.value、rawDeviceAttributes.colorDepth.value、rawDeviceAttributes.colorGamut.value、rawDeviceAttributes.contrast.value、rawDeviceAttributes.cookiesEnabled.value、rawDeviceAttributes.deviceMemory.value、rawDeviceAttributes.fonts.value、rawDeviceAttributes.forcedColors.value、rawDeviceAttributes.hardwareConcurrency.value、rawDeviceAttributes.hdr.value、rawDeviceAttributes.indexedDB.value、rawDeviceAttributes.localStorage.value、rawDeviceAttributes.math.value、rawDeviceAttributes.monochrome.value、rawDeviceAttributes.openDatabase.value、rawDeviceAttributes.pdfViewerEnabled.value、rawDeviceAttributes.reducedMotion.value、rawDeviceAttributes.screenFrame.value、rawDeviceAttributes.screenResolution.value、rawDeviceAttributes.sessionStorage.value、rawDeviceAttributes.touchSupport.value.maxTouchPoints、rawDeviceAttributes.languages.value、rawDeviceAttributes.vendorFlavors.value、rawDeviceAttributes.fontPreferences.value.apple、rawDeviceAttributes.fontPreferences.value.default、rawDeviceAttributes.fontPreferences.value.min、rawDeviceAttributes.fontPreferences.value.mono、rawDeviceAttributes.fontPreferences.value.sans、rawDeviceAttributes.fontPreferences.value.serif、rawDeviceAttributes.fontPreferences.value.system additional.fields ソースフィールドから作成されたラベルから統合されました
has_principal、has_target、has_target_resource metadata.event_type has_principal と has_target が true の場合は「NETWORK_CONNECTION」、has_target_resource が true の場合は「USER_RESOURCE_ACCESS」、has_principal が true の場合は「STATUS_UPDATE」、それ以外の場合は「GENERIC_EVENT」に設定します。
source_type metadata.product_event_type 値を直接コピー
requestId metadata.product_log_id 値を直接コピー
browserDetails.userAgent network.http.parsed_user_agent browserDetails.userAgent から解析されます
browserDetails.browserName network.http.parsed_user_agent.browser 値を直接コピー
browserDetails.browserFullVersion network.http.parsed_user_agent.browser_version 値を直接コピー
browserDetails.device network.http.parsed_user_agent.device 値を直接コピー
network.http.parsed_user_agent.family 「USER_DEFINED」に設定
browserDetails.os network.http.parsed_user_agent.os 値を直接コピー
browserDetails.clientReferrer network.http.referral_url 値を直接コピー
browserDetails.userAgent、userAgent network.http.user_agent userAgent が空でない場合は userAgent の値、それ以外の場合は browserDetails.userAgent
tag.session network.session_id 値を直接コピー
rawDeviceAttributes.vendor.value principal.administrative_domain 値を直接コピー
ip principal.asset.ip 値を直接コピー
ip principal.ip 値を直接コピー
ipInfo.v4.geolocation.city.name principal.location.city 値を直接コピー
ipInfo.v4.geolocation.country.name principal.location.country_or_region 値を直接コピー
ipInfo.v4.geolocation.latitude principal.location.region_coordinates.latitude 浮動小数点数に変換済み
ipInfo.v4.geolocation.longitude principal.location.region_coordinates.longitude 浮動小数点数に変換済み
browserDetails.osVersion、rawDeviceAttributes.platform.value principal.platform_version rawDeviceAttributes.platform.value が空でない場合はその値、それ以外の場合は browserDetails.osVersion
ipInfo.v4.asn.asn、ipInfo.v4.asn.network、ipInfo.v4.asn.name、ipInfo.v4.geolocation.accuracyRadius、ipInfo.v4.geolocation.continent.name、ipInfo.v4.geolocation.timezone、ipInfo.v4.geolocation.subdivisions.isoCode、ipInfo.v4.geolocation.subdivisions.name principal.resource.attribute.labels ソースフィールドから作成されたラベルから統合されました
bot.result、browserDetails.browserMajorVersion、confidence.score、confidence.revision、developerTools.result、highActivity.result、incognito、ipBlocklist.result、ipBlocklist.details.attackSource、ipBlocklist.details.emailSpam、visitorFound、visitorId、tag.request、privacySettings.result、proxy.result、suspectScore.result、tor.result、virtualMachine.result、tampering.anomalyScore、tampering.antiDetectBrowser、tampering.result、vpn.confidence、vpn.originCountry、vpn.originTimezone、vpn.result、vpn.methods.auxiliaryMobile、vpn.methods.osMismatch、vpn.methods.publicVPN、vpn.methods.timezoneMismatch、velocity.distinctCountry.intervals.1h、velocity.distinctCountry.intervals.24h、velocity.distinctCountry.intervals.5m、velocity.distinctIp.intervals.1h、velocity.distinctIp.intervals.24h、velocity.distinctIp.intervals.5m、velocity.events.intervals.1h、velocity.events.intervals.24h、velocity.events.intervals.5m、velocity.ipEvents.intervals.1h、velocity.ipEvents.intervals.24h、velocity.ipEvents.intervals.5m、rawDeviceAttributes.webGlBasics.value.renderer、rawDeviceAttributes.webGlBasics.value.rendererUnmasked、rawDeviceAttributes.webGlBasics.value.vendorUnmasked、rawDeviceAttributes.webGlBasics.value.shadingLanguageVersion、rawDeviceAttributes.webGlExtensions.value.contextAttributes、rawDeviceAttributes.webGlExtensions.value.extensions、rawDeviceAttributes.webGlExtensions.value.extensionParameters、rawDeviceAttributes.webGlExtensions.value.parameters、rawDeviceAttributes.webGlExtensions.value.shaderPrecisions、rawDeviceAttributes.mathML.value.bottom、rawDeviceAttributes.mathML.value.top、rawDeviceAttributes.mathML.value.left、rawDeviceAttributes.mathML.value.right、rawDeviceAttributes.mathML.value.width、rawDeviceAttributes.mathML.value.height、rawDeviceAttributes.mathML.value.font、rawDeviceAttributes.mathML.value.x、rawDeviceAttributes.mathML.value.y、rawDeviceAttributes.emoji.value.bottom、rawDeviceAttributes.emoji.value.top、rawDeviceAttributes.emoji.value.left、rawDeviceAttributes.emoji.value.right、rawDeviceAttributes.emoji.value.width、rawDeviceAttributes.emoji.value.height、rawDeviceAttributes.emoji.value.font、rawDeviceAttributes.emoji.value.x、rawDeviceAttributes.emoji.value.y、rawDeviceAttributes.canvas.value.Geometry、rawDeviceAttributes.canvas.value.Text、rawDeviceAttributes.canvas.value.Winding security_result.detection_fields ソースフィールドから作成されたラベルから統合されました
rawDeviceAttributes.webGlBasics.value.vendor target.administrative_domain 値を直接コピー
ipInfo.v6.address target.asset.ip 値を直接コピー
ipInfo.v6.address target.ip 値を直接コピー
ipInfo.v6.geolocation.city.name target.location.city 値を直接コピー
ipInfo.v6.geolocation.country.name target.location.country_or_region 値を直接コピー
ipInfo.v6.geolocation.latitude target.location.region_coordinates.latitude 浮動小数点数に変換済み
ipInfo.v6.geolocation.longitude target.location.region_coordinates.longitude 浮動小数点数に変換済み
パス target.path 値を直接コピー
rawDeviceAttributes.webGlBasics.value.version target.platform_version 値を直接コピー
ipInfo.v6.asn.asn、ipInfo.v6.asn.network、ipInfo.v6.asn.name、ipInfo.v6.geolocation.accuracyRadius、ipInfo.v6.geolocation.continent.name、ipInfo.v6.geolocation.timezone、ipInfo.v6.geolocation.subdivisions.isoCode、ipInfo.v6.geolocation.subdivisions.name target.resource.attribute.labels ソースフィールドから作成されたラベルから統合されました
URL target.url 値を直接コピー
metadata.product_name 「FINGERPRINT_JS」に設定
metadata.vendor_name 「FINGERPRINT_JS」に設定

変更履歴

このパーサーの変更ログを表示する

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