Duo ユーザー コンテキスト ログを収集する

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

このドキュメントでは、API を使用して Duo ユーザー コンテキスト ログを Google Security Operations に取り込む方法について説明します。パーサーは JSON データを処理し、ユーザー情報(ユーザー名をメールアドレス、グループ、電話番号、デバイスの詳細にエイリアス化するなど)を UDM にマッピングして、ユーザー アカウントのステータスを取得します。また、ネストされたデータ構造を処理し、いくつかのデータ変換と統合を実行して、最終的な UDM イベントを作成します。

始める前に

次の前提条件を満たしていることを確認してください。

Admin API アプリケーションを構成してキーを取得する

  1. 管理者として Duo 管理パネルにログインします。
  2. 左側のサイドバーで [アプリケーション] > [アプリケーションの管理] をクリックします。
  3. [Add Application] ボタンを押します。
  4. 検索フィールドに「Admin API」と入力し、[Duo Admin API] の横にある [追加] をクリックします。
  5. 次の画面に、以下の情報が表示されます。
    • 統合キー:DIYYYYYYYYYYYYYY などの文字列)。
    • シークレット キー: 40 文字の文字列。
    • API ホスト名: 例: api-abcd1234.duosecurity.com
  6. [Integration Key]、[Secret Key]、[API hostname] の値をコピーして、安全な場所に保存します。
  7. [設定] までスクロールし、[権限] を [リソースの読み取り権限を付与] に設定します。
  8. [変更を保存] をクリックします。

フィードを設定する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [+ 新しいフィードを追加] をクリックします。
  3. [フィード名] フィールドに、フィードの名前を入力します(例: Duo Users Logs)。
  4. [ソースタイプ] として [サードパーティ API] を選択します。
  5. [Duo User Context] ログタイプを選択します。
  6. [次へ] をクリックします。
  7. 次の入力パラメータの値を指定します。
    • ユーザー名: 先ほどコピーした統合キーを入力します。
    • シークレット: 前の手順でコピーしたシークレット キーを入力します。
    • API ホスト名: Duo API サーバー URL(api-abcd1234.duosecurity.com など)を指定します。
    • アセットの名前空間: アセットの名前空間
    • Ingestion labels: このフィードのイベントに適用されるラベル。
  8. [次へ] をクリックします。
  9. [Finalize] 画面でフィードの設定を確認し、[送信] をクリックします。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
access_device.browser event.idm.entity.entity.resource.attribute.labels.value 値は access_device.browser フィールドから直接取得されます。access_device.browser フィールドが空の場合は surfaced_auth.access_device.browser から取得されます。キーは「access_device browser」に設定されます。
access_device.browser_version event.idm.entity.entity.resource.attribute.labels.value 値は access_device.browser_version フィールドから直接取得されます。access_device.browser_version フィールドが空の場合は surfaced_auth.access_device.browser_version から取得されます。キーは「access_device browser_version」に設定されます。
access_device.ip.address event.idm.entity.entity.ip 値は access_device.ip.address フィールドから直接取得されます。access_device.ip.address フィールドが空の場合は surfaced_auth.access_device.ip から取得されます。
access_device.location.city event.idm.entity.entity.location.city 値は access_device.location.city フィールドから直接取得されます。access_device.location.city フィールドが空の場合は surfaced_auth.access_device.location.city から取得されます。
access_device.location.country event.idm.entity.entity.location.country_or_region 値は access_device.location.country フィールドから直接取得されます。access_device.location.country フィールドが空の場合は surfaced_auth.access_device.location.country から取得されます。
access_device.location.state event.idm.entity.entity.location.state 値は access_device.location.state フィールドから直接取得されます。access_device.location.state フィールドが空の場合は surfaced_auth.access_device.location.state から取得されます。
access_device.os event.idm.entity.entity.asset.platform_software.platform 値は access_device.os フィールドから取得されます。access_device.os フィールドが空の場合は、surfaced_auth.access_device.os から取得されます。値が「ios」または「mac」と一致する場合(大文字と小文字を区別しない)、UDM フィールドは「MAC」に設定されます。「windows」と一致する場合、UDM フィールドは「WINDOWS」に設定されます。「linux」と一致する場合、UDM フィールドは「LINUX」に設定されます。
access_device.os_version event.idm.entity.entity.asset.platform_software.platform_version 値は access_device.os_version フィールドから直接取得されます。access_device.os_version フィールドが空の場合は surfaced_auth.access_device.os_version から取得されます。
action.details event.idm.entity.sec_result.action_details action が空の場合、値はこのフィールドから取得されます。
action.name event.idm.entity.sec_result.detection_fields.value 値はフィールドから直接取得されます。キーは「action_name」に設定されます。
activity_id event.idm.entity.sec_result.detection_fields.value 値はフィールドから直接取得されます。キーは「activity_id」に設定されます。
actor.details.created event.idm.entity.entity.user.attribute.labels.value 値はフィールドから直接取得されます。キーは「created」に設定されます。
actor.details.email event.idm.entity.entity.user.email_addresses 値はフィールドから直接取得されます。
actor.details.groups.key event.idm.entity.entity.user.group_identifiers 値はフィールドから直接取得されます。
actor.details.groups.name event.idm.entity.entity.user.group_identifiers 値はフィールドから直接取得されます。
actor.details.last_login event.idm.entity.entity.user.attribute.labels.value 値はフィールドから直接取得されます。キーは「last_login」に設定されます。
actor.details.status event.idm.entity.entity.user.attribute.labels.value 値はフィールドから直接取得されます。キーは「status」に設定されます。
actor.key event.idm.entity.entity.resource.product_object_id 値はフィールドから直接取得されます。
actor.name event.idm.entity.entity.user.user_display_name 値は、フィールドから直接取得されます。フィールドが空の場合は surfaced_auth.user.name から取得されます。
actor.type event.idm.entity.entity.user.attribute.labels.value 値はフィールドから直接取得されます。キーは「actor type」に設定されます。
akey event.idm.entity.metadata.product_entity_id 値はフィールドから直接取得されます。akey が空の場合は sekey から取得されます。
application event.idm.entity.entity.application 値はフィールドから直接取得されます。
collection_time.secondscreate_time.seconds event.idm.entity.metadata.collected_timestamp.secondsevent.timestamp.seconds collection_time.secondscreate_time.seconds の大きい方の値が、collected_timestamp.seconds と最上位の timestamp.seconds の両方に使用されます。
collection_time.nanoscreate_time.nanos event.idm.entity.metadata.collected_timestamp.nanosevent.timestamp.nanos collection_time.secondscreate_time.seconds のうち大きい方の値に対応するナノ秒値が、collected_timestamp.nanos と最上位の timestamp.nanos の両方に使用されます。
email event.idm.entity.entity.user.email_addresses 値はフィールドから直接取得されます。
explanations event.idm.entity.entity.resource.attribute.labels explanations 配列内の各オブジェクトの Key-Value ペアはラベルに変換されます。各ラベルのキーの先頭に「explanation 」が付加されます。
firstname event.idm.entity.entity.user.first_name 値はフィールドから直接取得されます。
from_common_netblock event.idm.entity.entity.resource.attribute.labels.value 値はフィールドから直接取得されます。キーは「from_common_netblock」に設定されます。
from_new_user event.idm.entity.entity.resource.attribute.labels.value 値はフィールドから直接取得されます。キーは「from_new_user」に設定されます。
groups.N.name(N=0..10) event.idm.entity.entity.user.group_identifiers 値はフィールドから直接取得されます。
lastname event.idm.entity.entity.user.last_name 値はフィールドから直接取得されます。
low_risk_ip event.idm.entity.entity.resource.attribute.labels.value 値はフィールドから直接取得されます。キーは「low_risk_ip」に設定されます。
phones.0.model event.idm.entity.relations.entity.asset.hardware.model 値はフィールドから直接取得されます。
phones.0.number event.idm.entity.entity.user.phone_numbers 値はフィールドから直接取得されます。
phones.0.phone_id event.idm.entity.relations.entity.asset.product_object_id 値はフィールドから直接取得されます。
phones.0.platform event.idm.entity.relations.entity.asset.hardware.manufacturer 値はフィールドから直接取得されます。
priority_event event.idm.entity.entity.resource.attribute.labels.value 値はフィールドから直接取得されます。キーは「priority_event」に設定されます。
realname event.idm.entity.entity.user.user_display_name 値はフィールドから直接取得されます。
sekey event.idm.entity.metadata.product_entity_id akey が空の場合、値はフィールドから直接取得されます。
state event.idm.entity.entity.resource.attribute.labels.value 値はフィールドから直接取得されます。キーは「state」に設定されます。
status event.idm.entity.entity.user.attribute.labels.valueevent.idm.entity.entity.user.user_authentication_status 値はフィールドから直接取得されます。ラベルのキーは「status」に設定されます。この値は user_authentication_status の決定にも使用されます。「active」と「bypass」は「ACTIVE」にマッピングされ、「disabled」と「pending deletion」は「SUSPENDED」にマッピングされ、「locked out」は「NO_ACTIVE_CREDENTIALS」にマッピングされます。
surfaced_auth.access_device.browser event.idm.entity.entity.resource.attribute.labels.value access_device.browser が空の場合、値はこのフィールドから取得されます。キーは「surfaced_auth access_device browser」に設定されます。
surfaced_auth.access_device.browser_version event.idm.entity.entity.resource.attribute.labels.value access_device.browser_version が空の場合、値はこのフィールドから取得されます。キーは「surfaced_auth access_device browser_version」に設定されます。
surfaced_auth.access_device.ip event.idm.entity.entity.ip access_device.ip.address が空の場合、値はこのフィールドから取得されます。
surfaced_auth.access_device.location.city event.idm.entity.entity.location.city access_device.location.city が空の場合、値はこのフィールドから取得されます。
surfaced_auth.access_device.location.country event.idm.entity.entity.location.country_or_region access_device.location.country が空の場合、値はこのフィールドから取得されます。
surfaced_auth.access_device.location.state event.idm.entity.entity.location.state access_device.location.state が空の場合、値はこのフィールドから取得されます。
surfaced_auth.access_device.os event.idm.entity.entity.asset.platform_software.platform access_device.os が空の場合、値はこのフィールドから取得されます。UDM フィールドへのマッピングのロジックは、access_device.os の場合と同じです。
surfaced_auth.access_device.os_version event.idm.entity.entity.asset.platform_software.platform_version access_device.os_version が空の場合、値はこのフィールドから取得されます。
surfaced_auth.user.key event.idm.entity.entity.user.userid username が空の場合、値はこのフィールドから取得されます。
surfaced_auth.user.name event.idm.entity.entity.user.user_display_name actor.name が空の場合、値はこのフィールドから取得されます。
target.details.biometrics_status event.idm.entity.entity.asset.attribute.labels.value 値はフィールドから直接取得されます。キーは「biometrics_status」に設定されます。
target.details.country_code event.idm.entity.entity.asset.attribute.labels.value 値はフィールドから直接取得されます。キーは「country_code」に設定されます。
target.details.extension event.idm.entity.entity.asset.attribute.labels.value 値はフィールドから直接取得されます。キーは「extension」に設定されます。
target.details.manufacturer event.idm.entity.entity.asset.hardware.manufacturer 値はフィールドから直接取得されます。
target.details.model event.idm.entity.entity.asset.hardware.model 値はフィールドから直接取得されます。
target.details.number event.idm.entity.entity.user.phone_numbers 値はフィールドから直接取得されます。
target.details.os event.idm.entity.entity.asset.software.name 値はフィールドから直接取得されます。
target.details.os_version event.idm.entity.entity.asset.software.version 値はフィールドから直接取得されます。
target.details.passcode_status event.idm.entity.entity.asset.attribute.labels.value 値はフィールドから直接取得されます。キーは「passcode_status」に設定されます。
target.details.tampered_status event.idm.entity.entity.asset.attribute.labels.value 値はフィールドから直接取得されます。キーは「tampered_status」に設定されます。
target.key event.idm.entity.entity.asset.asset_id 値はフィールドから直接取得されます。
target.name event.idm.entity.entity.asset.attribute.labels.value 値はフィールドから直接取得されます。キーは「name」に設定されます。
target.type event.idm.entity.entity.asset.attribute.labels.value 値はフィールドから直接取得されます。キーは「type」に設定されます。
triage_event_uri event.idm.entity.entity.url 値はフィールドから直接取得されます。
triaged_as_interesting event.idm.entity.entity.resource.attribute.labels.value 値はフィールドから直接取得されます。キーは「triaged_as_interesting」に設定されます。
ts event.timestamp.secondsevent.idm.entity.metadata.collected_timestamp.seconds タイムスタンプは、このフィールドが存在する場合は ISO8601 または RFC 3339 形式を使用して解析されます。抽出された秒とナノ秒は、最上位の timestampcollected_timestamp の両方に使用されます。
type event.idm.entity.entity.resource.attribute.labels.value 値はフィールドから直接取得されます。キーは「type」に設定されます。
user_id event.idm.entity.metadata.product_entity_id 値はフィールドから直接取得されます。
username event.idm.entity.entity.user.userid 値はフィールドから直接取得されます。username が空の場合は surfaced_auth.user.key から取得されます。
(パーサー ロジック) event.idm.entity.metadata.vendor_name 「Duo」にハードコードされています。
(パーサー ロジック) event.idm.entity.metadata.product_name 「Duo User Context」にハードコードされています。
(パーサー ロジック) event.idm.entity.metadata.entity_type 他のフィールドの有無に基づいて決定されます。user_present が true の場合、「USER」に設定されます。asset_mid_present が true の場合、「ASSET」に設定されます。ip_present が true の場合、「IP_ADDRESS」に設定されます。resource_present が true の場合、「RESOURCE」に設定されます。それ以外の場合は、「UNKNOWN_ENTITYTYPE」に設定されます。
(パーサー ロジック) event.idm.entity.relations.entity_type phones[0] が空でない場合は「ASSET」に設定します。
(パーサー ロジック) event.idm.entity.relations.relationship phones[0] が空でない場合は「OWNS」に設定します。
(パーサー ロジック) event.idm.entity.relations.entity.asset.type phones[0] が空でない場合は、「MOBILE」に設定します。

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