Praktik terbaik untuk keamanan dan pemutakhiran klaster di Azure Kubernetes Service (AKS)
Saat Anda mengelola klaster di Azure Kubernetes Service (AKS), beban kerja dan keamanan data perlu menjadi pertimbangan utama. Saat Anda menjalankan klaster multi-penyewa menggunakan isolasi logis, Anda perlu mengamankan akses sumber daya dan beban kerja. Minimalkan risiko serangan dengan menerapkan pembaruan keamanan Kubernetes dan OS node terbaru.
Artikel ini berfokus pada cara mengamankan kontainer Anda di AKS. Anda akan mempelajari cara untuk:
- Gunakan ID Microsoft Entra dan kontrol akses berbasis peran Kubernetes (Kubernetes RBAC) untuk mengamankan akses server API.
- Amankan akses kontainer ke sumber daya node.
- Upgrade klaster AKS ke versi Kubernetes terbaru.
- Jangan lupa untuk memutakhirkan node dan menerapkan patch keamanan secara otomatis.
Anda juga dapat membaca praktik terbaik untuk manajemen citra kontainer dan untuk keamanan Pod.
Aktifkan perlindungan ancaman
Panduan praktik terbaik
Anda dapat mengaktifkan Defender untuk Kontainer guna membantu mengamankan kontainer Anda. Defender untuk Kontainer dapat menilai konfigurasi kluster serta memberikan rekomendasi keamanan, menjalankan pemindaian kerentanan, dan memberikan perlindungan dan peringatan real time untuk simpul dan kluster Kubernetes.
Akses aman ke API Server dan node klaster
Panduan praktik terbaik
Salah satu cara terpenting untuk mengamankan klaster adalah dengan mengamankan akses ke API Server Kubernetes. Untuk mengontrol akses ke server API, integrasikan Kubernetes RBAC dengan Microsoft Entra ID. Dengan kontrol ini, Anda mengamankan AKS dengan cara yang sama seperti Anda mengamankan akses ke langganan Azure Anda.
API Server Kubernetes menyediakan satu titik koneksi untuk permintaan untuk melakukan tindakan dalam klaster. Untuk mengamankan dan mengaudit akses ke API Server, batasi akses dan berikan tingkat izin serendah mungkin. meskipun pendekatan ini tidak unik untuk Kubernetes, ini sangat penting ketika Anda telah secara logis mengisolasi klaster AKS untuk penggunaan multi-tenant.
MICROSOFT Entra ID menyediakan solusi manajemen identitas siap perusahaan yang terintegrasi dengan kluster AKS. Karena Kubernetes tidak menyediakan solusi manajemen identitas, Anda mungkin sulit untuk membatasi akses ke API Server secara terperinci. Dengan kluster terintegrasi Microsoft Entra di AKS, Anda menggunakan akun pengguna dan grup yang ada untuk mengautentikasi pengguna ke server API.
Dengan menggunakan RBAC Kubernetes dan integrasi ID Microsoft Entra, Anda dapat mengamankan server API dan memberikan izin minimum yang diperlukan untuk kumpulan sumber daya terlingkup, seperti satu namespace. Anda dapat memberikan berbagai peran Kubernetes kepada pengguna atau grup Microsoft Entra. Dengan izin terperinci, Anda dapat membatasi akses ke API Server dan menyediakan jejak audit tindakan yang jelas yang dilakukan.
Praktik terbaik yang disarankan adalah menggunakan grup untuk menyediakan akses ke file dan folder alih-alih identitas individual. Misalnya, gunakan keanggotaan grup ID Microsoft Entra untuk mengikat pengguna ke peran Kubernetes daripada pengguna individual. Saat keanggotaan grup pengguna berubah, izin akses mereka pada klaster AKS juga ikut berubah.
Sementara itu, anggap saja Anda mengikat pengguna individu langsung ke peran dan fungsi pekerjaan mereka akan berubah. Meskipun keanggotaan grup Microsoft Entra diperbarui, izin mereka pada kluster AKS tidak akan. Dalam skenario ini, pengguna akan mendapatkan lebih banyak izin daripada yang mereka butuhkan.
Untuk informasi selengkapnya tentang integrasi Microsoft Entra, RBAC Kubernetes, dan Azure RBAC, lihat Praktik terbaik untuk autentikasi dan otorisasi di AKS.
Membatasi akses ke API Metadata Instans
Panduan praktik terbaik
Tambahkan kebijakan jaringan di semua ruang nama pengguna untuk memblokir jalan keluar pod ke titik akhir metadata.
Catatan
Untuk menerapkan Kebijakan Jaringan, sertakan atribut --network-policy azure
saat membuat kluster AKS. Gunakan perintah berikut untuk membuat kluster: az aks create -g myResourceGroup -n myManagedCluster --network-plugin azure --network-policy azure --generate-ssh-keys
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: restrict-instance-metadata
spec:
podSelector:
matchLabels: {}
policyTypes:
- Egress
egress:
- to:
- ipBlock:
cidr: 10.10.0.0/0#example
except:
- 169.254.169.254/32
Amankan akses kontainer ke sumber daya
Panduan praktik terbaik
Batasi akses ke tindakan yang dapat dilakukan kontainer. Berikan izin dalam jumlah serendah mungkin, dan hindari penggunaan akses root atau eskalasi istimewa.
Sama halnya dengan prinsip bahwa Anda harus memberikan izin sesedikit mungkin untuk pengguna dan grup, Anda juga harus membatasi kontainer untuk hanya melakukan tindakan dan proses yang benar-benar dibutuhkan. Untuk meminimalkan risiko serangan, hindari konfigurasi aplikasi dan kontainer yang memerlukan eskalasi hak istimewa atau akses root.
Untuk kontrol tindakan kontainer yang lebih terperinci, Anda juga dapat menggunakan fitur keamanan Linux bawaan seperti AppArmor dan seccomp. Untuk informasi selengkapnya, lihat Mengamankan akses kontainer ke sumber daya.
Lakukan pemutakhiran ke versi terbaru Kubernetes secara teratur
Panduan praktik terbaik
Untuk memastikan Anda memiliki fitur dan perbaikan bug termutakhir, lakukan peningkatan versi Kubernetes secara teratur di klaster AKS Anda.
Kubernetes merilis fitur baru dengan lebih cepat daripada platform infrastruktur yang lebih tradisional. Pembaruan Kubernetes meliputi:
- Fitur baru
- Perbaikan bug atau keamanan
Fitur baru biasanya melewati status alfa dan beta sebelum menjadi stabil. Setelah stabil, ia akan tersedia dan direkomendasikan untuk produksi. Siklus rilis fitur baru Kubernetes memungkinkan Anda untuk memperbarui Kubernetes tanpa mengalami perubahan yang besar atau harus menyesuaikan deployment dan template Anda.
AKS mendukung tiga kubernetes versi minor. Setelah versi patch minor baru diperkenalkan, versi minor tertua dan rilis patch yang didukung akan dihentikan. Pembaruan Kubernetes kecil terjadi secara berkala. Untuk tetap mendukung, pastikan Anda memiliki proses tata kelola untuk memeriksa peningkatan yang diperlukan. Untuk informasi selengkapnya, lihat AKS versi Kubernetes yang didukung.
Untuk memeriksa versi yang tersedia untuk klaster Anda, gunakan perintah az aks get-upgrade seperti yang diperlihatkan dalam contoh berikut:
az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster --output table
Anda kemudian dapat memutakhirkan klaster AKS menggunakan perintah upgrade az aks. Proses pemutakhiran akan dengan aman:
- Mengarantina dan menguras satu per satu node.
- Menjadwalkan Pod pada node yang tersisa.
- Menyebarkan node baru yang menjalankan versi OS dan Kubernetes terbaru.
Penting
Lakukan pengujian versi minor baru di lingkungan dev test dan pastikan bahwa beban kerja anda tetap sehat dengan versi Kubernetes yang baru.
Kubernetes dapat menghentikan API (seperti pada versi 1.16) yang diandalkan oleh beban kerja Anda. Saat memproduksi versi baru, pertimbangkan untuk menggunakan beberapa kumpulan node pada versi terpisah dan tingkatkan kumpulan individual satu per satu untuk secara progresif menggulirkan pembaruan di seluruh klaster. Jika menjalankan beberapa klaster, tingkatkan satu klaster sekaligus untuk memantau dampak atau perubahan secara progresif.
az aks upgrade --resource-group myResourceGroup --name myAKSCluster --kubernetes-version KUBERNETES_VERSION
Untuk informasi lebih lanjut mengenai peningkatan di AKS, lihat Versi Kubernetes yang Didukung di AKS dan Upgrade klaster AKS.
Memproses pembaruan simpul Linux
Setiap malam, node Linux di AKS mendapatkan patch keamanan melalui kanal pembaruan distro mereka. Perilaku ini secara otomatis dikonfigurasi saat node digunakan dalam klaster AKS. Untuk meminimalkan gangguan dan dampak potensial terhadap beban kerja berjalan, node tidak akan melakukan reboot secara otomatis jika patch keamanan atau pembaruan kernel memerlukan node tersebut. Untuk informasi selengkapnya tentang cara menangani reboot node, lihat Menerapkan pembaruan keamanan dan kernel ke node di AKS.
Peningkatan citra simpul
Peningkatan tanpa pengawasan menerapkan pembaruan ke OS node Linux, tetapi citra yang digunakan untuk membuat simpul untuk kluster Anda tetap tidak berubah. Jika simpul Linux baru ditambahkan ke kluster Anda, citra asli digunakan untuk membuat simpul. Simpul baru ini akan menerima semua pembaruan keamanan dan kernel yang tersedia selama pemeriksaan otomatis setiap malam tetapi akan tetap tidak ditampung hingga semua pemeriksaan dan proses hidupkan ulang selesai. Anda dapat menggunakan peningkatan gambar simpul untuk memeriksa dan memperbarui gambar simpul yang digunakan oleh klaster Anda. Untuk informasi selengkapnya tentang peningkatan gambar simpul, lihat Peningkatan gambar simpul Azure Kubernetes Service (AKS).
Memproses pembaruan simpul Windows Server
Untuk simpul Windows Server, lakukan operasi peningkatan gambar simpul secara teratur untuk menutup dan mengosongkan pod dengan aman serta menyebarkan simpul yang terbaru.
Azure Kubernetes Service