Utiliser l’admission de sécurité des pods dans Azure Kubernetes Service (AKS)
L’admission de la sécurité des pods utilise des étiquettes pour appliquer des stratégies de normes de sécurité des pods sur les pods s’exécutant dans un espace de noms. Dans l’AKS, l’admission de la sécurité des pods est activée par défaut. Pour plus d’informations sur l’admission de la sécurité des pods et les normes de sécurité des pods, consultez Appliquer des normes de sécurité de pod avec des étiquettes d’espace de noms et Normes de sécurité des pods.
L’admission de la sécurité des pods est une solution de stratégie intégrée pour les implémentations de cluster uniques. Si vous souhaitez utiliser une stratégie de niveau entreprise, nous vous recommandons d’utiliser une stratégie Azure.
Avant de commencer
- Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, vous pouvez créer un compte gratuit.
- Azure CLI.
- Un cluster AKS existant exécutant Kubernetes version 1.23 ou ultérieure.
Activer l’admission de la sécurité des pods pour un espace de noms dans votre cluster
Activer l’admission de la sécurité des pods pour un espace de noms unique
Activez l’admission de la sécurité des pods pour un espace de noms unique dans votre cluster à l’aide de la commande
kubectl label
, puis définissez l’étiquettepod-security.kubernetes.io/enforce
avec la valeur de stratégie que vous souhaitez appliquer. L’exemple suivant active la stratégierestricted
pour l’espace de noms NAMESPACE.kubectl label --overwrite ns NAMESPACE pod-security.kubernetes.io/enforce=restricted
Activer l’admission de la sécurité des pods pour tous les espaces de noms
Activez l’admission de la sécurité des pods pour tous les espaces de noms dans votre cluster à l’aide de la commande
kubectl label
, puis définissez l’étiquettepod-security.kubernetes.io/warn
avec la valeur de stratégie que vous souhaitez appliquer. L’exemple suivant active la stratégiebaseline
pour tous les espaces de noms de votre cluster. Cette stratégie génère un avertissement visible par l’utilisateur si des pods sont déployés dans un espace de noms qui ne répond pas à la stratégie de base.kubectl label --overwrite ns --all pod-security.kubernetes.io/warn=baseline
Appliquer une stratégie d’admission de la sécurité des pods avec un déploiement
Créez deux espaces de noms à l’aide de la commande
kubectl create namespace
.kubectl create namespace test-restricted kubectl create namespace test-privileged
Activez une stratégie d’admission de la sécurité des pods pour chaque espace de noms, une avec la stratégie
restricted
et une autre avec la stratégiebaseline
, à l’aide de la commandekubectl label
.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
Cela configure les espaces de noms
test-restricted
ettest-privileged
pour bloquer les pods en cours d’exécution et générer un avertissement à l’utilisateur si des pods qui ne répondent pas à la stratégie configurée tentent de s’exécuter.Tentez de déployer des pods dans l’espace de noms
test-restricted
à l’aide de la commandekubectl apply
. Cette commande génère une erreur, car l’espace de nomstest-restricted
est configuré pour bloquer les pods qui ne répondent pas à la stratégierestricted
.kubectl apply --namespace test-restricted -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml
L’exemple de sortie suivant montre un avertissement indiquant que les pods enfreignent la stratégie configurée :
... 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
Vérifiez qu’aucun pod n’est en cours d’exécution dans l’espace de noms
test-restricted
à l’aide de la commandekubectl get pods
.kubectl get pods --namespace test-restricted
L’exemple de sortie suivant ne montre aucun pod en cours d’exécution dans l’espace de noms
test-restricted
:No resources found in test-restricted namespace.
Tentez de déployer des pods dans l’espace de noms
test-privileged
à l’aide de la commandekubectl apply
. Cette fois, les pods doivent être déployés correctement, car l’espace de nomstest-privileged
est configuré pour autoriser les pods qui enfreignent la stratégieprivileged
.kubectl apply --namespace test-privileged -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml
L’exemple de sortie suivant montre les pods déployés avec succès :
deployment.apps/azure-vote-back created service/azure-vote-back created deployment.apps/azure-vote-front created service/azure-vote-front created
Vérifiez qu’aucun pod n’est en cours d’exécution dans l’espace de noms
test-privileged
à l’aide de la commandekubectl get pods
.kubectl get pods --namespace test-privileged
L’exemple de sortie suivant montre deux pods en cours d’exécution dans l’espace de noms
test-privileged
: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
Supprimez les espaces de noms
test-restricted
ettest-privileged
à l’aide de la commandekubectl delete
.kubectl delete namespace test-restricted test-privileged
Étapes suivantes
Dans cet article, vous avez appris à activer l’admission de la sécurité des pods sur un cluster AKS. Pour plus d’informations sur l’admission de la sécurité des pods, consultez Appliquer des normes de sécurité de pod avec des étiquettes d’espace de noms. Pour plus d’informations sur les normes de sécurité des pods utilisées par l’admission de la sécurité des pods, consultez Normes de sécurité des pods.
Azure Kubernetes Service