收集 Auth0 記錄
剖析器版本:16.0
支援的服務:
Google SecOps
SIEM
這個剖析器會從 JSON 格式的訊息中擷取 Auth0 記錄事件。這個剖析器會初始化 UDM 欄位、剖析 JSON 酬載、將相關欄位對應至 UDM 結構定義,並根據 type 欄位分類事件,設定適當的安全動作和事件類型。
事前準備
請確認您符合下列必要條件:
- Google SecOps 執行個體。
- 具備必要權限的 Auth0 帳戶。
設定動態饋給
如要設定動態饋給,請按照下列步驟操作:
- 依序前往「設定」>「資料管理」>「動態饋給」。如果使用的是 SIEM 專用平台,請依序前往「設定」>「動態饋給」。
- 按一下「新增動態饋給」。
- 在下一頁,點按「設定單一動態饋給」。
- 在「Feed name」(動態饋給名稱) 欄位中,輸入動態饋給名稱 (例如 Auth0 Logs)。
- 「Source type」(來源類型) 請選取「Webhook」。
- 選取「AUTH_ZERO」做為「記錄類型」。
- 點選「下一步」。
- 選用:指定下列輸入參數的值:
- 分割分隔符號:用於分隔記錄行的分隔符號,例如
\n。 - Asset namespace:資產命名空間。
- 擷取標籤:套用至這個動態饋給事件的標籤。
- 分割分隔符號:用於分隔記錄行的分隔符號,例如
- 點選「下一步」。
- 在「完成」畫面中檢查動態饋給設定,然後按一下「提交」。
- 按一下「產生密鑰」,產生用於驗證這個動態饋給的密鑰。
- 複製並儲存密鑰。您無法再次查看這個 Secret Key。如有需要,您可以重新產生新的密鑰,但這項操作會使先前的密鑰失效。
- 在「詳細資料」分頁中,複製「端點資訊」欄位中的動態消息端點網址。您必須在用戶端應用程式中指定這個端點網址。
- 按一下「完成」。
為 Webhook 動態饋給建立 API 金鑰
依序前往 Google Cloud 控制台「Credentials」(憑證)。
按一下 [Create credentials] (建立憑證),然後選取 [API key] (API 金鑰)。
限制 API 金鑰,僅能存取 Chronicle API。
指定端點網址
- 在用戶端應用程式中,指定 Webhook 動態饋給提供的 HTTPS 端點網址。
如要啟用驗證功能,請在自訂標頭中指定 API 金鑰和密鑰,格式如下:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET建議:將 API 金鑰指定為標頭,而非在網址中指定。如果 Webhook 用戶端不支援自訂標頭,您可以使用查詢參數指定 API 金鑰和密鑰,格式如下:
ENDPOINT_URL?key=API_KEY&secret=SECRET
更改下列內容:
ENDPOINT_URL:動態饋給端點網址。API_KEY:用於向 Google Security Operations 驗證身分的 API 金鑰。SECRET:您產生的密鑰,用於驗證動態饋給。
設定 Google SecOps 的 Auth0 Webhook
- 存取 Auth0 資訊主頁。
- 依序前往「監控」>「串流」。
- 按一下「Create Log Stream」(建立記錄串流)。
- 按一下「Custom Webhook」按鈕,並自訂名稱。例如:Google SecOps Webhook。
- 進行下列設定:
- Payload URL:輸入 Google SecOps API 端點網址。
- Content-Type:將 Content-Type 標頭設為 application/json。這會告知 Google SecOps 傳送的資料格式。
- 選用:授權權杖:設定密鑰,進一步提升安全性。這會用於驗證 Webhook 要求的真實性。
自訂酬載:您可以修改事件類別,自訂傳送至 Google SecOps 的酬載。這樣一來,您就能從 Auth0 事件中選取特定資料點,並依 Google SecOps 的需求設定格式。如要進一步瞭解可用的情境變數和指令碼選項,請參閱 Auth0 說明文件。確認最終酬載符合預期的 Google SecOps UDM 格式。
- 按一下「儲存」建立 Webhook。
- 觸發與 Webhook 相關聯的事件 (例如註冊新使用者、登入)。
- 在 Google SecOps 控制台中查看動態饋給,確認記錄檔已傳送至 Google SecOps。
UDM 對應表
| 記錄欄位 | UDM 對應 | 邏輯 |
|---|---|---|
client_id |
principal.asset.product_object_id |
直接從 client_id 欄位對應。 |
client_name |
principal.hostname |
直接從 client_name 欄位對應。 |
connection |
security_result.description |
直接從 connection 欄位對應。 |
connection_id |
security_result.rule_id |
直接從 connection_id 欄位對應。 |
date |
metadata.event_timestamp |
使用 ISO8601 格式從 date 欄位剖析。 |
description |
metadata.description |
直接從 description 欄位對應。 |
details.error |
security_result.detection_fields |
對應自「details.error」欄位。鍵為「Error」。 |
details.error.oauthError |
security_result.detection_fields |
對應自「details.error.oauthError」欄位。鍵為「oauthError」。 |
details.error.type |
security_result.detection_fields |
對應自「details.error.type」欄位。鍵為「oauth_error_type」。 |
details.ipOnAllowlist |
security_result.detection_fields |
對應自「details.ipOnAllowlist」欄位。鍵為「ipOnAllowlist」。 |
details.link |
target.url |
如果 details.link 欄位存在,則直接從該欄位對應,否則從其他欄位衍生 (請見下方)。 |
details.request.auth.strategy |
security_result.detection_fields |
對應自「details.request.auth.strategy」欄位。鍵為「strategy」。 |
details.request.body.app_metadata.blockedReason |
security_result.detection_fields |
對應自「details.request.body.app_metadata.blockedReason」欄位。鍵為「blockedReason」。 |
details.request.body.app_metadata.customer_id |
target.user.product_object_id |
直接從 details.request.body.app_metadata.customer_id 欄位對應。 |
details.request.body.app_metadata.migrated |
security_result.detection_fields |
對應自「details.request.body.app_metadata.migrated」欄位。金鑰已「遷移」。 |
details.request.channel |
security_result.detection_fields |
對應自「details.request.channel」欄位。鍵為「channel」。 |
details.request.method |
network.http.method |
從 details.request.method 欄位直接對應,並轉換為大寫。 |
details.request.path |
target.url |
如果沒有 details.link,則直接從 details.request.path 欄位對應,否則會從其他欄位衍生 (請見下方)。 |
details.response.body.email |
target.user.email_addresses |
直接從 details.response.body.email 欄位對應。 |
details.response.body.email_verified |
security_result.detection_fields |
對應自「details.response.body.email_verified」欄位。鍵為「email_verified」。 |
details.response.body.nickname |
target.user.user_display_name |
直接從 details.response.body.nickname 欄位對應。 |
details.response.body.user_id |
target.user.userid |
直接從 details.response.body.user_id 欄位對應。 |
details.response.statusCode |
network.http.response_code |
轉換為整數後,直接從 details.response.statusCode 欄位對應。 |
details.return_to |
target.url |
如果沒有 details.link 和 details.request.path,則直接從 details.return_to 欄位對應,否則從其他欄位衍生 (請見下方)。 |
details.session_id |
network.session_id |
直接從 details.session_id 欄位對應。 |
details.stats.loginsCount |
additional.fields |
對應自「details.stats.loginsCount」欄位。鍵為「loginsCount」。 |
details.requiresVerification |
security_result.detection_fields |
對應自「details.requiresVerification」欄位。鍵為「requiresVerification」。 |
details.to |
target.user.email_addresses |
直接從 details.to 欄位對應。 |
hostname |
target.hostname |
直接從 hostname 欄位對應。 |
ip |
principal.ip |
直接從 ip 欄位對應。 |
js_data.audience |
target.url |
如果沒有 details.link、details.request.path 和 details.return_to,則直接從 js_data.audience 欄位對應。 |
js_data.details.body.email_verified |
security_result.detection_fields |
對應自「js_data.details.body.email_verified」欄位。鍵為「email_verified」。 |
js_data.details.body.is_signup |
security_result.detection_fields |
對應自「js_data.details.body.is_signup」欄位。鍵為「is_signup」。 |
js_data.details.body.transaction.redirect_uri |
target.url |
如果沒有 details.link、details.request.path、details.return_to 和 js_data.audience,則直接從 js_data.details.body.transaction.redirect_uri 欄位對應。 |
js_data.scope |
security_result.detection_fields |
對應自「js_data.scope」欄位。鍵為「scope」。 |
js_data.tracking_id |
security_result.detection_fields |
對應自「js_data.tracking_id」欄位。鍵為「tracking_id」。 |
log_id |
metadata.product_log_id |
直接從 log_id 欄位對應。 |
metadata.log_type |
metadata.log_type |
直接從 log_type 欄位對應。 |
metadata.product_name |
metadata.product_name |
設為「AUTH_ZERO」。 |
metadata.vendor_name |
metadata.vendor_name |
設為「AUTH_ZERO」。 |
metadata.product_event_type |
metadata.product_event_type |
直接從 type 欄位對應。 |
network.http.parsed_user_agent |
network.http.parsed_user_agent |
從 user_agent 欄位剖析。 |
network.http.user_agent |
network.http.user_agent |
直接從 user_agent 欄位對應。 |
security_result.action |
security_result.action |
由 type 欄位決定 (ALLOW 或 BLOCK)。如要查看特定對應,請參閱剖析器程式碼。 |
strategy |
security_result.detection_fields |
從「strategy」欄位對應。鍵為「strategy」。 |
strategy_type |
security_result.detection_fields |
從「strategy_type」欄位對應。鍵為「strategy_type」。 |
target.user.email_addresses |
target.user.email_addresses |
如果 user_name 欄位是電子郵件地址,則直接從該欄位對應;否則從其他欄位衍生 (請參閱上文)。 |
target.user.userid |
target.user.userid |
直接從 user_id 欄位對應,如果沒有 user_id,則從 details.response.body.user_id 或 user_name 對應。 |
user_agent |
network.http.user_agent |
直接從 user_agent 欄位對應。 |
user_id |
target.user.userid |
直接從 user_id 欄位對應。 |
user_name |
target.user.email_addresses |
直接從 user_name 欄位對應。如果 security_result.action 為「ALLOW」,且 type 為「slo」、「sapi」、「s」、「ss」或「ssa」,請設為「MACHINE」。如果 extensions.auth.type 為「MACHINE」,且 type 為「slo」,請設為「OTP」。由多個欄位組合決定,包括 type、client_name、ip、hostname 和 has_user。如要查看特定對應,請參閱剖析器程式碼。 |
變更記錄
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求解答。