Mengumpulkan log Okta
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
- Login ke Konsol Administrator SSO Okta sebagai administrator.
- Buat Pengguna Standar. Jika Anda sudah memiliki pengguna standar yang ingin dijadikan administrator hanya baca, lanjutkan ke langkah berikutnya.
- Pilih Keamanan > Administrator.
- Klik Tambahkan Administrator.
- Di kolom Berikan peran administrator kepada, masukkan nama pengguna.
- Di bagian Administrator roles, centang kotak Read-Only Administrator.
- Logout dari akun administrator.
Mendapatkan kunci API
- Login ke Konsol Administrator SSO Okta dengan administrator hanya baca yang dibuat sebelumnya.
- Pilih Keamanan > API.
- Klik Create Token.
- Masukkan nama token, lalu klik Buat Token. Nilai token akan muncul.
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.
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
- Buka Setelan SIEM > Feed.
- Klik Add New.
- Masukkan nama unik untuk Nama Kolom.
- Pilih API pihak ketiga sebagai Jenis Sumber.
- Pilih CrowdStrike Detection Monitoring sebagai Log Type.
- Klik Berikutnya.
- 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.
- 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.