Menggunakan Admisi Keamanan Pod di Azure Kubernetes Service (AKS)
Pod Security Admission (PSA) menggunakan label untuk memberlakukan kebijakan Standar Keamanan Pod pada pod yang berjalan di namespace layanan. Di AKS, Penerimaan Keamanan Pod diaktifkan secara default. Untuk informasi selengkapnya tentang Penerimaan Keamanan Pod dan Standar Keamanan Pod, lihat Menerapkan Standar Keamanan Pod dengan label namespace layanan dan Standar Keamanan Pod.
Penerimaan Keamanan Pod adalah solusi kebijakan bawaan untuk implementasi kluster tunggal. Jika Anda ingin menggunakan kebijakan tingkat perusahaan, kami sarankan Anda menggunakan kebijakan Azure.
- Langganan Azure. Jika Anda tidak memiliki langganan Azure, Anda dapat membuat akun gratis.
- Azure CLI terpasang.
- Kluster AKS yang ada yang menjalankan Kubernetes versi 1.23 atau yang lebih tinggi.
Aktifkan PSA untuk namespace layanan tunggal di kluster Anda menggunakan
kubectl label
perintah dan aturpod-security.kubernetes.io/enforce
label dengan nilai kebijakan yang ingin Anda terapkan. Contoh berikut mengaktifkanrestricted
kebijakan untuk namespace NAMESPACE .kubectl label --overwrite ns NAMESPACE pod-security.kubernetes.io/enforce=restricted
Aktifkan PSA untuk semua namespace di kluster Anda menggunakan
kubectl label
perintah dan aturpod-security.kubernetes.io/warn
label dengan nilai kebijakan yang ingin Anda terapkan. Contoh berikut memungkinkanbaseline
kebijakan untuk semua namespace di kluster Anda. Kebijakan ini menghasilkan peringatan yang menghadap pengguna jika ada pod yang disebarkan ke namespace yang tidak memenuhi kebijakan dasar .kubectl label --overwrite ns --all pod-security.kubernetes.io/warn=baseline
Buat dua namespace menggunakan
kubectl create namespace
perintah .kubectl create namespace test-restricted kubectl create namespace test-privileged
Aktifkan kebijakan PSA untuk setiap namespace layanan, satu dengan
restricted
kebijakan dan satu denganbaseline
kebijakan, menggunakankubectl label
perintah .kubectl label --overwrite ns test-restricted pod-security.kubernetes.io/enforce=restricted pod-security.kubernetes.io/warn=restricted kubectl label --overwrite ns test-privileged pod-security.kubernetes.io/enforce=privileged pod-security.kubernetes.io/warn=privileged
Ini mengonfigurasi
test-restricted
namespace layanan dantest-privileged
untuk memblokir pod yang sedang berjalan dan menghasilkan peringatan yang menghadap pengguna jika ada pod yang tidak memenuhi upaya kebijakan yang dikonfigurasi untuk dijalankan.Coba sebarkan pod ke
test-restricted
namespace layanan menggunakankubectl apply
perintah . Perintah ini menghasilkan kesalahan karenatest-restricted
namespace dikonfigurasi untuk memblokir pod yang tidak memenuhirestricted
kebijakan.kubectl apply --namespace test-restricted -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml
Contoh output berikut menunjukkan peringatan yang menyatakan pod melanggar kebijakan yang dikonfigurasi:
... Warning: would violate PodSecurity "restricted:latest": allowPrivilegeEscalation != false (container "azure-vote-back" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "azure-vote-back" must set securityContext.capabilities.drop=["ALL"]), runAsNonRoot != true (pod or container "azure-vote-back" must set securityContext.runAsNonRoot=true), seccompProfile (pod or container "azure-vote-back" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost") deployment.apps/azure-vote-back created service/azure-vote-back created Warning: would violate PodSecurity "restricted:latest": allowPrivilegeEscalation != false (container "azure-vote-front" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "azure-vote-front" must set securityContext.capabilities.drop=["ALL"]), runAsNonRoot != true (pod or container "azure-vote-front" must set securityContext.runAsNonRoot=true), seccompProfile (pod or container "azure-vote-front" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost") deployment.apps/azure-vote-front created service/azure-vote-front created
Konfirmasikan tidak ada pod yang berjalan di
test-restricted
namespace menggunakankubectl get pods
perintah .kubectl get pods --namespace test-restricted
Contoh output berikut menunjukkan tidak ada pod yang berjalan di
test-restricted
namespace:No resources found in test-restricted namespace.
Coba sebarkan pod ke
test-privileged
namespace layanan menggunakankubectl apply
perintah . Kali ini, pod harus berhasil disebarkan karenatest-privileged
namespace dikonfigurasi untuk memungkinkan pod yang melanggarprivileged
kebijakan.kubectl apply --namespace test-privileged -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml
Contoh output berikut menunjukkan pod yang berhasil disebarkan:
deployment.apps/azure-vote-back created service/azure-vote-back created deployment.apps/azure-vote-front created service/azure-vote-front created
Konfirmasikan bahwa Anda memiliki pod yang berjalan di
test-privileged
namespace menggunakankubectl get pods
perintah .kubectl get pods --namespace test-privileged
Contoh output berikut menunjukkan dua pod yang berjalan di
test-privileged
namespace:NAME READY STATUS RESTARTS AGE azure-vote-back-6fcdc5cbd5-svbdf 1/1 Running 0 2m29s azure-vote-front-5f4b8d498-tqzwv 1/1 Running 0 2m28s
test-restricted
Hapus namespace layanan dantest-privileged
menggunakankubectl delete
perintah .kubectl delete namespace test-restricted test-privileged
Dalam artikel ini, Anda mempelajari cara mengaktifkan Admisi Keamanan Pod di sebuah kluster AKS. Untuk informasi selengkapnya tentang Admisi Keamanan Pod, lihat Menerapkan Standar Keamanan Pod dengan Label Namespace Layanan. Untuk informasi selengkapnya tentang Standar Keamanan Pod yang digunakan oleh Admisi Keamanan Pod, lihat Standar Keamanan Pod.
Umpan balik Azure Kubernetes Service
Azure Kubernetes Service adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: