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 resource OCI untuk menemukan kelemahan keamanan terkait konfigurasi 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 dalam waktu hampir real-time.
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps
- Tenancy Oracle Cloud Infrastructure aktif dengan Cloud Guard diaktifkan
- Akses administrator ke Konsol Infrastruktur Oracle Cloud
- 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 terinstal
- Docker terinstal (untuk membangun Fungsi OCI secara lokal)
- Akses ke Konsol Google Cloud (untuk pembuatan kunci API)
Membuat feed webhook di Google SecOps
Membuat feed
- Buka Setelan > Pengelolaan Data > Feed. Jika Anda menggunakan platform khusus SIEM, buka Settings > Feeds.
- Klik Tambahkan Feed Berita 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 Log type.
- Klik Berikutnya.
- Tentukan nilai untuk parameter input berikut:
- Pemisah (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 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.
Penting: Kunci rahasia hanya ditampilkan sekali 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://{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.
Membuat 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 akan dibuat dan ditampilkan dalam dialog.
- Klik Edit kunci API untuk membatasi kunci.
Membatasi kunci API
- Di halaman setelan kunci API:
- Name: Masukkan nama deskriptif (misalnya,
Chronicle Webhook API Key)
- Name: 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 Event responder Cloud Guard
Cloud Guard menggunakan responder Cloud Event untuk mengirimkan detail masalah ke OCI Events Service. Cloud Event responder adalah bagian dari resep Responder dan harus diaktifkan serta disetel untuk dijalankan secara otomatis.
Mengaktifkan aturan Cloud Event di resep Responder
- Login ke Oracle Cloud Infrastructure Console.
- Buka menu navigasi dan pilih Identity & Security > Cloud Guard > Urutan langkah.
- Pilih Responder Recipes.
- Klik resep responder yang dilampirkan ke target Anda.
- Di bagian Responder Rules, cari aturan Cloud Events.
- Jika statusnya Nonaktif:
- Buka menu Actions (tiga titik) dan pilih Edit.
- Ubah Status menjadi Enabled.
- 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 responder.
- Temukan aturan responder Cloud Event.
- Buka menu Actions (tiga titik) dan pilih Edit.
- Tetapkan Rule Trigger ke Execute Automatically.
- Centang kotak CONFIRM EXECUTE AUTOMATICALLY.
Klik Simpan.
Membuat 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 Oracle Cloud Infrastructure Console (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://{region}-chronicle.googleapis.com/v1/{parent}/logs:import)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 Events Service 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 Create Dynamic Group.
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 kompartemen root dipilih.
- Nama: Masukkan
- Di bagian Policy Builder, aktifkan Show manual editor.
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 Events yang memicu OCI Function saat Cloud Guard mendeteksi, menutup, atau memperbaiki masalah.
Membuat aturan Peristiwa
Di Oracle Cloud Infrastructure Console, buka menu navigasi, lalu pilih Observability & Management > Events Service > Rules.
Klik Buat Aturan.
Berikan detail konfigurasi berikut:
- Display Name: Masukkan
cloudguard-to-chronicle - Deskripsi: Masukkan
Forwards Cloud Guard problem events to Google SecOps via OCI Functions
- Display Name: Masukkan
Di bagian Rule Conditions:
- Tetapkan Condition ke Event Type.
- Tetapkan Service Name ke Cloud Guard.
- Tetapkan Jenis Peristiwa ke nilai berikut (pilih beberapa):
- Terdeteksi - Masalah
- Ditolak - Masalah
- Diperbaiki - Masalah
Di bagian Actions:
- Tetapkan Action Type ke Functions.
- Tetapkan Function Compartment ke kompartemen yang berisi aplikasi fungsi.
- Tetapkan Function Application ke cloudguard-chronicle-forwarder.
- Tetapkan Function ke cloudguard-to-chronicle.
Klik Buat Aturan.
Opsional: Filter menurut tingkat risiko
Untuk meneruskan hanya masalah dengan tingkat keparahan tinggi, tambahkan filter atribut ke aturan Peristiwa:
- Di bagian Rule Conditions, klik + Another Condition.
- Tetapkan Condition ke Attribute.
- 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 sampel, 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 dan memilih bagian Logs.
Cari entri log yang mengonfirmasi keberhasilan penerusan:
Received Cloud Guard event: com.oraclecloud.cloudguard.problemdetected Successfully forwarded event to Chronicle (HTTP 200)
Memverifikasi di Google SecOps
- Login ke Google SecOps.
- Buka Search dan buat kueri untuk peristiwa dengan jenis log
OCI_CLOUDGUARD. - Pastikan peristiwa masalah Cloud Guard muncul di hasil penelusuran.
Jika acara tidak muncul:
- Memverifikasi URL endpoint webhook, kunci API, dan kunci rahasia Chronicle dalam konfigurasi fungsi
- Pastikan aturan Events berada di region OCI yang benar (region pelaporan Cloud Guard)
- Memastikan bahwa Cloud Event responder diaktifkan dan disetel ke eksekusi otomatis
- Meninjau log fungsi untuk melihat pesan error
Referensi jenis peristiwa Cloud Guard
Cloud Guard memunculkan 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 telah 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 rahasia 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 (kueri per detik) maks. | 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 | Tetapkan ke "AUTHTYPE_UNSPECIFIED" jika product_event cocok dengan login |
| data.additionalDetails.problemDescription | metadata.description | Nilai dari data.additionalDetails.problemDescription jika tidak kosong, jika tidak, data.additionalDetails.description |
| data.additionalDetails.description | metadata.description | |
| has_user | metadata.event_type | Ditetapkan ke USER_RESOURCE_ACCESS jika has_user dan has_target_resource, USER_UNCATEGORIZED jika has_user, USER_LOGIN jika product_event cocok dengan login, STATUS_UPDATE jika has_principal, jika tidak, 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, jika tidak, product_event |
| product_event | metadata.product_event_type | |
| eventID | metadata.product_log_id | Nilai disalin langsung |
| versi | metadata.product_version | Nilai disalin langsung |
| observer | observer.domain.name | Domain yang diekstrak dari observer menggunakan grok |
| observer | observer.hostname | Nilai dari observer jika bukan IP |
| observer | observer.ip | Nilai dari observer 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 principal 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 langsung |
| principal_port | principal.port | Dikonversi ke 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, jika tidak, 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 | Tetapkan ke BLOCK jika tindakan cocok dengan pemblokiran, ALLOW jika berhasil, FAIL jika gagal, atau UNKNOWN |
| tindakan | security_result.action_details | Nilai disalin 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 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 langsung |
| data.additionalDetails.detectorRuleType | security_result.rule_name | Nilai disalin langsung |
| tingkat keseriusan, | security_result.severity | Setel ke INFORMATIONAL jika tingkat keparahan INFO, LOW jika Low, MEDIUM jika WARN, HIGH jika High, CRITICAL jika Critical |
| tingkat keseriusan, | security_result.severity_details | Nilai disalin langsung |
| target | target.administrative_domain | Domain yang diekstrak 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 ke 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, jika tidak, vnicDetails.0.vnicId |
| vnicDetails.0.vnicId | target.resource.product_object_id | |
| data.additionalDetails.impactedResourceType | target.resource.resource_subtype | Nilai disalin langsung |
| target_url | target.url | Nilai disalin langsung |
| target_user | target.user.userid | Nilai disalin langsung |
| produk | metadata.product_name | Nilai disalin langsung |
| vendor | metadata.vendor_name | Nilai disalin 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.