Mengumpulkan log Custom Security Data Analytics

Didukung di:

Dokumen ini menjelaskan cara menyerap data analisis keamanan kustom ke Google Security Operations menggunakan beberapa metode penyerapan. Panduan ini ditujukan untuk sumber data keamanan kustom yang tidak memiliki parser atau jenis log bawaan.

Analisis data keamanan kustom mencakup telemetri keamanan eksklusif, log aplikasi kustom, alat keamanan internal, atau data yang relevan dengan keamanan dari sumber tanpa integrasi Google SecOps native. Anda dapat menyerap data ini sebagai log tidak terstruktur dan secara opsional menormalisasinya menggunakan parser kustom.

Sebelum memulai

Pastikan Anda memiliki prasyarat berikut:

  • Instance Google SecOps
  • Sumber data keamanan kustom yang dapat mengekspor log dalam format JSON, CSV, SYSLOG, atau format terstruktur lainnya
  • Akses ke salah satu opsi berikut:
    • Google Cloud Console (untuk pembuatan kunci API dan GCS)
    • Konsol AWS (untuk S3 atau Firehose)
    • Portal Azure (untuk Azure Blob Storage)
    • Klien atau aplikasi HTTP yang dapat mengirim permintaan webhook
  • Izin untuk membuat dan mengelola feed di Google SecOps

Memilih metode penyerapan

Google SecOps mendukung beberapa metode penyerapan untuk data keamanan kustom. Pilih metode yang paling sesuai dengan kemampuan sumber data Anda:

Metode Penyerapan Kasus Penggunaan Latensi Kompleksitas Penyiapan
Webhook Pemberitahuan push real-time dari aplikasi Detik Rendah
Amazon S3 V2 Mengekspor batch ke bucket S3 Menit ke jam Sedang
Google Cloud Storage V2 Mengekspor batch ke bucket GCS Menit ke jam Sedang
Azure Blob Storage V2 Mengekspor batch ke penyimpanan Azure Menit ke jam Sedang
Amazon Data Firehose Streaming real-time dari AWS Detik Tinggi

Opsi 1: Penyerapan webhook (Push real-time)

Gunakan metode ini saat aplikasi keamanan kustom Anda dapat mengirim permintaan HTTP POST ke endpoint eksternal.

Membuat feed webhook di Google SecOps

Buat feed

  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, custom-security-analytics-webhook).
  5. Pilih Webhook sebagai Jenis sumber.
  6. Pilih Custom Security Data Analytics sebagai Jenis log.
  7. Klik Berikutnya.
  8. Tentukan nilai untuk parameter input berikut:
    • Pemisah pemisahan: Opsional: Masukkan pemisah untuk memisahkan peristiwa multi-baris. Nilai umum:
      • \n - Pembatas baris baru (paling umum untuk NDJSON)
      • Biarkan kosong jika setiap permintaan berisi satu acara
    • 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.

Buat dan simpan kunci rahasia

Setelah membuat feed, Anda harus membuat kunci rahasia untuk autentikasi:

  1. Di halaman detail feed, klik Buat Kunci Rahasia.
  2. Dialog akan menampilkan kunci rahasia.
  3. Salin dan simpan kunci rahasia dengan aman.

Mendapatkan URL endpoint feed

  1. Buka tab Detail untuk feed tersebut.
  2. Di bagian Endpoint Information, salin Feed endpoint URL.
  3. Format URL-nya adalah:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    

    atau

    https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    
  4. Simpan URL ini untuk langkah berikutnya.

  5. Klik Done.

Membuat kunci Google Cloud API

Google SecOps memerlukan kunci API untuk autentikasi. Buat kunci API terbatas di Konsol Google Cloud.

Buat kunci API

  1. Buka halaman Credentials Google Cloud Console.
  2. Pilih project Anda (project yang terkait dengan instance Chronicle Anda).
  3. Klik Create credentials > API key.
  4. Kunci API dibuat dan ditampilkan dalam dialog.
  5. Klik Edit API key untuk membatasi kunci.

Membatasi kunci API

  1. Di halaman setelan kunci API:
    • Name: Masukkan nama deskriptif (misalnya, Chronicle Webhook API Key).
  2. Di bagian Pembatasan API:
    1. Pilih Restrict key.
    2. Di drop-down Select APIs, telusuri dan pilih Google SecOps API (atau Chronicle API).
  3. Klik Simpan.
  4. Salin nilai kunci API dari kolom Kunci API di bagian atas halaman.
  5. Simpan kunci API dengan aman.

Mengonfigurasi aplikasi kustom untuk mengirim data

Konfigurasi aplikasi atau skrip keamanan kustom Anda untuk mengirim permintaan POST HTTP ke endpoint webhook Chronicle.

Buat URL webhook:

  • Gabungkan URL endpoint Chronicle dan kunci API:

    <ENDPOINT_URL>?key=<API_KEY>
    

    Contoh:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
    

Format permintaan HTTP:

  • Metode: POST

  • URL:

    <ENDPOINT_URL>?key=<API_KEY>
    
  • Header:

    Content-Type: application/json
    x-chronicle-auth: <SECRET_KEY>
    
  • Isi (satu acara):

    {
        "timestamp": "2025-01-15T10:30:00Z",
        "event_type": "authentication",
        "user": "john.doe@example.com",
        "action": "login",
        "result": "success",
        "source_ip": "203.0.113.45",
        "custom_field_1": "value1",
        "custom_field_2": "value2"
    }
    
  • Isi (beberapa acara dengan pembatas baris baru):

    {"timestamp": "2025-01-15T10:30:00Z", "event_type": "authentication", "action": "login"}
    {"timestamp": "2025-01-15T10:30:05Z", "event_type": "file_access", "action": "read"}
    {"timestamp": "2025-01-15T10:30:10Z", "event_type": "authentication", "action": "logout"}
    

Contoh:

  • Contoh: Skrip Python:

    import requests
    import json
    from datetime import datetime
    
    # Configuration
    ENDPOINT_URL = "https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate"
    API_KEY = "your-api-key-here"
    SECRET_KEY = "your-secret-key-here"
    
    # Construct full URL
    url = f"{ENDPOINT_URL}?key={API_KEY}"
    
    # Headers
    headers = {
        "Content-Type": "application/json",
        "x-chronicle-auth": SECRET_KEY
    }
    
    # Sample event
    event = {
        "timestamp": datetime.utcnow().isoformat() + "Z",
        "event_type": "custom_security_event",
        "severity": "high",
        "source": "custom_security_tool",
        "message": "Suspicious activity detected",
        "user": "admin@example.com",
        "ip_address": "192.168.1.100"
    }
    
    # Send request
    response = requests.post(url, headers=headers, data=json.dumps(event))
    
    if response.status_code == 200:
        print("Event sent successfully")
    else:
        print(f"Error: {response.status_code} - {response.text}")
    
  • Contoh: perintah cURL:

    curl -X POST \
        "https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=YOUR_API_KEY" \
        -H "Content-Type: application/json" \
        -H "x-chronicle-auth: YOUR_SECRET_KEY" \
        -d '{
            "timestamp": "2025-01-15T10:30:00Z",
            "event_type": "security_alert",
            "severity": "critical",
            "source": "custom_tool",
            "message": "Threat detected"
        }'
    

Referensi metode autentikasi

Feed webhook Google SecOps mendukung beberapa metode autentikasi. Pilih metode yang didukung aplikasi Anda.

Jika aplikasi 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 karena header tidak dicatat dalam log akses server web.
    • Metode pilihan jika aplikasi mendukungnya.

Metode 2: Parameter kueri

Jika aplikasi 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.
    • Kredensial dapat dicatat dalam log akses server web.
    • Kurang aman daripada 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"
    }
    

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

Praktik terbaik

  • Peristiwa batch: Kirim beberapa peristiwa dalam satu permintaan menggunakan format JSON yang dibatasi newline (NDJSON) untuk mengurangi overhead.
  • Sertakan stempel waktu: Selalu sertakan kolom stempel waktu dalam format ISO 8601 untuk pengurutan acara yang akurat.
  • Gunakan data terstruktur: Kirim data dalam format JSON agar lebih mudah diuraikan dan diekstrak kolomnya.
  • Terapkan logika percobaan ulang: Tangani kegagalan sementara dengan backoff eksponensial.
  • Pantau kode respons: Mencatat dan memberikan peringatan pada respons non-200.

Opsi 2: Penyerapan Amazon S3 V2 (Ekspor batch)

Gunakan metode ini saat aplikasi keamanan kustom Anda dapat mengekspor log ke bucket Amazon S3.

Buat bucket Amazon S3

  1. Buka konsol Amazon S3.
  2. Klik Create Bucket.
  3. Berikan detail konfigurasi berikut:
    • Nama Bucket: Masukkan nama yang bermakna untuk bucket (misalnya, custom-security-analytics-logs).
    • Region: Pilih region AWS pilihan Anda (misalnya, us-east-1).
  4. Klik Create.

Membuat pengguna IAM dengan akses S3

  1. Buka IAM console.
  2. Klik Pengguna > Tambahkan pengguna.
  3. Masukkan nama pengguna (misalnya, chronicle-s3-reader).
  4. Pilih Akses terprogram.
  5. Klik Berikutnya: Izin.
  6. Pilih Lampirkan kebijakan yang ada secara langsung.
  7. Telusuri dan pilih AmazonS3FullAccess.
  8. Klik Berikutnya: Tanda.
  9. Klik Berikutnya: Tinjau.
  10. Klik Buat pengguna.
  11. Klik Download .csv file untuk menyimpan Access Key ID dan Secret Access Key.
  12. Klik Close.

Mengonfigurasi aplikasi Anda untuk diekspor ke S3

Konfigurasi aplikasi keamanan kustom Anda untuk menulis file log ke bucket S3. Aplikasi harus:

  • Tulis log dalam format terstruktur (JSON, CSV, atau teks biasa).
  • Gunakan konvensi penamaan file yang konsisten.
  • Opsional: Atur file menurut tanggal (misalnya, logs/2025/01/15/events.json).
  • Tulis file lengkap (hindari penulisan sebagian).

  • Contoh struktur file:

    s3://custom-security-analytics-logs/
    ├── security-events/
    │   ├── 2025/01/15/
    │   │   ├── events-10-00.json
    │   │   ├── events-11-00.json
    │   │   └── events-12-00.json
    
  • Contoh format file log (NDJSON):

    {"timestamp": "2025-01-15T10:00:00Z", "event_type": "login", "user": "alice@example.com", "result": "success"}
    {"timestamp": "2025-01-15T10:05:00Z", "event_type": "file_access", "user": "bob@example.com", "file": "/data/sensitive.txt"}
    {"timestamp": "2025-01-15T10:10:00Z", "event_type": "logout", "user": "alice@example.com"}
    

Mengonfigurasi feed Google SecOps untuk S3

  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, custom-security-analytics-s3).
  5. Pilih Amazon S3 V2 sebagai Jenis sumber.
  6. Pilih Custom Security Data Analytics sebagai Jenis log.
  7. Klik Berikutnya.
  8. Tentukan nilai untuk parameter input berikut:

    • URI S3: URI bucket dalam format: s3://custom-security-analytics-logs/security-events/

    • Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda:

      • Jangan pernah: Tidak pernah menghapus file apa pun setelah transfer (direkomendasikan untuk pengujian).
      • Hapus file yang ditransfer: Menghapus file setelah transfer berhasil.
      • Hapus file yang ditransfer dan direktori kosong: Menghapus file dan direktori kosong setelah transfer berhasil.
    • Usia File Maksimum: Menyertakan file yang dimodifikasi dalam beberapa hari terakhir (defaultnya adalah 180 hari).

    • Access Key ID: Masukkan kunci akses dari pengguna IAM.

    • Secret Access Key: Masukkan kunci rahasia dari pengguna IAM.

    • 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.

Opsi 3: Penyerapan Google Cloud Storage V2 (Ekspor batch)

Gunakan metode ini saat aplikasi keamanan kustom Anda dapat mengekspor log ke bucket Google Cloud Storage.

Membuat bucket GCS

  1. Buka Konsol Google Cloud.
  2. Pilih project Anda atau buat project baru.
  3. Di menu navigasi, buka Cloud Storage > Buckets.
  4. Klik Create bucket.
  5. Berikan detail konfigurasi berikut:

    Setelan Nilai
    Beri nama bucket Anda Masukkan nama yang unik secara global (misalnya, custom-security-analytics-logs)
    Location type Pilih berdasarkan kebutuhan Anda (Region, Dual-region, Multi-region)
    Location Pilih lokasi (misalnya, us-central1)
    Kelas penyimpanan Standar (direkomendasikan untuk log yang sering diakses)
    Access control Seragam (direkomendasikan)
    Alat perlindungan Opsional: Aktifkan pembuatan versi objek atau kebijakan retensi
  6. Klik Create.

Mengonfigurasi aplikasi Anda untuk diekspor ke GCS

Konfigurasi aplikasi keamanan kustom Anda untuk menulis file log ke bucket GCS menggunakan salah satu metode berikut:

  • Google Cloud SDK: Menggunakan gsutil atau library klien
  • Akun Layanan: Buat akun layanan dengan peran Storage Object Creator
  • URL yang ditandatangani: Membuat URL yang ditandatangani untuk akses tulis sementara

  • Contoh menggunakan gsutil:

    gsutil cp /path/to/logs/events.json gs://custom-security-analytics-logs/security-events/
    
  • Contoh menggunakan library klien Python:

    from google.cloud import storage
    import json
    
    # Initialize client
    client = storage.Client()
    bucket = client.bucket('custom-security-analytics-logs')
    
    # Upload log file
    blob = bucket.blob('security-events/2025/01/15/events.json')
    
    # Write NDJSON data
    events = [
        {"timestamp": "2025-01-15T10:00:00Z", "event_type": "login"},
        {"timestamp": "2025-01-15T10:05:00Z", "event_type": "logout"}
    ]
    
    ndjson_data = '\n'.join([json.dumps(event) for event in events]) + '\n'
    blob.upload_from_string(ndjson_data, content_type='application/x-ndjson')
    

Mendapatkan akun layanan Google SecOps

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan Feed Baru.
  3. Klik Konfigurasi satu feed.
  4. Di kolom Nama feed, masukkan nama untuk feed (misalnya, custom-security-analytics-gcs).
  5. Pilih Google Cloud Storage V2 sebagai Source type.
  6. Pilih Custom Security Data Analytics sebagai Jenis log.
  7. Klik Get Service Account.
  8. Email akun layanan yang unik akan ditampilkan, misalnya:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. Salin alamat email ini untuk digunakan di langkah berikutnya.

Memberikan izin IAM

  1. Buka Cloud Storage > Buckets.
  2. Klik nama bucket Anda.
  3. Buka tab Izin.
  4. Klik Grant access.
  5. Berikan detail konfigurasi berikut:
    • Add principals: Tempel email akun layanan Google SecOps.
    • Tetapkan peran: Pilih Storage Object Viewer.
  6. Klik Simpan.

Mengonfigurasi feed Google SecOps untuk GCS

  1. Lanjutkan dari halaman pembuatan feed (atau buka Setelan SIEM > Feed > Tambahkan Feed Baru).
  2. Klik Berikutnya.
  3. Tentukan nilai untuk parameter input berikut:

    • URL bucket penyimpanan: Masukkan URI bucket GCS dengan jalur awalan:

      gs://custom-security-analytics-logs/security-events/
      
    • Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda:

      • Jangan pernah: Tidak pernah menghapus file apa pun setelah transfer (direkomendasikan untuk pengujian).
      • Hapus file yang ditransfer: Menghapus file setelah transfer berhasil.
      • Hapus file yang ditransfer dan direktori kosong: Menghapus file dan direktori kosong setelah transfer berhasil.
    • Usia File Maksimum: Menyertakan file yang dimodifikasi dalam beberapa hari terakhir (defaultnya adalah 180 hari).

    • Namespace aset: Namespace aset.

    • Label penyerapan: Label yang akan diterapkan ke peristiwa dari feed ini.

  4. Klik Berikutnya.

  5. Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.

Opsi 4: Penyerapan Azure Blob Storage V2 (Ekspor batch)

Gunakan metode ini saat aplikasi keamanan kustom Anda dapat mengekspor log ke Azure Blob Storage.

Buat Akun Azure Storage

  1. Di portal Azure, cari Storage accounts.
  2. Klik + Create.
  3. Berikan detail konfigurasi berikut:

    Setelan Nilai
    Langganan Pilih langganan Azure Anda
    Grup resource Pilih yang sudah ada atau buat yang baru
    Nama akun penyimpanan Masukkan nama unik (misalnya, customsecuritylogs)
    Region Pilih region (misalnya, East US)
    Performa Standar (direkomendasikan)
    Redundansi GRS (Geo-redundant storage) atau LRS (Locally redundant storage)
  4. Klik Review + create.

  5. Tinjau ringkasan akun, lalu klik Buat.

  6. Tunggu hingga deployment selesai.

Mendapatkan kredensial Akun Penyimpanan

  1. Buka Akun Penyimpanan yang baru saja Anda buat.
  2. Di navigasi kiri, pilih Kunci akses di bagian Keamanan + jaringan.
  3. Klik Tampilkan kunci.
  4. Salin dan simpan yang berikut untuk digunakan nanti:
    • Nama akun penyimpanan: customsecuritylogs
    • Key 1 atau Key 2: Kunci akses bersama

Buat penampung blob

  1. Di Akun Penyimpanan yang sama, pilih Containers dari navigasi kiri.
  2. Klik + Penampung.
  3. Berikan detail konfigurasi berikut:
    • Name: Masukkan nama container (misalnya, security-events)
    • Tingkat akses publik: Pilih Pribadi (tidak ada akses anonim)
  4. Klik Create.

Mengonfigurasi aplikasi Anda untuk diekspor ke Azure Blob

Konfigurasi aplikasi keamanan kustom Anda untuk menulis file log ke container Azure Blob menggunakan salah satu metode berikut:

  • Azure CLI: Gunakan az storage blob upload
  • Azure SDK: Menggunakan library klien untuk bahasa pemrograman Anda
  • AzCopy: Menggunakan alat command line AzCopy

Contoh:

  • Contoh menggunakan Azure CLI:

    az storage blob upload \
        --account-name customsecuritylogs \
        --container-name security-events \
        --name logs/2025/01/15/events.json \
        --file /path/to/events.json \
        --account-key <YOUR_ACCESS_KEY>
    
  • Contoh menggunakan Python SDK:

    from azure.storage.blob import BlobServiceClient
    import json
    
    # Initialize client
    connection_string = "DefaultEndpointsProtocol=https;AccountName=customsecuritylogs;AccountKey=<YOUR_KEY>;EndpointSuffix=core.windows.net"
    blob_service_client = BlobServiceClient.from_connection_string(connection_string)
    
    # Get container client
    container_client = blob_service_client.get_container_client("security-events")
    
    # Upload log file
    blob_client = container_client.get_blob_client("logs/2025/01/15/events.json")
    
    # Write NDJSON data
    events = [
        {"timestamp": "2025-01-15T10:00:00Z", "event_type": "login"},
        {"timestamp": "2025-01-15T10:05:00Z", "event_type": "logout"}
    ]
    
    ndjson_data = '\n'.join([json.dumps(event) for event in events]) + '\n'
    blob_client.upload_blob(ndjson_data, overwrite=True)
    

Mengonfigurasi feed Google SecOps untuk Azure Blob

  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, custom-security-analytics-azure).
  5. Pilih Microsoft Azure Blob Storage V2 sebagai Jenis sumber.
  6. Pilih Custom Security Data Analytics sebagai Jenis log.
  7. Klik Berikutnya.
  8. Tentukan nilai untuk parameter input berikut:

    • URI Azure: Masukkan URL endpoint Blob Service dengan jalur kontainer:

      https://customsecuritylogs.blob.core.windows.net/security-events/
      
    • Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda:

      • Jangan pernah: Tidak pernah menghapus file apa pun setelah transfer.
      • Hapus file yang ditransfer: Menghapus file setelah transfer berhasil.
      • Hapus file yang ditransfer dan direktori kosong: Menghapus file dan direktori kosong setelah transfer berhasil.
    • Usia File Maksimum: Menyertakan file yang dimodifikasi dalam beberapa hari terakhir (defaultnya adalah 180 hari).

    • Shared key: Masukkan nilai kunci bersama (kunci akses) dari Akun Penyimpanan.

    • 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.

Opsi 5: Penyerapan Amazon Data Firehose (Streaming real-time)

Gunakan metode ini saat aplikasi keamanan kustom Anda menulis log ke Amazon CloudWatch Logs dan Anda memerlukan streaming real-time ke Google SecOps.

Membuat feed Firehose Google SecOps

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan Feed Baru.
  3. Di kolom Nama feed, masukkan nama untuk feed (misalnya, custom-security-analytics-firehose).
  4. Pilih Amazon Data Firehose sebagai Jenis sumber.
  5. Pilih Custom Security Data Analytics sebagai Jenis log.
  6. Klik Berikutnya.
  7. Tentukan nilai untuk parameter input berikut:
    • Pemisah pemisahan: Opsional: Masukkan \n untuk memisahkan log yang dipisahkan dengan baris baru.
    • Namespace aset: Namespace aset.
    • Label penyerapan: Label yang akan diterapkan ke peristiwa dari feed ini.
  8. Klik Berikutnya.
  9. Tinjau konfigurasi feed, lalu klik Kirim.
  10. Klik Buat Kunci Rahasia untuk membuat kunci rahasia guna mengautentikasi feed ini.
  11. Salin dan simpan kunci rahasia karena Anda tidak dapat melihat rahasia ini lagi.
  12. Buka tab Detail.
  13. Salin URL endpoint feed dari kolom Endpoint Information.
  14. Klik Done.

Membuat kunci Google Cloud API

  1. Buka halaman Credentials di Konsol Google Cloud di https://console.cloud.google.com/apis/credentials
  2. Klik Create credentials, lalu pilih API key.
  3. Klik Edit API key untuk membatasi kunci.
  4. Di bagian Pembatasan API, pilih Batasi kunci.
  5. Cari dan pilih Google SecOps API.
  6. Klik Simpan.
  7. Salin dan simpan kunci API.

Buat URL endpoint

  1. Tambahkan kunci API ke URL endpoint feed dalam format berikut:

    <FEED_ENDPOINT_URL>?key=<API_KEY>
    

    Contoh:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
    
  2. Simpan URL lengkap ini untuk langkah berikutnya.

Membuat kebijakan IAM untuk Firehose

  1. Di AWS Console, buka IAM > Policies > Create policy > JSON tab.
  2. Tempelkan JSON kebijakan berikut:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "firehose:PutRecord",
                    "firehose:PutRecordBatch"
                ],
                "Resource": "arn:aws:firehose:<REGION>:<ACCOUNT_ID>:deliverystream/CustomSecurityToChronicle"
            }
        ]
    }
    
  3. Ganti kode berikut:

    • <REGION>: Region AWS Anda (misalnya, us-east-1).
    • <ACCOUNT_ID>: ID akun AWS Anda (angka 12 digit).
  4. Beri nama kebijakan CloudWatchLogsToFirehosePolicy.

  5. Klik Create policy.

Buat peran IAM untuk CloudWatch Logs

  1. Buka IAM > Roles > Create role.
  2. Pilih Custom trust policy dan tempel:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "logs.<REGION>.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    
  3. Ganti <REGION> dengan region AWS Anda.

  4. Klik Berikutnya.

  5. Cari dan pilih kebijakan CloudWatchLogsToFirehosePolicy yang Anda buat pada langkah sebelumnya.

  6. Klik Berikutnya.

  7. Beri nama peran CloudWatchLogsToFirehoseRole.

  8. Klik Buat peran.

Buat aliran pengiriman Kinesis Data Firehose

  1. Di AWS Console, buka Kinesis > Data Firehose > Create delivery stream.
  2. Berikan detail konfigurasi berikut:

    • Sumber dan tujuan:

      • Sumber: Pilih PUT langsung atau sumber lainnya
      • Tujuan: Pilih Endpoint HTTP
    • Nama aliran pengiriman:

      • Nama aliran pengiriman: Masukkan CustomSecurityToChronicle
    • Tujuan endpoint HTTP:

      • URL endpoint HTTP: Masukkan URL endpoint lengkap yang Anda buat sebelumnya (endpoint feed + kunci API)
      • Encoding konten: Pilih GZIP (direkomendasikan untuk menghemat bandwidth)
    • Header HTTP kustom:

      • Klik Tambahkan header HTTP kustom
      • Nama header: Masukkan X-Goog-Chronicle-Auth
      • Nilai header: Masukkan kunci rahasia yang Anda simpan di langkah sebelumnya
    • Setelan pencadangan:

      • Cadangan rekaman sumber di Amazon S3: Pilih Data yang gagal saja (direkomendasikan)
      • Bucket S3: Pilih bucket yang ada atau buat bucket baru untuk data yang gagal
    • Petunjuk buffer:

      • Buffer size: Masukkan 1 MiB (minimum untuk endpoint HTTP)
      • Interval buffer: Masukkan 60 detik
    • Durasi coba lagi:

      • Durasi percobaan ulang: Masukkan 300 detik (5 menit)
  3. Klik Buat aliran pengiriman.

  4. Tunggu hingga status aliran pengiriman berubah menjadi Aktif (1-2 menit).

Berlangganan Grup Log CloudWatch ke Firehose

  1. Di Konsol AWS, buka CloudWatch > Logs > Log groups.
  2. Pilih grup log target yang berisi log analisis keamanan kustom Anda.
  3. Klik tab Filter langganan.
  4. Klik Buat > Buat filter langganan Amazon Kinesis Data Firehose.
  5. Berikan detail konfigurasi berikut:
    • Tujuan: Pilih aliran pengiriman CustomSecurityToChronicle.
    • Berikan izin: Pilih peran CloudWatchLogsToFirehoseRole.
    • Nama filter langganan: Masukkan CustomSecurityToChronicle.
    • Format log: Pilih Lainnya (Google SecOps menangani parsing).
    • Pola filter langganan: Biarkan kosong untuk mengirim semua peristiwa, atau masukkan pola filter untuk mengirim hanya peristiwa tertentu.
  6. Klik Mulai streaming.
  7. Log kini akan di-streaming secara real-time ke Google SecOps melalui Firehose.

Buat parser kustom (opsional)

Setelah menyerap data keamanan kustom sebagai log tidak terstruktur, Anda dapat membuat parser kustom untuk menormalisasi data ke dalam format UDM agar lebih mudah dicari dan dideteksi.

Kapan harus membuat parser kustom

Buat parser kustom jika:

  • Anda perlu mengekstrak kolom tertentu dari format log kustom
  • Anda ingin mengaktifkan penelusuran UDM pada data kustom
  • Anda perlu memetakan kolom kustom ke kolom UDM standar untuk aturan deteksi
  • Anda ingin meningkatkan performa penelusuran dengan mengindeks kolom tertentu

Membuat jenis log kustom

  1. Buka SIEM Settings > Available Log Types.
  2. Klik Minta Jenis Log.
  3. Di bagian Buat jenis log kustom atau minta jenis log bawaan, pilih Buat jenis log kustom.
  4. Berikan informasi berikut:
    • Nama jenis log: Masukkan nama deskriptif (misalnya, CUSTOM_SECURITY_ANALYTICS).
    • Deskripsi: Masukkan deskripsi jenis log.
    • Contoh log: Tempelkan 5-10 entri log contoh dalam format mentahnya.
  5. Klik Kirim.
  6. Jenis log kustom akan tersedia dalam waktu sekitar 10 menit.

Membuat parser kustom

  1. Buka Setelan SIEM > Parser.
  2. Klik Create Parser.
  3. Pilih Parser Kustom.
  4. Berikan informasi berikut:
    • Nama parser: Masukkan nama deskriptif
    • Jenis log: Pilih jenis log kustom Anda (misalnya, CUSTOM_SECURITY_ANALYTICS)
    • Kode parser: Masukkan konfigurasi parser Anda menggunakan bahasa konfigurasi parser Google SecOps
  5. Uji parser dengan log sampel.
  6. Klik Kirim untuk mengaktifkan parser.

Contoh konfigurasi parser

  • Untuk format log JSON kustom:

    {
        "timestamp": "2025-01-15T10:30:00Z",
        "event_type": "authentication",
        "user": "john.doe@example.com",
        "action": "login",
        "result": "success",
        "source_ip": "203.0.113.45"
    }
    

    Contoh konfigurasi parser:

    filter {
        json {
            fields {
                timestamp: timestamp
                event_type: event_type
                user: user
                action: action
                result: result
                source_ip: source_ip
            }
        }
    }
    
    event {
        $e.metadata.event_timestamp.seconds = parseTimestamp(timestamp, "yyyy-MM-dd'T'HH:mm:ss'Z'")
        $e.metadata.event_type = "USER_LOGIN"
        $e.principal.user.email_addresses = user
        $e.target.ip = source_ip
        $e.security_result.action = if(result == "success", "ALLOW", "BLOCK")
    }
    

    Untuk mengetahui informasi selengkapnya tentang cara membuat parser kustom, lihat Mengelola parser bawaan dan kustom.

Memverifikasi penyerapan data

Setelah mengonfigurasi feed, pastikan data berhasil di-ingest.

Memeriksa status feed

  1. Buka Setelan SIEM > Feed.
  2. Temukan feed Anda dalam daftar.
  3. Periksa kolom Status:
    • Aktif: Feed berjalan dan menyerap data
    • Error: Feed mengalami error (klik untuk melihat detail)
    • Dijeda: Feed dijeda

Menelusuri log yang diserap

  1. Buka Penelusuran > Pemindaian Log Mentah.
  2. Masukkan kueri penelusuran untuk menemukan log kustom Anda:

    metadata.log_type = "CUSTOM_SECURITY_DATA_ANALYTICS"
    
  3. Sesuaikan rentang waktu jika perlu.

  4. Klik Telusuri.

  5. Pastikan log Anda muncul di hasil.

Memantau metrik feed

  1. Buka Setelan SIEM > Feed.
  2. Klik nama feed Anda.
  3. Buka tab Metrik.
  4. Tinjau metrik berikut:
    • Peristiwa yang diserap: Total jumlah peristiwa yang diserap
    • Byte yang diserap: Total volume data yang diserap
    • Kecepatan penyerapan: Peristiwa per detik
    • Error: Jumlah error penyerapan

Pemecahan masalah

Masalah penyerapan webhook

  • Masalah: HTTP 401 Tidak Sah

    • Penyebab: Kunci API atau kunci rahasia tidak valid
    • Solusi: Pastikan kunci API dan kunci rahasia sudah benar dan belum habis masa berlakunya
  • Masalah: HTTP 403 Forbidden

    • Penyebab: Kunci API tidak memiliki izin Chronicle API
    • Solusi: Edit kunci API dan pastikan Chronicle API dipilih di bagian pembatasan API
  • Masalah: HTTP 400 Bad Request

    • Penyebab: Format atau payload permintaan tidak valid
    • Solusi: Verifikasi bahwa header Content-Type ditetapkan ke application/json dan payload adalah JSON yang valid

Masalah penyerapan S3/GCS/Azure Blob

  • Masalah: Tidak ada data yang di-ingest

    • Penyebab: URI bucket salah atau izin tidak ada
    • Solusi: Pastikan URI bucket menyertakan garis miring di akhir dan akun layanan memiliki peran Storage Object Viewer
  • Masalah: File tidak dihapus setelah penyerapan

    • Penyebab: Akun layanan tidak memiliki izin hapus
    • Solusi: Berikan peran Storage Object Admin, bukan Storage Object Viewer
  • Masalah: File lama tidak diproses

    • Penyebab: Setelan Usia File Maksimum mengecualikan file lama
    • Solusi: Tingkatkan nilai Usia File Maksimum dalam konfigurasi feed

Masalah penyerapan Firehose

  • Masalah: Aliran pengiriman menampilkan error

    • Penyebab: URL endpoint atau autentikasi tidak valid
    • Solusi: Pastikan URL endpoint menyertakan parameter kunci API dan header X-Goog-Chronicle-Auth berisi kunci rahasia yang benar
  • Masalah: Metrik keaktualan data yang tinggi

    • Penyebab: Firehose dibatasi atau mengalami kegagalan pengiriman
    • Solusi: Periksa metrik CloudWatch untuk rasio ThrottledRecords dan DeliveryToHTTP.Success
  • Masalah: Tidak ada log yang di-streaming dari CloudWatch

    • Penyebab: Filter langganan tidak dikonfigurasi atau peran IAM tidak memiliki izin
    • Solusi: Pastikan filter langganan aktif dan peran IAM memiliki izin firehose:PutRecord

Tabel pemetaan UDM

Log analisis data keamanan kustom diserap sebagai data tidak terstruktur. Untuk mengaktifkan pemetaan kolom UDM, buat parser kustom seperti yang dijelaskan di bagian "Buat parser kustom" di atas.

Setelah membuat parser kustom, kolom UDM akan diisi berdasarkan konfigurasi parser Anda. Kolom UDM umum untuk data analisis keamanan meliputi:

Kolom UDM Deskripsi
metadata.event_timestamp Stempel waktu peristiwa
metadata.event_type Jenis peristiwa (misalnya, USER_LOGIN, FILE_ACCESS)
principal.user.email_addresses Alamat email pengguna
principal.ip Alamat IP sumber
target.resource.name Nama resource target
security_result.action Tindakan keamanan (ALLOW, BLOCK, dll.)
security_result.severity Tingkat keparahan peristiwa

Untuk mengetahui daftar lengkap kolom UDM, lihat referensi kolom UDM.

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