收集指紋記錄

剖析器版本:1.0

支援:

本文說明如何設定 Fingerprint (舊稱 FingerprintJS),使用 Webhook 將記錄推送至 Google Security Operations。

Fingerprint 是裝置智慧平台,提供訪客識別和詐欺偵測功能。這項服務會產生不重複的訪客 ID,並提供智慧型信號,包括機器人偵測、VPN 偵測、無痕模式偵測和其他裝置智慧洞察資料。透過 FingerprintJS JavaScript 代理程式識別訪客後,Webhook 就能即時將識別事件資料傳送至 Google Security Operations。

事前準備

請確認您已完成下列事前準備:

  • Google SecOps 執行個體
  • 支援 Webhook 的 FingerprintJS 帳戶
  • 存取 Google Cloud 控制台 (用於建立 API 金鑰)
  • 在網站或應用程式安裝 FingerprintJS JavaScript 代理

在 Google SecOps 中建立 Webhook 動態饋給

建立動態饋給

  1. 依序前往 「SIEM 設定」 > 「動態饋給」。
  2. 按一下「新增動態饋給」。
  3. 在下一頁,點按「設定單一動態饋給」。
  4. 在「Feed name」(動態饋給名稱) 欄位中,輸入動態饋給名稱 (例如 FingerprintJS Identification Events)。
  5. 選取「Webhook」做為「來源類型」。
  6. 選取「FingerprintJS」做為「記錄類型」。
  7. 點選「下一步」。
  8. 指定下列輸入參數的值:
    • 分割分隔符號 (選用):留空。每個 Webhook 要求都包含一個識別事件。
    • Asset namespace:資產命名空間。
    • 擷取標籤:要套用至這個動態饋給事件的標籤。
  9. 點選「下一步」。
  10. 在「Finalize」(完成) 畫面中檢查新的新聞動態消息設定,然後按一下「Submit」(提交)。

產生並儲存密鑰

建立動態饋給後,您必須產生用於驗證的密鑰:

  1. 在動態饋給詳細資料頁面,按一下「產生 Secret Key」。
  2. 對話方塊會顯示密鑰。
  3. 複製並妥善儲存密鑰。

重要事項:密鑰只會顯示一次,之後便無法擷取。如果遺失,就必須產生新的密鑰。

取得動態饋給端點網址

  1. 前往動態消息的「詳細資料」分頁。
  2. 在「端點資訊」部分,複製「動態消息端點網址」。
  3. 網址格式如下:

    https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import
    

    其中 {region} 是 Google SecOps 執行個體的區域 (例如 us、europe 或 asia-southeast1),{parent} 是資源路徑,格式為 projects/<PROJECT_ID>/locations/<LOCATION>/instances/<INSTANCE_ID>/logTypes/<LOG_TYPE>。

  4. 請儲存這個網址,以利進行後續步驟。

  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. 選取「Restrict key」(限制金鑰)。
    2. 在「選取 API」下拉式選單中,搜尋並選取「Google SecOps API」 (或「Chronicle API」)。
  3. 按一下 [儲存]。
  4. 從頁面頂端的「API 金鑰」欄位複製 API 金鑰值。
  5. 安全儲存 API 金鑰。

設定 FingerprintJS Webhook

建構 Webhook 網址

  • 合併 Chronicle 端點網址和 API 金鑰:

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

      https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?key=AIzaSyD...
      

在 FingerprintJS 資訊主頁中建立 Webhook

  1. 登入 FingerprintJS 資訊主頁。
  2. 依序前往「資訊主頁」 > 「Webhook」。
  3. 按一下 [Add Webhook]。
  4. 提供下列設定詳細資料:
    • 網址:貼上上述包含 API 金鑰的完整端點網址。
    • 環境 (選用):如果選取環境,Webhook 只會回報相符環境的事件。如要接收來自所有環境的事件,請將這個欄位留空。
    • 基本驗證 (選用):如要新增其他驗證,請展開「基本驗證」。如要整合 Chronicle,可以留空,因為驗證作業會透過 API 金鑰和密鑰處理。
  5. 按一下「建立 Webhook」。
  6. 成功建立 Webhook 後,系統會顯示「已建立 Webhook」的成功訊息。
  7. 重要事項:如果您使用 Webhook 簽章 (僅限 Enterprise 方案),請複製並儲存成功模式中顯示的加密金鑰。金鑰只會顯示一次。

將 Chronicle 密鑰新增至 Webhook

FingerprintJS 不支援在建立 Webhook 時使用自訂 HTTP 標頭。您必須在 Webhook 網址中新增 Chronicle 密鑰做為查詢參數。

  • 更新 Webhook 網址,加入私密金鑰:

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

      https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?key=AIzaSyD...&secret=abcd1234...
      

如要更新 Webhook 網址,請按照下列步驟操作:

  1. 在 FingerprintJS 資訊主頁中,依序前往「Dashboard」(資訊主頁) >「Webhooks」(Webhook)。
  2. 在表格中找到 Webhook,然後按一下「編輯」圖示。
  3. 在「URL」欄位中,更新完整網址,包括 API 金鑰和 Secret 金鑰。
  4. 按一下「Edit webhook」(編輯 Webhook)。

測試 Webhook

  1. 在 FingerprintJS 資訊主頁中,依序前往「Dashboard」(資訊主頁) >「Webhooks」(Webhook)。
  2. 在表格中找出所需 Webhook。
  3. 按一下「傳送測試事件」。
  4. 等待系統確認測試事件已成功傳送。
  5. 確認 Webhook 顯示傳送成功狀態。

驗證方式參考資料

Chronicle 網頁掛鉤動態饋給支援多種驗證方法。FingerprintJS Webhook 會使用查詢參數進行驗證。

查詢參數方法

FingerprintJS 不支援在建立 Webhook 時使用自訂 HTTP 標頭,因此必須將憑證附加至網址。

  • 網址格式:

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

      https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?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 的值 (如果不是空白),否則為 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 從來源欄位建立的標籤合併
網址 target.url 直接複製值
metadata.product_name 設為「FINGERPRINT_JS」
metadata.vendor_name 設為「FINGERPRINT_JS」

變更記錄

查看這個剖析器的變更記錄

還有其他問題嗎?向社群成員和 Google SecOps 專家尋求解答。