Cara Mengamankan Kredensial dan Webhook di n8n
Langkah praktis menjaga kunci enkripsi, kredensial API, dan URL webhook n8n agar tidak bocor atau dipanggil sembarang orang.
Jawaban singkat
Amankan n8n dengan menyimpan dan mencadangkan N8N_ENCRYPTION_KEY, menaruh semua rahasia di fitur Credentials (bukan di node Code), memasang autentikasi dan IP allowlist pada node Webhook, memverifikasi tanda tangan dari pengirim, dan menutup editor n8n dari akses publik.
Daftar isi
- Bagaimana n8n menyimpan kredensial?
- Daftar pengamanan kredensial
- 1. Tentukan dan cadangkan kunci enkripsi
- 2. Taruh semua rahasia di Credentials
- 3. Batasi siapa yang bisa melihat dan memakai kredensial
- 4. Pakai kunci API dengan hak sekecil mungkin
- Daftar pengamanan webhook
- 5. Aktifkan autentikasi di node Webhook
- 6. Verifikasi tanda tangan dari layanan pengirim
- 7. Pakai IP allowlist bila alamat pengirim tetap
- 8. Bedakan URL tes dan URL produksi
- Ringkasan pengamanan
- Jangan lupa lapisan servernya
- Pertanyaan yang sering diajukan
Kredensial dan webhook adalah dua pintu paling berharga di instance n8n. Kredensial berisi kunci API, kata sandi database, dan token akun bisnis kamu. Webhook adalah URL publik yang bisa memicu workflow, termasuk workflow yang mengubah data atau mengirim pesan.
Kenapa ini penting? Satu kunci API yang bocor bisa dipakai orang lain sampai tagihanmu membengkak, dan satu webhook tanpa pengaman bisa dipanggil siapa pun yang menemukan URL-nya. Berikut daftar praktis yang bisa kamu periksa satu per satu.
Bagaimana n8n menyimpan kredensial?
n8n mengenkripsi kredensial sebelum menyimpannya ke database. Kunci enkripsinya dibuat acak saat n8n pertama kali dijalankan dan disimpan di folder ~/.n8n, kecuali kamu menentukannya sendiri lewat variabel lingkungan N8N_ENCRYPTION_KEY.
Artinya, keamanan kredensial bergantung pada dua hal: database dan kunci enkripsi. Siapa pun yang memegang keduanya bisa membuka semua kredensial. Sebaliknya, kalau kunci hilang, kredensial di database tidak bisa dibaca lagi, termasuk oleh kamu sendiri.
Daftar pengamanan kredensial
1. Tentukan dan cadangkan kunci enkripsi
Set N8N_ENCRYPTION_KEY secara eksplisit, misalnya di file environment Docker Compose, lalu simpan salinannya di pengelola kata sandi tim. Jangan simpan kunci ini di repositori git bersama file konfigurasi lain.
Ini juga penting saat memindahkan atau memperbarui server. Banyak kasus kredensial "rusak" setelah migrasi terjadi karena kunci lama tidak ikut dibawa. Langkah update yang aman ada di cara update n8n di VPS tanpa kehilangan workflow. Pada queue mode, dokumentasi n8n mewajibkan kunci yang sama dipasang di semua worker.
2. Taruh semua rahasia di Credentials
Jangan menulis kunci API langsung di parameter node HTTP Request, di header manual, atau di dalam node Code. Nilai seperti itu tersimpan sebagai teks biasa di definisi workflow, ikut terbawa saat workflow diekspor atau dibagikan, dan bisa muncul di riwayat eksekusi.
Simpan di fitur Credentials, lalu pilih kredensial itu di node. Untuk API yang tidak punya node khusus, node HTTP Request bisa memakai kredensial generik seperti Header Auth.
3. Batasi siapa yang bisa melihat dan memakai kredensial
Setiap akun pengguna yang bisa membuka editor berpotensi memakai kredensial yang dibagikan kepadanya. Bagikan kredensial hanya ke orang atau proyek yang membutuhkan, aktifkan autentikasi dua faktor untuk akun pengguna, dan hapus akun orang yang sudah tidak terlibat.
4. Pakai kunci API dengan hak sekecil mungkin
Buat kunci khusus untuk n8n, jangan memakai kunci admin pribadi. Bila layanan tujuan mendukung pembatasan, beri hanya izin yang dipakai workflow, misalnya baca saja. Untuk API berbayar, pasang batas pemakaian di sisi penyedia.
Daftar pengamanan webhook
5. Aktifkan autentikasi di node Webhook
Node Webhook mendukung beberapa metode autentikasi: Basic auth, Header auth, JWT auth, dan n8n User Auth, selain None. Untuk integrasi antar sistem, Header auth dengan token panjang acak adalah pilihan yang sederhana: pengirim wajib menyertakan header tertentu, dan permintaan tanpa header itu ditolak.
6. Verifikasi tanda tangan dari layanan pengirim
Banyak layanan, seperti payment gateway dan platform e-commerce, mengirim webhook dengan tanda tangan, biasanya berupa HMAC dari isi permintaan dan kunci rahasia. Layanan seperti ini sering tidak bisa diatur untuk mengirim header autentikasi buatanmu, jadi verifikasi tanda tangannya di awal workflow. Aktifkan opsi Raw Body bila perhitungan tanda tangan butuh isi permintaan yang persis, hitung ulang HMAC dengan node Crypto atau Code, lalu hentikan workflow bila hasilnya tidak cocok. Cara menghitung tanda tangan berbeda tiap layanan, jadi ikuti dokumentasi resmi pengirimnya. Contoh alur webhook pembayaran ada di konfirmasi pembayaran otomatis lewat webhook.
7. Pakai IP allowlist bila alamat pengirim tetap
Opsi IP(s) Allowlist di node Webhook menolak permintaan dari alamat di luar daftar dengan error 403. Ini efektif untuk pengirim yang mempublikasikan daftar IP resmi atau server milikmu sendiri. Kalau dibiarkan kosong, semua IP boleh memanggil.
8. Bedakan URL tes dan URL produksi
Node Webhook punya URL tes, yang aktif saat kamu sedang mendengarkan event uji di editor, dan URL produksi, yang terdaftar ketika workflow dipublikasikan atau diaktifkan. Jangan memberikan URL tes ke sistem lain, dan jangan menempelkan URL produksi di tempat publik seperti tiket dukungan atau grup chat.
Ringkasan pengamanan
| Area | Langkah | Risiko yang dicegah |
|---|---|---|
| Kunci enkripsi | Set N8N_ENCRYPTION_KEY dan cadangkan terpisah | Kredensial hilang atau terbuka bersama database |
| Kredensial | Simpan di Credentials, bukan di node | Rahasia ikut terekspor atau tercatat |
| Akses pengguna | Bagikan terbatas, aktifkan 2FA | Kredensial dipakai orang yang tidak berhak |
| Webhook | Header auth atau JWT, verifikasi HMAC | Workflow dipicu pihak tak dikenal |
| Jaringan | IP allowlist, HTTPS, editor tidak publik | Panel admin diserang dari internet |
Jangan lupa lapisan servernya
Semua pengaturan di atas kurang berarti bila server n8n terbuka lebar. Pasang n8n di belakang reverse proxy dengan HTTPS, dan bila memungkinkan, batasi akses ke editor hanya lewat VPN atau daftar IP kantor, sementara jalur webhook tetap terbuka. Perbarui n8n secara rutin karena perbaikan keamanan dirilis lewat versi baru. Dokumentasi keamanan n8n juga membahas audit keamanan, SSO, menonaktifkan public API bila tidak dipakai, dan pembatasan node tertentu.
Kalau konsep webhook sendiri masih baru, dasarnya ada di apa itu webhook.
Pertanyaan yang sering diajukan
Apa yang terjadi bila kunci enkripsi n8n hilang?
Kredensial yang sudah tersimpan tidak bisa didekripsi lagi. Workflow tetap ada, tetapi semua kredensial harus dibuat ulang. Karena itu kunci perlu dicadangkan di tempat terpisah.
Apakah URL webhook yang panjang dan acak sudah cukup aman?
Membantu, tetapi bukan pengaman utama. URL bisa bocor lewat log, tangkapan layar, atau riwayat browser. Tetap pakai autentikasi atau verifikasi tanda tangan.
Apakah aman memakai variabel lingkungan untuk rahasia di node Code?
Bisa dipakai, tetapi semua orang yang bisa mengedit workflow berpotensi membaca nilainya. Untuk instance yang dipakai banyak orang, batasi akses ke variabel lingkungan dari node dan utamakan fitur Credentials.


