Mengumpulkan log Cisco Identity Intelligence
Dokumen ini menjelaskan cara mengonfigurasi Cisco Identity Intelligence untuk mengirim log ke Google Security Operations menggunakan webhook.
Cisco Identity Intelligence (sebelumnya Oort Security) adalah platform deteksi dan respons ancaman identitas yang terus memantau perilaku pengguna, pola autentikasi, penggunaan perangkat, dan hak istimewa akses di seluruh penyedia identitas. Solusi ini mendeteksi ancaman berbasis identitas, kesalahan konfigurasi, dan pelanggaran kepatuhan dengan menganalisis aktivitas pengguna, pemeriksaan keamanan yang gagal, skor kepercayaan, dan perilaku berisiko.
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps
- Akses istimewa ke tenant Cisco Identity Intelligence
- Izin administratif untuk mengelola integrasi di Cisco Identity Intelligence
- Akses ke Konsol Google Cloud (untuk pembuatan kunci API)
Membuat feed webhook di Google SecOps
Buat feed
- Buka Setelan SIEM > Feed.
- Klik Tambahkan Feed Berita Baru.
- Di halaman berikutnya, klik Konfigurasi satu feed.
- Di kolom Nama feed, masukkan nama untuk feed (misalnya,
Cisco Identity Intelligence Events). - Pilih Webhook sebagai Source type.
- Pilih Cisco Identity Intelligence sebagai Log type.
- Klik Berikutnya.
- Tentukan nilai untuk parameter input berikut:
- Pemisah pemisahan (opsional): Masukkan
\nuntuk memisahkan peristiwa multibaris. - Namespace aset: Namespace aset
- Label penyerapan: Label yang akan diterapkan ke peristiwa dari feed ini
- Pemisah pemisahan (opsional): Masukkan
- Klik Berikutnya.
- Tinjau konfigurasi feed berita baru Anda di layar Finalize, lalu klik Submit.
Membuat dan menyimpan kunci rahasia
Setelah membuat feed, Anda harus membuat kunci rahasia untuk autentikasi:
- Di halaman detail feed, klik Buat Kunci Rahasia.
- Dialog akan menampilkan kunci rahasia.
- Salin dan simpan kunci rahasia dengan aman.
Mendapatkan URL endpoint feed
- Buka tab Detail untuk feed tersebut.
- Di bagian Endpoint Information, salin Feed endpoint URL.
Format URL-nya adalah:
https://{region}-chronicle.googleapis.com/v1/{parent}/logs:importDengan
{region}adalah region instance Google SecOps Anda (misalnya,us,europe, atauasia-southeast1), dan{parent}adalah jalur resource dalam formatprojects/<PROJECT_ID>/locations/<LOCATION>/instances/<INSTANCE_ID>/logTypes/<LOG_TYPE>.Simpan URL ini untuk langkah berikutnya.
Klik Done.
Membuat kunci Google Cloud API
Chronicle memerlukan kunci API untuk autentikasi. Buat kunci API yang dibatasi di Konsol Google Cloud.
Buat kunci API
- Buka halaman Credentials Konsol Google Cloud.
- Pilih project Anda (project yang terkait dengan instance Chronicle Anda).
- Klik Create credentials > kunci API.
- Kunci API dibuat dan ditampilkan dalam dialog.
- Klik Edit API key untuk membatasi kunci.
Membatasi kunci API
- Di halaman setelan kunci API:
- Nama: Masukkan nama deskriptif (misalnya,
Chronicle Webhook API Key)
- Nama: Masukkan nama deskriptif (misalnya,
- Di bagian API restrictions:
- Pilih Restrict key.
- Di dropdown Select APIs, telusuri dan pilih Google SecOps API (atau Chronicle API).
- Klik Simpan.
- Salin nilai kunci API dari kolom API key di bagian atas halaman.
- Simpan kunci API dengan aman.
Mengonfigurasi webhook Cisco Identity Intelligence
Membuat URL webhook
Gabungkan URL endpoint Chronicle dan kunci API:
<ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>Contoh:
https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?key=AIzaSyD...&secret=abcd1234...
Ganti kode berikut:
<ENDPOINT_URL>: URL endpoint feed Chronicle yang disalin sebelumnya<API_KEY>: Kunci Google Cloud API yang dibuat sebelumnya<SECRET_KEY>: Kunci rahasia webhook Chronicle yang dibuat sebelumnya
Membuat target notifikasi webhook di Cisco Identity Intelligence
- Login ke Cisco Identity Intelligence.
- Buka Integrations.
- Klik Add Integration.
- Scroll ke bawah ke bagian Webhook.
- Klik Add Webhook Target.
- Berikan detail konfigurasi berikut:
- Name: Masukkan nama deskriptif (misalnya,
Chronicle SIEM Integration). - URL Webhook: Tempel URL endpoint lengkap dengan kunci API dan kunci rahasia dari atas.
- Authorization Type: Pilih API Key.
- API Key Name: Masukkan nama kunci (misalnya,
x-goog-chronicle-auth). - Nilai Kunci API: Masukkan kunci Google Cloud API.
- Name: Masukkan nama deskriptif (misalnya,
- Luaskan bagian Invocation HTTP Parameters.
- Tambahkan parameter berikut dengan jenis Header:
- Kunci:
Content-Type, Nilai:application/json - Kunci:
Accept, Nilai:application/json
- Kunci:
- Di bagian Gunakan target ini untuk, pilih Pemeriksaan Gagal untuk menerima notifikasi saat pemeriksaan identitas mendeteksi hasil yang gagal.
Klik Simpan.
Menguji koneksi webhook
- Di halaman Integrations, temukan target notifikasi webhook yang Anda buat.
- Klik menu tiga titik di sisi kanan baris.
- Pilih Test Connectivity.
- Pastikan pesan pengujian berhasil dikirim.
Mengaktifkan webhook untuk pemeriksaan identitas
Setelah membuat target notifikasi webhook, Anda harus mengaktifkannya untuk pemeriksaan identitas tertentu yang ingin Anda pantau.
- Buka halaman detail Pemeriksaan yang diinginkan di Cisco Identity Intelligence.
- Luaskan dropdown di pojok kanan atas halaman.
- Centang kotak untuk target notifikasi webhook yang Anda buat.
Ulangi untuk setiap pemeriksaan yang ingin Anda kirim ke Google SecOps.
Untuk mengetahui informasi selengkapnya, lihat dokumentasi webhook Cisco Identity Intelligence.
Referensi metode autentikasi
Feed webhook Chronicle mendukung beberapa metode autentikasi. Pilih metode yang didukung oleh vendor Anda.
Metode 1: Header kustom (Direkomendasikan)
Jika vendor Anda mendukung header HTTP kustom, gunakan metode ini untuk keamanan yang lebih baik.
Format permintaan:
POST <ENDPOINT_URL> HTTP/1.1 Content-Type: application/json x-goog-chronicle-auth: <API_KEY> x-chronicle-auth: <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
Kelebihan:
- Kunci API dan secret tidak terlihat di URL
- Lebih aman (header tidak dicatat dalam log akses server web)
- Metode yang lebih disukai jika vendor mendukungnya
Metode 2: Parameter kueri
Jika vendor Anda tidak mendukung header kustom, tambahkan kredensial ke URL.
Format URL:
<ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>Contoh:
https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?key=AIzaSyD...&secret=abcd1234...Format permintaan:
POST <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY> HTTP/1.1 Content-Type: application/json { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
Kekurangan:
- Kredensial terlihat di URL
- Dapat dicatat dalam log akses server web
- Kurang aman dibandingkan header
Metode 3: Hybrid (URL + Header)
Beberapa konfigurasi menggunakan kunci API di URL dan kunci rahasia di header.
Format permintaan:
POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1 Content-Type: application/json x-chronicle-auth: <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
Nama header autentikasi
Chronicle menerima nama header berikut untuk autentikasi:
Untuk kunci API:
x-goog-chronicle-auth(direkomendasikan)X-Goog-Chronicle-Auth(tidak peka huruf besar/kecil)
Untuk kunci rahasia:
x-chronicle-auth(direkomendasikan)X-Chronicle-Auth(tidak peka huruf besar/kecil)
Batasan dan praktik terbaik webhook
Batas permintaan
| Batas | Nilai |
|---|---|
| Ukuran permintaan maksimum | 4 MB |
| QPS Maks (kueri per detik) | 15.000 |
| Waktu tunggu permintaan | 30 seconds |
| Perilaku percobaan ulang | Otomatis dengan backoff eksponensial |
Tabel pemetaan UDM
| Kolom Log | Pemetaan UDM | Logika |
|---|---|---|
| akun | account_label.value | Nilai disalin secara langsung |
| akun | account_label.key | Tetapkan ke "account" |
| account_label | security_result.detection_fields | Digabungkan ke detection_fields |
| additional_detaildescription.key | additional_detaildescription.key | Setel ke "deskripsi detail" |
| detaildescription | additional_detaildescription.value.list_value.values | Digabungkan dari detaildescription |
| additional_detaildescription | event.idm.read_only_udm.additional.fields | Digabungkan ke additional.fields |
| additional_recommendedaction.key | additional_recommendedaction.key | Ditetapkan ke "tindakan yang disarankan" |
| recommendedAction | additional_recommendedaction.value.list_value.values | Merged from recommendedAction |
| additional_recommendedaction | event.idm.read_only_udm.additional.fields | Digabungkan ke additional.fields |
| data1 | usersFailing_label | Nilai disalin secara langsung |
| data.login | login_label | Nilai disalin secara langsung |
| detail-type | security_result.summary | Nilai disalin langsung |
| detail.id | security_result.rule_id | Nilai disalin secara langsung |
| detail.title | security_result.rule_name | Nilai disalin secara langsung |
| detail.severity | security_result.severity | Nilai dari detail.severity jika dalam [CRITICAL,ERROR,HIGH,INFORMATIONAL,LOW,MEDIUM], atau MEDIUM jika sedang |
| detaildescription | value_array.string_value | Nilai disalin langsung |
| detailsdata.key | add_label.value, add_label.key | Nilai dari detailsdata.value, kunci sebagai "loginDetails %{index} details %{detailindex} %{detailsdata.key}" jika bukan failedSigninDetails atau ips |
| detailsdata.value | add_label.value, add_label.key | |
| detailsdata.key | security_result.detection_fields | add_label digabungkan jika kondisi terpenuhi |
| detailsdata.value | security_result.detection_fields | |
| field_.value | security_result.detection_fields | Digabungkan untuk berbagai kolom bertingkat di json_array (msg, ipInfo, asn, koordinat, first_event, second_event, locations) dengan kunci seperti "%{index} %{detailindex} %{index1} %{key}" dll., tidak termasuk ipAddress, ip, dll. |
| field_.key | security_result.detection_fields | |
| id | metadata.product_log_id | Nilai disalin langsung |
| login_label | principal.user.email_addresses | Digabungkan jika cocok dengan regex email |
| msg.ipAddress | principal.ip | Digabungkan jika tidak kosong |
| msg.first_event.ip_address | principal.ip | Digabungkan jika tidak kosong |
| msg.second_event.ip_address | principal.ip | Digabungkan jika tidak kosong |
| msg_travels_first_event_ip_address | principal.ip | Digabungkan jika tidak kosong |
| msg_travels_second_event_ip_address | principal.ip | |
| recommendedAction | value_array.string_value | Nilai disalin secara langsung |
| security_result | event.idm.read_only_udm.security_result | Digabungkan ke security_result |
| sumber | source_label.value | Nilai disalin secara langsung |
| sumber | source_label.key | Setel ke "source" |
| source_label | event.idm.read_only_udm.src.labels | Digabung ke src.labels |
| waktu | @timestamp | Diuraikan menggunakan filter tanggal dengan ISO8601, RFC 3339, yyyy-MM-ddTHH:mm:ss.SSSSSSZ |
| usersFailing_label | principal.user.email_addresses | Digabungkan jika cocok dengan regex email |
| versi | metadata.product_version | Nilai disalin secara langsung |
| has_principal | event.idm.read_only_udm.metadata.event_type | Ditetapkan ke "STATUS_UPDATE" jika has_principal bernilai benar, atau "USER_UNCATEGORIZED" jika has_user bernilai benar, atau "GENERIC_EVENT" |
| has_user | event.idm.read_only_udm.metadata.event_type | |
| metadata.product_name | metadata.product_name | Ditetapkan ke "OORT" |
| metadata.vendor_name | metadata.vendor_name | Ditetapkan ke "OORT" |
detail.published |
event.idm.read_only_udm.metadata.collected_timestamp |
Dipetakan dari log perubahan |
detail.login |
event.idm.read_only_udm.principal.user.userid |
Dipetakan dari log perubahan |
detail.userTrustLevel |
event.idm.read_only_udm.principal.user.attribute.labels |
Dipetakan dari log perubahan |
detail.login |
event.idm.read_only_udm.principal.user.user_display_name |
Dipetakan dari log perubahan |
detail.checkTopics |
event.idm.read_only_udm.security_result.category_details |
Dipetakan dari log perubahan |
region |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
detail.checkId |
event.idm.read_only_udm.security_result.detection_fields |
Dipetakan dari log perubahan |
detail.checkScope |
event.idm.read_only_udm.security_result.detection_fields |
Dipetakan dari log perubahan |
detail.frameworks |
event.idm.read_only_udm.security_result.detection_fields |
Dipetakan dari log perubahan |
detail.explainabilityEventIds |
event.idm.read_only_udm.security_result.detection_fields |
Dipetakan dari log perubahan |
data.value |
event.idm.read_only_udm.security_result.detection_fields |
Dipetakan dari log perubahan |
Log Perubahan
Melihat Log Perubahan untuk parser ini
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.