
Ada banyak cara untuk membangun otentikasi dalam produk yang mengutamakan API seperti SparkPost, dan yang kami pilih di awal adalah penggunaan kunci API. Menyisipkan kunci API Anda sebagai header Otorisasi mentah atau melalui HTTP Basic Auth standar membuatnya sangat mudah untuk menggunakan API kami. Kunci API seperti ini adalah standar umum untuk layanan web, tetapi seberapa aman sistem ini?
Ada banyak cara untuk membangun autentikasi dalam produk API-first seperti SparkPost, dan yang kami pilih sejak awal adalah penggunaan API keys. Menyuntikkan API key Anda sebagai header Authorization mentah atau melalui HTTP Basic Auth standar membuatnya sangat mudah untuk menggunakan API kami. API keys seperti ini adalah standar umum untuk webservices, tetapi seberapa amankah sistem ini?
Risiko
Ketika menggunakan layanan web apa pun, jika seorang penyerang mendapatkan kunci API Anda, mereka dapat bertindak atas nama Anda, dan melakukan hal-hal seperti (dalam kasus kami):
mengirim email mereka secara gratis melalui akun Anda
mengunduh daftar penerima Anda dan memberikan kepada spammer (jika mereka bukan spammer itu sendiri)
mengedit template Anda untuk menyuntikkan tautan phishing
mengirim spam atau phishing atas nama Anda
Salah satu dari hasil ini bisa sangat merusak reputasi Anda dan bisnis Anda, dan dalam kasus phishing, berpotensi merusak langsung pengguna akhir Anda. Inilah mengapa sangat penting memastikan tidak ada yang dapat menemukan kunci API Anda.
Peluang
IP whitelisting sebagai penyelamat
Ketika Anda membuat kunci API, Anda sekarang dapat menentukan daftar IP yang diotorisasi untuk menggunakan kunci ini. Anda dapat menentukan beberapa IP, serta blok IP, menggunakan notasi CIDR, sehingga Anda tidak perlu mencantumkan server Anda satu per satu. Ketika kunci API digunakan, baik untuk REST API atau SMTP, kami akan mencocokkan IP yang terhubung dengan daftar ini untuk mengizinkan atau menolak akses.
Dengan fitur ini, bahkan jika kunci API Anda ditemukan atau dicuri, hanya server Anda yang akan dapat menggunakannya. Mengingat risikonya dan betapa mudahnya menyiapkannya, kami sangat merekomendasikan semua pelanggan kami untuk menggunakan fitur ini.
Kata-kata terakhir
Beberapa rekomendasi pribadi seputar keamanan:
Jangan simpan kunci API Anda di dalam kode. Ada banyak manfaat dalam menyimpannya sebagai variabel lingkungan, seperti yang dilakukan Heroku
Anda dapat membuat jumlah kunci API yang tidak terbatas, dan untuk keamanan terbaik adalah membagi tanggung jawab di antara beberapa kunci API, daripada hanya satu kunci serbaguna. Ini juga akan memungkinkan Anda memiliki daftar putih IP yang berbeda per kunci, untuk pemisahan tugas yang lebih baik
Jika Anda bekerja dengan pihak ketiga, jangan berbagi kunci API Anda tetapi buat yang baru untuk mereka, dengan hanya izin yang dibutuhkan, dan terhubung dengan IP mereka
Karena kunci API hanya dapat dibuat melalui UI, mengaktifkan otentikasi 2-faktor pada akun SparkPost Anda sangat penting dan hanya memerlukan waktu 2 menit