Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При приеме безопасности pod (PSA) используются метки для применения политик безопасности pod на модулях pod, работающих в пространстве имен. В AKS доступ к безопасности Pod включен по умолчанию. Дополнительные сведения о стандартах безопасности Pod и приемке безопасности Pod см. в разделе "Применение стандартов безопасности Pod с метками пространства имен" и "Стандарты безопасности Pod".
Pod Security Admission — это встроенное политическое решение для реализации в одном кластере. Если вы хотите использовать политику корпоративного уровня, рекомендуется использовать политику Azure.
Перед началом работы
- Подписка Azure. Если у вас еще нет подписки Azure, вы можете создать бесплатную учетную запись.
- Azure CLI установлен.
- Существующий кластер AKS с Kubernetes версии 1.23 или более поздней.
Включите Pod Security Admission для пространства имен в вашем кластере.
Включение PSA для одного пространства имен
Включите PSA в кластере для одного пространства имен с помощью команды
kubectl label
и установите меткуpod-security.kubernetes.io/enforce
со значением необходимой политики. В следующем примере включается политикаrestricted
для пространства имен NAMESPACE.kubectl label --overwrite ns NAMESPACE pod-security.kubernetes.io/enforce=restricted
Включите PSA для всех пространств имен
Включите PSA для всех пространств имен в вашем кластере, используя команду
kubectl label
, и установите меткуpod-security.kubernetes.io/warn
со значением политики, которое вы хотите применить. В следующем примере политикаbaseline
активируется для всех пространств имен в кластере. Эта политика создает предупреждение для пользователя, если какие-либо модули pod развертываются в пространстве имен, которое не соответствует базовой политике.kubectl label --overwrite ns --all pod-security.kubernetes.io/warn=baseline
Принудительное применение политики допуска безопасности Pod с помощью развертывания
Создайте два пространства имен с помощью
kubectl create namespace
команды.kubectl create namespace test-restricted kubectl create namespace test-privileged
Включите политику PSA для каждого пространства имен: одну с политикой
restricted
, а другую с политикойbaseline
, используя командуkubectl 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
Это конфигурирует пространства имен
test-restricted
иtest-privileged
, чтобы блокировать выполнение pod и генерировать предупреждение для пользователя, если какие-либо pod, не соответствующие настроенной политике, пытаются выполняться.Попытайтесь развернуть pods в пространстве имен
test-restricted
с помощью командыkubectl apply
. Эта команда приводит к ошибке, так какtest-restricted
пространство имен настроено для блокировки модулей pod, которые не соответствуют политикеrestricted
.kubectl apply --namespace test-restricted -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml
В следующем примере выходных данных показано предупреждение, указывающее, что модули pod нарушают настроенную политику:
... 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
Убедитесь, что в пространстве имен
test-restricted
нет работающих pod с помощью командыkubectl get pods
.kubectl get pods --namespace test-restricted
В следующем примере выходных данных показывается, что в
test-restricted
пространстве имен нет запущенных pod'ов.No resources found in test-restricted namespace.
Попытайтесь развернуть pods в
test-privileged
пространстве имен, используяkubectl apply
команду. На этот раз модули pod должны успешно развертываться, так какtest-privileged
пространство имен настроено для разрешения модулей pod, которые нарушаютprivileged
политику.kubectl apply --namespace test-privileged -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml
В следующем примере выходных данных показаны успешно развернутые модули pod:
deployment.apps/azure-vote-back created service/azure-vote-back created deployment.apps/azure-vote-front created service/azure-vote-front created
Убедитесь, что модули pod выполняются в
test-privileged
пространстве имен с помощьюkubectl get pods
команды.kubectl get pods --namespace test-privileged
В следующем примере выходных данных показаны два pod, запущенные в пространстве имен
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
Удалите пространства имен
test-restricted
иtest-privileged
с помощью командыkubectl delete
.kubectl delete namespace test-restricted test-privileged
Следующие шаги
Из этой статьи вы узнали, как включить допуск безопасности подов в кластере AKS. Дополнительные сведения о поддержке безопасности Pod см. в разделе Применение стандартов безопасности Pod с помощью меток пространства имен. Дополнительные сведения о стандартах безопасности pod, используемых при приеме для обеспечения безопасности pod, см. в разделе Стандарты безопасности pod.
Azure Kubernetes Service