Mengumpulkan log Auth0

Didukung di:

Ringkasan

Parser ini mengekstrak peristiwa log Auth0 dari pesan berformat JSON. Fungsi ini melakukan inisialisasi kolom UDM, mengurai payload JSON, memetakan kolom yang relevan ke skema UDM, dan mengategorikan peristiwa berdasarkan kolom type, yang menetapkan tindakan keamanan dan jenis peristiwa yang sesuai.

Sebelum memulai

  • Pastikan Anda memiliki instance Google Chronicle.
  • Akun Auth0 dengan izin yang diperlukan.

Mengonfigurasi feed di Google SecOps untuk menyerap log Auth0

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan baru.
  3. Di kolom Feed name, masukkan nama untuk feed (misalnya, Auth0 Logs).
  4. Pilih Webhook sebagai Jenis sumber.
  5. Pilih AUTH_ZERO sebagai Jenis log.
  6. Klik Berikutnya.
  7. Opsional: tentukan nilai untuk parameter input berikut:
    • Pemisah pemisahan: pembatas yang digunakan untuk memisahkan baris log, seperti \n.
    • Namespace aset: namespace aset.
    • Label penyerapan: label yang diterapkan ke peristiwa dari feed ini.
  8. Klik Berikutnya.
  9. Tinjau konfigurasi feed di layar Finalize, lalu klik Submit.
  10. Klik Buat Kunci Rahasia untuk membuat kunci rahasia guna mengautentikasi feed ini.
  11. Salin dan simpan kunci rahasia. Anda tidak dapat melihat kunci rahasia ini lagi. Jika perlu, Anda dapat membuat ulang kunci rahasia baru, tetapi tindakan ini akan membuat kunci rahasia sebelumnya tidak berlaku lagi.
  12. Di tab Detail, salin URL endpoint feed dari kolom Endpoint Information. Anda perlu menentukan URL endpoint ini di aplikasi klien.
  13. Klik Done.

Membuat kunci API untuk feed webhook

  1. Buka Konsol Google Cloud > Kredensial.

    Buka Kredensial

  2. Klik Create credentials, lalu pilih API key.

  3. Batasi akses kunci API ke Google Security Operations API.

Menentukan URL endpoint

  1. Di aplikasi klien, tentukan URL endpoint HTTPS yang diberikan di feed webhook.
  2. Aktifkan autentikasi dengan menentukan kunci API dan kunci secret sebagai bagian dari header kustom dalam format berikut:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Rekomendasi: Tentukan kunci API sebagai header, bukan menentukannya di URL. Jika klien webhook Anda tidak mendukung header kustom, Anda dapat menentukan kunci API dan kunci rahasia menggunakan parameter kueri dalam format berikut:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

Ganti kode berikut:

  • ENDPOINT_URL: URL endpoint feed.
  • API_KEY: kunci API untuk mengautentikasi ke Google Security Operations.
  • SECRET: kunci rahasia yang Anda buat untuk mengautentikasi feed.

Mengonfigurasi webhook Auth0 untuk Google SecOps

  1. Akses Dasbor Auth0.
  2. Buka Monitoring > Aliran Data.
  3. Klik Buat Aliran Log.
  4. Klik tombol Webhook Kustom, lalu beri nama sesuai keinginan Anda. Misalnya: Webhook Google SecOps.
  5. Konfigurasikan hal berikut:
    • URL Payload: Masukkan URL endpoint Google SecOps API.
    • Content-Type: Tetapkan header Content-Type ke application/json. Hal ini memberi tahu Google SecOps format data yang dikirim.
    • Opsional: Token Otorisasi: Konfigurasikan secret untuk keamanan tambahan. Token ini akan digunakan untuk memverifikasi keaslian permintaan webhook.

Menyesuaikan Payload: Anda dapat menyesuaikan payload yang dikirim ke Google SecOps dengan mengubah Kategori Peristiwa. Tindakan ini memungkinkan Anda memilih titik data tertentu dari peristiwa Auth0 dan memformatnya sesuai kebutuhan untuk Google SecOps. Lihat dokumentasi Auth0 untuk mengetahui detail tentang opsi skrip dan variabel konteks yang tersedia. Pastikan payload akhir sesuai dengan format UDM Google SecOps yang diharapkan.

  1. Klik Simpan untuk membuat webhook.
  2. Memicu peristiwa yang terkait dengan hook (misalnya, mendaftarkan pengguna baru, login).
  3. Pastikan log dikirim ke Google SecOps dengan memeriksa feed di konsol Google SecOps.

Tabel Pemetaan UDM

Kolom Log Pemetaan UDM Logika
client_id principal.asset.product_object_id Dipetakan langsung dari kolom client_id.
client_name principal.hostname Dipetakan langsung dari kolom client_name.
connection security_result.description Dipetakan langsung dari kolom connection.
connection_id security_result.rule_id Dipetakan langsung dari kolom connection_id.
date metadata.event_timestamp Diurai dari kolom date menggunakan format ISO8601.
description metadata.description Dipetakan langsung dari kolom description.
details.error security_result.detection_fields Dipetakan dari kolom details.error. Kuncinya adalah "Error".
details.error.oauthError security_result.detection_fields Dipetakan dari kolom details.error.oauthError. Kuncinya adalah "oauthError".
details.error.type security_result.detection_fields Dipetakan dari kolom details.error.type. Kuncinya adalah "oauth_error_type".
details.ipOnAllowlist security_result.detection_fields Dipetakan dari kolom details.ipOnAllowlist. Kuncinya adalah "ipOnAllowlist".
details.link target.url Dipetakan langsung dari kolom details.link jika ada, jika tidak, berasal dari kolom lain (lihat di bawah).
details.request.auth.strategy security_result.detection_fields Dipetakan dari kolom details.request.auth.strategy. Kuncinya adalah "strategy".
details.request.body.app_metadata.blockedReason security_result.detection_fields Dipetakan dari kolom details.request.body.app_metadata.blockedReason. Kuncinya adalah "blockedReason".
details.request.body.app_metadata.customer_id target.user.product_object_id Dipetakan langsung dari kolom details.request.body.app_metadata.customer_id.
details.request.body.app_metadata.migrated security_result.detection_fields Dipetakan dari kolom details.request.body.app_metadata.migrated. Kunci "dimigrasikan".
details.request.channel security_result.detection_fields Dipetakan dari kolom details.request.channel. Kuncinya adalah "channel".
details.request.method network.http.method Dipetakan langsung dari kolom details.request.method setelah dikonversi ke huruf besar.
details.request.path target.url Dipetakan langsung dari kolom details.request.path jika details.link tidak ada, atau berasal dari kolom lain (lihat di bawah).
details.response.body.email target.user.email_addresses Dipetakan langsung dari kolom details.response.body.email.
details.response.body.email_verified security_result.detection_fields Dipetakan dari kolom details.response.body.email_verified. Kuncinya adalah "email_verified".
details.response.body.nickname target.user.user_display_name Dipetakan langsung dari kolom details.response.body.nickname.
details.response.body.user_id target.user.userid Dipetakan langsung dari kolom details.response.body.user_id.
details.response.statusCode network.http.response_code Dipetakan langsung dari kolom details.response.statusCode setelah dikonversi menjadi bilangan bulat.
details.return_to target.url Dipetakan langsung dari kolom details.return_to jika details.link dan details.request.path tidak ada, jika tidak, berasal dari kolom lain (lihat di bawah).
details.session_id network.session_id Dipetakan langsung dari kolom details.session_id.
details.stats.loginsCount additional.fields Dipetakan dari kolom details.stats.loginsCount. Kuncinya adalah "loginsCount".
details.requiresVerification security_result.detection_fields Dipetakan dari kolom details.requiresVerification. Kuncinya adalah "requiresVerification".
details.to target.user.email_addresses Dipetakan langsung dari kolom details.to.
hostname target.hostname Dipetakan langsung dari kolom hostname.
ip principal.ip Dipetakan langsung dari kolom ip.
js_data.audience target.url Dipetakan langsung dari kolom js_data.audience jika details.link, details.request.path, dan details.return_to tidak ada.
js_data.details.body.email_verified security_result.detection_fields Dipetakan dari kolom js_data.details.body.email_verified. Kuncinya adalah "email_verified".
js_data.details.body.is_signup security_result.detection_fields Dipetakan dari kolom js_data.details.body.is_signup. Kuncinya adalah "is_signup".
js_data.details.body.transaction.redirect_uri target.url Dipetakan langsung dari kolom js_data.details.body.transaction.redirect_uri jika details.link, details.request.path, details.return_to, dan js_data.audience tidak ada.
js_data.scope security_result.detection_fields Dipetakan dari kolom js_data.scope. Kuncinya adalah "scope".
js_data.tracking_id security_result.detection_fields Dipetakan dari kolom js_data.tracking_id. Kuncinya adalah "tracking_id".
log_id metadata.product_log_id Dipetakan langsung dari kolom log_id.
metadata.log_type metadata.log_type Dipetakan langsung dari kolom log_type.
metadata.product_name metadata.product_name Tetapkan ke "AUTH_ZERO".
metadata.vendor_name metadata.vendor_name Tetapkan ke "AUTH_ZERO".
metadata.product_event_type metadata.product_event_type Dipetakan langsung dari kolom type.
network.http.parsed_user_agent network.http.parsed_user_agent Diurai dari kolom user_agent.
network.http.user_agent network.http.user_agent Dipetakan langsung dari kolom user_agent.
security_result.action security_result.action Ditentukan oleh kolom type (ALLOW atau BLOCK). Lihat kode parser untuk pemetaan tertentu.
strategy security_result.detection_fields Dipetakan dari kolom strategy. Kuncinya adalah "strategy".
strategy_type security_result.detection_fields Dipetakan dari kolom strategy_type. Kuncinya adalah "strategy_type".
target.user.email_addresses target.user.email_addresses Dipetakan langsung dari kolom user_name jika merupakan alamat email, jika tidak, berasal dari kolom lain (lihat di atas).
target.user.userid target.user.userid Dipetakan langsung dari kolom user_id, atau details.response.body.user_id atau user_name jika user_id tidak ada.
user_agent network.http.user_agent Dipetakan langsung dari kolom user_agent.
user_id target.user.userid Dipetakan langsung dari kolom user_id.
user_name target.user.email_addresses Dipetakan langsung dari kolom user_name. Tetapkan ke "MACHINE" jika security_result.action adalah "ALLOW" dan type adalah "slo", "sapi", "s", "ss", atau "ssa". Tetapkan ke "OTP" jika extensions.auth.type adalah "MACHINE" dan type adalah "slo". Ditentukan oleh kombinasi kolom termasuk type, client_name, ip, hostname, dan has_user. Lihat kode parser untuk pemetaan tertentu.

Perubahan

2024-03-07

  • Perbaikan Bug:
  • Memetakan "data.user_name" ke "target.user.email_addresses".
  • Memetakan "data.details.body.email_verified", "data.details.body.is_signup" ke "security_result.detection_fields".
  • Memetakan "data.details.body.transaction.redirect_uri" ke "target.url".

2023-06-19

  • Parser yang baru dibuat.