Mengumpulkan log Audit Infrastruktur Oracle Cloud

Didukung di:

Dokumen ini menjelaskan cara menyerap log Audit Oracle Cloud Infrastructure ke Google Security Operations menggunakan Amazon S3.

Sebelum memulai

Pastikan Anda memiliki prasyarat berikut:

  • Instance Google SecOps.
  • Akun Infrastruktur Oracle Cloud dengan izin untuk membuat dan mengelola:
    • Hub Konektor Layanan
    • Oracle Functions
    • Vault dan Secret
    • Grup Dinamis dan Kebijakan IAM
    • Logging
  • Akun AWS dengan izin untuk membuat dan mengelola:
    • Bucket S3
    • Pengguna dan kebijakan IAM

Buat bucket Amazon S3

  1. Login ke AWS Management Console.
  2. Buka S3 > Create bucket.
  3. Berikan detail konfigurasi berikut:
    • Nama bucket: Masukkan nama unik (misalnya, oci-audit-logs-bucket).
    • Region AWS: Pilih region (misalnya, us-east-1).
    • Pertahankan setelan default untuk opsi lainnya.
  4. Klik Create bucket.
  5. Simpan Nama dan Region bucket untuk digunakan nanti.

Membuat pengguna IAM di AWS untuk OCI Functions

  1. Login ke AWS Management Console.
  2. Buka IAM > Users > Add users.
  3. Berikan detail konfigurasi berikut:
    • Nama pengguna: Masukkan nama pengguna (misalnya, oci-functions-s3-user).
    • Jenis akses: Pilih Kunci akses - Akses terprogram.
  4. Klik Berikutnya: Izin.
  5. Klik Attach existing policies directly.
  6. Telusuri dan pilih kebijakan AmazonS3FullAccess.
  7. Klik Berikutnya: Tanda.
  8. Klik Berikutnya: Tinjau.
  9. Klik Buat pengguna.
  10. Penting: Di halaman keberhasilan, salin dan simpan kredensial berikut:
    • ID kunci akses
    • Kunci akses rahasia

Menyimpan kredensial AWS di OCI Vault

Untuk menyimpan kredensial AWS secara aman, Anda harus menggunakan Oracle Cloud Infrastructure Vault, bukan meng-hardcode-nya dalam kode fungsi.

Membuat Vault dan Kunci Enkripsi Master

  1. Login ke Oracle Cloud Console.
  2. Buka Identitas dan Keamanan > Vault.
  3. Jika Anda tidak memiliki Vault, klik Buat Vault.
  4. Berikan detail konfigurasi berikut:
    • Buat di Kompartemen: Pilih kompartemen Anda.
    • Nama: Masukkan nama (misalnya, oci-functions-vault).
  5. Klik Create Vault.
  6. Setelah Vault dibuat, klik nama Vault untuk membukanya.
  7. Di bagian Master Encryption Keys, klik Create Key.
  8. Berikan detail konfigurasi berikut:
    • Mode Perlindungan: Software
    • Nama: Masukkan nama (misalnya, oci-functions-key).
    • Key Shape: Algorithm: AES
    • Bentuk Kunci: Panjang: 256 bit
  9. Klik Buat Kunci.

Membuat secret untuk kredensial AWS

  1. Di Vault, di bagian Secrets, klik Create Secret.
  2. Berikan detail konfigurasi berikut untuk kunci akses AWS:
    • Buat di Kompartemen: Pilih kompartemen Anda.
    • Nama: aws-access-key
    • Deskripsi: Kunci akses AWS untuk S3
    • Encryption Key: Pilih Master Encryption Key yang Anda buat.
    • Isi Jenis Rahasia: Teks Biasa
    • Secret Contents: Tempelkan ID kunci akses AWS Anda.
  3. Klik Buat Secret.
  4. Salin dan simpan OCID rahasia ini (tampilannya seperti ocid1.vaultsecret.oc1...).
  5. Klik Create Secret lagi untuk membuat secret kedua.
  6. Berikan detail konfigurasi berikut untuk kunci rahasia AWS:
    • Buat di Kompartemen: Pilih kompartemen Anda.
    • Nama: aws-secret-key
    • Deskripsi: Kunci rahasia AWS untuk S3
    • Encryption Key: Pilih Master Encryption Key yang sama.
    • Isi Jenis Rahasia: Teks Biasa
    • Secret Contents: Tempelkan kunci akses rahasia AWS Anda.
  7. Klik Buat Secret.
  8. Salin dan simpan OCID rahasia ini.

Membuat Grup Dinamis untuk OCI Functions

  1. Login ke Oracle Cloud Console.
  2. Buka Identitas & Keamanan > Identitas > Grup Dinamis.
  3. Klik Buat Grup Dinamis.
  4. Berikan detail konfigurasi berikut:

    • Nama: oci-functions-dynamic-group
    • Deskripsi: Grup dinamis untuk Fungsi OCI guna mengakses secret Vault
    • Aturan Pencocokan: Masukkan aturan berikut (ganti <your_compartment_ocid> dengan OCID kompartemen Anda):

      ALL {resource.type = 'fnfunc', resource.compartment.id = '<your_compartment_ocid>'}
      
  5. Klik Create.

Membuat Kebijakan IAM untuk akses Vault

  1. Login ke Oracle Cloud Console.
  2. Buka Identitas & Keamanan > Identitas > Kebijakan.
  3. Pilih kompartemen tempat Anda ingin membuat kebijakan.
  4. Klik Create Policy.
  5. Berikan detail konfigurasi berikut:

    • Nama: oci-functions-vault-access-policy
    • Deskripsi: Mengizinkan OCI Functions membaca secret dari Vault
    • Pembuat Kebijakan: Aktifkan/nonaktifkan Tampilkan editor manual.
    • Pernyataan kebijakan: Masukkan berikut ini (ganti <compartment_name> dengan nama kompartemen Anda):

      allow dynamic-group oci-functions-dynamic-group to manage secret-family in compartment <compartment_name>
      
  6. Klik Create.

Buat Aplikasi OCI Function

  1. Login ke Oracle Cloud Console.
  2. Buka Developer Services > Applications (di bagian Functions).
  3. Klik Create Application.
  4. Berikan detail konfigurasi berikut:
    • Nama: Masukkan nama (misalnya, oci-logs-to-s3-app).
    • VCN: Pilih VCN di kompartemen Anda.
    • Subnet: Pilih satu atau beberapa subnet.
  5. Klik Create.

Membuat dan men-deploy OCI Function

  1. Di Oracle Cloud Console, klik ikon Cloud Shell di pojok kanan atas.
  2. Tunggu hingga Cloud Shell diinisialisasi.

Membuat fungsi

  1. Di Cloud Shell, buat direktori baru untuk fungsi Anda:

    mkdir pushlogs
    cd pushlogs
    
  2. Lakukan inisialisasi fungsi Python baru:

    fn init --runtime python
    
  3. Tindakan ini akan membuat tiga file: func.py, func.yaml, dan requirements.txt.

Perbarui func.py

  • Ganti konten func.py dengan kode berikut:

    import io
    import json
    import logging
    import boto3
    import oci
    import base64
    import os
    from fdk import response
    
    def handler(ctx, data: io.BytesIO = None):
        """
        OCI Function to push audit logs from OCI Logging to AWS S3
        """
        try:
            # Parse incoming log data from Service Connector
            funDataStr = data.read().decode('utf-8')
            funData = json.loads(funDataStr)
    
            logging.getLogger().info(f"Received {len(funData)} log entries")
    
            # Replace these with your actual OCI Vault secret OCIDs
            secret_key_id = "ocid1.vaultsecret.oc1..<your_secret_key_ocid>"
            access_key_id = "ocid1.vaultsecret.oc1..<your_access_key_ocid>"
    
            # Replace with your S3 bucket name
            s3_bucket_name = "oci-audit-logs-bucket"
    
            # Use Resource Principals for OCI authentication
            signer = oci.auth.signers.get_resource_principals_signer()
            secret_client = oci.secrets.SecretsClient({}, signer=signer)
    
            def read_secret_value(secret_client, secret_id):
                """Retrieve and decode secret value from OCI Vault"""
                response = secret_client.get_secret_bundle(secret_id)
                base64_secret_content = response.data.secret_bundle_content.content
                base64_secret_bytes = base64_secret_content.encode('ascii')
                base64_message_bytes = base64.b64decode(base64_secret_bytes)
                secret_content = base64_message_bytes.decode('ascii')
                return secret_content
    
            # Retrieve AWS credentials from OCI Vault
            awsaccesskey = read_secret_value(secret_client, access_key_id)
            awssecretkey = read_secret_value(secret_client, secret_key_id)
    
            # Initialize boto3 session with AWS credentials
            session = boto3.Session(
                aws_access_key_id=awsaccesskey,
                aws_secret_access_key=awssecretkey
            )
            s3 = session.resource('s3')
    
            # Process each log entry
            for i in range(0, len(funData)):
                # Use timestamp as filename
                filename = funData[i].get('time', f'log_{i}')
                # Remove special characters from filename
                filename = filename.replace(':', '-').replace('.', '-')
    
                logging.getLogger().info(f"Processing log entry: {filename}")
    
                # Write log entry to temporary file
                temp_file = f'/tmp/{filename}.json'
                with open(temp_file, 'w', encoding='utf-8') as f:
                    json.dump(funData[i], f, ensure_ascii=False, indent=4)
    
                # Upload to S3
                s3_key = f'{filename}.json'
                s3.meta.client.upload_file(
                    Filename=temp_file,
                    Bucket=s3_bucket_name,
                    Key=s3_key
                )
    
                logging.getLogger().info(f"Uploaded {s3_key} to S3 bucket {s3_bucket_name}")
    
                # Clean up temporary file
                os.remove(temp_file)
    
            return response.Response(
                ctx,
                response_data=json.dumps({
                    "status": "success",
                    "processed_logs": len(funData)
                }),
                headers={"Content-Type": "application/json"}
            )
    
        except Exception as e:
            logging.getLogger().error(f"Error processing logs: {str(e)}")
            return response.Response(
                ctx,
                response_data=json.dumps({
                    "status": "error",
                    "message": str(e)
                }),
                headers={"Content-Type": "application/json"},
                status_code=500
            )
    
    • Ganti secret_key_id dengan OCID rahasia vault Anda yang sebenarnya untuk kunci rahasia AWS
    • Ganti access_key_id dengan OCID rahasia vault Anda yang sebenarnya untuk kunci akses AWS
    • Ganti s3_bucket_name dengan nama bucket S3 Anda yang sebenarnya

Perbarui func.yaml

Ganti konten func.yaml dengan:

  schema_version: 20180708
  name: pushlogs
  version: 0.0.1
  runtime: python
  build_image: fnproject/python:3.9-dev
  run_image: fnproject/python:3.9
  entrypoint: /python/bin/fdk /function/func.py handler
  memory: 256

Perbarui requirements.txt

  • Ganti konten requirements.txt dengan:

    fdk>=0.1.56
    boto3
    oci
    

Men-deploy fungsi

  1. Setel konteks Fn untuk menggunakan aplikasi Anda:

    fn use context <region-context>
    fn update context oracle.compartment-id <compartment-ocid>
    
  2. Deploy fungsi tersebut:

    fn -v deploy --app oci-logs-to-s3-app
    
  3. Tunggu hingga deployment selesai. Anda akan melihat output yang menunjukkan bahwa fungsi berhasil di-deploy.

  4. Verifikasi bahwa fungsi telah dibuat:

    fn list functions oci-logs-to-s3-app
    

Buat Service Connector untuk mengirim log Audit OCI ke Function

  1. Login ke Oracle Cloud Console.
  2. Buka Analytics & AI > Messaging > Service Connector Hub.
  3. Pilih kompartemen tempat Anda ingin membuat konektor layanan.
  4. Klik Create Service Connector.

Mengonfigurasi detail Service Connector

  1. Berikan detail konfigurasi berikut:

Informasi Service Connector: * Nama Konektor: Masukkan nama deskriptif (misalnya, audit-logs-to-s3-connector). * Deskripsi: Deskripsi opsional (misalnya, "Teruskan log Audit OCI ke AWS S3"). * Resource Compartment: Pilih kompartemen.

Mengonfigurasi Sumber

  1. Di bagian Konfigurasi Sumber:
    • Sumber: Pilih Logging.
    • Kompartemen: Pilih kompartemen yang berisi log audit.
    • Log Group: Pilih _Audit (ini adalah grup log default untuk log audit).
    • Log: Klik + Log Lainnya.
    • Pilih log audit untuk kompartemen Anda (misalnya, _Audit_Include_Subcompartment).

Mengonfigurasi Target

  1. Di bagian Konfigurasi Target:
    • Target: Pilih Fungsi.
    • Compartment: Pilih kompartemen yang berisi aplikasi fungsi Anda.
    • Function Application: Pilih oci-logs-to-s3-app (aplikasi yang Anda buat sebelumnya).
    • Function: Pilih pushlogs (fungsi yang Anda deploy).

Konfigurasi Kebijakan

  1. Di bagian Konfigurasi Kebijakan:

    • Tinjau pernyataan kebijakan IAM yang diperlukan yang ditampilkan.
    • Klik Buat untuk membuat kebijakan yang diperlukan secara otomatis.
  2. Klik Buat untuk membuat konektor layanan.

  3. Tunggu hingga konektor layanan dibuat dan diaktifkan. Status akan berubah menjadi Aktif.

Memverifikasi bahwa log dikirim ke AWS S3

  1. Login ke Oracle Cloud Console.
  2. Lakukan beberapa tindakan yang menghasilkan log audit (misalnya, buat atau ubah resource).
  3. Tunggu 2-5 menit hingga log diproses.
  4. Login ke AWS Management Console.
  5. Buka S3 > Buckets.
  6. Klik bucket Anda (misalnya, oci-audit-logs-bucket).
  7. Verifikasi bahwa file log JSON muncul di bucket.

Mengonfigurasi bucket AWS S3 dan IAM untuk Google SecOps

Membuat pengguna IAM untuk Chronicle

  1. Login ke AWS Management Console.
  2. Buka IAM > Pengguna > Tambahkan pengguna.
  3. Berikan detail konfigurasi berikut:
    • Nama pengguna: Masukkan chronicle-s3-reader.
    • Jenis akses: Pilih Kunci akses - Akses terprogram.
  4. Klik Berikutnya: Izin.
  5. Klik Attach existing policies directly.
  6. Telusuri dan pilih kebijakan AmazonS3ReadOnlyAccess.
  7. Klik Berikutnya: Tanda.
  8. Klik Berikutnya: Tinjau.
  9. Klik Buat pengguna.
  10. Klik Download CSV file untuk menyimpan Access Key ID dan Secret Access Key.
  11. Klik Close.

Opsional: Buat kebijakan IAM kustom untuk akses dengan hak istimewa terendah

Jika Anda ingin membatasi akses hanya ke bucket tertentu:

  1. Buka IAM > Policies > Create policy.
  2. Klik tab JSON.
  3. Masukkan kebijakan berikut:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "s3:GetObject",
            "s3:ListBucket"
          ],
          "Resource": [
            "arn:aws:s3:::oci-audit-logs-bucket",
            "arn:aws:s3:::oci-audit-logs-bucket/*"
          ]
        }
      ]
    }
    
    • Ganti oci-audit-logs-bucket dengan nama bucket Anda.
  4. Klik Berikutnya: Tanda.

  5. Klik Berikutnya: Tinjau.

  6. Berikan detail konfigurasi berikut:

    • Nama: chronicle-s3-read-policy
    • Description: Akses hanya baca ke bucket log audit OCI
  7. Klik Create policy.

  8. Kembali ke IAM > Users, lalu pilih pengguna chronicle-s3-reader.

  9. Klik Add permissions > Attach policies directly.

  10. Telusuri dan pilih chronicle-s3-read-policy.

  11. Hapus kebijakan AmazonS3ReadOnlyAccess jika Anda menambahkannya sebelumnya.

  12. Klik Add permissions.

Mengonfigurasi feed di Google SecOps untuk menyerap log Audit Oracle Cloud

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan Feed Baru.
  3. Di halaman berikutnya, klik Konfigurasi satu feed.
  4. Di kolom Nama feed, masukkan nama untuk feed (misalnya, Oracle Cloud Audit Logs).
  5. Pilih Amazon S3 V2 sebagai Jenis sumber.
  6. Pilih Oracle Cloud Infrastructure sebagai Jenis log.
  7. Klik Berikutnya.
  8. Tentukan nilai untuk parameter input berikut:
    • URI S3: Masukkan URI bucket S3 (misalnya, s3://oci-audit-logs-bucket/).
    • Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda:
      • Tidak pernah: Direkomendasikan untuk pengujian dan penyiapan awal.
      • Hapus file yang ditransfer: Menghapus file setelah penyerapan berhasil (gunakan untuk produksi guna mengelola biaya penyimpanan).
    • Usia File Maksimum: Menyertakan file yang diubah dalam jumlah hari terakhir. Defaultnya adalah 180 hari.
    • Access Key ID: Masukkan ID kunci akses dari pengguna IAM Chronicle yang Anda buat.
    • Secret Access Key: Masukkan kunci akses rahasia dari pengguna IAM Chronicle yang Anda buat.
    • Namespace aset: Namespace aset.
    • Label penyerapan: Label yang akan diterapkan ke peristiwa dari feed ini.
  9. Klik Berikutnya.
  10. Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.

Tabel pemetaan UDM

Kolom Log Pemetaan UDM Logika
data.request.headers.authorization.0 event.idm.read_only_udm.additional.fields Nilai diambil dari data.request.headers.authorization.0 dan ditambahkan sebagai pasangan nilai kunci dengan kuncinya adalah "Otorisasi Header Permintaan".
data.compartmentId event.idm.read_only_udm.additional.fields Nilai diambil dari data.compartmentId dan ditambahkan sebagai pasangan nilai kunci dengan kuncinya adalah "compartmentId".
data.compartmentName event.idm.read_only_udm.additional.fields Nilai diambil dari data.compartmentName dan ditambahkan sebagai pasangan nilai kunci dengan kuncinya adalah "compartmentName".
data.response.headers.Content-Length.0 event.idm.read_only_udm.additional.fields Nilai diambil dari data.response.headers.Content-Length.0 dan ditambahkan sebagai key-value pair dengan kuncinya adalah "Response Headers Content-Length".
data.response.headers.Content-Type.0 event.idm.read_only_udm.additional.fields Nilai diambil dari data.response.headers.Content-Type.0 dan ditambahkan sebagai key-value pair dengan kuncinya adalah "Response Headers Content-Type".
data.eventGroupingId event.idm.read_only_udm.additional.fields Nilai diambil dari data.eventGroupingId dan ditambahkan sebagai pasangan nilai kunci dengan kuncinya adalah "eventGroupingId".
oracle.tenantid, data.identity.tenantId event.idm.read_only_udm.additional.fields Nilai diambil dari oracle.tenantid jika ada, atau dari data.identity.tenantId jika tidak ada. ID tersebut ditambahkan sebagai pasangan nilai kunci dengan kuncinya adalah "tenantId".
data.message event.idm.read_only_udm.metadata.description Nilai diambil dari data.message.
time event.idm.read_only_udm.metadata.event_timestamp Nilai diambil dari time dan diuraikan sebagai stempel waktu ISO8601.
event.idm.read_only_udm.metadata.event_type Setel ke GENERIC_EVENT secara default. Ditetapkan ke NETWORK_CONNECTION jika ada principal (IP atau nama host) dan IP target. Disetel ke STATUS_UPDATE jika hanya ada pemegang kartu utama.
time event.idm.read_only_udm.metadata.ingested_timestamp Jika oracle.ingestedtime tidak kosong, nilai diambil dari kolom time dan diuraikan sebagai stempel waktu ISO8601.
oracle.tenantid event.idm.read_only_udm.metadata.product_deployment_id Nilai diambil dari oracle.tenantid.
type event.idm.read_only_udm.metadata.product_event_type Nilai diambil dari type.
oracle.logid event.idm.read_only_udm.metadata.product_log_id Nilai diambil dari oracle.logid.
specversion event.idm.read_only_udm.metadata.product_version Nilai diambil dari specversion.
data.request.action event.idm.read_only_udm.network.http.method Nilai diambil dari data.request.action.
data.identity.userAgent event.idm.read_only_udm.network.http.parsed_user_agent Nilai diambil dari data.identity.userAgent dan diuraikan.
data.response.status event.idm.read_only_udm.network.http.response_code Nilai diambil dari data.response.status dan dikonversi menjadi bilangan bulat.
data.protocol event.idm.read_only_udm.network.ip_protocol Nilai numerik dari data.protocol dikonversi ke representasi string-nya (misalnya, 6 menjadi "TCP", 17 menjadi "UDP").
data.bytesOut event.idm.read_only_udm.network.sent_bytes Nilai diambil dari data.bytesOut dan dikonversi menjadi bilangan bulat yang tidak bertanda tangan.
data.packets event.idm.read_only_udm.network.sent_packets Nilai diambil dari data.packets dan dikonversi menjadi bilangan bulat.
data.identity.consoleSessionId event.idm.read_only_udm.network.session_id Nilai diambil dari data.identity.consoleSessionId.
id event.idm.read_only_udm.principal.asset.product_object_id Nilai diambil dari id.
source event.idm.read_only_udm.principal.hostname Nilai diambil dari source.
data.sourceAddress, data.identity.ipAddress event.idm.read_only_udm.principal.ip Nilai dari data.sourceAddress dan data.identity.ipAddress digabungkan ke dalam kolom ini.
data.sourcePort event.idm.read_only_udm.principal.port Nilai diambil dari data.sourcePort dan dikonversi menjadi bilangan bulat.
data.request.headers.X-Forwarded-For.0 event.idm.read_only_udm.principal.resource.attribute.labels Nilai diambil dari data.request.headers.X-Forwarded-For.0 dan ditambahkan sebagai pasangan nilai kunci dengan kuncinya adalah "x maju".
oracle.compartmentid event.idm.read_only_udm.principal.resource.attribute.labels Nilai diambil dari oracle.compartmentid dan ditambahkan sebagai pasangan nilai kunci dengan kuncinya adalah "compartmentid".
oracle.loggroupid event.idm.read_only_udm.principal.resource.attribute.labels Nilai diambil dari oracle.loggroupid dan ditambahkan sebagai pasangan nilai kunci dengan kuncinya adalah "loggroupid".
oracle.vniccompartmentocid event.idm.read_only_udm.principal.resource.attribute.labels Nilai diambil dari oracle.vniccompartmentocid dan ditambahkan sebagai pasangan nilai kunci dengan kuncinya adalah "vniccompartmentocid".
oracle.vnicocid event.idm.read_only_udm.principal.resource.attribute.labels Nilai diambil dari oracle.vnicocid dan ditambahkan sebagai pasangan nilai kunci dengan kuncinya adalah "vnicocid".
oracle.vnicsubnetocid event.idm.read_only_udm.principal.resource.attribute.labels Nilai diambil dari oracle.vnicsubnetocid dan ditambahkan sebagai pasangan nilai kunci dengan kuncinya adalah "vnicsubnetocid".
data.flowid event.idm.read_only_udm.principal.resource.product_object_id Nilai diambil dari data.flowid.
data.identity.credentials event.idm.read_only_udm.principal.user.attribute.labels Nilai diambil dari data.identity.credentials dan ditambahkan sebagai pasangan nilai kunci dengan kuncinya adalah "credentials".
data.identity.principalName event.idm.read_only_udm.principal.user.user_display_name Nilai diambil dari data.identity.principalName.
data.identity.principalId event.idm.read_only_udm.principal.user.userid Nilai diambil dari data.identity.principalId.
data.action event.idm.read_only_udm.security_result.action Setel ke UNKNOWN_ACTION secara default. Jika data.action adalah "REJECT", maka akan ditetapkan ke BLOCK. Jika data.action adalah "ACCEPT", nilai ini ditetapkan ke ALLOW.
data.endTime event.idm.read_only_udm.security_result.detection_fields Nilai diambil dari data.endTime dan ditambahkan sebagai pasangan nilai kunci dengan kuncinya adalah "endTime".
data.startTime event.idm.read_only_udm.security_result.detection_fields Nilai diambil dari data.startTime dan ditambahkan sebagai pasangan nilai kunci dengan kuncinya adalah "startTime".
data.status event.idm.read_only_udm.security_result.detection_fields Nilai diambil dari data.status dan ditambahkan sebagai pasangan nilai kunci dengan kuncinya adalah "status".
data.version event.idm.read_only_udm.security_result.detection_fields Nilai diambil dari data.version dan ditambahkan sebagai pasangan nilai kunci dengan kuncinya adalah "versi".
data.destinationAddress event.idm.read_only_udm.target.ip Nilai diambil dari data.destinationAddress.
data.destinationPort event.idm.read_only_udm.target.port Nilai diambil dari data.destinationPort dan dikonversi menjadi bilangan bulat.
data.request.path event.idm.read_only_udm.target.url Nilai diambil dari data.request.path.
event.idm.read_only_udm.metadata.product_name Tetapkan ke "ORACLE CLOUD AUDIT".
event.idm.read_only_udm.metadata.vendor_name Tetapkan ke "ORACLE".

Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.