Używanie dostępu do zabezpieczeń zasobnika w usłudze Azure Kubernetes Service (AKS)
Dostęp do zabezpieczeń zasobnika (PSA) używa etykiet do wymuszania zasad standardów zabezpieczeń zasobników działających w przestrzeni nazw. Usługa AKS włącza dostęp do zabezpieczeń zasobnika jest domyślnie włączona. Aby uzyskać więcej informacji na temat standardów zabezpieczeń zasobników i zabezpieczeń zasobników, zobacz Wymuszanie standardów zabezpieczeń zasobników z etykietami przestrzeni nazw i standardami zabezpieczeń zasobnika.
Wstęp zabezpieczeń zasobnika to wbudowane rozwiązanie zasad dla implementacji pojedynczego klastra. Jeśli chcesz użyć zasad klasy korporacyjnej, zalecamy użycie zasad platformy Azure.
Zanim rozpoczniesz
- Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, możesz utworzyć bezpłatne konto.
- Zainstalowany interfejs wiersza polecenia platformy Azure.
- Istniejący klaster usługi AKS z uruchomioną platformą Kubernetes w wersji 1.23 lub nowszej.
Włączanie zabezpieczeń zasobnika dla przestrzeni nazw w klastrze
Włączanie psa dla pojedynczej przestrzeni nazw
Włącz psa dla pojedynczej przestrzeni nazw w klastrze przy użyciu
kubectl label
polecenia i ustaw etykietępod-security.kubernetes.io/enforce
z wartością zasad, którą chcesz wymusić. Poniższy przykład umożliwiarestricted
zasady dla przestrzeni nazw PRZESTRZENI NAZW .kubectl label --overwrite ns NAMESPACE pod-security.kubernetes.io/enforce=restricted
Włączanie psa dla wszystkich przestrzeni nazw
Włącz opcję PSA dla wszystkich przestrzeni nazw w klastrze przy użyciu
kubectl label
polecenia i ustaw etykietępod-security.kubernetes.io/warn
z wartością zasad, którą chcesz wymusić. Poniższy przykład umożliwiabaseline
zasady dla wszystkich przestrzeni nazw w klastrze. Te zasady generują ostrzeżenie dla użytkownika, jeśli jakiekolwiek zasobniki są wdrażane w przestrzeni nazw, która nie spełnia zasad punktu odniesienia .kubectl label --overwrite ns --all pod-security.kubernetes.io/warn=baseline
Wymuszanie zasad przyjmowania zabezpieczeń zasobnika przy użyciu wdrożenia
Utwórz dwie przestrzenie nazw przy użyciu
kubectl create namespace
polecenia .kubectl create namespace test-restricted kubectl create namespace test-privileged
Włącz zasady PSA dla każdej przestrzeni nazw, jedną z
restricted
zasadami i jedną zbaseline
zasadami przy użyciukubectl label
polecenia .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
Spowoduje to skonfigurowanie
test-restricted
przestrzeni nazw itest-privileged
w celu blokowania uruchomionych zasobników i generowania ostrzeżenia dla użytkownika, jeśli jakiekolwiek zasobniki, które nie spełniają skonfigurowanej próby uruchomienia zasad.Spróbuj wdrożyć zasobniki w
test-restricted
przestrzeni nazw przy użyciukubectl apply
polecenia . To polecenie powoduje błąd, ponieważtest-restricted
przestrzeń nazw jest skonfigurowana do blokowania zasobników, które nie spełniająrestricted
zasad.kubectl apply --namespace test-restricted -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml
Następujące przykładowe dane wyjściowe pokazują ostrzeżenie informujące, że zasobniki naruszają skonfigurowane zasady:
... 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
Upewnij się, że w przestrzeni nazw nie są uruchomione
test-restricted
zasobniki przy użyciukubectl get pods
polecenia .kubectl get pods --namespace test-restricted
Następujące przykładowe dane wyjściowe nie zawierają zasobników uruchomionych w
test-restricted
przestrzeni nazw:No resources found in test-restricted namespace.
Spróbuj wdrożyć zasobniki w
test-privileged
przestrzeni nazw przy użyciukubectl apply
polecenia . Tym razem zasobniki powinny zostać pomyślnie wdrożone, ponieważtest-privileged
przestrzeń nazw jest skonfigurowana tak, aby zezwalała na zasobniki naruszająceprivileged
zasady.kubectl apply --namespace test-privileged -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml
Następujące przykładowe dane wyjściowe pokazują, że zasobniki zostały wdrożone pomyślnie:
deployment.apps/azure-vote-back created service/azure-vote-back created deployment.apps/azure-vote-front created service/azure-vote-front created
Upewnij się, że masz zasobniki uruchomione w
test-privileged
przestrzeni nazw przy użyciukubectl get pods
polecenia .kubectl get pods --namespace test-privileged
Następujące przykładowe dane wyjściowe przedstawiają dwa zasobniki uruchomione w
test-privileged
przestrzeni nazw: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
Usuń przestrzenie nazw itest-privileged
przy użyciukubectl delete
polecenia .kubectl delete namespace test-restricted test-privileged
Następne kroki
W tym artykule przedstawiono sposób włączania dostępu zabezpieczeń zasobnika do klastra usługi AKS. Aby uzyskać więcej informacji na temat przyjmowania zabezpieczeń zasobnika, zobacz Wymuszanie standardów zabezpieczeń zasobnika z etykietami przestrzeni nazw. Aby uzyskać więcej informacji na temat standardów zabezpieczeń zasobników używanych przez dostęp do zabezpieczeń zasobnika, zobacz Pod Security Standards (Standardy zabezpieczeń zasobników).