Auth0 ログを収集する
概要
このパーサーは、JSON 形式のメッセージから Auth0 ログイベントを抽出します。UDM フィールドを初期化し、JSON ペイロードを解析し、関連するフィールドを UDM スキーマにマッピングし、type フィールドに基づいてイベントを分類し、適切なセキュリティ アクションとイベントタイプを設定します。
始める前に
- Google SecOps インスタンスがあることを確認します。
- 必要な権限を持つ Auth0 アカウント。
Auth0 ログを取り込むように Google SecOps でフィードを構成する
- [SIEM 設定] > [フィード] に移動します。
- [新しく追加] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Auth0 ログ)。
- [ソースタイプ] として [Webhook] を選択します。
- [Log type] として [AUTH_ZERO] を選択します。
- [次へ] をクリックします。
- 省略可: 次の入力パラメータの値を指定します。
- 分割区切り文字: ログ行を区切るために使用される区切り文字(
\n
など)。 - アセットの名前空間: アセットの名前空間。
- 取り込みラベル: このフィードのイベントに適用されるラベル。
- 分割区切り文字: ログ行を区切るために使用される区切り文字(
- [次へ] をクリックします。
- [Finalize] 画面でフィードの設定を確認し、[送信] をクリックします。
- [秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
- シークレット キーをコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、この操作により以前の秘密鍵は無効になります。
- [詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント URL をコピーします。このエンドポイント URL は、クライアント アプリケーションで指定する必要があります。
- [完了] をクリックします。
Webhook フィードの API キーを作成する
Google Cloud コンソール > [認証情報] に移動します。
[認証情報を作成] をクリックして [API キー] を選択します。
API キーのアクセスを Google Security Operations API に制限します。
エンドポイント URL を指定する
- クライアント アプリケーションで、Webhook フィードで指定された HTTPS エンドポイント URL を指定します。
次の形式でカスタム ヘッダーの一部として API キーとシークレット キーを指定して、認証を有効にします。
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
推奨事項: API キーは URL ではなくヘッダーとして指定してください。Webhook クライアントがカスタム ヘッダーをサポートしていない場合は、次の形式のクエリ パラメータを使用して API キーとシークレット キーを指定できます。
ENDPOINT_URL?key=API_KEY&secret=SECRET
次のように置き換えます。
ENDPOINT_URL
: フィードのエンドポイント URL。API_KEY
: Google Security Operations の認証に使用する API キー。SECRET
: フィードの認証用に生成したシークレット キー。
Google SecOps 用に Auth0 Webhook を構成する
- Auth0 ダッシュボードにアクセスします。
- [モニタリング] > [ストリーム] に移動します。
- [Create Log Stream] をクリックします。
- [カスタム Webhook] ボタンをクリックし、任意の名前を付けます。(例: Google SecOps Webhook)。
- 以下を構成します。
- Payload URL: Google SecOps API エンドポイントの URL を入力します。
- Content-Type: Content-Type ヘッダーを application/json に設定します。これにより、送信されるデータの形式が Google SecOps に通知されます。
- 省略可: 認可トークン: セキュリティを強化するためにシークレットを構成します。これは、Webhook リクエストの真正性を確認するために使用されます。
ペイロードをカスタマイズする: イベント カテゴリを変更することで、Google SecOps に送信されるペイロードをカスタマイズできます。これにより、Auth0 イベントから特定のデータポイントを選択し、Google SecOps に応じてフォーマットできます。使用可能なコンテキスト変数とスクリプト オプションの詳細については、Auth0 のドキュメントをご覧ください。最終的なペイロードが、想定される Google SecOps UDM 形式に準拠していることを確認します。
- [保存] をクリックして、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 などのフィールドの組み合わせによって決定されます。具体的なマッピングについては、パーサーコードをご覧ください。 |
変更点
2024-03-07
- バグの修正:
- 「data.user_name」を「target.user.email_addresses」にマッピングしました。
- 「data.details.body.email_verified」、「data.details.body.is_signup」を「security_result.detection_fields」にマッピングしました。
- 「data.details.body.transaction.redirect_uri」を「target.url」にマッピングしました。
2023-06-19
- 新しく作成されたパーサー。