You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EKS v1.22+托管节点集群(除kube-system)禁止Root容器的最优方案咨询

在EKS v1.22+中禁止非kube-system命名空间运行Root容器的方案

为什么你的PodSecurityPolicy(PSP)没生效?

  • PSP在Kubernetes 1.21版本已被废弃,1.25版本完全移除。EKS v1.22+虽保留PSP的API,但默认未启用PSP准入控制器,所以你定义的规则不会被强制执行。
  • 另外你的PSP配置里privileged: true是允许特权容器,和禁止Root的需求冲突;就算启用了PSP,还得绑定对应的RBAC资源(Role/RoleBinding等),让目标命名空间的ServiceAccount匹配到该PSP,否则规则也不会生效。

集群级PodSecurityStandard(PSS)是当前最新方案

是的,PSS是Kubernetes官方替代PSP的安全策略方案,从Kubernetes 1.23开始正式稳定,EKS v1.22+完全支持(部分版本需启用准入控制器)。它通过PodSecurity准入控制器强制实施安全标准,无需复杂RBAC绑定,配置更简洁。

具体实现步骤

要实现除kube-system外所有命名空间禁止Root容器,有两种配置方式:

方式1:集群范围默认规则+例外命名空间

通过PodSecurityConfiguration设置集群默认安全标准,同时给kube-system设置例外:

apiVersion: apiserver.config.k8s.io/v1
kind: PodSecurityConfiguration
metadata:
  name: pod-security-config
defaults:
  enforce: "restricted"
  enforce-version: "latest"
  audit: "restricted"
  audit-version: "latest"
  warn: "restricted"
  warn-version: "latest"
exemptions:
  namespaces: ["kube-system"]
  runtimeClasses: []
  usernames: []
  • restricted级别的安全标准默认强制要求容器以非Root用户运行(runAsNonRoot: true),正好匹配你的需求。
  • 配置应用后,EKS托管集群的API Server会由AWS自动重启生效,无需手动操作,通常几分钟内即可生效。

方式2:命名空间级标签配置

如果不想设置集群默认规则,可给除kube-system外的所有命名空间添加标签,强制启用restricted标准:

  1. 给目标命名空间打标签:
# 给所有非kube-system的命名空间添加强制规则标签
kubectl label ns --exclude="kube-system" pod-security.kubernetes.io/enforce=restricted
kubectl label ns --exclude="kube-system" pod-security.kubernetes.io/enforce-version=latest
  1. 验证标签是否生效:
kubectl get ns --show-labels | grep -v kube-system
  • 当命名空间带有pod-security.kubernetes.io/enforce=restricted标签时,该命名空间内创建的所有Pod必须满足非Root用户要求,否则会被拒绝。

验证规则是否生效

尝试在非kube-system命名空间创建一个Root用户的Pod:

apiVersion: v1
kind: Pod
metadata:
  name: root-pod
  namespace: default
spec:
  containers:
  - name: nginx
    image: nginx
    securityContext:
      runAsUser: 0 # 指定Root用户

创建时会收到类似如下的错误提示,说明规则已生效:

Error from server (Forbidden): error when creating "root-pod.yaml": pods "root-pod" is forbidden: violates PodSecurity "restricted:latest": runAsUser: invalid value 0: must be at least 1

内容的提问来源于stack exchange,提问作者risail

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 17:10:17