Auth0 ログを収集する
概要
このパーサーは、JSON 形式のメッセージから Auth0 ログイベントを抽出します。UDM フィールドを初期化し、JSON ペイロードを解析して、関連するフィールドを UDM スキーマにマッピングし、type フィールドに基づいてイベントを分類し、適切なセキュリティ アクションとイベントタイプを設定します。
始める前に
次の前提条件を満たしていることを確認します。
- Google SecOps インスタンス。
- 必要な権限を持つ Auth0 アカウント。
フィードを設定する
Google SecOps プラットフォームでフィードを設定するには、次の 2 つのエントリ ポイントがあります。
- [SIEM 設定] > [フィード]
- [Content Hub] > [Content Packs]
[SIEM 設定] > [フィード] でフィードを設定する
フィードを構成する手順は次のとおりです。
- [SIEM Settings] > [Feeds] に移動します。
- [Add New Feed] をクリックします。
- 次のページで [単一のフィードを設定] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Auth0 Logs)。
- [Source type] として [Webhook] を選択します。
- [ログタイプ] として [AUTH_ZERO] を選択します。
- [次へ] をクリックします。
- 省略可: 次の入力パラメータの値を指定します。
- 分割区切り文字: ログ行を区切るために使用される区切り文字(
\n
など)。 - Asset namespace: アセットの名前空間。
- Ingestion labels: このフィードのイベントに適用されるラベル。
- 分割区切り文字: ログ行を区切るために使用される区切り文字(
- [次へ] をクリックします。
- [Finalize] 画面でフィードの設定を確認し、[Submit] をクリックします。
- [秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
- 秘密鍵をコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、この操作により以前の秘密鍵は無効になります。
- [詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント URL をコピーします。このエンドポイント URL をクライアント アプリケーション内で指定する必要があります。
- [完了] をクリックします。
コンテンツ ハブからフィードを設定する
次のフィールドに値を指定します。
- Split delimiter: ログ行を区切るために使用される区切り文字(
\n
など)。
詳細オプション
- フィード名: フィードを識別する事前入力された値。
- ソースタイプ: Google SecOps にログを収集するために使用される方法。
- アセットの名前空間: フィードに関連付けられた名前空間。
Ingestion Labels: このフィードのすべてのイベントに適用されるラベル。
[秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
秘密鍵をコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、この操作により以前の秘密鍵は無効になります。
[詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント URL をコピーします。このエンドポイント URL をクライアント アプリケーション内で指定する必要があります。
Webhook フィード用の API キーを作成する
Google Cloud コンソール > [認証情報] に移動します。
[認証情報を作成] をクリックして [API キー] を選択します。
API キーのアクセスを Chronicle 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 ダッシュボードにアクセスします。
- [モニタリング] > [ストリーム] に移動します。
- [ログ ストリームを作成] をクリックします。
- [カスタム Webhook] ボタンをクリックし、任意の名前を付けます。例: Google SecOps Webhook。
- 以下の構成を行います。
- ペイロード 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 フィールドからマッピングされます。キーは「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 のプロフェッショナルから回答を得ることができます。