我有一个在 Azure AKS 服务中运行的 K8S 集群。
我想强制执行MustRunAsNonRoot 政策。怎么做?
创建了以下策略:
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: restrict-root
spec:
privileged: false
allowPrivilegeEscalation: false
runAsUser:
rule: MustRunAsNonRoot
seLinux:
rule: RunAsAny
fsGroup:
rule: RunAsAny
supplementalGroups:
rule: RunAsAny
volumes:
- '*'
部署在集群中:
$ kubectl get psp
NAME PRIV CAPS SELINUX RUNASUSER FSGROUP SUPGROUP READONLYROOTFS VOLUMES
restrict-root false RunAsAny MustRunAsNonRoot RunAsAny RunAsAny false *
准入控制器正在集群中运行:
$ kubectl get pods -n gatekeeper-system
NAME READY STATUS RESTARTS AGE
gatekeeper-audit-7b4bc6f977-lvvfl 1/1 Running 0 32d
gatekeeper-controller-5948ddcd54-5mgsm 1/1 Running 0 32d
gatekeeper-controller-5948ddcd54-b59wg 1/1 Running 0 32d
无论如何,可以在 root 下运行一个简单的 pod:
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: mypod
image: busybox
args: ["sleep", "10000"]
securityContext:
runAsUser: 0
Pod 正在运行:
$ kubectl describe po mypod
Name: mypod
Namespace: default
Priority: 0
Node: aks-default-31327534-vmss000001/10.240.0.5
Start Time: Mon, 08 Feb 2021 23:10:46 +0100
Labels: <none>
Annotations: <none>
Status: Running
为什么不应用 MustRunAsNonRoot?如何执行?
编辑:看起来 AKS 引擎不支持 PodSecurityPolicy (list of supported policies)。那么问题还是一样:如何对工作负载强制执行 MustRunAsNonRoot 规则?
答案 0 :(得分:1)
您不应在 Azure AKS 群集上使用 PodSecurityPolicy
,因为它已被设置为自 2021 年 5 月 31 日起弃用,以支持 Azure Policy for AKS。查看 the official docs 了解更多详情:
警告
本文档中描述的功能 pod 安全策略(预览版)已设置为弃用,将不再可用 2021 年 5 月 31 日之后支持Azure Policy for AKS。 弃用日期已从上一个日期延长 2020 年 10 月 15 日。
因此,目前您应该使用 Azure Policy for AKS,其中 among other built-in policies 分组为倡议(Azure Policy 中的倡议是为实现单一总体目标而量身定制的策略定义集合),您可以找到目标是在您的 AKS 集群上disallow running of privileged containers的策略。
至于PodSecurityPolicy
,暂时应该还是可以的。如果您没有忘记任何事情,请检查 here,例如确保您set up the corresponding ClusterRole
and ClusterRoleBinding
允许使用该政策。