Mengumpulkan log Fivetran

Didukung di:

Dokumen ini menjelaskan cara mengonfigurasi Fivetran untuk mengirimkan log ke Google Security Operations menggunakan webhook.

Fivetran adalah platform integrasi data yang mengotomatiskan pipeline data dari berbagai sumber ke data warehouse. Fivetran menghasilkan peristiwa operasional, termasuk peristiwa sinkronisasi konektor, peristiwa transformasi, dan perubahan status koneksi. Peristiwa ini dapat dikirim ke endpoint eksternal melalui webhook keluar untuk pemantauan, pemberitahuan, dan analisis keamanan.

Sebelum memulai

Pastikan Anda memiliki prasyarat berikut:

  • Instance Google SecOps
  • Akun Fivetran dengan izin admin atau tingkat akun
  • Akses ke Konsol Google Cloud (untuk pembuatan kunci API)
  • Akun Fivetran dengan paket Business Critical atau Enterprise (untuk fungsi webhook)

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, Fivetran Events).
  5. Pilih Webhook sebagai Jenis sumber.
  6. Pilih Fivetran sebagai Jenis log.
  7. Klik Berikutnya.
  8. Tentukan nilai untuk parameter input berikut:
    • Pemisah pemisahan (opsional): Biarkan kosong (setiap permintaan webhook berisi satu peristiwa JSON)
    • 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 yang dibatasi di Konsol Google Cloud.

Buat kunci API

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

Membatasi kunci API

  1. Di halaman setelan kunci API:
    • Nama: Masukkan nama deskriptif (misalnya, Google SecOps Webhook API Key)
  2. Di bagian Pembatasan API:
    1. Pilih Restrict key.
    2. Di daftar 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 webhook Fivetran

Buat URL webhook

  • Gabungkan URL endpoint Google SecOps dan kunci API:

    <ENDPOINT_URL>?key=<API_KEY>
    

    Contoh:

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

Membuat webhook menggunakan Fivetran REST API

Webhook Fivetran dikonfigurasi melalui REST API. Anda dapat membuat webhook tingkat akun (semua grup) atau webhook tingkat grup (grup tujuan tertentu).

Mendapatkan kredensial API Fivetran

  1. Login ke akun Fivetran Anda.
  2. Klik nama pengguna Anda di sudut kanan atas.
  3. Buka Setelan Akun > Konfigurasi API.
  4. Jika Anda belum memiliki kunci API:
    1. Klik Generate API Key.
    2. Salin dan simpan Kunci API dan Rahasia API dengan aman.

Membuat webhook tingkat akun

Gunakan metode ini untuk menerima peristiwa dari semua konektor di semua grup di akun Anda.

  1. Buka terminal atau klien API.
  2. Buat webhook menggunakan perintah curl berikut:

    curl -X POST https://api.fivetran.com/v1/webhooks/account \
        -u "API_KEY:API_SECRET" \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{
            "url": "https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=YOUR_SECOPS_API_KEY",
            "events": [
                "sync_start",
                "sync_end",
                "transformation_start",
                "transformation_succeeded",
                "transformation_failed",
                "connection_successful",
                "connection_failure",
                "create_connector",
                "pause_connector",
                "resume_connector",
                "edit_connector",
                "delete_connector",
                "force_update_connector",
                "resync_connector",
                "resync_table"
            ],
            "active": true,
            "secret": "YOUR_SECOPS_SECRET_KEY"
        }'
    
  3. Ganti nilai berikut:

    • API_KEY: Kunci API Fivetran Anda
    • API_SECRET: Rahasia API Fivetran Anda
    • YOUR_SECOPS_API_KEY: Kunci Google Cloud API yang dibuat sebelumnya
    • YOUR_SECOPS_SECRET_KEY: Kunci rahasia Google SecOps dari pembuatan feed
  4. Respons akan berisi ID webhook:

    {
        "code": "Success",
        "message": "Operation performed.",
        "data": {
            "id": "webhook_abc123",
            "type": "account",
            "url": "https://malachiteingestion-pa.googleapis.com/...",
            "events": ["sync_start", "sync_end", ...],
            "active": true,
            "secret": "******",
            "created_at": "2025-01-15T10:30:00Z",
            "created_by": "user_id"
        }
    }
    
  5. Simpan ID webhook untuk referensi di masa mendatang.

Membuat webhook tingkat grup (opsional)

Gunakan metode ini untuk menerima peristiwa dari konektor dalam grup tujuan tertentu.

  1. Dapatkan ID grup Anda:

    1. Login ke Fivetran.
    2. Buka grup tujuan yang ingin Anda pantau.
    3. ID grup ada di URL: https://fivetran.com/dashboard/groups/GROUP_ID
  2. Buat webhook menggunakan perintah curl berikut:

    curl -X POST https://api.fivetran.com/v1/webhooks/group/GROUP_ID \
        -u "API_KEY:API_SECRET" \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{
            "url": "https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=YOUR_SECOPS_API_KEY",
            "events": [
                "sync_start",
                "sync_end",
                "transformation_start",
                "transformation_succeeded",
                "transformation_failed",
                "connection_successful",
                "connection_failure"
            ],
            "active": true,
            "secret": "YOUR_SECOPS_SECRET_KEY"
        }'
    
  3. Ganti GROUP_ID dengan ID grup tujuan Anda.

Peristiwa webhook yang tersedia

Pilih peristiwa yang ingin Anda pantau:

Acara Deskripsi
sync_start Sinkronisasi konektor dimulai
sync_end Sinkronisasi konektor selesai
transformation_start Transformasi dimulai
transformation_succeeded Transformasi berhasil diselesaikan
transformation_failed Transformasi gagal
connection_successful Uji koneksi berhasil
connection_failure Uji koneksi gagal
create_connector Konektor baru dibuat
pause_connector Konektor dijeda
resume_connector Konektor dilanjutkan
edit_connector Konfigurasi konektor diedit
delete_connector Konektor dihapus
force_update_connector Update paksa konektor dipicu
resync_connector Penyelarasan ulang konektor dipicu
resync_table Sinkronisasi ulang tabel dipicu

Menguji webhook

  1. Uji webhook menggunakan Fivetran API:

    curl -X POST https://api.fivetran.com/v1/webhooks/WEBHOOK_ID/test \
        -u "API_KEY:API_SECRET" \
        -H "Accept: application/json"
    
  2. Ganti WEBHOOK_ID dengan ID webhook dari respons pembuatan.

  3. Fivetran akan mengirim peristiwa pengujian ke Google SecOps.

  4. Verifikasi peristiwa di Google SecOps:

    1. Buka Setelan SIEM > Feed.
    2. Klik feed Fivetran Anda.
    3. Buka tab Log.
    4. Verifikasi bahwa peristiwa pengujian telah diterima.

Format payload webhook

  • Fivetran mengirim peristiwa webhook dalam format JSON berikut:

    {
        "event": "sync_end",
        "created": "2025-01-15T10:30:00.386Z",
        "connector_type": "salesforce",
        "connector_id": "mystified_presiding",
        "connector_name": "Salesforce Production",
        "sync_id": "abc123-def456-ghi789",
        "destination_group_id": "deck_enjoy",
        "data": {
            "status": "SUCCESSFUL"
        }
    }
    

Autentikasi webhook

Fivetran menandatangani payload webhook menggunakan HMAC SHA-256 dengan rahasia yang Anda berikan. Tanda tangan dikirim di header X-Fivetran-Signature-256.

Google SecOps secara otomatis memvalidasi tanda tangan menggunakan kunci rahasia yang dikonfigurasi selama pembuatan feed.

Perilaku percobaan ulang webhook

Fivetran otomatis mencoba lagi webhook yang gagal:

Coba lagi Waktu Setelah Upaya Awal
Upaya awal 0 menit
Percobaan ulang ke-1 6 menit
Percobaan ulang ke-2 27 menit
Percobaan ulang ke-3 1 jam 45 menit
Percobaan ulang ke-4 6 jam 25 menit
Upaya ke-5 23 jam 13 menit
  • Fivetran mencoba lagi hingga 24 jam.
  • Webhook memiliki waktu tunggu 10 detik.
  • Webhook akan otomatis dinonaktifkan setelah 3 hari mengalami kegagalan yang konsisten.

Kelola webhook

Mencantumkan semua webhook

  • bash curl -X GET https://api.fivetran.com/v1/webhooks \ -u "API_KEY:API_SECRET" \ -H "Accept: application/json"

Mendapatkan detail webhook

  • bash curl -X GET https://api.fivetran.com/v1/webhooks/WEBHOOK_ID \ -u "API_KEY:API_SECRET" \ -H "Accept: application/json"

Perbarui webhook

  • bash curl -X PATCH https://api.fivetran.com/v1/webhooks/WEBHOOK_ID \ -u "API_KEY:API_SECRET" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "active": true, "events": ["sync_start", "sync_end"] }'

Menghapus webhook

  • bash curl -X DELETE https://api.fivetran.com/v1/webhooks/WEBHOOK_ID \ -u "API_KEY:API_SECRET" \ -H "Accept: application/json"

Referensi metode autentikasi

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

Fivetran tidak mendukung header HTTP kustom untuk webhook keluar. Gunakan parameter kueri untuk meneruskan kredensial.

  • Format URL:

    <ENDPOINT_URL>?key=<API_KEY>
    

    Contoh:

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

    Autentikasi:

    • Kunci API di parameter kueri URL
    • Kunci rahasia divalidasi melalui tanda tangan HMAC di header X-Fivetran-Signature-256

Metode 2: Header kustom (Tidak didukung oleh Fivetran)

Webhook keluar Fivetran tidak mendukung header HTTP kustom. Sebagai gantinya, gunakan Metode 1.

Batasan dan praktik terbaik webhook

Batas permintaan

Batas Nilai
Ukuran permintaan maksimum 4 MB
QPS Maks (kueri per detik) 15.000
Waktu tunggu permintaan 10 detik (Fivetran) / 30 detik (Google SecOps)
Perilaku percobaan ulang Otomatis dengan backoff eksponensial

Praktik terbaik

  • Hanya berlangganan peristiwa yang Anda butuhkan untuk meminimalkan permintaan HTTP.
  • Pantau status pengiriman webhook di dasbor Fivetran.
  • Menyiapkan pemberitahuan untuk penonaktifan webhook.
  • Gunakan webhook tingkat akun untuk pemantauan terpusat.
  • Gunakan webhook tingkat grup untuk pemantauan tujuan tertentu.
  • Tinjau dan perbarui langganan acara secara rutin.

Pemecahan masalah

Pembuatan webhook gagal

Error: Permintaan Tidak Valid HTTP 400 selama pembuatan webhook.

Penyebab: Endpoint Google SecOps tidak dapat dijangkau atau menampilkan status non-2xx.

Solusi:

  1. Pastikan URL endpoint Google SecOps sudah benar.
  2. Pastikan kunci API valid dan memiliki akses Google SecOps API.
  3. Uji endpoint secara manual:

    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 '{"test": "event"}'
    
  4. Buat webhook dengan "active": false untuk melewati validasi awal, lalu aktifkan nanti.

Webhook dinonaktifkan

Penyebab: Webhook terus gagal selama lebih dari 3 hari.

Solusi:

  1. Pastikan feed Google SecOps aktif dan berfungsi dengan baik.
  2. Periksa log feed Google SecOps untuk mengetahui error.
  3. Pastikan kunci API dan kunci rahasia masih valid.
  4. Aktifkan kembali webhook:

    curl -X PATCH https://api.fivetran.com/v1/webhooks/WEBHOOK_ID \
        -u "API_KEY:API_SECRET" \
        -H "Content-Type: application/json" \
        -d '{"active": true}'
    

Peristiwa tidak muncul di Google SecOps

Penyebab: Peristiwa dikirim, tetapi tidak diproses.

Solusi:

  1. Buka SIEM Settings > Feeds di Google SecOps.
  2. Klik feed Fivetran Anda.
  3. Buka tab Log.
  4. Periksa error penyerapan.
  5. Pastikan jenis log disetel ke Fivetran.
  6. Pastikan kunci rahasia cocok dengan yang dikonfigurasi di webhook.

Validasi tanda tangan HMAC gagal

Penyebab: Kunci rahasia tidak cocok.

Solusi:

  1. Verifikasi bahwa kunci rahasia di feed Google SecOps cocok dengan kunci yang digunakan dalam pembuatan webhook.
  2. Buat ulang kunci rahasia Google SecOps jika diperlukan.
  3. Perbarui webhook Fivetran dengan secret baru:

    curl -X PATCH https://api.fivetran.com/v1/webhooks/WEBHOOK_ID \
        -u "API_KEY:API_SECRET" \
        -H "Content-Type: application/json" \
        -d '{"secret": "NEW_SECOPS_SECRET_KEY"}'
    

Tabel pemetaan UDM

Kolom log Pemetaan UDM Logika
jsonPayload.connector_id additional.connector_id Nilai disalin secara langsung
jsonPayload.connector_type additional.connector_type Nilai disalin secara langsung
jsonPayload.data.executionTime additional.executionTime Dikonversi ke string
insertId additional.insertId Nilai disalin jika tidak kosong
labels.levelName additional.levelName Nilai disalin jika tidak kosong
labels.levelValue additional.levelValue Nilai disalin jika tidak kosong
jsonPayload.data.number additional.number Dikonversi ke string
jsonPayload.data.query additional.query Nilai disalin secara langsung
resource.type additional.type Nilai disalin jika tidak kosong
metadata.event_type Tetapkan ke "RESOURCE_READ" jika has_principal_user == "true" dan has_target == "true", atau jika has_principal_user == "true", maka "USER_COMMUNICATION", atau jika has_principal == "true", maka "STATUS_UPDATE", atau "GENERIC_EVENT"
jsonPayload.event metadata.product_event_type Nilai disalin secara langsung
jsonPayload.sync_id metadata.product_log_id Nilai disalin secara langsung
jsonPayload.connector_name principal.asset.hostname Nilai disalin secara langsung
jsonPayload.connector_name principal.hostname Nilai disalin secara langsung
resource.labels.email_id principal.user.email_addresses Digabungkan jika cocok dengan "^.+@.+$"
resource.labels.project_id principal.user.product_object_id Nilai disalin jika tidak kosong
resource.labels.unique_id principal.user.userid Nilai disalin jika tidak ada di ["", "null", " "]
tingkat keseriusan, security_result.severity Tetapkan ke "INFORMATIONAL" jika cocok dengan "INFO"
logName target.resource.name Nilai disalin jika tidak kosong
target.resource.type Ditetapkan ke "DATABASE"
metadata.product_name Tetapkan ke "FIVETRAN"
metadata.vendor_name Tetapkan ke "FIVETRAN"

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