Mengumpulkan log Fivetran
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
- Buka Setelan SIEM > Feed.
- Klik Tambahkan Feed Baru.
- Di halaman berikutnya, klik Konfigurasi satu feed.
- Di kolom Nama feed, masukkan nama untuk feed (misalnya,
Fivetran Events). - Pilih Webhook sebagai Jenis sumber.
- Pilih Fivetran sebagai Jenis log.
- Klik Berikutnya.
- 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
- Klik Berikutnya.
- Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.
Buat dan simpan kunci rahasia
Setelah membuat feed, Anda harus membuat kunci rahasia untuk autentikasi:
- Di halaman detail feed, klik Buat Kunci Rahasia.
- Dialog akan menampilkan kunci rahasia.
- Salin dan simpan kunci rahasia dengan aman.
Mendapatkan URL endpoint feed
- Buka tab Detail untuk feed tersebut.
- Di bagian Endpoint Information, salin Feed endpoint URL.
Format URL-nya adalah:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateatau
https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateSimpan URL ini untuk langkah berikutnya.
Klik Done.
Membuat kunci Google Cloud API
Google SecOps memerlukan kunci API untuk autentikasi. Buat kunci API yang dibatasi di Konsol Google Cloud.
Buat kunci API
- Buka halaman Credentials Google Cloud Console.
- Pilih project Anda (project yang terkait dengan instance Google SecOps Anda).
- Klik Create credentials > API key. Kunci API dibuat dan ditampilkan dalam dialog.
- Klik Edit API key untuk membatasi kunci.
Membatasi kunci API
- Di halaman setelan kunci API:
- Nama: Masukkan nama deskriptif (misalnya,
Google SecOps Webhook API Key)
- Nama: Masukkan nama deskriptif (misalnya,
- Di bagian Pembatasan API:
- Pilih Restrict key.
- Di daftar Select APIs, telusuri dan pilih Google SecOps API (atau Chronicle API).
- Klik Simpan.
- Salin nilai kunci API dari kolom Kunci API di bagian atas halaman.
- 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
- Login ke akun Fivetran Anda.
- Klik nama pengguna Anda di sudut kanan atas.
- Buka Setelan Akun > Konfigurasi API.
- Jika Anda belum memiliki kunci API:
- Klik Generate API Key.
- 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.
- Buka terminal atau klien API.
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" }'Ganti nilai berikut:
API_KEY: Kunci API Fivetran AndaAPI_SECRET: Rahasia API Fivetran AndaYOUR_SECOPS_API_KEY: Kunci Google Cloud API yang dibuat sebelumnyaYOUR_SECOPS_SECRET_KEY: Kunci rahasia Google SecOps dari pembuatan feed
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" } }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.
Dapatkan ID grup Anda:
- Login ke Fivetran.
- Buka grup tujuan yang ingin Anda pantau.
- ID grup ada di URL:
https://fivetran.com/dashboard/groups/GROUP_ID
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" }'Ganti
GROUP_IDdengan 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
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"Ganti
WEBHOOK_IDdengan ID webhook dari respons pembuatan.Fivetran akan mengirim peristiwa pengujian ke Google SecOps.
Verifikasi peristiwa di Google SecOps:
- Buka Setelan SIEM > Feed.
- Klik feed Fivetran Anda.
- Buka tab Log.
- 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.
Metode 1: Parameter kueri (Direkomendasikan untuk Fivetran)
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:
- Pastikan URL endpoint Google SecOps sudah benar.
- Pastikan kunci API valid dan memiliki akses Google SecOps API.
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"}'Buat webhook dengan
"active": falseuntuk melewati validasi awal, lalu aktifkan nanti.
Webhook dinonaktifkan
Penyebab: Webhook terus gagal selama lebih dari 3 hari.
Solusi:
- Pastikan feed Google SecOps aktif dan berfungsi dengan baik.
- Periksa log feed Google SecOps untuk mengetahui error.
- Pastikan kunci API dan kunci rahasia masih valid.
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:
- Buka SIEM Settings > Feeds di Google SecOps.
- Klik feed Fivetran Anda.
- Buka tab Log.
- Periksa error penyerapan.
- Pastikan jenis log disetel ke Fivetran.
- Pastikan kunci rahasia cocok dengan yang dikonfigurasi di webhook.
Validasi tanda tangan HMAC gagal
Penyebab: Kunci rahasia tidak cocok.
Solusi:
- Verifikasi bahwa kunci rahasia di feed Google SecOps cocok dengan kunci yang digunakan dalam pembuatan webhook.
- Buat ulang kunci rahasia Google SecOps jika diperlukan.
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.