Mengumpulkan log Okta

Didukung di:

Dokumen ini menjelaskan cara mengumpulkan log Okta dengan menyiapkan feed Google Security Operations.

Untuk mengetahui informasi selengkapnya, lihat Penambahan data ke Google Security Operations.

Label penyerapan mengidentifikasi parser yang menormalisasi data log mentah ke format UDM terstruktur. Informasi dalam dokumen ini berlaku untuk parser dengan label transfer OKTA.

Mengonfigurasi SSO Okta

Untuk mengonfigurasi SSO Okta, selesaikan tugas berikut:

Membuat pengguna administrator hanya baca

  1. Login ke Konsol Administrator SSO Okta sebagai administrator.
  2. Buat Pengguna Standar. Jika Anda sudah memiliki pengguna standar yang ingin dijadikan administrator hanya baca, lanjutkan ke langkah berikutnya.
  3. Pilih Keamanan > Administrator.
  4. Klik Tambahkan Administrator.
  5. Di kolom Berikan peran administrator kepada, masukkan nama pengguna.
  6. Di bagian Administrator roles, centang kotak Read-Only Administrator.
  7. Logout dari akun administrator.

Mendapatkan kunci API

  1. Login ke Konsol Administrator SSO Okta dengan administrator hanya baca yang dibuat sebelumnya.
  2. Pilih Keamanan > API.
  3. Klik Create Token.
  4. Masukkan nama token, lalu klik Buat Token. Nilai token akan muncul.
  5. Salin kunci API, yang diperlukan saat Anda mengonfigurasi feed Google Security Operations.

    Kunci API tidak dapat dipulihkan nanti dan disimpan dalam format terenkripsi setelah Anda menutup jendela. Jika terjadi perubahan pada pengguna atau hak istimewa pengguna yang membuat token, token tersebut tidak valid. Jika token dicabut atau masa berlakunya habis, pengumpulan log akan dihentikan hingga token baru dikonfigurasi.

  6. Klik OK, got it.

Mengonfigurasi ASA Okta

Untuk mengambil peristiwa audit Okta Advanced Server Access (ASA) melalui API log sistem Okta, integrasikan peristiwa audit Okta ASA dengan log sistem Okta. Untuk mengaktifkan integrasi ini, hubungi dukungan Okta. Untuk informasi selengkapnya, lihat pusat bantuan Okta.

Mengonfigurasi feed di Google Security Operations untuk menyerap log Okta

  1. Buka Setelan SIEM > Feed.
  2. Klik Add New.
  3. Masukkan nama unik untuk Nama Kolom.
  4. Pilih API pihak ketiga sebagai Jenis Sumber.
  5. Pilih CrowdStrike Detection Monitoring sebagai Log Type.
  6. Klik Berikutnya.
  7. Konfigurasikan parameter input wajib berikut:
    • Header HTTP Autentikasi: menentukan kredensial yang mengautentikasi agen pengguna dengan server, yang memberikan akses ke resource yang dilindungi.
    • Nama Host API: tentukan nama domain atau alamat IP host yang menayangkan API.
  8. Klik Berikutnya, lalu klik Kirim.

Untuk informasi selengkapnya tentang feed Google Security Operations, lihat dokumentasi feed Google Security Operations. Untuk mengetahui informasi tentang persyaratan untuk setiap jenis feed, lihat Konfigurasi feed menurut jenis.

Jika Anda mengalami masalah saat membuat feed, hubungi dukungan Google Security Operations.

Referensi pemetaan kolom

Parser ini menangani log sistem Okta dalam format JSON, yang mengekstrak kolom dari log yang digabungkan Stackdriver dan log Okta mentah. Alat ini menormalisasi data ke dalam format UDM, yang berfokus pada peristiwa pengelolaan akses dan identitas, termasuk login, logout, perubahan izin, dan ancaman keamanan, sekaligus menangani berbagai jenis autentikasi dan memperkaya data dengan konteks geografis dan informasi agen pengguna. Parser juga mengekstrak detail terkait keamanan seperti alasan risiko, indikator ancaman, dan informasi aktivitas mencurigakan.

Tabel Pemetaan UDM

Kolom Log Pemetaan UDM Logika
actor.alternateId principal.user.email_addresses/principal.user.userid Jika kolom alternateId adalah alamat email yang valid, bagian nama pengguna akan dipetakan ke principal.user.userid dan alamat email lengkap akan ditambahkan ke daftar principal.user.email_addresses. Jika bukan email yang valid, seluruh nilai akan dipetakan ke principal.user.userid.
actor.displayName principal.user.user_display_name Pemetaan langsung.
actor.id principal.user.product_object_id Pemetaan langsung.
actor.type principal.user.attribute.roles.name Pemetaan langsung.
authenticationContext.authenticationProvider security_result.detection_fields.value dengan key adalah "authenticationProvider" Pemetaan langsung sebagai kolom deteksi.
authenticationContext.credentialProvider security_result.detection_fields.value dengan key adalah "credentialProvider" Pemetaan langsung sebagai kolom deteksi.
authenticationContext.credentialType extensions.auth.mechanism Digunakan untuk mendapatkan mekanisme autentikasi. "OTP" atau "SMS" menjadi "OTP", "PASSWORD" menjadi "USERNAME_PASSWORD", "IWA" atau eventType "user.authentication.auth_via_AD_agent" menjadi "LOCAL".
authenticationContext.externalSessionId network.parent_session_id Pemetaan langsung.
client.device principal.asset.type / additional.fields.value.string_value dengan key adalah "perangkat" Jika nilainya "Mobile", nilai tersebut akan dipetakan ke "MOBILE". Jika "Komputer", akan dipetakan ke "WORKSTATION". Jika "Tidak diketahui", nilai ini akan dipetakan ke "ROLE_UNSPECIFIED". Juga ditambahkan sebagai kolom tambahan.
client.geographicalContext.city principal.location.city Pemetaan langsung.
client.geographicalContext.country principal.location.country_or_region Pemetaan langsung.
client.geographicalContext.geolocation.lat principal.location.region_latitude Pemetaan langsung.
client.geographicalContext.geolocation.lon principal.location.region_longitude Pemetaan langsung.
client.geographicalContext.postalCode additional.fields.value.string_value dengan key adalah "Kode pos" Pemetaan langsung sebagai kolom tambahan.
client.geographicalContext.state principal.location.state Pemetaan langsung.
client.ipAddress principal.ip/principal.asset.ip Pemetaan langsung. Jika tidak ada, parser akan mencoba mengekstraknya dari kolom lain seperti request.ipChain.0.ip atau debugContext.debugData.clientAddress.
client.userAgent.browser target.resource.attribute.labels.value dengan key adalah "Browser" Pemetaan langsung sebagai label.
client.userAgent.os principal.platform Jika nilai berisi "Linux", nilai tersebut akan dipetakan ke "LINUX". Jika "windows", akan dipetakan ke "WINDOWS". Jika "mac" atau "ios", nilai ini akan dipetakan ke "MAC".
client.userAgent.rawUserAgent network.http.user_agent Pemetaan langsung. Juga diuraikan dan disimpan di network.http.parsed_user_agent.
client.zone additional.fields.value.string_value dengan key adalah "zona" Pemetaan langsung sebagai kolom tambahan.
debugContext.debugData.behaviors security_result.description Pemetaan langsung. Setiap perilaku juga diekstrak sebagai kolom deteksi terpisah.
debugContext.debugData.changedAttributes security_result.detection_fields.value dengan key adalah "changedAttributes" Pemetaan langsung sebagai kolom deteksi.
debugContext.debugData.clientAddress principal.ip/principal.asset.ip Digunakan sebagai penggantian jika client.ipAddress dan request.ipChain.0.ip tidak ada.
debugContext.debugData.deviceFingerprint target.asset.asset_id Diawali dengan "device_finger_print:", lalu dipetakan.
debugContext.debugData.dtHash security_result.detection_fields.value dengan key adalah "dtHash" Pemetaan langsung sebagai kolom deteksi.
debugContext.debugData.factor security_result.detection_fields.value dengan key adalah "faktor" Pemetaan langsung sebagai kolom deteksi.
debugContext.debugData.factorIntent security_result.detection_fields.value dengan key adalah "factorIntent" Pemetaan langsung sebagai kolom deteksi.
debugContext.debugData.logOnlySecurityData.risk.reasons security_result.detection_fields.value dengan key adalah "Alasan Risiko" Pemetaan langsung sebagai kolom deteksi.
debugContext.debugData.privilegeGranted target.user.attribute.roles.name/target.user.attribute.roles.description Setiap hak istimewa ditambahkan sebagai peran terpisah dengan nama dan deskripsi yang ditetapkan ke nilai hak istimewa.
debugContext.debugData.pushOnlyResponseType security_result.detection_fields.value dengan key adalah "pushOnlyResponseType" Pemetaan langsung sebagai kolom deteksi.
debugContext.debugData.pushWithNumberChallengeResponseType security_result.detection_fields.value dengan key adalah "pushWithNumberChallengeResponseType" Pemetaan langsung sebagai kolom deteksi.
debugContext.debugData.requestId network.session_id Pemetaan langsung.
debugContext.debugData.requestUri extensions.auth.auth_details/target.url Pemetaan langsung.
debugContext.debugData.suspiciousActivityEventId security_result.detection_fields.value dengan key adalah "suspiciousActivityEventId" Pemetaan langsung sebagai kolom deteksi.
debugContext.debugData.suspiciousActivityEventType security_result.detection_fields.value dengan key adalah "suspiciousActivityEventType" Pemetaan langsung sebagai kolom deteksi.
debugContext.debugData.threatDetections security_result.detection_fields.value dengan key adalah "threatDetections" Pemetaan langsung sebagai kolom deteksi.
debugContext.debugData.threatSuspected security_result.detection_fields.value dengan key adalah "threatSuspected" Pemetaan langsung sebagai kolom deteksi. Juga digunakan untuk menentukan security_result.threat_status. Jika benar, statusnya adalah "AKTIF", jika tidak, "SALAH_POSITIF".
debugContext.debugData.url target.url Pemetaan langsung.
displayMessage security_result.summary Pemetaan langsung.
eventType metadata.product_event_type Pemetaan langsung. Juga digunakan untuk menentukan metadata.event_type (lihat logika di bawah).
legacyEventType security_result.detection_fields.value dengan key adalah "legacyEventType" Pemetaan langsung sebagai kolom deteksi.
outcome.reason security_result.category_details Pemetaan langsung.
outcome.result security_result.action "SUCCESS" atau "ALLOW" menjadi "ALLOW", "CHALLENGE" menjadi "CHALLENGE", "FAILURE", "DENY", "SKIPPED", atau "RATE_LIMIT" menjadi "BLOCK".
published metadata.event_timestamp Dikonversi menjadi stempel waktu.
request.ipChain.0.geographicalContext.* principal.location.* Konteks geografis IP pertama dalam rantai dipetakan ke lokasi akun utama.
request.ipChain.0.ip principal.ip/principal.asset.ip Pemetaan langsung.
request.ipChain.1.geographicalContext.* intermediary.location.* Konteks geografis IP kedua dalam rantai dipetakan ke lokasi perantara.
request.ipChain.1.ip intermediary.ip Pemetaan langsung.
securityContext.asNumber security_result.detection_fields.value dengan key adalah "asNumber" Pemetaan langsung sebagai kolom deteksi.
securityContext.asOrg security_result.detection_fields.value dengan key adalah "asOrg" Pemetaan langsung sebagai kolom deteksi.
securityContext.domain security_result.detection_fields.value dengan key adalah "domain" Pemetaan langsung sebagai kolom deteksi jika nilainya bukan ".".
securityContext.isp security_result.detection_fields.value dengan key adalah "isp" Pemetaan langsung sebagai kolom deteksi.
securityContext.isProxy security_result.detection_fields.value dengan key adalah "IP anonim" Pemetaan langsung sebagai kolom deteksi.
target.0.alternateId target.user.email_addresses/target.user.userid Logika yang mirip dengan actor.alternateId.
target.0.detailEntry.clientAppId target.asset_id Diawali dengan "Client_app_id:", lalu dipetakan.
target.0.displayName target.user.user_display_name / target.application / target.resource.name Dipetakan berdasarkan target.0.type.
target.0.id target.user.product_object_id/target.resource.product_object_id Dipetakan berdasarkan target.0.type.
target.0.type target.user.attribute.roles.name/target.resource.resource_subtype Dipetakan berdasarkan nilai. Juga digunakan untuk menentukan pemetaan kolom target.0 lainnya.
target.1.alternateId target.user.email_addresses/target.user.userid Logika yang mirip dengan actor.alternateId.
target.1.detailEntry.clientAppId target.asset_id Diawali dengan "Client_app_id:", lalu dipetakan.
target.1.displayName target.user.user_display_name/target.resource.name Dipetakan berdasarkan target.1.type.
target.1.id target.user.product_object_id/target.resource.product_object_id Dipetakan berdasarkan target.1.type.
target.1.type target.user.attribute.roles.name/target.resource.resource_subtype Dipetakan berdasarkan nilai. Juga digunakan untuk menentukan pemetaan kolom target.1 lainnya.
target.2.alternateId target.2.displayName target.2.id target.2.type transaction.id network.session_id Pemetaan langsung.
transaction.type additional.fields.value.string_value dengan key adalah "type" Pemetaan langsung sebagai kolom tambahan.
uuid metadata.product_log_id Pemetaan langsung.
T/A metadata.event_type Ditentukan oleh eventType. Lihat kode parser untuk logika pemetaan lengkap. Beberapa pemetaan kunci mencakup: "user.authentication.sso", "user.authentication.auth_via_mfa", "user.session.start" dipetakan ke "USER_LOGIN"; "user.session.end" dipetakan ke "USER_LOGOUT"; "user.account.reset_password" dipetakan ke "USER_CHANGE_PASSWORD"; "application.user_membership.update" dipetakan ke "USER_CHANGE_PERMISSIONS"; "security.threat.detected" dipetakan ke "USER_UNCATEGORIZED"; "system.import.user.delete" dipetakan ke "USER_DELETION"; "policy.rule.update" dipetakan ke "SETTING_MODIFICATION"; "group.user_membership.remove" dipetakan ke "GROUP_MODIFICATION". Banyak nilai eventType lainnya yang dipetakan ke "USER_UNCATEGORIZED".
T/A metadata.log_type Tetapkan ke "OKTA".
T/A metadata.product_name Tetapkan ke "Okta".
T/A metadata.vendor_name Tetapkan ke "Okta".
T/A extensions.auth.type Tetapkan ke "SSO".

Perubahan

2024-05-16

  • Jika "is_alert" bernilai benar dan "is_significant" bernilai benar, tetapkan "security_result.alert_state" sebagai "ALERTING".

2024-03-05

  • Memperbarui kolom "security_result.action" untuk menunjukkan apakah traffic diizinkan atau diblokir.

2024-02-16

  • Perbaikan Bug:
  • Jika "target.0.type" adalah "User" atau "AppUser", maka pemeta "target.0.alternateId" ke "target.user.userid".
  • Jika "target.1.type" adalah "User" atau "AppUser", maka pemeta "target.1.alternateId" ke "target.user.userid".

2023-12-14

  • Memetakan "securityContext.asNumber" ke "security_result.detection_fields".
  • Memetakan "legacyEventType" ke "security_result.detection_fields".
  • Menambahkan "conditional_check" sebelum menetapkan "metadata.event_type".

2023-06-28

  • Memetakan nilai lengkap "debugContext.debugData.suspiciousActivityEventType" ke "security_result.detection_fields".
  • Memetakan nilai lengkap "debugContext.debugData.logOnlySecurityData.behaviors.New Device" ke "security_result.detection_fields".

2023-06-09

  • Kolom "debugContext.debugData.deviceFingerprint" dipetakan ke "target.asset.asset_id".
  • Memetakan nilai lengkap "debugContext.debugData.risk.reasons" ke "security_result.detection_fields".

2023-05-17

  • Kolom 'authenticationContext.externalSessionId' dipetakan ke 'network.parent_session_id'.
  • Kolom 'debugContext.debugData.pushOnlyResponseType' dipetakan ke 'security_result.detection_fields.key/value'.
  • Kolom 'debugContext.debugData.factor' dipetakan ke 'security_result.detection_fields.key/value'.
  • Kolom 'debugContext.debugData.factorIntent' dipetakan ke 'security_result.detection_fields.key/value'.
  • Kolom 'debugContext.debugData.pushWithNumberChallengeResponseType' dipetakan ke 'security_result.detection_fields.key/value'.
  • Kolom 'debugContext.debugData.dtHash' dipetakan ke 'security_result.detection_fields.key/value'.
  • Kolom 'client.userAgent.rawUserAgent' dipetakan ke 'network.http.user_agent'.
  • Mengubah pemetaan dari 'ALLOW_WITH_MODIFICATION' menjadi nilai enum 'CHALLENGE' di bagian 'security_result.action'.
  • Untuk eventType 'system.api_token.create', mengubah metadata.event_type dari 'USER_UNCATEGORIZED' menjadi 'RESOURCE_CREATION'.

2023-04-28

  • Perbaikan Bug:
  • Pemetaan yang diubah untuk "security_result.threat_status" menjadi "ACTIVE" jika "debugContext.debugData.threatSuspected" adalah "true", jika tidak, dipetakan ke "FALSE_POSITIVE".

24-03-2023

  • Memetakan kolom "logOnlySecurityData" ke "security_result.detection_fields".
  • Selain itu, error penguraian telah diperbaiki dengan menambahkan "DEFERRED" ke daftar tindakan.

2023-04-11

  • Memetakan ulang kolom yang dipetakan ke "http.user_agent" ke "http.parsed_user_agent".
  • Memetakan "target.displayName" ke "target.resource_ancestors.name".
  • Memetakan "targetfield.detailEntry.methodTypeUsed" ke "target.resource_ancestors.attribute.labels".
  • Memetakan "targetfield.detailEntry.methodUsedVerifiedProperties" ke "target.resource_ancestors.attribute.labels".

2023-02-20

  • Mengubah "metadata.event_type" dari "USER_LOGIN" menjadi "STATUS_UPDATE" dengan "eventType" adalah "user.authentication.auth_via_AD_agent"

2022-12-14

  • Memetakan "debugContext.debugData.changedAttributes" ke "security_result.detection_fields".
  • Menambahkan pemeriksaan null untuk "detail.actor.alternateId".

2022-11-17

  • Kolom "target[n].alternateId" dipetakan ke "target.resource.attribute.labels".
  • Kolom "detail.target.0.alternateId" dipetakan ke "target.resource.attribute.labels".

2022-11-08

  • Perbaikan bug:
  • Menambahkan kondisi untuk pemeriksaan email yang tepat untuk kolom "user_email".
  • Menambahkan pemeriksaan untuk kolom "Action1" yang tidak ada di "RATE_LIMIT".
  • Menambahkan pemeriksaan null, tidak dikenal untuk "actor.displayName".

2022-11-04

  • Menambahkan dukungan untuk log yang memiliki beberapa peristiwa.

2022-10-15

  • "signOnModeType" dipetakan ke "security_result.detection_fields".
  • "authenticationProvider" dipetakan ke "security_result.detection_fields".
  • "credentialProvider" dipetakan ke "security_result.detection_fields".
  • "device" dipetakan ke "additional.fields".
  • "zone" dipetakan ke "additional.fields".
  • "type" dipetakan ke "additional.fields".

2022-10-14

  • Perbaikan bug:
  • Menambahkan pemeriksaan bersyarat untuk 'principal.user.email_addresses' dan 'target.user.email_addresses'.
  • Menambahkan grok untuk memeriksa ip_address yang valid untuk kolom 'request.ipChain.0.ip' yang dipetakan ke 'principal.ip'.
  • Menambahkan kondisi on_error untuk kolom 'debugContext.debugData.url' yang dipetakan ke 'target.url'.

2022-10-03

  • Memetakan "client.userAgent.os" ke "principal.platform".
  • Memetakan "client.device" ke "principal.asset.type".
  • Memetakan "IP anonim" (string hardcode) ke security_result.detection_fields.key dengan nilai 'securityContext.isProxy' ke security_result.detection_fields.value yang sesuai.

16-09-2022

  • 'securityContext.asOrg' dipetakan ke 'security_result.category_details'.
  • 'securityContext.isProxy' dipetakan ke 'security_result.detection_fields'.
  • 'securityContext.domain' dipetakan ke 'security_result.detection_fields'.
  • 'securityContext.isp' dipetakan ke 'security_result.detection_fields'.
  • 'debugContext.debugData.risk.level' dipetakan ke 'security_result.severity'.
  • 'debugContext.debugData.risk.reasons' dipetakan ke 'security_result.detection_fields'.

2022-08-12

  • log yang baru ditransfer telah diuraikan dan dipetakan ke kolom berikut:
  • 'detail.uuid' dipetakan ke 'metadata.product_log_id'.
  • 'detail.eventType' dipetakan ke 'metadata.product_event_type'
  • 'detail.actor.id' dipetakan ke 'principal.user.product_object_id'.
  • if 'detail.actor.alternateId' mapped to 'principal.user.userid' else
  • 'detail.actor.alternateId' dipetakan ke 'principal.user.email_addresses'.
  • 'detail.actor.displayName' dipetakan ke 'principal.user.user_display_name'.
  • 'detail.actor.type' dipetakan ke '.principal.user.attribute.roles'.
  • 'detail.client.ipChain.0.ip' dipetakan ke 'principal.ip'.
  • 'detail.client.ipChain.0.geographicalContext.state' dipetakan ke 'principal.location.state'.
  • 'detail.client.ipChain.0.geographicalContext.city' dipetakan ke 'principal.location.city'.
  • 'detail.client.ipChain.0.geographicalContext.country' dipetakan ke 'principal.location.country_or_region'.
  • 'detail.debugContext.debugData.requestUri' dipetakan ke 'target.url'.
  • 'detail.target.0.type' dipetakan ke 'target.resource.resource_subtype'.
  • 'detail.target.0.id' dipetakan ke 'target.resource.resource.product_object_id'.
  • 'detail.target.0.displayName' dipetakan ke 'target.resource.resource_subtype'.
  • 'detail.target.0.detailEntry.policyType' dipetakan ke 'target.resource_ancestors.attribute.labels'.
  • 'detail.outcome.reason' dipetakan ke 'security_result.category_details'.
  • 'detail.debugContext.debugData.threatSuspected' dipetakan ke 'security_result.detection_fields'.
  • 'detail.displayMessage' dipetakan ke 'security_result.summary'.
  • 'detail.outcome.result' dipetakan ke 'security_result.action'.
  • 'detail.severity' dipetakan ke 'security_result.severity'.
  • 'detail.transaction.id' dipetakan ke 'network.session_id'.
  • 'detail.debugContext.debugData.requestUri' dipetakan ke 'extensions.auth.auth_details'.

2022-07-08

  • Pemetaan yang diubah untuk "actor.type" dari "principal.user.role_name" menjadi "principal.user.attribute.roles".
  • Pemetaan yang diubah untuk "target.0.type" dari "target.user.role_name" menjadi "target.user.attribute.roles".
  • Pemetaan yang diubah untuk "target.1.type" dari "target.user.role_name" menjadi "target.user.attribute.roles".

2022-06-15

  • Enhancement-
  • untuk "target.0.type" == "Token".
  • Memetakan "target.0.detailEntry.clientAppId" ke "target.asset_id".
  • Menambahkan pemeriksaan bersyarat untuk kolom 'transaction.id' yang dipetakan ke kolom UDM 'network.session_id'.

2022-06-03

  • Enhancement-
  • Memetakan debugContext.debugData.privilegeGranted ke target.user.attribute.roles.name secara tambahan.
  • Memetakan debugContext.debugData.requestUri ke extensions.auth.auth_details.
  • Memetakan debugContext.debugData.suspiciousActivityEventId, debugContext.debugData.threatDetections, debugContext.debugData.threatSuspected ke security_result.detection_fields.

2022-03-22

  • Enhancement-
  • debugContext.debugData.behaviors dipetakan ke security_result.description.
  • debugContext.debugData.threatSuspected dipetakan ke security_result.threat_status.
  • debugContext.debugData.risk dipetakan ke security_result.severity.