Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Pod Security Admission (SPA) verwendet Bezeichnungen, um Pod Security Standards-Richtlinien für Pods zu erzwingen, die in einem Namespace ausgeführt werden. In AKS ist Pod Security Admission standardmäßig aktiviert. Weitere Informationen zu Pod Security Admission und Pod Security Standards finden Sie unter Enforce Pod Security Standards with namespace labels (Erzwingen von Pod Security Standards mit Namespacebezeichnungen) und Pod Security Standards.
Pod Security Admission ist eine integrierte Richtlinie für die Implementierung einzelner Cluster. Wenn Sie eine Richtlinie auf Unternehmensniveau verwenden möchten, empfiehlt sich die Verwendung von Azure Policy.
Voraussetzungen
- Ein Azure-Abonnement. Falls Sie über kein Azure-Abonnement verfügen, können Sie ein kostenloses Konto erstellen.
- Die Azure CLI muss installiert sein.
- Ein bestehender AKS-Cluster, der Kubernetes, Version 1.23 oder höher, ausführt.
Aktivieren von Pod Security Admission für einen Namespace in Ihrem Cluster
Aktivieren von PSA für einen einzelnen Namespace
Aktivieren Sie PSA für einen einzelnen Namespace in Ihrem Cluster, indem Sie den Befehl
kubectl labelverwenden und die Bezeichnungpod-security.kubernetes.io/enforceauf den Wert der Richtlinie festlegen, die Sie erzwingen möchten. Das folgende Beispiel aktiviert die Richtlinierestrictedfür den Namespace NAMESPACE.kubectl label --overwrite ns NAMESPACE pod-security.kubernetes.io/enforce=restricted
Aktivieren von PSA für alle Namespaces
Aktivieren Sie PSA für alle Namespace in Ihrem Cluster, indem Sie den Befehl
kubectl labelverwenden und die Bezeichnungpod-security.kubernetes.io/warnauf den Wert der Richtlinie festlegen, die Sie erzwingen möchten. Das folgende Beispiel aktiviert die Richtliniebaselinefür alle Namespaces in Ihrem Cluster. Diese Richtlinie generiert eine Warnung für Benutzer*innen, wenn Pods in einem Namespace bereitgestellt werden, der die Baselinerichtlinie nicht erfüllt.kubectl label --overwrite ns --all pod-security.kubernetes.io/warn=baseline
Erzwingen einer Pod Security Admission-Richtlinie mit einer Bereitstellung
Erstellen Sie mithilfe des Befehls
kubectl create namespacezwei Namespaces.kubectl create namespace test-restricted kubectl create namespace test-privilegedAktivieren Sie mithilfe des Befehls
kubectl labeleine PSA-Richtlinie für jeden Namespace, eine mit der Richtlinierestrictedund eine mit der Richtliniebaseline.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=privilegedDamit werden die Namespaces
test-restrictedundtest-privilegedso konfiguriert, dass die Ausführung von Pods blockiert wird. Außerdem wird eine Warnung für die Benutzer*innen generiert, wenn versucht wird, Pods auszuführen, die nicht der konfigurierten Richtlinie entsprechen.Versuchen Sie mithilfe des Befehls
kubectl apply, Pods im Namespacetest-restrictedbereitzustellen. Dieser Befehl führt zu einem Fehler, da der Namespacetest-restrictedso konfiguriert ist, dass Pods blockiert werden, die der Richtlinierestrictednicht entsprechen.kubectl apply --namespace test-restricted -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yamlDie folgende Beispielausgabe zeigt eine Warnung, die besagt, dass die Pods gegen die konfigurierte Richtlinie verstoßen:
... 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 createdVergewissern Sie sich mithilfe des Befehls
kubectl get pods, dass im Namespacetest-restrictedkeine Pods ausgeführt werden.kubectl get pods --namespace test-restrictedDie folgende Beispielausgabe zeigt, dass im Namespace
test-restrictedkeine Pods ausgeführt werden:No resources found in test-restricted namespace.Versuchen Sie mithilfe des Befehls
kubectl apply, Pods im Namespacetest-privilegedbereitzustellen. Diesmal sollten die Pods erfolgreich bereitgestellt werden, da der Namespacetest-privilegedso konfiguriert ist, dass Pods zugelassen werden, die gegen die Richtlinieprivilegedverstoßen.kubectl apply --namespace test-privileged -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yamlDie folgende Beispielausgabe zeigt, dass die Pods erfolgreich bereitgestellt wurden:
deployment.apps/azure-vote-back created service/azure-vote-back created deployment.apps/azure-vote-front created service/azure-vote-front createdVergewissern Sie sich mithilfe des Befehls
kubectl get pods, dass im Namespacetest-privilegedPods ausgeführt werden.kubectl get pods --namespace test-privilegedDie folgende Beispielausgabe zeigt, dass im Namespace
test-privilegedzwei Pods ausgeführt werden:NAME READY STATUS RESTARTS AGE azure-vote-back-6fcdc5cbd5-svbdf 1/1 Running 0 2m29s azure-vote-front-5f4b8d498-tqzwv 1/1 Running 0 2m28sEntfernen Sie die Namespaces
test-restrictedundtest-privilegedmithilfe des Befehlskubectl delete.kubectl delete namespace test-restricted test-privileged
Nächste Schritte
In diesem Artikel haben Sie erfahren, wie Sie Pod Security Admission in einem AKS-Cluster aktivieren. Weitere Informationen zu Pod Security Admission finden Sie unter Erzwingen von Pod Security Standards mit Namespacebezeichnungen. Weitere Informationen zu Pod Security Standards, die von Pod Security Admission verwendet werden, finden Sie unter Pod Security Standards.