Použití přístupu k zabezpečení podů ve službě Azure Kubernetes Service (AKS)
Přístup k zabezpečení podů (PSA) používá popisky k vynucení zásad standardů zabezpečení podů na podech spuštěných v oboru názvů. V AKS je ve výchozím nastavení povolen přístup k zabezpečení podů. Další informace o standardech zabezpečení podů a zabezpečení podů naleznete v tématu Vynucení standardů zabezpečení podů s popisky oboru názvů a standardy zabezpečení podů.
Přístup k zabezpečení podů je integrované řešení zásad pro implementace jednoho clusteru. Pokud chcete použít zásady na podnikové úrovni, doporučujeme použít zásady Azure.
Než začnete
- Předplatné Azure. Pokud ještě nemáte předplatné Azure, můžete si vytvořit bezplatný účet.
- Nainstalované rozhraní Azure CLI
- Existující cluster AKS se systémem Kubernetes verze 1.23 nebo vyšší.
Povolení přístupu k zabezpečení podů pro obor názvů v clusteru
Povolení PSA pro jeden obor názvů
Pomocí příkazu povolte PSA pro jeden obor názvů v clusteru
kubectl label
a nastavtepod-security.kubernetes.io/enforce
popisek s hodnotou zásad, kterou chcete vynutit. Následující příklad povolí zásadurestricted
oboru názvů oboru názvů.kubectl label --overwrite ns NAMESPACE pod-security.kubernetes.io/enforce=restricted
Povolení PSA pro všechny obory názvů
Povolte PSA pro všechny obory názvů v clusteru pomocí
kubectl label
příkazu a nastavtepod-security.kubernetes.io/warn
popisek s hodnotou zásad, kterou chcete vynutit. Následující příklad povolí zásadubaseline
pro všechny obory názvů v clusteru. Tato zásada vygeneruje upozornění na uživatele, pokud jsou nějaké pody nasazené do oboru názvů, který nevyhovuje zásadám směrného plánu .kubectl label --overwrite ns --all pod-security.kubernetes.io/warn=baseline
Vynucení zásad přístupu k zabezpečení podů s nasazením
Pomocí příkazu vytvořte dva obory
kubectl create namespace
názvů.kubectl create namespace test-restricted kubectl create namespace test-privileged
Povolte zásadu PSA pro každý obor názvů, jednu se zásadou
restricted
a druhou se zásadoubaseline
kubectl label
pomocí příkazu.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
Tím nakonfigurujete
test-restricted
obory názvů taktest-privileged
, aby blokovaly spuštěné pody a vygenerovaly upozornění na uživatele, pokud se některé pody, které nesplňují nakonfigurované zásady, pokusily spustit.Pomocí příkazu se pokusíte nasadit pody do
test-restricted
oboru názvůkubectl apply
. Výsledkem tohoto příkazu je chyba, protožetest-restricted
obor názvů je nakonfigurovaný tak, aby blokoval pody, které nesplňujírestricted
zásady.kubectl apply --namespace test-restricted -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml
Následující příklad výstupu ukazuje upozornění, že pody porušují nakonfigurované zásady:
... 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
Pomocí příkazu ověřte, že v
test-restricted
oboru názvůkubectl get pods
nejsou spuštěné žádné pody.kubectl get pods --namespace test-restricted
Následující příklad výstupu ukazuje, že v
test-restricted
oboru názvů nejsou spuštěné žádné pody:No resources found in test-restricted namespace.
Pomocí příkazu se pokusíte nasadit pody do
test-privileged
oboru názvůkubectl apply
. Tentokrát by se pody měly úspěšně nasadit, protožetest-privileged
obor názvů je nakonfigurovaný tak, aby umožňoval pody, které porušujíprivileged
zásady.kubectl apply --namespace test-privileged -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml
Následující příklad výstupu ukazuje úspěšné nasazení podů:
deployment.apps/azure-vote-back created service/azure-vote-back created deployment.apps/azure-vote-front created service/azure-vote-front created
Pomocí příkazu ověřte, že v oboru názvů
kubectl get pods
běžítest-privileged
pody.kubectl get pods --namespace test-privileged
Následující příklad výstupu ukazuje dva pody spuštěné v
test-privileged
oboru názvů: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
Pomocí příkazu odeberte obory
test-restricted
názvů atest-privileged
oborykubectl delete
názvů.kubectl delete namespace test-restricted test-privileged
Další kroky
V tomto článku jste zjistili, jak povolit přístup k zabezpečení podů v clusteru AKS. Další informace o přístupu k zabezpečení podů naleznete v tématu Vynucení standardů zabezpečení podů s popisky oboru názvů. Další informace o standardech zabezpečení podů používaných pro přístup k zabezpečení podů naleznete v tématu Standardy zabezpečení podů.
Azure Kubernetes Service