Mengumpulkan log Okta
Dokumen ini menjelaskan cara menyerap log Okta ke Google Security Operations menggunakan Okta API. Parser mengekstrak log sistem, yang menangani peristiwa tunggal dan peristiwa dalam batch dalam array JSON. Alat ini akan menormalisasi data ke dalam format UDM, memetakan kolom Okta ke kolom UDM yang setara, memperkaya data dengan agen pengguna yang diuraikan, informasi geografis, dan detail autentikasi, serta menghasilkan peristiwa hasil keamanan berdasarkan hasil dan informasi risiko.
Sebelum memulai
- Pastikan Anda memiliki instance Google SecOps.
- Pastikan Anda memiliki akses dengan hak istimewa ke Okta.
Mengonfigurasi Okta
Untuk mengonfigurasi SSO Okta, selesaikan tugas berikut:
Membuat pengguna Administratif Okta dengan hak istimewa hanya baca
- Login ke konsol administrator Okta.
Buat Pengguna Standar.
- Buka Direktori > Orang.
- Klik Tambahkan orang dan lengkapi kolom yang wajib diisi.
Pilih Keamanan > Administrator.
Klik Tambahkan Administrator.
Di kolom Administrator assignment by admin, temukan Pengguna Standar.
Di bagian roles, pilih Read-Only Administrator dari daftar.
Logout dari akun administrator.
Mendapatkan Kunci API
- Login ke Konsol Administrator Okta dengan pengguna administrator hanya baca.
- Buka Keamanan > API > Token.
- Klik Create Token.
- Berikan nama yang bermakna untuk token.
- Berikan zona IP tempat API akan digunakan (Anda dapat memilih IP apa pun jika tidak yakin).
- Klik Create Token.
- Salin kunci API.
- Klik OK, got it.
Mengonfigurasi feed di Google SecOps untuk menyerap log Okta
- Buka Setelan SIEM > Feed.
- Klik Tambahkan baru.
- Di kolom Feed name, masukkan nama untuk feed (misalnya, Okta Logs).
- Pilih Third party API sebagai Source type.
- Pilih Okta sebagai Jenis log.
- Klik Berikutnya.
- Tentukan nilai untuk parameter input berikut:
- Header HTTP autentikasi: masukkan Kunci API Okta dalam format berikut:
Authorization:<API_KEY>
. - Nama Host API: tentukan nama domain host Okta Anda (misalnya,
<your-domain>.okta.com
). - Namespace aset: namespace aset.
- Label penyerapan: label yang diterapkan ke peristiwa dari feed ini.
- Header HTTP autentikasi: masukkan Kunci API Okta dalam format berikut:
- Klik Berikutnya.
- Tinjau konfigurasi feed di layar Finalize, lalu klik Submit.
Tabel Pemetaan UDM
Kolom Log | Pemetaan UDM | Logika |
---|---|---|
actor.alternateId |
principal.user.email_addresses |
Diekstrak dari actor.alternateId jika merupakan alamat email. Jika bukan alamat email, digunakan sebagai principal.user.userid . |
actor.displayName |
principal.user.user_display_name |
Dipetakan secara langsung. |
actor.id |
principal.user.product_object_id |
Dipetakan secara langsung. |
actor.type |
principal.user.attribute.roles.name |
Dipetakan secara langsung. |
authenticationContext.authenticationProvider |
security_result.detection_fields.value |
Dipetakan langsung, dengan kunci authenticationProvider . |
authenticationContext.credentialProvider |
security_result.detection_fields.value |
Dipetakan langsung, dengan kunci credentialProvider . |
authenticationContext.credentialType |
extensions.auth.mechanism |
Digunakan untuk mendapatkan mekanisme autentikasi (OTP, USERNAME_PASSWORD, LOCAL). |
authenticationContext.externalSessionId |
network.parent_session_id |
Dipetakan secara langsung. |
client.device |
principal.asset.type /additional.fields.value.string_value |
Dipetakan ke principal.asset.type (WORKSTATION, MOBILE, ROLE_UNSPECIFIED) berdasarkan nilai. Juga dipetakan sebagai nilai string dengan kunci device di additional.fields . |
client.geographicalContext.city |
principal.location.city |
Dipetakan secara langsung. |
client.geographicalContext.country |
principal.location.country_or_region |
Dipetakan secara langsung. |
client.geographicalContext.geolocation.lat |
principal.location.region_latitude |
Dipetakan secara langsung. |
client.geographicalContext.geolocation.lon |
principal.location.region_longitude |
Dipetakan secara langsung. |
client.geographicalContext.postalCode |
additional.fields.value.string_value |
Dipetakan langsung sebagai nilai string dengan kunci Postal code di additional.fields . |
client.geographicalContext.state |
principal.location.state |
Dipetakan secara langsung. |
client.ipAddress |
principal.ip , principal.asset.ip |
Dipetakan secara langsung. |
client.userAgent.browser |
target.resource.attribute.labels.value |
Dipetakan langsung, dengan kunci Browser . |
client.userAgent.os |
principal.platform |
Dipetakan ke platform (LINUX, WINDOWS, MAC) berdasarkan nilai. |
client.userAgent.rawUserAgent |
network.http.user_agent , network.http.parsed_user_agent |
Dipetakan dan diuraikan secara langsung. |
client.zone |
additional.fields.value.string_value |
Dipetakan langsung sebagai nilai string dengan kunci zone di additional.fields . |
debugContext.debugData.behaviors |
security_result.description , security_result.detection_fields |
Dipetakan langsung ke deskripsi. Setiap perilaku diekstrak dan ditambahkan sebagai kolom deteksi. |
debugContext.debugData.changedAttributes |
security_result.detection_fields.value |
Dipetakan langsung, dengan kunci changedAttributes . |
debugContext.debugData.clientAddress |
principal.ip , principal.asset.ip |
Dipetakan langsung jika request.ipChain dan client.ipAddress tidak ada. |
debugContext.debugData.deviceFingerprint |
target.asset.asset_id |
Dipetakan langsung, diawali dengan device_finger_print: . |
debugContext.debugData.dtHash |
security_result.detection_fields.value |
Dipetakan langsung, dengan kunci dtHash . |
debugContext.debugData.factor |
security_result.detection_fields.value |
Dipetakan langsung, dengan kunci factor . |
debugContext.debugData.factorIntent |
security_result.detection_fields.value |
Dipetakan langsung, dengan kunci factorIntent . |
debugContext.debugData.logOnlySecurityData.risk.reasons |
security_result.detection_fields.value |
Dipetakan langsung, dengan kunci Risk Reasons . |
debugContext.debugData.privilegeGranted |
target.user.attribute.roles |
Dibagi menjadi hak istimewa individual dan ditambahkan sebagai peran dengan nama dan deskripsi. |
debugContext.debugData.pushOnlyResponseType |
security_result.detection_fields.value |
Dipetakan langsung, dengan kunci pushOnlyResponseType . |
debugContext.debugData.pushWithNumberChallengeResponseType |
security_result.detection_fields.value |
Dipetakan langsung, dengan kunci pushWithNumberChallengeResponseType . |
debugContext.debugData.requestUri |
extensions.auth.auth_details |
Dipetakan secara langsung. |
debugContext.debugData.suspiciousActivityEventId |
security_result.detection_fields.value |
Dipetakan langsung, dengan kunci suspiciousActivityEventId . |
debugContext.debugData.suspiciousActivityEventType |
security_result.detection_fields.value |
Dipetakan langsung, dengan kunci suspiciousActivityEventType . |
debugContext.debugData.threatDetections |
security_result.detection_fields.value |
Dipetakan langsung, dengan kunci threatDetections . |
debugContext.debugData.threatSuspected |
security_result.detection_fields.value , security_result.threat_status |
Dipetakan sebagai kolom deteksi dengan kunci threatSuspected . Digunakan untuk mendapatkan status ancaman (ACTIVE atau FALSE_POSITIVE). |
debugContext.debugData.url |
target.url |
Dipetakan secara langsung. |
displayMessage |
security_result.summary |
Dipetakan secara langsung. |
eventType |
metadata.product_event_type , metadata.event_type |
Dipetakan langsung ke product_event_type . Digunakan untuk mendapatkan event_type (USER_LOGIN, USER_LOGOUT, USER_CHANGE_PASSWORD, USER_CHANGE_PERMISSIONS, USER_DELETION, GROUP_MODIFICATION, SETTING_MODIFICATION, SCHEDULED_TASK_ENABLE, RESOURCE_CREATION, USER_UNCATEGORIZED). |
legacyEventType |
security_result.detection_fields.value |
Dipetakan langsung, dengan kunci legacyEventType . |
outcome.reason |
security_result.category_details |
Dipetakan secara langsung. |
outcome.result |
security_result.action |
Dipetakan ke tindakan (ALLOW, CHALLENGE, BLOCK) berdasarkan nilai. |
published |
metadata.event_timestamp |
Diurai menjadi stempel waktu. |
request.ipChain.n.geographicalContext |
intermediary.location |
Konteks geografis IP perantara dalam rantai permintaan. |
request.ipChain.n.ip |
intermediary.ip |
Alamat IP perantara dalam rantai permintaan. |
securityContext.asNumber |
security_result.detection_fields.value |
Dipetakan langsung, dengan kunci asNumber . |
securityContext.asOrg |
security_result.detection_fields.value |
Dipetakan langsung, dengan kunci asOrg . |
securityContext.domain |
security_result.detection_fields.value |
Dipetakan langsung, dengan kunci domain . |
securityContext.isp |
security_result.detection_fields.value |
Dipetakan langsung, dengan kunci isp . |
securityContext.isProxy |
security_result.detection_fields.value |
Dipetakan langsung, dengan kunci anonymized IP . |
target.n.alternateId |
target.user.email_addresses /target.user.userid |
Jika merupakan alamat email, dipetakan ke target.user.email_addresses . Jika bukan alamat email, digunakan sebagai target.user.userid . |
target.n.detailEntry.clientAppId |
target.asset_id |
Dipetakan langsung, diawali dengan Client_app_id: . |
target.n.detailEntry.methodTypeUsed |
target.resource_ancestors.attribute.labels.value |
Dipetakan langsung, dengan kunci methodTypeUsed jika jenis target adalah AuthenticatorEnrollment. |
target.n.detailEntry.methodUsedVerifiedProperties |
target.resource_ancestors.attribute.labels.value |
Dipetakan langsung, dengan kunci methodUsedVerifiedProperties jika jenis target adalah AuthenticatorEnrollment. |
target.n.detailEntry.policyType |
target.resource_ancestors.attribute.labels.value |
Dipetakan langsung, dengan kunci Policy Type . |
target.n.detailEntry.signOnModeType |
security_result.detection_fields.value |
Dipetakan langsung, dengan kunci signOnModeType . |
target.n.displayName |
target.user.user_display_name / target.application / target.resource.name |
Dipetakan berdasarkan jenis target. |
target.n.id |
target.user.product_object_id / target.resource.product_object_id / target.resource_ancestors.product_object_id |
Dipetakan berdasarkan jenis target. |
target.n.type |
target.user.attribute.roles.name / target.resource.resource_subtype / target.resource_ancestors.resource_subtype |
Dipetakan berdasarkan jenis target. |
transaction.id |
network.session_id |
Dipetakan secara langsung. |
transaction.type |
additional.fields.value.string_value |
Dipetakan langsung sebagai nilai string dengan kunci type di additional.fields . |
uuid |
metadata.product_log_id |
Dipetakan secara langsung. |
T/A | metadata.vendor_name |
Tetapkan ke Okta . |
T/A | metadata.product_name |
Tetapkan ke Okta . |
T/A | extensions.auth.type |
Tetapkan ke SSO . |
T/A | is_alert |
Tetapkan ke true untuk peristiwa security.threat.detected dan user.account.report_suspicious_activity_by_enduser . |
T/A | is_significant |
Tetapkan ke true untuk peristiwa security.threat.detected dan user.account.report_suspicious_activity_by_enduser . |
Perubahan
2024-05-16
- Jika
is_alert
bernilai benar danis_significant
bernilai benar, tetapkansecurity_result.alert_state
sebagaiALERTING
.
2024-03-05
- Memperbarui kolom
security_result.action
untuk menunjukkan apakah traffic diizinkan atau diblokir.
2024-02-16
Perbaikan bug:
- Jika
target.0.type
adalahUser
atauAppUser
, maka pemetakantarget.0.alternateId
ketarget.user.userid
. - Jika
target.1.type
adalahUser
atauAppUser
, maka pemetakantarget.1.alternateId
ketarget.user.userid
.
2023-12-14
- Memetakan
securityContext.asNumber
kesecurity_result.detection_fields
. - Memetakan
legacyEventType
kesecurity_result.detection_fields
. - Menambahkan
conditional_check
sebelum menyetelmetadata.event_type
.
2023-06-28
- Memetakan nilai lengkap
debugContext.debugData.suspiciousActivityEventType
kesecurity_result.detection_fields
. - Memetakan nilai lengkap
debugContext.debugData.logOnlySecurityData.behaviors.New Device
kesecurity_result.detection_fields
.
2023-06-09
- Kolom
debugContext.debugData.deviceFingerprint
dipetakan ketarget.asset.asset_id
. - Memetakan nilai lengkap
debugContext.debugData.risk.reasons
kesecurity_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
keACTIVE
jikadebugContext.debugData.threatSuspected
adalahtrue
, jika tidak, dipetakan keFALSE_POSITIVE
.
24-03-2023
- Memetakan kolom
logOnlySecurityData
kesecurity_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
kehttp.parsed_user_agent
. - Memetakan
target.displayName
ketarget.resource_ancestors.name
. - Memetakan
targetfield.detailEntry.methodTypeUsed
ketarget.resource_ancestors.attribute.labels
. - Memetakan
targetfield.detailEntry.methodUsedVerifiedProperties
ketarget.resource_ancestors.attribute.labels
.
2023-02-20
- Mengubah
metadata.event_type
dariUSER_LOGIN
menjadiSTATUS_UPDATE
denganeventType
adalahuser.authentication.auth_via_AD_agent
2022-12-14
- Memetakan
debugContext.debugData.changedAttributes
kesecurity_result.detection_fields
. - Menambahkan pemeriksaan null untuk
detail.actor.alternateId
.
2022-11-17
- Kolom
target[n].alternateId
dipetakan ketarget.resource.attribute.labels
. - Kolom
detail.target.0.alternateId
dipetakan ketarget.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 diRATE_LIMIT
. - Menambahkan pemeriksaan null, tidak diketahui untuk
actor.displayName
.
2022-11-04
- Menambahkan dukungan untuk log yang memiliki beberapa peristiwa.
2022-10-15
signOnModeType
dipetakan kesecurity_result.detection_fields
.authenticationProvider
dipetakan kesecurity_result.detection_fields
.credentialProvider
dipetakan kesecurity_result.detection_fields
.device
dipetakan keadditional.fields
.zone
dipetakan keadditional.fields
.type
dipetakan keadditional.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
keprincipal.platform
. - Memetakan
client.device
keprincipal.asset.type
. - Memetakan
anonymized IP
(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
dariprincipal.user.role_name
menjadiprincipal.user.attribute.roles
. - Pemetaan yang diubah untuk
target.0.type
daritarget.user.role_name
menjaditarget.user.attribute.roles
. - Pemetaan yang diubah untuk
target.1.type
daritarget.user.role_name
menjaditarget.user.attribute.roles
.
2022-06-15
Peningkatan:
- untuk
target.0.type
==Token
. - Memetakan
target.0.detailEntry.clientAppId
ketarget.asset_id
. - Menambahkan pemeriksaan bersyarat untuk kolom 'transaction.id' yang dipetakan ke kolom UDM 'network.session_id'.
2022-06-03
Peningkatan:
- 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
Peningkatan:
- 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.
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.