Melindungi penguatan data plane Kubernetes Anda
Halaman ini menjelaskan cara menggunakan kumpulan rekomendasi keamanan Microsoft Defender untuk Cloud yang didedikasikan untuk penguatan data plane Kubernetes.
Tip
Untuk daftar rekomendasi keamanan yang mungkin muncul untuk kluster dan simpul Kubernetes, tinjaurekomendasi kontainer.
Menyiapkan perlindungan beban kerja Anda
Microsoft Defender untuk Cloud menyertakan bundel rekomendasi yang tersedia setelah Anda menginstal Azure Policy untuk Kubernetes.
Prasyarat
- Tambahkan Aturan FQDN/aplikasi yang diperlukan untuk kebijakan Azure.
- (Untuk kluster non AKS) Sambungkan kluster Kubernetes yang ada ke Azure Arc.
Mengaktifkan penguatan data plane Kubernetes
Anda dapat mengaktifkan Azure Policy untuk Kubernetes dengan salah satu dari dua cara:
- Aktifkan untuk semua kluster saat ini dan yang akan datang menggunakan pengaturan paket/konektor
- Menyebarkan Azure Policy untuk Kubernetes pada kluster yang ada
Aktifkan Azure Policy untuk Kubernetes untuk semua kluster saat ini dan yang akan datang menggunakan pengaturan rencana/konektor
Catatan
Jika Anda mengaktifkan pengaturan ini, Azure Policy untuk pod Kubernetes akan diinstal pada kluster. Melakukannya mengalokasikan sejumlah kecil CPU dan memori untuk digunakan pod. Alokasi ini mungkin mencapai kapasitas maksimum, tetapi tidak memengaruhi CPU dan memori lainnya di sumber daya.
Catatan
Pengaktifan untuk AWS melalui konektor tidak didukung karena keterbatasan dalam EKS yang mengharuskan admin kluster menambahkan izin untuk peran IAM baru pada kluster itu sendiri.
Mengaktifkan langganan Azure atau lokal
Saat Anda mengaktifkan Pertahanan Microsoft untuk Kontainer, pengaturan "Azure Policy for Kubernetes" diaktifkan secara default untuk Azure Kubernetes Service, dan untuk kluster Kubernetes dengan dukungan Azure Arc dalam langganan yang relevan. Jika Anda menonaktifkan pengaturan pada konfigurasi awal, Anda dapat mengaktifkannya setelah itu secara manual.
Jika Anda menonaktifkan pengaturan "Azure Policy for Kubernetes" di bawah paket kontainer, Anda dapat mengikuti langkah-langkah di bawah ini untuk mengaktifkannya di semua kluster dalam langganan Anda:
Masuk ke portal Azure.
Buka Microsoft Defender untuk Cloud>Pengaturan lingkungan.
Pilih langganan yang relevan.
Di halaman paket Defender, pastikan Kontainer dialihkan ke Aktif.
Pilih pengaturan.
Di halaman Pengaturan & Pemantauan, alihkan "Azure Policy for Kubernetes" ke Aktif.
Mengaktifkan untuk proyek GCP
Saat Anda mengaktifkan Pertahanan Microsoft untuk Kontainer pada konektor GCP, pengaturan "Ekstensi Azure Policy untuk Azure Arc" diaktifkan secara default untuk Google Kubernetes Engine di proyek yang relevan. Jika Anda menonaktifkan pengaturan pada konfigurasi awal, Anda dapat mengaktifkannya setelah itu secara manual.
Jika Anda menonaktifkan pengaturan "Ekstensi Azure Policy untuk Azure Arc" di bawah konektor GCP, Anda dapat mengikuti langkah-langkah di bawah ini untuk mengaktifkannya pada konektor GCP Anda.
Menyebarkan Azure Policy untuk Kubernetes pada kluster yang ada
Anda dapat mengonfigurasi Azure Policy untuk Kubernetes secara manual pada kluster Kubernetes yang ada melalui halaman Rekomendasi. Setelah diaktifkan, rekomendasi pengerasan tersedia (beberapa rekomendasi memerlukan konfigurasi lain untuk bekerja).
Catatan
Untuk AWS tidak dimungkinkan untuk melakukan onboarding dalam skala besar menggunakan konektor, tetapi dapat diinstal pada semua kluster yang ada atau pada kluster tertentu menggunakan rekomendasi kluster Kubernetes dengan dukungan Azure Arc harus menginstal ekstensi kebijakan Azure untuk ekstensi Kubernetes.
Untuk menyebarkan Azure Policy untuk Kubernetes ke kluster tertentu:
Dari halaman rekomendasi, cari rekomendasi yang relevan:
Azure-
"Azure Kubernetes Service clusters should have the Azure Policy add-on for Kubernetes installed"
GCP -
"GKE clusters should have the Azure Policy extension"
.AWS dan Lokal -
"Azure Arc-enabled Kubernetes clusters should have the Azure policy extension for Kubernetes extension installed"
.Tip
Rekomendasi disertakan dalam kontrol keamanan yang berbeda, dan tidak masalah mana yang Anda pilih di langkah berikutnya.
Dari salah satu kontrol keamanan, pilih rekomendasi untuk melihat sumber daya tempat Anda dapat memasang add-on.
Pilih kluster yang relevan, dan pilih Remediasi.
Melihat dan mengonfigurasi bundel rekomendasi
Sekitar 30 menit setelah penginstalan Azure Policy for Kubernetes selesai, Defender untuk Cloud menunjukkan status kesehatan kluster untuk rekomendasi berikut, masing-masing dalam kontrol keamanan yang relevan seperti yang ditunjukkan:
Catatan
Jika Anda menginstal Azure Policy untuk Kubernetes untuk pertama kalinya, rekomendasi ini akan muncul sebagai tambahan baru dalam daftar rekomendasi.
Tip
Beberapa rekomendasi memiliki parameter yang harus disesuaikan melalui Azure Policy untuk menggunakannya secara efektif. Misalnya, untuk mendapatkan manfaat dari rekomendasi Gambar kontainer harus disebarkan hanya dari registri tepercaya, Anda harus menentukan registri tepercaya Anda. Jika Anda tidak memasukkan parameter yang diperlukan untuk rekomendasi yang membutuhkan konfigurasi, beban kerja Anda akan ditampilkan sebagai tidak sehat.
Catatan
Komponen Microsoft seperti sensor Defender dan Azure Monitor Agent (AMA) disebarkan di namespace layanan sistem kube secara default. Penyiapan ini memastikan mereka tidak ditandai sebagai tidak patuh dalam rekomendasi sarana data. Namun, alat vendor pihak ketiga yang diinstal di namespace layanan yang berbeda dapat ditandai sebagai tidak patuh. Untuk mengecualikan vendor pihak ketiga dari rekomendasi ini, Anda dapat menambahkan namespace layanan mereka ke daftar pengecualian.
Nama rekomendasi | Kontrol Keamanan | Konfigurasi diperlukan |
---|---|---|
CPU kontainer dan batas memori harus diberlakukan | Melindungi aplikasi dari serangan DDoS | Ya |
Gambar kontainer harus disebarkan hanya dari registri tepercaya | Memperbaiki kerentanan | Ya |
Kemampuan Linux dengan hak istimewa paling rendah harus diberlakukan untuk kontainer | Mengelola akses dan izin akses | Ya |
Kontainer hanya boleh menggunakan profil AppArmor yang diizinkan | Remediasi konfigurasi keamanan | Ya |
Layanan hanya mendengarkan pada port yang diizinkan | Membatasi akses jaringan yang tidak sah | Ya |
Penggunaan jaringan dan port host harus dibatasi | Membatasi akses jaringan yang tidak sah | Ya |
Penggunaan volume pod HostPath yang dipasang harus dibatasi untuk daftar yang diketahui | Mengelola akses dan izin akses | Ya |
Kontainer dengan eskalasi hak istimewa harus dihindari | Mengelola akses dan izin akses | No |
Kontainer yang berbagi namespace layanan host yang sensitif harus dihindari | Mengelola akses dan izin akses | No |
Sistem file akar yang tidak dapat diubah (baca-saja) harus diberlakukan untuk kontainer | Mengelola akses dan izin akses | No |
Cluster Kubernetes hanya dapat diakses melalui HTTPS | Mengenkripsi data dalam transit | No |
Kluster Kube harus menonaktifkan pemasangan otomatis info masuk API | Mengelola akses dan izin akses | No |
Kluster Kube tidak boleh menggunakan namespace layanan default | Menerapkan praktik keamanan terbaik | No |
Kluster Kube tidak boleh memberi kemampuan keamanan CAPSYSADMIN | Mengelola akses dan izin akses | No |
Kontainer dengan hak istimewa harus dihindari | Mengelola akses dan izin akses | No |
Menjalankan kontainer sebagai pengguna akar harus dihindari | Mengelola akses dan izin akses | No |
Untuk rekomendasi dengan parameter yang perlu disesuaikan, Anda perlu mengatur parameter:
Untuk mengatur parameter:
Masuk ke portal Azure.
Buka Microsoft Defender untuk Cloud>Pengaturan lingkungan.
Pilih langganan yang relevan.
Dari menu Defender untuk Cloud, pilih Kebijakan keamanan.
Pilih penugasan yang relevan. Penugasan default adalah
ASC default
.Buka tab Parameter dan ubah nilai sesuai yang diperlukan.
Pilih Tinjau + simpan.
Pilih Simpan.
Untuk menerapkan salah satu rekomendasi:
Buka halaman detail rekomendasi dan pilih Tolak:
Panel untuk mengatur cakupan terbuka.
Atur cakupan dan pilih Ubah untuk menolak.
Untuk melihat rekomendasi mana yang berlaku untuk kluster Anda:
Buka halaman inventori aset Defender untuk Cloud dan atur filter jenis sumber daya ke layanan Kubernetes.
Pilih kluster untuk menyelidiki dan meninjau rekomendasi yang tersedia.
Saat Anda melihat rekomendasi dari kumpulan perlindungan beban kerja, jumlah pod yang terpengaruh ("komponen Kubernetes") tercantum bersama kluster. Untuk daftar Pod tertentu, pilih kluster lalu pilih Ambil tindakan.
Untuk menguji penerapannya, gunakan dua penyebaran Kubernetes di bawah ini:
Pertama adalah untuk penyebaran yang sehat, sesuai dengan bundel rekomendasi perlindungan beban kerja.
Yang lain adalah untuk penyebaran yang tidak sehat, tidak sesuai dengan salah satu rekomendasi.
Sebarkan contoh file .yaml apa adanya, atau gunakan sebagai referensi untuk memulihkan beban kerja Anda sendiri.
Contoh penyebaran file .yaml yang sehat
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-healthy-deployment
labels:
app: redis
spec:
replicas: 3
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
annotations:
container.apparmor.security.beta.kubernetes.io/redis: runtime/default
spec:
containers:
- name: redis
image: <customer-registry>.azurecr.io/redis:latest
ports:
- containerPort: 80
resources:
limits:
cpu: 100m
memory: 250Mi
securityContext:
privileged: false
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
runAsNonRoot: true
runAsUser: 1000
---
apiVersion: v1
kind: Service
metadata:
name: redis-healthy-service
spec:
type: LoadBalancer
selector:
app: redis
ports:
- port: 80
targetPort: 80
Contoh penyebaran file .yaml yang tidak sehat
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-unhealthy-deployment
labels:
app: redis
spec:
replicas: 3
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
hostNetwork: true
hostPID: true
hostIPC: true
containers:
- name: redis
image: redis:latest
ports:
- containerPort: 9001
hostPort: 9001
securityContext:
privileged: true
readOnlyRootFilesystem: false
allowPrivilegeEscalation: true
runAsUser: 0
capabilities:
add:
- NET_ADMIN
volumeMounts:
- mountPath: /test-pd
name: test-volume
readOnly: true
volumes:
- name: test-volume
hostPath:
# directory location on host
path: /tmp
---
apiVersion: v1
kind: Service
metadata:
name: redis-unhealthy-service
spec:
type: LoadBalancer
selector:
app: redis
ports:
- port: 6001
targetPort: 9001
Langkah berikutnya
Dalam artikel ini, Anda mempelajari cara mengonfigurasi penguatan data plane Kubernetes.
Untuk materi terkait, lihat halaman berikut ini: