Blog
Cara Mengelola API Key Pembayaran dengan Aman (Rotasi dan Hak Akses)
Bagian dari topik: Integrasi API Pembayaran untuk Developer

Keamanan API key adalah garis pertahanan pertama integrasi pembayaranmu, dan sekaligus tempat kesalahan paling mahal terjadi. Satu kunci yang bocor ke repositori publik, terselip di kode frontend, atau tersimpan di chat bisa membuat orang lain membuat transaksi atas namamu. Kabar baiknya, sebagian besar insiden semacam ini bisa dicegah dengan beberapa kebiasaan sederhana yang konsisten kamu terapkan.
API key pada dasarnya adalah kata sandi mesin: siapa pun yang memegangnya dianggap sebagai kamu oleh server. Karena itu perlakukan ia seperti rahasia paling sensitif, bukan sekadar konfigurasi biasa. Artikel ini membahas cara menyimpan API key hanya di server, memisahkan kunci test dari live, merotasinya secara berkala, dan membatasi hak akses agar dampak kebocoran sekecil mungkin.
Simpan Rahasia Hanya di Server
Aturan paling penting: API key hidup di server, tidak pernah di browser. Semua kode yang berjalan di sisi klien — JavaScript di halaman web, aplikasi mobile — pada akhirnya bisa dibaca siapa saja yang membuka developer tools atau membongkar aplikasi. Kalau kamu menaruh API key di sana, anggap ia sudah bocor.
Di BorderPay, pembagiannya jelas: di browser kamu hanya memakai reference_id, sebuah token publik yang aman ditampilkan untuk menanyakan status pembayaran. API key yang sesungguhnya tetap tinggal di server dan dipakai untuk memanggil endpoint yang sensitif seperti membuat pembayaran. Pola ini juga alasan mengapa sumber kebenaran pembayaran adalah webhook di server, bukan sesuatu yang bisa dimanipulasi dari sisi klien.
Simpan kunci lewat variabel lingkungan (environment variable) atau secret manager, bukan di dalam kode:
# .env (jangan pernah di-commit)
BORDERPAY_API_KEY=sk_live_xxxxxxxx
Pastikan file rahasia masuk .gitignore. Banyak kebocoran terjadi bukan karena serangan canggih, melainkan karena git add -A menyapu file kunci ke dalam commit yang lalu di-push ke publik. Sekali sebuah kunci masuk ke riwayat git, menghapusnya dari commit terbaru saja tidak cukup — ia masih tersimpan di histori. Cara paling aman adalah menganggap kunci itu sudah bocor dan langsung merotasinya.
Untuk deteksi dini, banyak tim memasang pemindai rahasia (secret scanner) sebagai pre-commit hook atau di pipeline CI. Alat semacam ini menolak commit yang mengandung pola menyerupai API key sebelum sempat ter-push. Ini murah dipasang dan berkali-kali menyelamatkan dari kebocoran yang tidak disengaja.
Pisahkan Kunci Test dan Live
Mode test tersedia sejak hari pertama, dan kamu sebaiknya memakai pasangan kunci yang terpisah untuk masing-masing lingkungan.
| Aspek | Kunci test | Kunci live |
|---|---|---|
| Tujuan | Pengembangan & uji coba | Transaksi uang sungguhan |
| Dampak jika bocor | Rendah (tanpa uang nyata) | Tinggi (dana nyata) |
| Dipakai di | Laptop, CI, staging | Server produksi |
| Prasyarat | Bebas | KYC selesai |
Dengan pemisahan ini, developer bisa bereksperimen dan menjalankan pengujian otomatis memakai kunci test tanpa pernah menyentuh kunci live. Kunci live idealnya hanya diketahui oleh sistem produksi dan segelintir orang yang benar-benar membutuhkannya. Kalau kamu belum menyiapkan lingkungan uji, mulailah dari uji pembayaran sandbox.
Batasi Hak Akses dan Sebaran
Prinsip hak akses minimal (least privilege) berlaku untuk manusia maupun mesin:
- Batasi siapa yang bisa melihat kunci live. Semakin sedikit mata dan tangan, semakin kecil peluang bocor.
- Jangan menempelkan kunci di tempat yang tidak aman seperti chat, tiket dukungan, screenshot, atau dokumen bersama.
- Beri tiap lingkungan kredensialnya sendiri agar kalau satu lingkungan disusupi, yang lain tidak ikut terdampak.
- Awasi jejak akses. Perhatikan aktivitas tak wajar; lonjakan transaksi mendadak bisa jadi tanda kunci disalahgunakan.
Membatasi sebaran sama pentingnya dengan membatasi hak. Kunci yang hanya ada di satu tempat aman jauh lebih mudah dijaga daripada kunci yang tercecer di banyak laptop dan layanan. Setiap salinan tambahan adalah satu titik kegagalan baru; makin sedikit salinan, makin kecil permukaan seranganmu.
Kalau timmu tumbuh, pertimbangkan memakai secret manager terpusat alih-alih menyalin file .env dari orang ke orang. Dengan begitu, akses bisa diberikan dan dicabut lewat satu tempat, dan kamu tidak perlu berburu ke banyak mesin ketika sebuah kunci harus dirotasi.
Rotasi Kunci secara Berkala
Rotasi berarti mengganti kunci lama dengan yang baru secara terjadwal, dan segera saat kamu mencurigai kebocoran. Manfaatnya: memperpendek umur kunci yang mungkin sudah bocor tanpa kamu sadari.
Lakukan rotasi tanpa mematikan layanan dengan pola bertahap:
- Terbitkan kunci baru.
- Perbarui secret di server produksi agar memakai kunci baru.
- Verifikasi transaksi berjalan normal dengan kunci baru.
- Cabut kunci lama setelah yakin tidak ada lagi yang memakainya.
Karena API key hanya dipakai di sisi server, rotasi tidak menuntut kamu memperbarui apa pun di browser pelanggan. Kalau kunci pernah tampil di layar, chat, atau repositori, jangan tunda: rotasi saat itu juga dan anggap yang lama sudah tidak aman.
Biasakan rotasi terjadwal meski tidak ada indikasi kebocoran. Kunci yang berumur bertahun-tahun dan tersebar entah ke mana adalah risiko yang menumpuk diam-diam. Dengan jadwal rutin, kamu memaksa dirimu tahu di mana saja kunci dipakai, dan itu sendiri sudah memperkuat postur keamananmu.
Ketika Kamu Menduga Kunci Bocor
Kalau ada tanda kunci disalahgunakan — transaksi yang tidak kamu kenali, lonjakan aktivitas mendadak, atau laporan bahwa kunci muncul di tempat publik — bertindaklah cepat. Terbitkan kunci baru, perbarui produksi, cabut kunci lama, lalu telusuri log untuk memahami apa saja yang terjadi selama kunci itu masih aktif. Menganggap remeh kebocoran API key live sama saja membiarkan pintu terbuka; kecepatan reaksimu menentukan seberapa besar dampaknya.
Keamanan API Key adalah Bagian dari Gambaran Besar
Menjaga API key hanyalah satu lapisan. Ia bekerja berdampingan dengan verifikasi webhook, penanganan input yang aman, dan pemakaian HTTPS di semua endpoint. Kalau kamu ingin melihat konteks keamanan pembayaran yang lebih luas, baca keamanan pembayaran online. Untuk melihat di titik mana saja kunci ini dipakai dalam integrasi, lihat integrasi API pembayaran.
Ingat juga bahwa BorderPay adalah lapisan teknologi di atas mitra payment gateway berlisensi Bank Indonesia. Menjaga kredensialmu tetap rahasia adalah bagianmu; dana tetap diproses oleh mitra berlisensi.
Kesimpulan
Mengelola API key dengan aman bertumpu pada empat kebiasaan: simpan rahasia hanya di server dan jauhkan dari browser, pisahkan kunci test dari live, batasi siapa yang bisa mengakses serta ke mana kunci disebar, dan rotasi secara berkala maupun segera saat curiga bocor. Tidak ada yang rumit, tetapi disiplin menjalankannya yang membedakan integrasi yang aman dari yang rapuh.
Terapkan sekarang selagi integrasimu masih kecil. Mulai dari mode test, pastikan file rahasia tidak pernah masuk ke repositori, lalu baca dokumentasi untuk memahami endpoint mana yang menuntut API key server.