GNU/Linux >> Belajar Linux >  >> Linux

6 Praktik Terbaik Keamanan Kubernetes:Amankan Beban Kerja Anda

Pendahuluan

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

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

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

1. Aktifkan Kontrol Akses Berbasis Peran (RBAC)

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

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

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

--authorization-mode=RBAC

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

2. Jaga Rahasia Anda

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

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

Menetapkan Proses ke Wadah Berbeda

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

Lengkapi wadah itu dengan wadah penandatangan 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 melanggar tindakan keamanan Anda.

3. Batasi Traffic Pod-to-Pod Dengan Kebijakan Jaringan Kubernetes

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

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

Kebijakan jaringan tidak bertentangan tetapi malah bersifat aditif. Mendefinisikan kebijakan jaringan di namespace berarti bahwa pod akan menolak koneksi apa pun yang tidak diizinkan oleh kebijakan itu, yang secara efektif mengisolasi pod. Pod terbatas pada apa yang disetujui oleh kombinasi beberapa kebijakan jaringan.

4. Tingkatkan Keamanan Pod

Mengamankan Kernel dengan AppArmor atau SELinux

Kontainer berbagi kernel yang sama, sehingga perlu menggunakan alat tambahan untuk meningkatkan isolasi kontainer. Modul keamanan, seperti AppArmor dan sistem yang menerapkan 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 dalam sistem. Setiap profil dapat berjalan baik dalam menegakkan mode, yang memblokir akses ke sumber daya yang tidak diizinkan atau keluhan mode 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 Linux umum (Mekanisme Kontrol Akses). Itu tidak mengenali pengguna super (root) dan tidak bergantung 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 seluruh 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 individu dan daemon sistem tidak perlu membahayakan keamanan seluruh sistem.

Taint dan Toleransi

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

Sebagai alat orkestrasi, Kubernetes cenderung memulai pod di lokasi yang paling efisien dalam cluster, yaitu lokasi dengan beban kerja terkecil. Dimungkinkan untuk mengubah penempatan pod dengan mendefinisikan Taints dan Tolerations.

Taints memungkinkan node untuk 'menolak' pod atau kumpulan pod berdasarkan aturan yang telah ditentukan. Di sisi lain, Toleransi diterapkan pada tingkat pod, dan memungkinkan pod untuk menjadwalkan ke node dengan Taint yang cocok (kunci dan efeknya sama).

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

Ruang nama

Kubernetes tidak memiliki mekanisme yang menyediakan keamanan di seluruh Namespace. Batasi penggunaan Namespace, sebagai fitur keamanan, dalam domain tepercaya, dan untuk tujuan internal. Jangan gunakan Namespaces saat Anda ingin menolak akses pengguna cluster Kubernetes ke resource Namespaces lainnya.

watch dan list permintaan memungkinkan klien untuk memeriksa nilai semua rahasia yang ada di namespace itu. Hanya komponen tingkat sistem yang paling istimewa yang harus memiliki izin untuk mengimplementasikan permintaan ini.

5. Pembaruan Bergulir Kubernetes  

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

Ada beberapa teknik seperti update bergulir, dan migrasi kumpulan node yang memungkinkan Anda menyelesaikan update dengan gangguan dan waktu henti yang minimal.

6. Tetapkan Kebijakan Audit

Logging audit mencatat garis waktu peristiwa yang terjadi di cluster Kubernetes. Dengan melacak tindakan yang diambil oleh pengguna dan Kubernetes API, administrator dapat menganalisis rantai peristiwa yang menyebabkan potensi masalah.

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

Gunakan pencatatan audit secara teratur untuk memastikan bahwa sistem Anda mutakhir dan ancaman tetap di bawah tab. Penerapan berbasis container menambahkan dimensi lain ke proses audit. Perbandingan antara gambar asli dan gambar yang berjalan di wadah dapat digunakan secara efektif untuk melihat apakah ada perbedaan yang dapat menyebabkan masalah keamanan. Pastikan versi perangkat lunak Anda selalu berisi patch keamanan terbaru.


Linux
  1. Pindai keamanan Linux Anda dengan Lynis

  2. Praktik Terbaik Keamanan OpenSSH

  3. Praktik terbaik keamanan server Windows

  1. Amankan wadah Anda dengan SELinux

  2. Praktik terbaik keamanan server Linux

  3. Praktik terbaik keamanan Wordpress di Linux

  1. 19 Praktik Terbaik Kubernetes untuk Membangun Cluster yang Efisien

  2. Praktik Terbaik DNS untuk Keamanan dan Kinerja

  3. Praktik terbaik server Nagios?