13 Praktik Terbaik untuk Mengamankan Layanan Mikro

Arsitektur layanan mikro memberikan fleksibilitas, skalabilitas, dan kemampuan untuk memodifikasi, menambah, atau menghapus komponen perangkat lunak tanpa mempengaruhi bagian lain dari aplikasi.

Selain siklus pengembangan perangkat lunak yang lebih pendek, tim yang lebih kecil, dan opsi bahasa pemrograman yang fleksibel, ini memungkinkan Anda untuk menskalakan atau memecahkan masalah fungsi atau layanan tertentu tanpa mengganggu komponen lainnya.

Secara umum, layanan mikro memungkinkan memecah aplikasi monogami besar menjadi layanan berbeda yang dapat diterapkan secara independen. Namun, layanan independen yang lebih kecil ini meningkatkan jumlah komponen sehingga kompleksitas dan kesulitan mengamankannya.

Gambar arsitektur monolitik-vs-layanan mikro Topi merah

Biasanya, penerapan layanan mikro tipikal akan memiliki lapisan perangkat keras, layanan atau aplikasi, komunikasi, cloud, virtualisasi, dan orkestrasi. Masing-masing memiliki persyaratan keamanan, kontrol, dan tantangan khusus.

Tantangan keamanan terkait dengan Layanan Mikro

Layanan mikro biasanya merupakan sistem yang didistribusikan secara luas dengan aturan akses yang rumit, lebih banyak lalu lintas untuk dipantau, dan permukaan serangan yang lebih besar. Selain itu, sebagian besar cloud layanan mikro berjalan di lingkungan cloud, yang juga memiliki berbagai konfigurasi dan kontrol keamanan.

Karena banyaknya API, port, dan komponen yang diekspos, firewall tradisional mungkin tidak menyediakan keamanan yang memadai. Masalah ini membuat penerapan layanan mikro lebih rentan terhadap berbagai ancaman dunia maya seperti man-in the middle, serangan injeksi, skrip lintas situs, DDoS, dan lainnya.

Keamanan jaringan adalah tantangan lain dengan layanan mikro. Secara khusus, kontrol identitas dan akses memiliki tingkat kerumitan baru. Kerentanan lainnya termasuk kode tidak aman dan kelemahan dalam sistem penemuan layanan.

Meskipun mengamankan layanan mikro lebih sulit daripada aplikasi monolitik, Anda dapat melindunginya secara efektif dengan menyusun strategi yang baik dan mengikuti praktik terbaik.

Idealnya, arsitektur memerlukan pendekatan terdistribusi yang harus mencakup semua komponen yang berbeda.

Area umum yang harus ditangani termasuk

  • Melindungi aplikasi, layanan mikro, dan pengguna
  • Mengamankan Manajemen Identitas dan Akses
  • Melindungi data
  • Tingkatkan keamanan komunikasi layanan-ke-layanan
  • Memantau layanan mikro dan sistem keamanan

Praktik terbaik untuk mengamankan Layanan Mikro

Salah satu strategi terbaik adalah menggunakan kombinasi praktik terbaik, alat, dan kontrol untuk melindungi seluruh ekosistem. Pendekatan sebenarnya mungkin berbeda menurut jenis layanan, aplikasi, pengguna, lingkungan, dan faktor lainnya.

Jika Anda memutuskan untuk menggunakan layanan mikro, Anda perlu memastikan bahwa Anda memenuhi semua persyaratan keamanan untuk layanan, koneksi, dan data.

Mari kita lihat beberapa praktik keamanan layanan mikro yang efektif.

#1. Bangun keamanan dari awal 👮

Jadikan keamanan sebagai bagian dari siklus pengembangan. Idealnya, integrasikan keamanan ke dalam pengembangan dan penerapan layanan mikro sejak awal. Mengatasi keamanan dengan cara ini adalah pendekatan yang mudah, efektif, dan lebih murah daripada menunggu untuk menambahkannya saat pengembangan perangkat lunak hampir selesai.

  8 Pembuat Resume Premium untuk Membuat Resume Profesional yang Kuat

#2. Gunakan Pertahanan dalam Mekanisme Kedalaman

Defense in Depth (DiP) adalah teknik di mana Anda menerapkan beberapa lapisan keamanan pada layanan dan data Anda. Praktik ini mempersulit penyerang untuk menembus berbagai lapisan sehingga memberikan keamanan yang kuat untuk layanan dan data Anda.

Berbeda dengan solusi keamanan perimeter seperti firewall, konsep Defense-in-depth berbeda. Itu bergantung pada kombinasi alat seperti antivirus, firewall, manajemen tambalan, perangkat lunak anti-spam, dan lainnya untuk menyediakan beberapa lapisan keamanan yang didistribusikan ke seluruh sistem.

Gambar keamanan multi-lapisan pertahanan yang mendalam: Imperva

Dengan pendekatan ini, pertama-tama Anda harus mengidentifikasi layanan sensitif, setelah itu Anda menerapkan lapisan keamanan yang sesuai di sekitarnya.

#3. Terapkan keamanan di tingkat kontainer 📦

Paling sering, layanan mikro mengandalkan teknologi kontainer. Dengan demikian, mengamankan kontainer, baik secara internal maupun eksternal, adalah salah satu cara untuk mengurangi permukaan serangan dan risikonya. Idealnya, membidik prinsip keamanan yang paling tidak istimewa adalah praktik yang baik dan membutuhkan kombinasi strategi termasuk tetapi tidak terbatas pada;

  • Membatasi izin seminimal mungkin
  • Hindari menjalankan layanan dan hal lain menggunakan sudo atau akun istimewa.
  • Batasi atau kontrol akses dan konsumsi sumber daya yang tersedia. Misalnya, membatasi akses ke sumber daya sistem operasi oleh wadah membantu mencegah pencurian atau penyusupan data.
  • Jangan simpan rahasia di disk penampung.
  • Gunakan aturan yang sesuai untuk mengisolasi akses ke sumber daya.

Penting juga untuk memastikan bahwa citra kontainer tidak memiliki kerentanan atau masalah keamanan. Pemindaian keamanan dan kerentanan kontainer secara teratur akan membantu mengidentifikasi risiko.

Alat pemindaian gambar yang umum termasuk Clair, Anchoredan banyak lagi.

#4. Menerapkan autentikasi Multi-Faktor 🔒

Mengaktifkan autentikasi multi-faktor meningkatkan keamanan front-end.

Pengguna yang mengakses harus memberikan detail nama pengguna dan kata sandi mereka selain bentuk verifikasi lain, seperti kode yang dikirim ke ponsel mereka atau alamat email yang ditentukan. Teknik ini mempersulit penyerang, yang mungkin menggunakan kredensial yang dicuri atau diretas, untuk mengakses layanan mikro karena mereka tidak memiliki cara untuk memberikan autentikasi kedua.

#5. Gunakan Identitas Pengguna dan token Akses

Dalam penerapan layanan mikro, sejumlah besar aplikasi dan layanan akan memerlukan otorisasi dan kontrol akses yang aman. Kerangka otorisasi seperti OAuth 2.0 dan OpenID memungkinkan Anda memproses token dengan aman, sehingga melindungi layanan mikro Anda. Akibatnya, ini memungkinkan aplikasi pihak ketiga untuk mengakses layanan atau data lain dari pengguna.

Dalam penyebaran tipikal, aplikasi utama akan meminta pengguna untuk mengotorisasi layanan pihak ketiga. Setelah menerima ini, aplikasi menghasilkan token akses untuk sesi tersebut.

Secara khusus, OAuth adalah salah satu strategi paling efektif untuk identitas pengguna dan kontrol akses. Meskipun ada beberapa protokol otorisasi lain, dan Anda juga dapat membuatnya sendiri, praktik terbaik adalah menggunakan OAuth karena lebih standar, stabil, dan diterima secara luas.

#6. Buat Gerbang API

Umumnya, layanan mikro terdiri dari beberapa komponen yang didistribusikan melalui jaringan yang berbeda dan dapat diakses dari berbagai sistem dan klien. Mengekspos layanan mikro meningkatkan kerentanan dan risiko keamanan. Salah satu cara untuk melindunginya adalah dengan membuat titik masuk tunggal dan aman yang membantu Anda memusatkan semua akses dari sistem eksternal dan klien.

  21 Ide Buletin untuk Memukau Pembaca Anda

Untuk mencapai hal ini, terapkan gateway API untuk menyaring semua permintaan masuk terkait masalah keamanan sebelum merutekannya ke layanan mikro yang sesuai. Gateway API berada di antara aplikasi klien dan layanan mikro. Itu kemudian membatasi mengekspos layanan mikro sambil menyediakan fungsi manajemen permintaan tambahan seperti otentikasi, penghentian SSL, terjemahan protokol, pemantauan, perutean permintaan, caching, dan banyak lagi.

Dengan pendekatan ini, gateway API merutekan semua layanan eksternal ke layanan mikro sambil juga mendukung prinsip keamanan yang mendalam.

Gambar gateway API layanan mikro Buku langsung

Termasuk gateway API tipikal NGINX, Kong, Tik, Duta besar, Gerbang API AWSdan banyak lagi.

Untuk mempelajari lebih lanjut tentang keamanan API, lihat panduan kami di Mengapa dan Bagaimana Mengamankan Titik Akhir API.

#7. Profil API berdasarkan zona penerapan

Terapkan pembatasan berbasis peran dengan memastikan bahwa pengguna hanya memiliki akses ke API dan layanan yang mereka perlukan. Karena sebagian besar perangkat lunak berbahaya sering memaparkan layanan kepada lebih banyak orang, membatasi akses hanya kepada pengguna yang berwenang akan mengurangi risiko. Salah satu teknik untuk mengurangi keterpaparan adalah memberi label pada API berdasarkan pengguna yang seharusnya memiliki akses ke sana. Secara umum, API dapat berupa;

  • API Ethernet – Untuk layanan yang terpapar ke dunia luar di luar pusat data.
  • API Zona Perusahaan – ini dimaksudkan untuk lalu lintas pribadi internal
  • DMZ APIs– untuk menangani lalu lintas yang berasal dari internet
  • Hybrid Zone API – untuk penyebaran pusat data

#8. Mengamankan komunikasi layanan-ke-layanan

Praktik yang efektif melibatkan autentikasi dan otorisasi permintaan saat dua layanan mikro berkomunikasi.

Secara umum, ada tiga teknik utama yang dapat Anda gunakan untuk mengamankan komunikasi antarlayanan. Ini adalah Trust the network, JSON Web Token (JWT), dan Mutual Transport Layer Security (mTLS, atau Mutual TLS).

Mengamankan komunikasi antar-layanan dengan JWT Image Buku langsung

Dari ketiganya, yang paling populer adalah mTLS. Dalam pendekatan ini, setiap layanan mikro harus membawa pasangan kunci publik/pribadi. Layanan mikro klien kemudian menggunakan pasangan kunci untuk mengautentikasi dirinya ke layanan mikro penerima melalui mTLS.

Selama autentikasi, setiap layanan mikro menghasilkan sertifikat. Setelah itu, setiap layanan mikro akan menggunakan sertifikat dari yang lain untuk mengautentikasi dirinya sendiri.

Meskipun TLS memberikan integritas dan kerahasiaan untuk data dalam transit, TLS juga memungkinkan klien untuk mengidentifikasi layanan mikro. Layanan mikro klien biasanya mengetahui layanan mikro lainnya. Namun, karena TLS bersifat satu arah, layanan mikro penerima tidak dapat memverifikasi layanan mikro klien, – dan penyerang dapat mengeksploitasi kelemahan ini. Di sisi lain, mTLS menyediakan sarana di mana setiap layanan mikro dapat mengidentifikasi satu sama lain.

#9. Batas nilai 🚏 lalu lintas klien

Membatasi lalu lintas eksternal mencegah masalah seperti serangan denial of service (DoS) serta contoh di mana beberapa klien menghabiskan sebagian besar bandwidth aplikasi. Salah satu pendekatannya adalah dengan menerapkan berbagai aturan yang dapat memantau dan mengontrol laju lalu lintas yang dikirim atau diterima dari klien berdasarkan IP, waktu, dll.

Konfigurasikan layanan Anda untuk melambat jika mendeteksi beberapa upaya login yang gagal ke API Anda atau aktivitas mencurigakan lainnya.

Sistem yang lambat akan mematahkan semangat para penyerang dan mungkin menghentikan upaya mereka untuk mengakses layanan. Anda dapat menilai batas menggunakan gateway API, melalui kode, atau teknik lainnya. Biasanya, sebagian besar lingkungan SaaS memiliki batasan kecepatan API untuk meminimalkan penyalahgunaan oleh pengguna serta serangan.

  36 Game Pencarian Google Tersembunyi dan Telur Paskah

#10. Gunakan manajer orkestrasi

Manajer orkestrasi memungkinkan Anda mengotomatiskan konfigurasi, koordinasi, dan tugas manajemen layanan mikro lainnya selain meningkatkan keamanan. Biasanya, alat tersebut memungkinkan Anda mengelola banyak wadah, membatasi akses metadata, memisahkan beban kerja, mengumpulkan log, dan banyak lagi.

Beberapa alat orkestrasi memiliki fitur tambahan yang memungkinkan pengembang menyimpan dan berbagi informasi sensitif seperti sertifikat SSL, kunci enkripsi, kata sandi, dan token identitas.

Dua metode yang umum digunakan untuk orkestrasi layanan mikro yang efektif adalah;

  • Mengkodekan orkestrasi sebagai layanan mikro
  • Menggunakan gateway API untuk menyediakan lapisan orkestrasi

Orkestrasi melalui gateway API tidak disarankan karena tantangan saat ada kebutuhan untuk meningkatkan skala layanan.

Lapisan orkestrasi layanan mikro – Gambar Logika global

Alat manajemen orkestrasi yang umum termasuk Kubernetes, Istio, Layanan Azure Kubernetes (AKS)dll.

Untuk mengetahui lebih lanjut, jelajahi Container Orchestration for DeOps.

#11. Pantau semua sistem dan layanan Anda

Karena layanan mikro bergantung pada sistem terdistribusi, Anda perlu memiliki strategi pemantauan yang andal dan efektif untuk semua komponen individual.

Menyebarkan pemantauan berkelanjutan memungkinkan Anda untuk mendeteksi dan mengatasi risiko keamanan pada waktu yang tepat. Untuk ini, ada berbagai macam solusi pemantauan layanan mikro, termasuk Prometheus, Statsd, InfluxDB, Logstashdll.

Pemantauan di dalam arsitektur layanan mikro

Gunakan alat yang sesuai untuk memantau sistem dan layanan internal. Beberapa praktik terbaik meliputi;

  • Aktifkan logging di lapisan aplikasi. Kamu bisa Splunk, Grafika, tumpukan ELKdan alat lain yang mengumpulkan log di tingkat aplikasi, wadah, jaringan, dan infrastruktur.
  • Pantau metrik penggunaan
  • Gunakan tren dalam metrik seperti CPU, memori, waktu respons, kesalahan, notifikasi, dan lainnya untuk mendeteksi aktivitas tidak biasa yang menunjukkan adanya serangan atau potensi serangan.
  • Audit log di area seperti permintaan klien yang masuk, catatan database, wadah, dan lainnya untuk mengidentifikasi ketidakkonsistenan atau aktivitas yang tidak biasa.

#12. Mengotomatiskan aktivitas keamanan

Mengotomatiskan proses keamanan seperti menerapkan pembaruan, pemindaian kerentanan, pemantauan, penerapan kebijakan, dan aktivitas lainnya. Selain itu, periksa pembaruan untuk memastikan bahwa mereka aman dan tidak menimbulkan kerentanan baru.

Setelah pembaruan, perangkat lunak keamanan idealnya melakukan pengujian pada semua kontainer dan layanan mikro untuk melihat apakah ada beberapa kerentanan atau masalah keamanan yang terjadi sebelumnya.

#13. Lindungi 🛡️ data setiap saat

Lindungi data saat transit dan saat istirahat. Idealnya, terapkan penggunaan HTTPS untuk semua komunikasi, untuk mengamankan data saat transit, dan enkripsi untuk semua data sensitif saat istirahat. Hindari mengirim dan menyimpan kata sandi, kunci, kredensial, dan data sensitif teks biasa yang berada di luar kode.

Strategi terbaik adalah menggunakan teknologi standar untuk mengenkripsi semua data sensitif sedini mungkin. Juga, dekripsi data selambat mungkin untuk mengurangi paparan.

Kesimpulan

Layanan mikro mengandalkan komponen terdistribusi untuk memberikan manfaat seperti lebih banyak fleksibilitas dan opsi penerapan. Namun, saat menggunakan layanan mikro, organisasi harus menyesuaikan kebijakan dan strategi keamanan internal menuju pendekatan yang lebih berbasis cloud dan terdistribusi.

Idealnya, bertujuan untuk mengurangi permukaan serangan, melindungi lingkungan layanan mikro, API, aplikasi, dan data.