Bagikan melalui


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.

Sebelum Anda mulai

  • 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.

Mengaktifkan Admisi Keamanan Pod untuk namespace layanan di kluster Anda

Mengaktifkan PSA untuk namespace layanan tunggal

  • Aktifkan PSA untuk namespace layanan tunggal di kluster Anda menggunakan kubectl label perintah dan atur pod-security.kubernetes.io/enforce label dengan nilai kebijakan yang ingin Anda terapkan. Contoh berikut mengaktifkan restricted kebijakan untuk namespace NAMESPACE .

    kubectl label --overwrite ns NAMESPACE pod-security.kubernetes.io/enforce=restricted
    

Aktifkan PSA untuk semua namespace layanan

  • Aktifkan PSA untuk semua namespace di kluster Anda menggunakan kubectl label perintah dan atur pod-security.kubernetes.io/warn label dengan nilai kebijakan yang ingin Anda terapkan. Contoh berikut memungkinkan baseline 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
    

Menerapkan kebijakan Penerimaan Keamanan Pod dengan penyebaran

  1. Buat dua namespace menggunakan kubectl create namespace perintah .

    kubectl create namespace test-restricted
    kubectl create namespace test-privileged
    
  2. Aktifkan kebijakan PSA untuk setiap namespace layanan, satu dengan restricted kebijakan dan satu dengan baseline kebijakan, menggunakan kubectl 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 dan test-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.

  3. Coba sebarkan pod ke test-restricted namespace layanan menggunakan kubectl apply perintah . Perintah ini menghasilkan kesalahan karena test-restricted namespace dikonfigurasi untuk memblokir pod yang tidak memenuhi restricted 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
    
  4. Konfirmasikan tidak ada pod yang berjalan di test-restricted namespace menggunakan kubectl 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.
    
  5. Coba sebarkan pod ke test-privileged namespace layanan menggunakan kubectl apply perintah . Kali ini, pod harus berhasil disebarkan karena test-privileged namespace dikonfigurasi untuk memungkinkan pod yang melanggar privileged 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
    
  6. Konfirmasikan bahwa Anda memiliki pod yang berjalan di test-privileged namespace menggunakan kubectl 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
    
  7. test-restricted Hapus namespace layanan dan test-privileged menggunakan kubectl delete perintah .

    kubectl delete namespace test-restricted test-privileged
    

Langkah berikutnya

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.