API digunakan untuk mengizinkan dua aplikasi yang berbeda agar saling terhubung dengan satu sama lain. Saat ini menjadi satu elemen yang sangat penting di tengah teknologi yang kian berkembang. Jadi sebenarnya apa itu API dan apa itu API security? Simak penjelasannya di bawah ini sebelum mengetahui 6 praktik API security terbaik.
Apa Itu API?
API adalah singkatan dari Application Programing Interface. Dalam pemrograman komputer, API merupakan protokol dan perangkat yang digunakan untuk membangun software dan aplikasi. Jika dijelaskan dengan sederhana, API adalah semacam antarmuka yang memiliki sederet fungsi yang memungkinkan programmer untuk mengakses fitur maupun data spesifik.
Praktik Terbaik API
Teknologi kian berkembang pesat, sayangnya serangan siber pun juga ikut berkembang. Karena itu, mengamankan API menjadi sangat penting dalam bisnis. Terutama ada beberapa laporan yang mengindikasikan bahwa API cukup rapuh dan mudah diserang.
Tak perlu khawatir karena saat ini sudah ada praktik terbaik API yang aman. Provider API dapat menyingkirkan berbagai serangan yang muncul. Berikut ini adalah 5 praktik API security terbaik yang dapat dipertimbangkan dalam mendesain dan mengembangkan web/API:
1. Selalu Menggunakan Gateway
Gateway API akan memusatkan fitur traffic dan menerapkannya pada setiap permintaan yang masuk ke API, persis seperti namanya, gateway berfungsi sebagai pintu gerbang. Fitur yang berusaha masuk ke API ini mungkin terkait dengan keamanan, misalnya pembatasan kecepatan, pencatatan log yang tepat, serta memblokir klien yang berbahaya. Meskipun bisa juga terkait dengan bisnis dan lebih praktis, seperti mengumpulkan bisnis metrik.
Kalau kita tidak menggunakan gateway, kita tidak akan bisa mengontrol apabila ada fitur-fitur masuk dan ternyata berisiko membahayakan API. Tanpa gateway, provider API harus membekali tiap fitur ini dengan pengaman satu-persatu di tahap akhir, yang tentu saja akan lebih merepotkan. Sedangkan jika sudah dibekali dengan gateway sejak awal, maka akan mempermudah proses memperbaiki fitur. Untungnya, sekarang kita sudah bisa menemukan beragam produk API di pasaran.
2. Selalu Menggunakan Server Central OAuth
Selanjutnya, jangan biarkan API atau gateway mengeluarkan token akses. Dengan menggunakan server OAuth yang terpusat, maka token tersebut harus selalu dikeluarkan. Menerbitkan token memerlukan proses yang rumit. Mulai dari mengecek apakah klien otentik atau tidak, pengguna otentik atau tidak otorisasi klien, menandatangani token, dan lain-lain.
Semua fungsi di atas memerlukan akses ke data yang berbeda-beda, misalnya info terkait klien atau mekanisme pengecekan otentik yang dipilih. Terlebih lagi, kalau ada beberapa entitas yang muncul dan mengeluarkan token, maka akan sangat sulit menangani semuanya dalam waktu yang sama. Hanya ada satu entitas yang mampu mengatasi proses ini dengan baik dan aman, yaitu server OAuth.
3. Hanya Gunakan Token Web JSON Secara Internal
Jika menyangkut API, penggunaan web JSON Web Tokens (JWTs) sebagai token akses dan penyegaran merupakan praktik yang dianggap paling baik. Layanan API yang mampu menerima JWT dapat memanfaatkan informasi untuk membuat keputusan bisnis yang tepat. Misalnya saja:
- Apakah caller diperbolehkan mengakses sumber daya tertentu?
- Data apa yang boleh dan tidak boleh didapatkan oleh caller?
- dan lain-lain
Meski begitu, saat token diperlihatkan di luar infrastruktur, terutama diperlihatkan ke klien dari pihak ketiga, maka sangat disarankan untuk menggunakan token opaque, bukan JWT. Informasi yang ada di dalam JWT sangat mudah untuk didekodekan dan karenanya dapat tersedia untuk semua orang. Jika JWT bersifat publik, maka privasi akan menjadi masalah. Harus dipastikan dulu bahwa tidak ada data sensitif yang menjadi klaim JWT.
Lebih jauh lagi, kalau kita membagikan JWT kepada klien pihak ketiga, kemungkinan klien akan mulai bergantung pada data yang ada di dalam JWT. Hal ini bisa menjadi tanggung jawab baru yang harus dikontrol, meski datanya tidak sensitif sekalipun. Jika integrator sudah mulai bergantung pada konten di dalam JWT, mengubah klaim token akan mengakibatkan perubahan lain yang berakhir pada gangguan. kalau ini terjadi, maka perlu ada peningkatan implementasi yang biayanya besar untuk semua klien pihak ketiga.
Jika ingin menggunakan token opaque secara eksternal, tapi juga mendapatkan keuntungan dari JWT untuk komunikasi internal, maka ada solusinya. Gunakan 2 pendekatan, yaitu pendekatan token phantom atau pendekatan token split. Keduanya sama-sama membutuhkan gateway API dalam prosesnya, terutama untuk menerjemahkan toke opaque menjadi JWT.
4. Gunakan Skop untuk Kontrol Akses Coarse-Grained
dSkop OAutg membatasi kemampuan token akses. Jika ada kredensial klien yang dicuri dan memiliki skop terbatas, maka pihak penyerangnya akan memiliki kekuatan yang terbatas pula. Karena itu, pastikan untuk selalu mengeluarkan token dengan kemampuan yang terbatas. Verifikasi skop token bisa dilakukan di gateway API untuk membatasi traffic berbahaya masuk ke web/API.
Inilah pentingnya menggunakan skop saat mengontrol akses selama coarse grained. Kontrol ini dapat mencakup pemeriksaan apakah permintaan dengan token akses tertentu dapat menanyakan sumber daya tertentu atau verifikasi klien dapat menggunakan tipe konten tertentu.
5. Gunakan Klaim untuk Akses Kontrol Fine-Grained di Level API
Pastikan untuk selalu mengimplementasikan akses kontrol fine-grained di level API. Akses kontrol ini bisa digunakan di semua kontrol yang dilakukan di level gateway API dan harus dirancang sedemikian rupa agar ancaman sekecil apa pun yang melewati API gateway bisa ditolak oleh API. Praktik ini akan sangat melindungi API, apa pun cara yang digunakan oleh penyerang.
Kontrol akses fine-grained fokus pada mengamankan API dilihat dari bisnis perspektif. API diharuskan melakukan verifikasi permintaan yang masuk. Apakah caller punya hak terhadap data dan apa data yang bisa didapat berdasarkan identitas caller (baik untuk klien dan pengguna).
6. Jangan Percaya Siapa Pun
Zero trust itu bukan sekedar istilah, tapi API memang harus sangat membatasi traffic yang masuk. Titik. Salah satu satu cara untuk membangun zero trust adalah menggunakan HTTPS untuk semua traffic API. Jika memungkinkan, gunakan HTTPS secara internal agar traffic antar servis tidak bisa dilacak.
Servis yang kita gunakan harus selalu verifikasi JWT yang masuk, bahkan jika merupakan token opaque sekalipun. Sekali lagi, cara ini akan menangani situasi dan mencegah apabila ada hal-hal yang berisiko membahayakan API dan data-data di dalamnya.
Pastikan untuk selalu monitoring web dan monitoring API agar tetap aman. Gunakan layanan dari Netmonk, penyedia solusi monitoring di Indonesia yang mampu menyederhanakan kerumitan masalah jaringan. Kunjungi situsnya sekarang dan coba Netmonk Prime gratis!
Referensi :
https://curity.io/resources/learn/api-security-best-practices/