Mengumpulkan log Auth0

Didukung di:

Ringkasan

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

Sebelum memulai

Pastikan Anda memenuhi prasyarat berikut:

  • Instance Google SecOps.
  • Akun Auth0 dengan izin yang diperlukan.

Menyiapkan feed

Untuk mengonfigurasi feed, ikuti langkah-langkah berikut:

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan Feed Baru.
  3. Di halaman berikutnya, klik Konfigurasi satu feed.
  4. Di kolom Feed name, masukkan nama untuk feed (misalnya, Auth0 Logs).
  5. Pilih Webhook sebagai Jenis sumber.
  6. Pilih AUTH_ZERO sebagai Jenis log.
  7. Klik Berikutnya.
  8. Opsional: tentukan nilai untuk parameter input berikut:
    • Pemisah pemisahan: pemisah yang digunakan untuk memisahkan baris log, seperti \n.
    • Namespace aset: namespace aset.
    • Label penyerapan: label yang diterapkan ke peristiwa dari feed ini.
  9. Klik Berikutnya.
  10. Tinjau konfigurasi feed di layar Selesaikan, lalu klik Kirim.
  11. Klik Buat Kunci Rahasia untuk membuat kunci rahasia guna mengautentikasi feed ini.
  12. 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.
  13. Di tab Detail, salin URL endpoint feed dari kolom Informasi Endpoint. Anda perlu menentukan URL endpoint ini di aplikasi klien Anda.
  14. Klik Selesai.

Membuat kunci API untuk feed webhook

  1. Buka konsolGoogle Cloud > Kredensial.

    Buka Kredensial

  2. Klik Create credentials, lalu pilih API key.

  3. Membatasi akses kunci API ke Chronicle API.

Tentukan URL endpoint

  1. Di aplikasi klien Anda, tentukan URL endpoint HTTPS yang disediakan di feed webhook.
  2. Aktifkan autentikasi dengan menentukan kunci API dan kunci rahasia 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.
  3. Klik Create Log Stream.
  4. Klik tombol Webhook Kustom, lalu beri nama sesuai pilihan 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: Konfigurasi rahasia untuk keamanan tambahan. Nilai ini akan digunakan untuk memverifikasi keaslian permintaan webhook.

Menyesuaikan Payload: Anda dapat menyesuaikan payload yang dikirim ke Google SecOps dengan mengubah Kategori Peristiwa. Dengan begitu, Anda dapat memilih titik data tertentu dari peristiwa Auth0 dan memformatnya sesuai kebutuhan untuk Google SecOps. Lihat dokumentasi Auth0 untuk mengetahui detail tentang opsi pembuatan 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. Verifikasi bahwa 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 Diuraikan 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, atau berasal dari kolom lain (lihat di bawah).
details.request.auth.strategy security_result.detection_fields Dipetakan dari kolom details.request.auth.strategy. Kuncinya adalah "strategi".
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. Kuncinya adalah "migrated".
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 menjadi 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, atau 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 Ditetapkan ke "AUTH_ZERO".
metadata.vendor_name metadata.vendor_name Ditetapkan 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 Diuraikan 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 "strategi".
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 berupa alamat email, atau 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.

Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.