培训
模块
配置 Azure Kubernetes 服务群集 - Training
使用 Azure Policy 对 Kubernetes 群集大规模强制实施策略和安全措施。 Azure Policy 可确保群集在整个组织中是安全、合规和一致的。
认证
Microsoft Certified: Azure Security Engineer Associate - Certifications
演示实现安全控制、维护组织的安全状况以及识别和修复安全漏洞所需的技能。
你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Pod 安全准入 (PSA) 使用标签对命名空间中运行的 Pod 强制实施 Pod 安全标准策略。 在 AKS 中,默认启用 Pod 安全准入。 有关 Pod 安全准入和 Pod 安全标准的详细信息,请参阅使用命名空间标签强制实施 Pod 安全标准和 Pod 安全标准。
Pod 安全许可是单个群集实现的内置策略解决方案。 如果想使用企业级策略,建议使用 Azure Policy。
使用 kubectl label
命令为群集中的单个命名空间启用 PSA,并使用要强制执行的策略值设置 pod-security.kubernetes.io/enforce
标签。 以下示例为 NAMESPACE 命名空间启用 restricted
策略。
kubectl label --overwrite ns NAMESPACE pod-security.kubernetes.io/enforce=restricted
使用 kubectl label
命令为群集中的所有命名空间启用 PSA,并使用要强制执行的策略值设置 pod-security.kubernetes.io/warn
标签。 以下示例为群集中的所有命名空间启用 baseline
策略。 如果任何 Pod 部署到不符合基线策略的命名空间,此策略会生成面向用户的警告。
kubectl label --overwrite ns --all pod-security.kubernetes.io/warn=baseline
使用 kubectl create namespace
命令创建两个命名空间。
kubectl create namespace test-restricted
kubectl create namespace test-privileged
使用 kubectl label
命令为每个命名空间启用 PSA 策略,其中一个具有 restricted
策略,另一个具有 baseline
策略。
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 尝试运行时生成面向用户的警告。
尝试使用 kubectl apply
命令将 Pod 部署到测试 test-restricted
命名空间。 此命令会导致错误,因为测试 test-restricted
命名空间被配置为阻止不符合 restricted
策略的 Pod。
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
使用 kubectl get pods
命令确认 test-restricted
命名空间中没有正在运行的 Pod。
kubectl get pods --namespace test-restricted
以下示例输出显示 test-restricted
命名空间中没有正在运行的 Pod:
No resources found in test-restricted namespace.
尝试使用 kubectl apply
命令将 Pod 部署到测试 test-privileged
命名空间。 这次,Pod 应该会成功部署,因为 test-privileged
命名空间配置为允许违反 privileged
CELVE 的 Pod。
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
使用 kubectl get pods
命令确认 test-privileged
命名空间中有正在运行的 Pod。
kubectl get pods --namespace test-privileged
以下示例输出显示 test-privileged
命名空间中有两个正在运行的 Pod:
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
使用 kubectl delete
命令删除 test-restricted
和 test-privileged
命名空间。
kubectl delete namespace test-restricted test-privileged
在本文中,你学习了如何为 AKS 群集启用 Pod 安全许可。 有关 Pod 安全许可的详细信息,请参阅使用命名空间标签强制执行 Pod 安全标准 有关 Pod 安全许可使用的 Pod 安全标准的详细信息,请参阅 Pod 安全标准。
培训
模块
配置 Azure Kubernetes 服务群集 - Training
使用 Azure Policy 对 Kubernetes 群集大规模强制实施策略和安全措施。 Azure Policy 可确保群集在整个组织中是安全、合规和一致的。
认证
Microsoft Certified: Azure Security Engineer Associate - Certifications
演示实现安全控制、维护组织的安全状况以及识别和修复安全漏洞所需的技能。