功能介绍
集群安全模式是 TKE 针对企业级 AI Agent 等高安全诉求场景提供的集群级安全加固能力。开启后,TKE 自动在指定范围内下发并持续维护一组安全策略,涵盖 MetaServer 封禁、准入控制和网络隔离三类机制,实现“一键开启、全生命周期托管”,无需用户手动配置和维护各项安全组件。
核心能力
自动下发:开启时一次性全量下发所有策略,新建 Namespace 自动补充。
持续对账:内置 Controller 持续检测,被误删的策略自动修复。
灰度支持:通过 Namespace 或 Pod Label 控制生效范围,支持渐进式验证。
干净回收:关闭安全模式时,自动回收所有相关策略,无残留。
使用限制
安全模式策略对指定范围内的所有新建 Pod 生效,违反策略的 Pod 将被拒绝创建。
以下系统命名空间默认豁免,不受策略约束:
kube-system、kube-public、kube-node-lease、gatekeeper-system、tke-backup、crane-system。安全模式依赖集群已安装 Gatekeeper 组件。
策略说明
开启安全模式后,TKE 将自动下发以下策略:
Gatekeeper Assign(变更注入)
策略名 | Assign CR | 功能说明 |
MetaServer 封禁 | addinitcontainer | 向每个 Pod 自动注入 security-defense initContainer,在 Pod 启动前通过 iptables 封禁腾讯云 MetaServer 地址,防止容器获取节点云凭证。 |
Gatekeeper Constraint(准入拦截)
策略名 | ConstraintTemplate | 功能说明 |
禁止危险宿主机路径挂载 | blockvolumemountpath | 禁止 Pod 通过 HostPath 挂载宿主机根路径及 /opt 等前缀路径,防止容器访问节点敏感文件。 |
禁止危险 Volume 类型 | blockmountablevolumetype | 禁止 Pod 使用 gitRepo 类型 Volume,防止容器在启动时从外部 Git 仓库自动拉取并执行代码。 |
禁止特权容器 | k8spspprivilegedcontainer | 禁止容器以 privileged: true 运行,防止容器逃逸至宿主机。 |
禁止 SA Token 自动挂载 | k8spspautomountserviceaccounttokenpod | 禁止容器自动挂载 ServiceAccount Token,防止容器直接获得 Kubernetes API 访问权限。 |
说明:
所有 Constraint 均采用
enforcementAction: deny,违反即拒绝 Pod 创建。所有安全模式下发的资源均携带标签 app.kubernetes.io/managed-by: tke-security-mode,用于识别和管理。NetworkPolicy(网络隔离)
策略名 | policyTypes | 功能说明 |
security-mode-block-container-subnet | Egress | 封禁 Pod 直连容器子网,防止 Pod 间通过 IP 直接通信实现横向移动。放行正常外网流量和 DNS(UDP/TCP 53)。 |
各网络模式的 Egress 规则:
规则 | VPC-CNI 模式 | GlobalRouter 模式 |
拦截容器子网 | 0.0.0.0/0 except ENI 子网 CIDR | 0.0.0.0/0 except ClusterCIDR |
放行 Service CIDR | 无需单独放行(ServiceCIDR 与容器子网天然不重叠) | 单独放行 ServiceCIDR,确保 Pod → ClusterIP 通信正常 |
放行 DNS | UDP/TCP 53 | UDP/TCP 53 |
操作步骤
开启安全模式
创建集群时开启
为已有集群开启
已有集群可前往集群基础信息页面开启安全模式,建议先通过灰度方式验证兼容性,再全量开启。灰度模式支持按 Namespace 或 Pod Label 两种维度灰度:
按 Namespace 灰度:仅对指定命名空间下的 Pod 生效。
按 Pod Label 灰度:仅对携带指定 Label 的 Pod 生效,同一 Namespace 内未打 Label 的 Pod 不受影响。
关闭安全模式
关闭后,TKE 将自动完整回收所有由安全模式下发的 OPA 策略和 NetworkPolicy,无需手动清理。
常见问题
开启安全模式后,为什么部分 Pod 创建失败?
安全模式策略会拦截以下常见配置,开启前建议提前排查,可通过
kubectl describe pod <pod-name> 查看具体拒绝原因,或查询 Gatekeeper 审计日志定位触发的策略。使用 HostPath 挂载宿主机路径的 Pod(如日志采集 DaemonSet)。
使用
privileged: true 的特权容器(如部分中间件)。未显式设置
automountServiceAccountToken: false 的 Pod。使用
gitRepo 类型 Volume 的 Pod。系统组件是否会受到影响?
kube-system 等系统命名空间默认豁免,不受策略约束。业务命名空间中确需豁免的特殊组件,可通过缩小 SecurityModeNamespaces 范围排除对应命名空间。NetworkPolicy 是否会影响正常的 Service 访问?
不会。NetworkPolicy 仅封禁 Pod 间直接通过容器 IP 互访,Pod 通过 ClusterIP Service 访问其他服务的流量不受影响。VPC-CNI 模式下 ServiceCIDR 与容器子网天然不重叠,GlobalRouter 模式下已单独放行 ServiceCIDR。DNS 解析(UDP/TCP 53)也在放行规则内。