Duo アクティビティ ログを収集する
このドキュメントでは、Python で記述された取り込みスクリプトを Cloud Run 関数としてデプロイして Duo アクティビティ ログをエクスポートし、Google Security Operations に取り込む方法と、ログフィールドが Google Security Operations の統合データモデル(UDM)フィールドにマッピングされる方法について説明します。
詳細については、Google Security Operations へのデータの取り込みの概要をご覧ください。
一般的なデプロイは、Duo アクティビティと、Cloud Run 関数としてデプロイされ、Google Security Operations にログを送信する取り込みスクリプトで構成されています。お客様のデプロイはそれぞれ異なり、より複雑になる場合もあります。
デプロイには次のコンポーネントが含まれます。
Duo アクティビティ: ログを収集するプラットフォーム。
Cloud Run functions: Cloud Run functions としてデプロイされた取り込みスクリプト。Duo アクティビティからログを取得し、Google Security Operations に取り込みます。
Google Security Operations: ログを保持して分析します。
取り込みラベルによって、未加工のログデータを構造化 UDM 形式に正規化するパーサーが識別されます。このドキュメントの情報は、取り込みラベル DUO_ACTIVITY
が付加されたパーサーに適用されます。
始める前に
- Duo 管理パネルにアクセスできることを確認します。
- Duo Admin API バージョン 2 以降を使用していることを確認します。
Duo アクティビティを構成する
- 管理者として Duo 管理パネルにログインします。
- [Applications] > [Protect an Application] をクリックします。
- [アプリケーション] リストで、[Admin API] > [保護] をクリックして、統合キー、シークレット キー、API ホスト名を取得します。
Google Security Operations のログ取り込みを構成する
- Cloud Run 関数のファイルを保存するデプロイ ディレクトリを作成します。これには、デプロイに必要なすべてのファイルが含まれます。
- Google Security Operations の GitHub リポジトリにある Duo Activity の GitHub サブディレクトリから、このデプロイ ディレクトリにすべてのファイルをコピーします。
- 共通フォルダとすべてのコンテンツをデプロイ ディレクトリにコピーします。
.env.yml
ファイルを編集して、必要な環境変数をすべて追加します。- Secret Manager で [Secret] としてマークされた環境変数を構成します。シークレットの作成方法については、シークレットの作成とアクセスをご覧ください。
- 環境変数の値としてシークレットのリソース名を使用します。
- CHRONICLE_NAMESPACE 環境変数に値
DUO_ACTIVITY
を入力します。 - [ソースコード] フィールドで [ZIP アップロード] を選択します。
- [転送先バケット] フィールドで [参照] をクリックして、デプロイでソースコードをアップロードする Cloud Storage バケットを選択します。
- [ZIP ファイル] フィールドで [参照] をクリックして、ローカル ファイル システムからアップロードする ZIP ファイルを選択します。関数のソースファイルは ZIP ファイルのルートに置く必要があります。
- [デプロイ] をクリックします。
詳細については、Cloud Functions としてデプロイされた取り込みスクリプトを使用するをご覧ください。
フィールド マッピング リファレンス
フィールド マッピング リファレンス: イベント識別子からイベントタイプへ
次の表に、DUO_ACTIVITY
ログタイプと対応する UDM のイベントの種類を示します。
Event Identifier | Event Type | Security Category |
---|---|---|
admin_activate_duo_push |
DEVICE_PROGRAM_DOWNLOAD |
|
admin_factor_restrictions |
RESOURCE_PERMISSIONS_CHANGE |
|
admin_login |
USER_UNCATEGORIZED |
|
admin_rectivates_duo_push |
DEVICE_PROGRAM_DOWNLOAD |
|
admin_reset_password |
USER_CHANGE_PASSWORD |
|
admin_send_reset_password_email |
EMAIL_TRANSACTION |
|
bypass_create |
RESOURCE_CREATION |
|
bypass_delete |
RESOURCE_DELETION |
|
bypass_view |
RESOURCE_READ |
|
deregister_devices |
USER_RESOURCE_DELETION |
|
device_change_enrollment_summary_notification_answered |
USER_COMMUNICATION |
|
device_change_enrollment_summary_notification_answered_notify_admin |
USER_COMMUNICATION |
|
device_change_enrollment_summary_notification_send |
USER_COMMUNICATION |
|
device_change_notification_answered |
USER_COMMUNICATION |
|
device_change_notification_answered_notify_admin |
USER_COMMUNICATION |
|
device_change_notification_create |
RESOURCE_CREATION |
|
device_change_notification_send |
USER_COMMUNICATION |
|
group_create |
GROUP_CREATION |
|
group_delete |
GROUP_DELETION |
|
group_update |
GROUP_MODIFICATION |
|
hardtoken_create |
RESOURCE_CREATION |
|
hardtoken_delete |
RESOURCE_DELETION |
|
hardtoken_resync |
RESOURCE_WRITTEN |
|
hardtoken_update |
RESOURCE_WRITTEN |
|
integration_create |
RESOURCE_CREATION |
|
integration_delete |
RESOURCE_DELETION |
|
integration_group_policy_add |
GROUP_UNCATEGORIZED |
|
integration_group_policy_remove |
GROUP_UNCATEGORIZED |
|
integration_policy_assign |
USER_UNCATEGORIZED |
|
integration_policy_unassign |
USER_UNCATEGORIZED |
|
integration_skey_bulk_view |
RESOURCE_READ |
|
integration_skey_view |
RESOURCE_READ |
|
integration_update |
RESOURCE_WRITTEN |
|
log_export_start |
USER_UNCATEGORIZED |
|
log_export_complete |
USER_UNCATEGORIZED |
|
log_export_failure |
USER_UNCATEGORIZED |
|
management_system_activate_device_cache |
DEVICE_CONFIG_UPDATE |
|
management_system_active_device_cache_add_devices |
RESOURCE_CREATION |
|
management_system_active_device_cache_delete_devices |
RESOURCE_DELETION |
|
management_system_active_device_cache_edit_devices |
RESOURCE_WRITTEN |
|
management_system_add_devices |
RESOURCE_CREATION |
|
management_system_create |
RESOURCE_CREATION |
|
management_system_delete |
RESOURCE_DELETION |
|
management_system_delete_devices |
RESOURCE_DELETION |
|
management_system_device_cache_add_devices |
RESOURCE_CREATION |
|
management_system_device_cache_create |
RESOURCE_CREATION |
|
management_system_device_cache_delete |
RESOURCE_DELETION |
|
management_system_device_cache_delete_devices |
RESOURCE_DELETION |
|
management_system_download_device_api_script |
DEVICE_PROGRAM_DOWNLOAD |
|
management_system_pkcs12_enrollment |
RESOURCE_CREATION |
|
management_system_sync_failure |
USER_UNCATEGORIZED |
|
management_system_sync_success |
USER_UNCATEGORIZED |
|
management_system_update |
USER_UNCATEGORIZED |
|
management_system_view_password |
RESOURCE_READ |
|
management_system_view_token |
RESOURCE_READ |
|
phone_activation_code_regenerated |
RESOURCE_CREATION |
|
phone_associate |
RESOURCE_CREATION |
|
phone_create |
RESOURCE_CREATION |
|
phone_delete |
RESOURCE_DELETION |
|
phone_disassociate |
RESOURCE_DELETION |
|
phone_new_sms_passcode |
RESOURCE_CREATION |
|
phone_update |
RESOURCE_WRITTEN |
|
policy_create |
RESOURCE_CREATION |
|
policy_delete |
RESOURCE_DELETION |
|
policy_update |
RESOURCE_WRITTEN |
|
u2ftoken_create |
RESOURCE_CREATION |
|
u2ftoken_delete |
RESOURCE_DELETION |
|
user_not_enrolled_lockout |
USER_CHANGE_PERMISSIONS |
|
user_adminapi_lockout |
USER_CHANGE_PERMISSIONS |
|
user_lockout_cleared |
USER_CHANGE_PERMISSIONS |
|
webauthncredential_create |
RESOURCE_CREATION |
|
webauthncredential_delete |
RESOURCE_DELETION |
|
webauthncredential_rename |
RESOURCE_WRITTEN |
|
フィールド マッピング リファレンス: DUO_ACTIVITY
次の表に、DUO_ACTIVITY
ログタイプのログ フィールドと、対応する UDM フィールドを示します。
Log field | UDM mapping | Logic |
---|---|---|
|
principal.platform |
If the access_device.os log field value matches the regular expression pattern (?i)Win , then the principal.platform UDM field is set to WINDOWS .Else, if the access_device.os log field value matches the regular expression pattern (?i)Lin , then the principal.platform UDM field is set to LINUX .Else, if the access_device.os log field value matches the regular expression pattern (?i)Mac , then the principal.platform UDM field is set to MAC .Else, if the access_device.os log field value matches the regular expression pattern (?i)ios , then the principal.platform UDM field is set to IOS .Else, if the access_device.os log field value matches the regular expression pattern (?i)Chrome , then the principal.platform UDM field is set to CHROME_OS .Else, if the access_device.os log field value matches the regular expression pattern (?i)Android , then the principal.platform UDM field is set to ANDROID .Else, the principal.platform UDM field is set to UNKNOWN_PLATFORM . |
access_device.os_version |
principal.platform_version |
|
access_device.ip.address |
principal.ip |
|
access_device.location.country |
principal.location.country_or_region |
|
access_device.location.state |
principal.location.state |
|
access_device.location.city |
principal.location.city |
|
access_device.browser |
principal.asset.attribute.labels[access_device_browser] |
|
access_device.browser_version |
principal.asset.attribute.labels[access_device_browser_version] |
|
ts |
metadata.event_timestamp |
|
activity_id |
metadata.product_log_id |
|
akey |
principal.asset.product_object_id |
|
outcome.result |
security_result.action_details |
|
application.key |
principal.resource.product_object_id |
|
application.name |
principal.application |
|
application.type |
principal.resource.resource_subtype |
|
action.details |
principal.user.attribute.labels[action_details] |
|
action.name |
metadata.product_event_type |
|
actor.key |
principal.user.userid |
|
actor.name |
principal.user.user_display_name |
|
actor.type |
principal.user.attribute.labels[actor_type] |
|
target.key |
target.asset.attribute.labels[target_key] |
|
target.name |
target.asset.hostname |
|
target.type |
target.asset.category |
|
target.details |
target.user.attribute.labels[target_details] |
|
old_target.key |
about.asset.attribute.labels[old_target_key] |
|
old_target.name |
about.asset.hostname |
|
old_target.type |
about.asset.category |
|
old_target.details |
about.user.attribute.labels[old_target_details] |
|
actor.details.created |
principal.user.first_seen_time |
|
actor.details.last_login |
principal.user.last_login_time |
|
actor.details.status |
principal.user.attribute.labels[status] |
|
actor.details.email |
principal.user.email_addresses |
|
actor.details.group.key |
principal.user.attribute.labels[actor_details_group_key] |
|
actor.details.group.name |
principal.user.attribute.labels[actor_details_group_name] |