集群安全模式

最近更新时间:2026-03-24 14:49:59

我的收藏

功能介绍

集群安全模式是 TKE 针对企业级 AI Agent 等高安全诉求场景提供的集群级安全加固能力。开启后,TKE 自动在指定范围内下发并持续维护一组安全策略,涵盖 MetaServer 封禁、准入控制和网络隔离三类机制,实现“一键开启、全生命周期托管”,无需用户手动配置和维护各项安全组件。

核心能力

自动下发:开启时一次性全量下发所有策略,新建 Namespace 自动补充。
持续对账:内置 Controller 持续检测,被误删的策略自动修复。
灰度支持:通过 Namespace 或 Pod Label 控制生效范围,支持渐进式验证。
干净回收:关闭安全模式时,自动回收所有相关策略,无残留。

使用限制

安全模式策略对指定范围内的所有新建 Pod 生效,违反策略的 Pod 将被拒绝创建。
以下系统命名空间默认豁免,不受策略约束:kube-systemkube-publickube-node-leasegatekeeper-systemtke-backupcrane-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)也在放行规则内。