6 Kubernetes Security Praktek Terbaik: mengamankan Workloads Anda

6 Kubernetes Security Praktek Terbaik: mengamankan Workloads Anda
February 22, 2023 No Comments Kubernetes G6k1JiPxqm

Alat orkestrasi seperti Kubernetes memperkenalkan tingkat ketahanan dan keserbagunaan yang belum pernah ada sebelumnya untuk penerapan dan pengelolaan perangkat lunak. Mereka juga menyoroti ketidakcukupan lanskap keamanan saat ini.

Arsitektur tersebar Kubernetes memberi kita beberapa lapisan tambahan. Kami dapat menggunakannya untuk meningkatkan dan mengembangkan pengaturan keamanan yang ada. Jika Anda mengonfigurasi lapisan ini dengan benar, lapisan tersebut dapat mengisolasi ancaman keamanan apa pun sebelum muncul dari titik asalnya.

Artikel ini berfokus pada langkah-langkah yang dapat Anda ambil untuk meningkatkan keamanan keseluruhan klaster Kubernetes Anda.

1. Aktifkan Kontrol Akses Berbasis Peran (RBAC)

Kompleksitas sistem yang berjalan di banyak perangkat, dengan banyak layanan mikro yang saling terhubung yang dikelola oleh ratusan individu dan utilitas adalah mimpi buruk logistik.

Lakukan kontrol ketat atas izin yang diberikan kepada pengguna. Kubernetes adalah pendukung metode kontrol akses berbasis peran (RBAC) . Metode kontrol akses berbasis peran berarti tidak ada pengguna yang memiliki lebih banyak izin daripada yang mereka butuhkan untuk menyelesaikan tugas mereka secara efektif. Kubernetes adalah tentang otomatisasi, dan RBAC menggunakan grup API untuk mendorong keputusan otorisasi melalui API Kubernetes.

Catatan: Otomasi dapat menjadi masalah dalam hal ini. Pengguna yang memiliki izin untuk membuat pod di dalam namespace dapat menggunakan peran tersebut untuk membuat pod guna mengakses peta atau rahasia konfigurasi. Ketidakteraturan ini disebut eskalasi hak istimewa , di mana pengguna memberikan sendiri izin tambahan.

Sejak Kubernetes versi 1.8, mode RBAC sudah stabil dan didukung oleh API rbac.authorization.k8s.io/v1. Aktifkan RBAC dengan memulai server API dengan perintah berikut:

--authorization-mode=RBAC

Kubernetes memiliki serangkaian peran yang telah ditentukan untuk pengguna manusia dan komponen, seperti aplikasi, pengontrol, dan node. Peran yang telah ditentukan ini sangat banyak dan menawarkan tingkat peran terpisah yang masuk akal untuk tugas yang paling umum.

2. Jaga Rahasia Anda Rahasia

Di Kubernetes, Secret adalah objek kecil yang berisi data sensitif, seperti kata sandi atau token.

Meskipun pod tidak dapat mengakses rahasia pod lain, sangat penting untuk menjaga agar rahasia tetap terpisah dari image atau pod. Jika tidak, siapa pun yang memiliki akses ke gambar tersebut juga akan memiliki akses ke rahasia tersebut. Aplikasi kompleks yang menangani banyak proses dan memiliki akses publik sangat rentan dalam hal ini.

pendekatan keamanan kubernetes yang dipartisi di mana hanya satu kontainer di dalam Pod yang memiliki akses ke Rahasia

Tetapkan Proses ke Kontainer Berbeda

Setiap container di dalam pod harus meminta secret volume di volumenya. Kurangi risiko pengungkapan rahasia dengan membagi proses ke dalam wadah terpisah. Gunakan wadah front-end yang berinteraksi dengan pengguna tetapi tidak dapat melihat kunci privat.

Lengkapi wadah tersebut dengan wadah penanda tangan yang dapat melihat kunci pribadi dan menanggapi permintaan penandatanganan sederhana dari front-end. Pendekatan terpartisi ini memaksa penyerang untuk melakukan serangkaian tindakan kompleks dalam upaya untuk menembus langkah keamanan Anda.

Catatan: Administrator harus selalu menggunakan kredensial yang kuat dari server API ke server etcd mereka. Autentikasi bersama melalui sertifikat klien TLS dapat mengisolasi server etcd di belakang firewall yang hanya dapat diakses oleh server API.

3. Batasi Trafik Pod-ke-Pod Dengan Kebijakan Jaringan Kubernetes

Ini adalah praktik terbaik Keamanan Kubernetes untuk menerapkan protokol keamanan TLS di setiap level pipeline penerapan aplikasi. Namun, penting juga untuk mengamankan elemen individual yang membentuk klaster dan elemen yang mengontrol akses ke klaster.

Pod menerima lalu lintas dari sumber mana pun secara default. Saat Anda mendefinisikan Kebijakan Jaringan , Anda menetapkan aturan khusus tentang bagaimana pod berkomunikasi di dalam cluster dan dengan sumber daya eksternal.

Kebijakan jaringan tidak bertentangan tetapi malah bersifat aditif. Mendefinisikan sebuah kebijakan jaringan dalam namespace berarti bahwa pod akan menolak koneksi apapun yang tidak diperbolehkan oleh kebijakan tersebut, secara efektif mengisolasi pod. Pod terbatas pada apa yang disetujui oleh kombinasi beberapa kebijakan jaringan.

Catatan: Anda tidak boleh menjalankan pod dengan tingkat keamanan campuran pada node yang sama karena kurangnya jaminan batas keamanan antar pod.

4. Tingkatkan Keamanan Pod

Mengamankan Kernel dengan AppArmor atau SELinux

Wadah berbagi kernel yang sama, sehingga perlu menggunakan alat tambahan untuk meningkatkan isolasi wadah . Modul keamanan, seperti AppArmor dan sistem yang memberlakukan kebijakan kontrol akses seperti SELinux , membatasi program pengguna dan layanan sistem. Mereka juga digunakan untuk menolak akses ke file dan membatasi sumber daya jaringan.

AppArmor membatasi kumpulan sumber daya yang tersedia untuk wadah di dalam sistem. Setiap profil dapat dijalankan dalam mode penegakan , yang memblokir akses ke sumber daya yang dilarang atau mode pengaduan yang hanya melaporkan pelanggaran. Laporan tepat waktu tentang potensi masalah secara signifikan meningkatkan kemampuan logging dan audit sistem Anda.

SELinux mengelola alokasi sumber daya secara independen dari ACM (Access Control Mechanism) Linux umum. Itu tidak mengenali superuser (root) dan tidak tergantung pada binari setuid/setgid.

Mengamankan sistem tanpa SELinux bergantung pada konfigurasi yang tepat dari aplikasi istimewa dan kernel itu sendiri. Kesalahan konfigurasi di area ini dapat membahayakan keseluruhan sistem. Keamanan sistem berdasarkan kernel SELinux bergantung pada kebenaran kernel dan konfigurasi kebijakan keamanannya.

Serangan masih menimbulkan ancaman yang signifikan. Namun, dengan SELinux, program pengguna individual dan daemon sistem tidak perlu membahayakan keamanan seluruh sistem.

Noda dan Toleransi

Kubernetes menyediakan opsi untuk membuat aturan yang telah ditentukan saat sistem menugaskan pod baru ke node.

Sebagai alat orkestrasi, Kubernetes cenderung memulai pod di lokasi yang paling efisien dalam klaster, yaitu lokasi dengan beban kerja terkecil. Dimungkinkan untuk men-tweak penempatan pod dengan mendefinisikan Noda dan Toleransi.

Representasi sederhana dari satu Pod sedang dijadwalkan dan Pod lainnya tidak dijadwalkan berdasarkan taint dan toleransi

Taint memungkinkan node untuk ‘menolak’ sebuah pod atau sekumpulan pod berdasarkan aturan yang telah ditentukan sebelumnya. Di sisi lain, Tolerations diterapkan pada level pod, dan memungkinkan pod untuk menjadwalkan ke node dengan Taint yang cocok (kunci dan efeknya sama).

Noda dan toleransi harus digunakan bersama-sama untuk memastikan bahwa pod tidak dijadwalkan ke node yang tidak sesuai.

Ruang nama

Kubernetes tidak memiliki mekanisme yang memberikan keamanan di seluruh Namespace. Batasi penggunaan Ruang Nama, sebagai fitur keamanan, dalam domain tepercaya, dan untuk tujuan internal. Jangan gunakan Namespaces jika Anda ingin menolak akses pengguna klaster Kubernetes ke sumber daya Namespaces lainnya.

Permintaan watchdan listmemungkinkan klien untuk memeriksa nilai semua rahasia yang ada di namespace tersebut. Hanya komponen tingkat sistem yang paling istimewa yang boleh memiliki izin untuk mengimplementasikan permintaan ini.    

5. Pembaruan Bergulir Kubernetes  

Menjadi tidak mungkin untuk melacak semua vektor serangan potensial . Fakta ini sangat disayangkan karena tidak ada yang lebih penting daripada waspada dan mengatasi potensi ancaman. Pertahanan terbaik adalah memastikan bahwa Anda menjalankan Kubernetes versi terbaru yang tersedia.

Ada beberapa teknik seperti rolling updates , dan migrasi kumpulan node yang memungkinkan Anda menyelesaikan pembaruan dengan gangguan dan waktu henti yang minimal.

6. Menetapkan Kebijakan Audit

Logging audit merekam lini masa peristiwa yang terjadi di kluster Kubernetes. Dengan melacak tindakan yang diambil oleh pengguna dan API Kubernetes, administrator dapat menganalisis rangkaian peristiwa yang menyebabkan potensi masalah.

Kubernetes memungkinkan Anda menyempurnakan kebijakan audit dengan menentukan seberapa sering peristiwa dicatat, apakah peringatan harus dikeluarkan, dan prosedur untuk menghentikan pod yang terpengaruh.

Gunakan log audit secara teratur untuk memastikan bahwa sistem Anda mutakhir dan bahwa ancaman disimpan di bawah tab. Penyebaran berbasis kontainer menambah dimensi lain pada proses audit. Perbandingan antara gambar asli dan gambar yang berjalan di wadah dapat digunakan secara efektif untuk melihat apakah ada ketidaksesuaian yang dapat menyebabkan masalah keamanan. Pastikan versi perangkat lunak Anda selalu berisi tambalan keamanan terbaru.

Catatan: Mengotomatiskan logging audit dan aturan audit umum yang telah ditentukan adalah cara yang efisien untuk mempertahankan kontrol atas klaster Anda. Gambar minimal yang hanya berisi file dan pustaka yang penting untuk aplikasi akan meningkatkan efisiensi audit.

Kesimpulan

Sekarang Anda memahami keamanan Kubernetes dan praktik terbaiknya.

Ikuti prinsip-prinsip yang paling tidak diistimewakan dan pertahanan yang mendalam. Jika penyerang berhasil mengkompromikan satu komponen, mereka seharusnya tidak mendapatkan akses penuh ke sistem. Sebaliknya, pastikan penyerang perlu menembus lapisan tambahan sebelum dapat menyebabkan kerusakan yang signifikan atau mengakses data sensitif.

Untuk ikhtisar yang lebih komprehensif tentang cara membangun klaster yang efisien, lihat artikel Praktik Terbaik Kubernetes kami .

Untuk tetap mendapat informasi tentang berita keamanan TI terbaru, kami menyarankan Anda untuk melihat daftar Blog Keamanan Internet Teratas kami .

About The Author

Leave a reply

Your email address will not be published. Required fields are marked *