Mengumpulkan log Oracle Cloud Infrastructure - Oracle Cloud Guard
Dokumen ini menjelaskan cara mengonfigurasi Oracle Cloud Infrastructure Cloud Guard untuk mengirim log ke Google Security Operations menggunakan webhook.
Oracle Cloud Guard adalah layanan keamanan berbasis cloud yang memantau, mengidentifikasi, dan membantu mempertahankan postur keamanan yang kuat di Oracle Cloud Infrastructure (OCI). Cloud Guard memeriksa kelemahan keamanan terkait konfigurasi pada resource OCI dan mendeteksi aktivitas anomali. Saat Cloud Guard menemukan penyimpangan dari aturan detektor, Cloud Guard akan membuat peristiwa Masalah yang memberikan pemantauan keamanan komprehensif di seluruh tenancy OCI Anda. Integrasi ini menggunakan OCI Events Service dan OCI Functions untuk meneruskan peristiwa masalah Cloud Guard ke Google SecOps hampir secara real-time.
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps
- Tenancy Oracle Cloud Infrastructure yang aktif dengan Cloud Guard diaktifkan
- Akses administrator ke Konsol Oracle Cloud Infrastructure
- Izin untuk membuat dan mengelola aplikasi OCI Functions
- Izin untuk membuat aturan OCI Events dan topik Notifications
- Akses ke OCI Cloud Shell atau lingkungan lokal dengan Fn Project CLI yang diinstal
- Docker sudah diinstal (untuk membangun Fungsi OCI secara lokal)
- Akses ke Konsol Google Cloud (untuk pembuatan kunci API)
Membuat feed webhook di Google SecOps
Buat feed
- Buka Setelan SIEM > Feed.
- Klik Tambahkan Feed Baru.
- Di halaman berikutnya, klik Konfigurasi satu feed.
- Di kolom Nama feed, masukkan nama untuk feed (misalnya,
OCI Cloud Guard Problems). - Pilih Webhook sebagai Jenis sumber.
- Pilih Oracle Cloud Infrastructure - Oracle Cloud Guard sebagai Jenis log.
- Klik Berikutnya.
- Tentukan nilai untuk parameter input berikut:
- Pemisah pemisahan (opsional): Biarkan kosong (setiap pemanggilan fungsi mengirimkan satu peristiwa).
- Namespace aset: Namespace aset
- Label penyerapan: Label yang akan diterapkan ke peristiwa dari feed ini
- Klik Berikutnya.
- Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.
Buat dan simpan 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.
Penting: Kunci rahasia hanya ditampilkan satu kali dan tidak dapat diambil lagi. Jika Anda kehilangan kunci tersebut, Anda harus membuat kunci rahasia baru.
Mendapatkan URL endpoint feed
- Buka tab Detail untuk feed tersebut.
- Di bagian Endpoint Information, salin Feed endpoint URL.
Format URL-nya adalah:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateatau
https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateSimpan URL ini untuk langkah berikutnya.
Klik Done.
Buat kunci Google Cloud API
Chronicle memerlukan kunci API untuk autentikasi. Buat kunci API yang dibatasi di Konsol Google Cloud.
Buat kunci API
- Buka halaman Kredensial Konsol Google Cloud.
- Pilih project Anda (project yang terkait dengan instance Chronicle Anda).
- Klik Create credentials > API key.
- Kunci API dibuat dan ditampilkan dalam dialog.
- Klik Edit API key untuk membatasi kunci.
Membatasi kunci API
- Di halaman setelan API key:
- 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.
Mengaktifkan Cloud Guard Cloud Event responder
Cloud Guard menggunakan responder Cloud Event untuk memancarkan detail masalah ke OCI Events Service. Responder Cloud Event adalah bagian dari resep Responder dan harus diaktifkan serta disetel untuk dieksekusi secara otomatis.
Aktifkan aturan Cloud Event di resep Responder
- Login ke Konsol Oracle Cloud Infrastructure.
- Buka menu navigasi, lalu pilih Identity & Security > Cloud Guard > urutan langkah.
- Pilih Resep Responder.
- Klik resep responden yang dilampirkan ke target Anda.
- Di bagian Responder Rules, cari aturan Cloud Events.
- Jika statusnya Dinonaktifkan:
- Buka menu Tindakan (tiga titik) dan pilih Edit.
- Ubah Status menjadi Diaktifkan.
- Klik Simpan.
Mengonfigurasi eksekusi otomatis pada target
- Di Oracle Cloud Infrastructure Console, buka menu navigasi, lalu pilih Identity & Security > Cloud Guard > Configuration > Targets.
- Pilih kompartemen target.
- Di bagian Resources, pilih Responder Recipes.
- Klik link resep responden.
- Cari aturan responder Cloud Event.
- Buka menu Tindakan (tiga titik) dan pilih Edit.
- Setel Pemicu Aturan ke Jalankan Otomatis.
- Centang kotak KONFIRMASI EKSEKUSI OTOMATIS.
Klik Simpan.
Buat aplikasi OCI Functions
Buat aplikasi OCI Functions yang akan menghosting fungsi yang bertanggung jawab untuk meneruskan peristiwa Cloud Guard ke Google SecOps.
Membuat aplikasi
- Di Oracle Cloud Infrastructure Console, buka menu navigasi, lalu pilih Developer Services > Functions > Applications.
- Pilih kompartemen tempat Anda ingin membuat aplikasi.
- Klik Create Application.
- Berikan detail konfigurasi berikut:
- Nama: Masukkan
cloudguard-chronicle-forwarder - VCN: Pilih VCN dengan akses internet (diperlukan agar fungsi dapat menjangkau endpoint webhook Chronicle)
- Subnet: Pilih subnet publik atau subnet pribadi dengan gateway NAT yang dikonfigurasi
- Nama: Masukkan
- Klik Create.
Membuat dan men-deploy fungsi
Gunakan OCI Cloud Shell atau lingkungan lokal dengan Fn Project CLI untuk membuat dan men-deploy fungsi.
- Buka OCI Cloud Shell dari Konsol Oracle Cloud Infrastructure (klik ikon Cloud Shell di menu navigasi atas).
Siapkan konteks Fn untuk aplikasi OCI Functions Anda:
fn list context fn use context <your-region-context> fn update context oracle.compartment-id <compartment_OCID> fn update context registry <region-key>.ocir.io/<tenancy-namespace>/cloudguard-chronicleLakukan inisialisasi fungsi Python baru:
fn init --runtime python cloudguard-to-chronicle cd cloudguard-to-chronicleGanti konten file
func.pydengan kode berikut:import io import json import logging import requests from fdk import response def handler(ctx, data: io.BytesIO = None): """ OCI Function that receives Cloud Guard events from OCI Events Service and forwards them to Google SecOps (Chronicle) webhook endpoint. """ logger = logging.getLogger() try: cfg = ctx.Config() chronicle_endpoint = cfg.get("CHRONICLE_ENDPOINT") chronicle_api_key = cfg.get("CHRONICLE_API_KEY") chronicle_secret = cfg.get("CHRONICLE_SECRET") if not all([chronicle_endpoint, chronicle_api_key, chronicle_secret]): logger.error("Missing required configuration: CHRONICLE_ENDPOINT, CHRONICLE_API_KEY, or CHRONICLE_SECRET") return response.Response( ctx, response_data=json.dumps({"error": "Missing configuration"}), headers={"Content-Type": "application/json"}, status_code=500 ) event_data = json.loads(data.getvalue()) logger.info(f"Received Cloud Guard event: {event_data.get('eventType', 'unknown')}") webhook_url = f"{chronicle_endpoint}?key={chronicle_api_key}&secret={chronicle_secret}" headers = { "Content-Type": "application/json" } resp = requests.post( webhook_url, json=event_data, headers=headers, timeout=30 ) if resp.status_code >= 200 and resp.status_code < 300: logger.info(f"Successfully forwarded event to Chronicle (HTTP {resp.status_code})") else: logger.error(f"Failed to forward event to Chronicle (HTTP {resp.status_code}): {resp.text}") return response.Response( ctx, response_data=json.dumps({"status": resp.status_code}), headers={"Content-Type": "application/json"}, status_code=200 ) except Exception as e: logger.error(f"Error processing Cloud Guard event: {str(e)}") return response.Response( ctx, response_data=json.dumps({"error": str(e)}), headers={"Content-Type": "application/json"}, status_code=500 )Ganti konten file
requirements.txt:fdk>=0.1.0 requests>=2.25.0Deploy fungsi ke aplikasi:
fn -v deploy --app cloudguard-chronicle-forwarderTunggu hingga deployment selesai.
Mengonfigurasi variabel lingkungan fungsi
- Di Oracle Cloud Infrastructure Console, buka menu navigasi, lalu pilih Developer Services > Functions > Applications.
- Klik aplikasi cloudguard-chronicle-forwarder.
- Di bagian Resources, pilih Functions.
- Klik fungsi cloudguard-to-chronicle.
- Di bagian Resources, pilih Configuration.
Klik Edit, lalu tambahkan pasangan nilai kunci berikut:
Kunci Nilai CHRONICLE_ENDPOINTURL endpoint webhook Chronicle (misalnya, https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate)CHRONICLE_API_KEYKunci Google Cloud API yang dibuat untuk webhook Chronicle CHRONICLE_SECRETKunci rahasia webhook Chronicle Klik Simpan.
Membuat kebijakan IAM untuk OCI Functions
Layanan OCI Functions dan Layanan Events memerlukan kebijakan IAM untuk memanggil fungsi.
Membuat grup dinamis untuk fungsi
- Di Oracle Cloud Infrastructure Console, buka menu navigasi, lalu pilih Identity & Security > Domains.
- Pilih domain Default.
- Di bagian Identity domain resources, pilih Dynamic Groups.
- Klik Buat Grup Dinamis.
Berikan detail konfigurasi berikut:
- Nama: Masukkan
cloudguard-chronicle-functions - Deskripsi: Masukkan
Dynamic group for Cloud Guard to Chronicle forwarder function - Aturan Pencocokan: Masukkan aturan berikut:
ALL {resource.type = 'fnfunc', resource.compartment.id = '<compartment_OCID>'}- Nama: Masukkan
Klik Create.
Membuat kebijakan IAM
- Di Oracle Cloud Infrastructure Console, buka menu navigasi, lalu pilih Identity & Security > Policies.
- Pastikan Anda berada di root compartment.
- Klik Create Policy.
- Berikan detail konfigurasi berikut:
- Nama: Masukkan
cloudguard-chronicle-policy - Deskripsi: Masukkan
Allows Events Service to invoke Cloud Guard Chronicle forwarder function - Compartment: Pastikan root compartment dipilih.
- Nama: Masukkan
- Di bagian Pembuat Kebijakan, alihkan Tampilkan editor manual.
Di kolom Statement, masukkan pernyataan kebijakan berikut:
Allow dynamic-group cloudguard-chronicle-functions to use fn-function in compartment <compartment_name> Allow dynamic-group cloudguard-chronicle-functions to use fn-invocation in compartment <compartment_name> Allow service cloudguardevents to use fn-function in compartment <compartment_name> Allow service cloudguardevents to use fn-invocation in compartment <compartment_name>Klik Create.
Membuat aturan OCI Events untuk Cloud Guard
Buat aturan Peristiwa yang memicu Fungsi OCI saat Cloud Guard mendeteksi, menutup, atau memulihkan masalah.
Buat aturan Peristiwa
Di Oracle Cloud Infrastructure Console, buka menu navigasi, lalu pilih Observability & Management > Events Service > Rules.
Klik Buat Aturan.
Berikan detail konfigurasi berikut:
- Nama Tampilan: Masukkan
cloudguard-to-chronicle - Deskripsi: Masukkan
Forwards Cloud Guard problem events to Google SecOps via OCI Functions
- Nama Tampilan: Masukkan
Di bagian Kondisi Aturan:
- Tetapkan Kondisi ke Jenis Peristiwa.
- Tetapkan Service Name ke Cloud Guard.
- Tetapkan Jenis Peristiwa ke berikut ini (pilih beberapa):
- Terdeteksi - Masalah
- Ditolak - Masalah
- Diperbaiki - Masalah
Di bagian Tindakan:
- Tetapkan Jenis Tindakan ke Fungsi.
- Tetapkan Function Compartment ke kompartemen yang berisi aplikasi fungsi.
- Setel Function Application ke cloudguard-chronicle-forwarder.
- Tetapkan Function ke cloudguard-to-chronicle.
Klik Buat Aturan.
Opsional: Memfilter menurut tingkat risiko
Untuk meneruskan hanya masalah dengan tingkat keparahan tinggi, tambahkan filter atribut ke aturan Peristiwa:
- Di bagian Kondisi Aturan, klik + Kondisi Lainnya.
- Setel Kondisi ke Atribut.
- Tetapkan Nama Atribut ke
riskLevel. Tetapkan Nilai Atribut ke tingkat risiko yang diinginkan:
CRITICALHIGH
Memverifikasi integrasi
Menguji fungsi secara manual
- Di Oracle Cloud Infrastructure Console, buka menu navigasi, lalu pilih Developer Services > Functions > Applications.
- Klik aplikasi cloudguard-chronicle-forwarder.
- Di bagian Resources, pilih Functions.
- Klik fungsi cloudguard-to-chronicle.
Klik Invoke untuk menguji fungsi dengan data contoh, atau gunakan OCI Cloud Shell:
echo '{"eventType":"com.oraclecloud.cloudguard.problemdetected","cloudEventsVersion":"0.1","eventID":"test-event-001","data":{"compartmentId":"ocid1.compartment.oc1..example","resourceName":"test-problem","additionalDetails":{"riskLevel":"HIGH","problemDescription":"Test problem for integration verification","status":"OPEN","region":"us-ashburn-1"}}}' | fn invoke cloudguard-chronicle-forwarder cloudguard-to-chronicleVerifikasi log fungsi dengan membuka Developer Services > Functions > Applications > cloudguard-chronicle-forwarder, lalu pilih bagian Logs.
Cari entri log yang mengonfirmasi penerusan berhasil:
Received Cloud Guard event: com.oraclecloud.cloudguard.problemdetected Successfully forwarded event to Chronicle (HTTP 200)
Memverifikasi di Google SecOps
- Login ke Google SecOps.
- Buka Penelusuran dan kueri untuk peristiwa dengan jenis log
OCI_CLOUDGUARD. - Pastikan peristiwa masalah Cloud Guard muncul di hasil penelusuran.
Jika acara tidak muncul:
- Verifikasi URL endpoint webhook Chronicle, kunci API, dan kunci rahasia dalam konfigurasi fungsi
- Pastikan aturan Peristiwa berada di region OCI yang benar (region pelaporan Cloud Guard)
- Pastikan bahwa responder Cloud Event diaktifkan dan disetel untuk dieksekusi secara otomatis
- Meninjau log fungsi untuk melihat pesan error
Referensi jenis peristiwa Cloud Guard
Cloud Guard memancarkan jenis peristiwa berikut melalui OCI Events Service:
| Jenis Peristiwa | Pemicu |
|---|---|
com.oraclecloud.cloudguard.problemdetected |
Masalah baru terdeteksi |
com.oraclecloud.cloudguard.problemdismissed |
Masalah ditutup |
com.oraclecloud.cloudguard.problemremediated |
Masalah diperbaiki |
com.oraclecloud.cloudguard.sightingdetected |
Penampakan baru terdeteksi |
Referensi metode autentikasi
Feed webhook Chronicle mendukung beberapa metode autentikasi. Pilih metode yang didukung 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 pilihan 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://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?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 |
|---|---|---|
| contentType | additional.fields | Digabungkan dari berbagai kolom tambahan |
| cloudEventsVersion | additional.fields | |
| data.additionalDetails.reason | additional.fields | |
| data.additionalDetails.tenantId | additional.fields | |
| data.additionalDetails.problemType | additional.fields | |
| data.resourceName | additional.fields | |
| data.resourceId | additional.fields | |
| status | additional.fields | |
| problem_recommendation | additional.fields | |
| compartment_id | additional.fields | |
| compartment_name | additional.fields | |
| product_event | extensions.auth.type | Disetel ke "AUTHTYPE_UNSPECIFIED" jika product_event cocok dengan login |
| data.additionalDetails.problemDescription | metadata.description | Nilai dari data.additionalDetails.problemDescription jika tidak kosong, atau data.additionalDetails.description |
| data.additionalDetails.description | metadata.description | |
| has_user | metadata.event_type | Ditetapkan ke USER_RESOURCE_ACCESS jika memiliki has_user dan has_target_resource, USER_UNCATEGORIZED jika memiliki has_user, USER_LOGIN jika product_event cocok dengan login, STATUS_UPDATE jika memiliki has_principal, atau GENERIC_EVENT |
| has_target_resource | metadata.event_type | |
| product_event | metadata.event_type | |
| has_principal | metadata.event_type | |
| eventType | metadata.product_event_type | Nilai dari eventType jika tidak kosong, atau product_event |
| product_event | metadata.product_event_type | |
| eventID | metadata.product_log_id | Nilai disalin secara langsung |
| versi | metadata.product_version | Nilai disalin secara langsung |
| observer | observer.domain.name | Mengekstrak domain dari pengamat menggunakan grok |
| observer | observer.hostname | Nilai dari pengamat jika bukan IP |
| observer | observer.ip | Nilai dari pengamat jika IP |
| utama | principal.administrative_domain | Domain yang diekstrak dari principal atau principal_host menggunakan grok |
| principal_host | principal.administrative_domain | |
| data.additionalDetails.problemAdditionalDetails.public_ips | principal.asset.ip | Nilai dari data.additionalDetails.problemAdditionalDetails.public_ips jika tidak kosong, atau vnicDetails.0.vnicPublicIp jika tidak kosong, atau dari principal jika IP, atau principal_host jika IP |
| vnicDetails.0.vnicPublicIp | principal.asset.ip | |
| utama | principal.asset.ip | |
| principal_host | principal.asset.ip | |
| utama | principal.hostname | Nilai dari akun utama jika bukan IP, atau principal_host jika bukan IP |
| principal_host | principal.hostname | |
| data.additionalDetails.problemAdditionalDetails.public_ips | principal.ip | Nilai dari data.additionalDetails.problemAdditionalDetails.public_ips jika tidak kosong, atau vnicDetails.0.vnicPublicIp jika tidak kosong, atau dari principal jika IP, atau principal_host jika IP |
| vnicDetails.0.vnicPublicIp | principal.ip | |
| utama | principal.ip | |
| principal_host | principal.ip | |
| data.additionalDetails.region | principal.location.name | Nilai disalin secara langsung |
| principal_port | principal.port | Dikonversi menjadi bilangan bulat dari principal_port |
| data.additionalDetails.resourceName | principal.resource.name | Nilai dari data.additionalDetails.resourceName jika tidak kosong, atau data.additionalDetails.principalResourceName |
| data.additionalDetails.principalResourceName | principal.resource.name | |
| data.additionalDetails.resourceId | principal.resource.product_object_id | Nilai dari data.additionalDetails.resourceId jika tidak kosong, atau data.additionalDetails.principalResourceId |
| data.additionalDetails.principalResourceId | principal.resource.product_object_id | |
| data.additionalDetails.resourceType | principal.resource.resource_subtype | Nilai dari data.additionalDetails.resourceType jika tidak kosong, atau data.additionalDetails.principalResourceType |
| data.additionalDetails.principalResourceType | principal.resource.resource_subtype | |
| data.additionalDetails.resourceName | principal.user.userid | Nilai dari data.additionalDetails.resourceName jika data.additionalDetails.resourceType == "User", atau dari data.additionalDetails.principalResourceName jika data.additionalDetails.principalResourceType == "User" |
| data.additionalDetails.principalResourceName | principal.user.userid | |
| tindakan | security_result.action | Disetel ke BLOCK jika tindakan cocok dengan pemblokiran, ALLOW jika berhasil, FAIL jika gagal, atau UNKNOWN jika tidak diketahui |
| tindakan | security_result.action_details | Nilai disalin secara langsung |
| data.additionalDetails.tacticName | security_result.attack_details.tactics | Nilai disalin langsung ke tactic_data.name, lalu digabungkan |
| data.additionalDetails.techniqueName | security_result.attack_details.techniques | Nilai disalin langsung ke technique_data.name, lalu digabungkan |
| data.additionalDetails.confidence | security_result.confidence_score | Nilai disalin secara langsung |
| sightingType | security_result.detection_fields | Digabungkan dari label sightingType, sightingScore, riskScore |
| sightingScore | security_result.detection_fields | |
| riskScore | security_result.detection_fields | |
| data.additionalDetails.detectorRuleId | security_result.rule_id | Nilai disalin secara langsung |
| data.additionalDetails.detectorRuleType | security_result.rule_name | Nilai disalin secara langsung |
| tingkat keseriusan, | security_result.severity | Disetel ke INFORMATIONAL jika tingkat keparahan dalam INFO, LOW jika Rendah, MEDIUM jika WARN, HIGH jika Tinggi, CRITICAL jika Kritis |
| tingkat keseriusan, | security_result.severity_details | Nilai disalin secara langsung |
| target | target.administrative_domain | Mengekstrak domain dari target atau target_host menggunakan grok |
| target_host | target.administrative_domain | |
| target | target.hostname | Nilai dari target jika bukan IP, atau target_host jika bukan IP |
| target_host | target.hostname | |
| target | target.ip | Nilai dari target jika IP, atau target_host jika IP |
| target_host | target.ip | |
| target_port | target.port | Dikonversi menjadi bilangan bulat dari target_port |
| targetId | target.resource.attribute.labels | Digabungkan dari berbagai kolom label |
| labels | target.resource.attribute.labels | |
| vnicAttachmentId | target.resource.attribute.labels | |
| vnicAttachmentDisplayName | target.resource.attribute.labels | |
| subnet | target.resource.attribute.labels | |
| instance_ocid | target.resource.attribute.labels | |
| route_table_ocids | target.resource.attribute.labels | |
| security_list_ocids | target.resource.attribute.labels | |
| data.additionalDetails.impactedResourceName | target.resource.name | Nilai dari data.additionalDetails.impactedResourceName jika tidak kosong, atau vnicDetails.0.vnicDisplayName |
| vnicDetails.0.vnicDisplayName | target.resource.name | |
| data.additionalDetails.impactedResourceId | target.resource.product_object_id | Nilai dari data.additionalDetails.impactedResourceId jika tidak kosong, atau vnicDetails.0.vnicId |
| vnicDetails.0.vnicId | target.resource.product_object_id | |
| data.additionalDetails.impactedResourceType | target.resource.resource_subtype | Nilai disalin secara langsung |
| target_url | target.url | Nilai disalin secara langsung |
| target_user | target.user.userid | Nilai disalin secara langsung |
| produk | metadata.product_name | Nilai disalin secara langsung |
| vendor | metadata.vendor_name | Nilai disalin secara langsung |
data.additionalDetails.tacticName |
security_result.attack_details.tactics.name |
Dipetakan dari log perubahan |
data.additionalDetails.techniqueName |
security_result.attack_details.techniques.name |
Dipetakan dari log perubahan |
Log Perubahan
Melihat Log Perubahan untuk parser ini
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.