Blogger Jateng

Keamanan dalam Arsitektur Tanpa Server

Arsitektur tanpa server telah merevolusi cara aplikasi dibangun dan digunakan dengan menghilangkan kebutuhan pengembang untuk mengelola server. Hal ini memungkinkan pengembang untuk fokus pada penulisan kode sementara penyedia layanan cloud menangani manajemen infrastruktur, skalabilitas, dan pemeliharaan. Namun, dengan keunggulan ini, muncul tantangan keamanan unik yang harus diatasi untuk memastikan aplikasi yang kuat dan aman. Artikel ini membahas pertimbangan keamanan utama dalam arsitektur tanpa server dan cara mengurangi potensi risiko.

Memahami Arsitektur Tanpa Server

Komputasi tanpa server yang umumnya dikenal sebagai Functions-as-a-Service (FaaS) adalah model eksekusi komputasi awan di mana penyedia awan secara dinamis mengelola alokasi sumber daya mesin dan pengembang dapat menjalankan kode sebagai respons terhadap peristiwa tanpa harus menyediakan atau mengelola server. Beberapa contoh platform tanpa server adalah AWS Lambda, Microsoft Azure Functions, dan Google Cloud Functions. Istilah “serverless” mungkin menyiratkan tidak ada server, tetapi sebenarnya berarti bahwa server diabstraksikan dari pandangan pengembang.

sumber: techmagic.co

Masalah keamanan dalam Serverless

1. Permukaan Serangan yang Diperluas

Dalam dunia tanpa server, aplikasi biasanya terdiri dari banyak fungsi kecil yang terpisah-pisah. Hal ini membuka banyak titik masuk bagi penyerang, karena setiap fungsi dapat disalahgunakan, selain itu, peningkatan ketergantungan pada API dan layanan pihak ketiga memperkenalkan kerentanan eksternal.

2. Serangan Injeksi Peristiwa

Fungsi tanpa server memungkinkan Anda menjalankan kode di cloud tanpa mengelola server, dipicu oleh peristiwa seperti permintaan HTTP, pengunggahan file, atau perubahan basis data. Serangan injeksi peristiwa dapat berhasil dieksploitasi oleh aktor jahat ketika input tidak divalidasi dengan baik, yang dapat menyebabkan kompromi pada aplikasi.

3. Kurangnya Konteks Keamanan yang Persisten

Fungsi tanpa server tidak memiliki status, tidak seperti status global yang disimpan di server. Hal ini menyulitkan untuk menyimpan konteks keamanan yang persisten seperti sesi pengguna atau token akses, sehingga mempersulit otentikasi dan otorisasi lebih lanjut.

4. Fungsi-fungsi yang Terlalu Diistimewakan

Izin yang salah dikonfigurasi adalah ancaman keamanan yang tersebar luas. Eskalasi hak istimewa (yang berarti memberikan otorisasi yang salah kepada Coded), biasanya terjadi ketika Anda memberikan terlalu banyak izin kepada fungsi tanpa server, dan jika penyerang entah bagaimana mendapatkan akses ke fungsi tersebut.

5. Ketergantungan Pihak Ketiga

Pustaka dan ketergantungan eksternal merupakan inti dari aplikasi tanpa server. Hal ini dapat menimbulkan kerentanan jika tidak diperiksa atau diperbarui dengan benar.

6. Risiko Penolakan Layanan (DoS)

Platform tanpa server dibangun untuk meningkatkan skala dengan peningkatan beban kerja secara otomatis. Meskipun hal ini bagus untuk lalu lintas normal, hal ini dapat menyebabkan serangan DoS dengan biaya yang meningkat secara eksponensial dan kinerja yang menurun.

Mengurangi Risiko Keamanan

1. Menerapkan Validasi Masukan

Ini juga mencakup fungsi tanpa server; semua masukan ke fungsi tanpa server harus divalidasi dan disterilkan dengan benar. Hal ini membantu mencegah injeksi peristiwa dan serangan berbasis input lainnya.

2. Menerapkan Prinsip Hak Istimewa Paling Sedikit

Berikan izin sesedikit mungkin yang diperlukan untuk setiap fungsi untuk melakukan pekerjaannya. Gunakan kontrol akses berbasis peran (RBAC) dan audit izin secara teratur untuk menghindari fungsi yang memiliki hak istimewa yang berlebihan.

3. Mengamankan Sumber Peristiwa

Semua sumber peristiwa yang memicu fungsi tanpa server Anda harus diamankan. Misalnya, Anda harus menggunakan TLS untuk mengamankan titik akhir HTTP, Anda harus memvalidasi pesan dari antrean atau aliran, dan mengautentikasi panggilan API.

4. Memantau dan Mencatat Aktivitas

Gunakan Pencatatan dan Pemantauan Terperinci untuk Semua Fungsi Tanpa Server Anomali dapat dideteksi dan insiden dapat ditelusuri menggunakan alat pemantauan seperti AWS CloudWatch, Azure Monitor, dan Google Cloud Operations Suite.

5. Mengaudit Ketergantungan Secara Teratur

Cari kerentanan di pustaka pihak ketiga dengan audit npm atau OWASP Dependency-Check. Pahami ketergantungan pihak ketiga yang digunakan dan selalu perbarui untuk membatasi paparan terhadap kerentanan yang diketahui.

6. Tetapkan Batas Sumber Daya

Tentukan batas memori dan waktu eksekusi untuk setiap fungsi. Ini akan meminimalkan prevalensi serangan DoS dan mengekstrak pemanfaatan sumber daya secara maksimal.

7. Enkripsi Data

Gunakan enkripsi data saat tidak digunakan dan data saat transit. Gunakan layanan terkelola untuk mengelola kunci enkripsi agar enkripsi lebih mudah dan aman.

8. Melakukan Penilaian Keamanan Secara Berkala

Lakukan penilaian keamanan secara teratur seperti pengujian penetrasi, peninjauan kode, dll., untuk mengidentifikasi dan mengurangi kerentanan. 

Kesimpulan

Meskipun arsitektur tanpa server menawarkan manfaat yang signifikan, arsitektur ini juga menghadirkan tantangan keamanan unik yang membutuhkan perhatian yang cermat. Dengan memahami risiko dan menerapkan praktik terbaik, organisasi dapat membangun aplikasi tanpa server yang aman yang memanfaatkan potensi penuh teknologi inovatif ini. Karena ekosistem tanpa server terus berkembang, tetap proaktif dalam hal keamanan akan tetap penting untuk melindungi aplikasi dan data.