kubernetes安全基线必须在部署阶段固化:etcd需启用静态加密(如aes-cbc),apiserver须禁用匿名访问并强制rbac,podsecurityadmission应启用restricted级别,证书权限须严格控制(如pki目录700、私钥600),且安装器来源必须可信。

安装 Kubernetes 时,安全基线不是“装完再补”的事后工作——很多配置项一旦集群初始化完成就无法热更新(比如 etcd 加密、apiserver 的准入控制器列表),必须在 kubeadm init 或 KubeKey 部署阶段就固化。
etcd 数据必须启用静态加密
默认情况下,etcd 存储的所有 Secret、ConfigMap、ServiceAccount Token 都以明文写入磁盘。攻击者只要拿到节点磁盘镜像,就能直接提取集群所有凭证。
- 必须在
kubeadm的ClusterConfiguration中显式配置encryptionProviderConfig,指向一个包含 AES-CBC 密钥的加密配置文件 - KubeKey 用户应确认
builtin/core/roles/security/tasks/main.yaml已启用etcd encryption步骤,否则./kk create cluster不会自动注入 - 切勿复用测试环境的加密密钥;生产环境建议每季度轮换一次密钥,并通过
kubectl get secrets --all-namespaces -o json | jq '.items[].data' | base64 -d抽样验证解密是否生效
apiserver 必须禁用匿名访问并强制 RBAC
anonymous-auth: true(默认值)会让未认证请求以 system:anonymous 身份进入授权链,若 RBAC 配置疏漏,极易造成越权。
- 在
kubeadm配置中显式设anonymous-auth: false,同时确保authorization-mode包含RBAC且**不包含AlwaysAllow** - 检查
kube-apiserver启动参数:运行ps aux | grep kube-apiserver,确认输出中不含--authorization-mode=AlwaysAllow或--insecure-port=8080 - 部署后立即执行
kubectl auth can-i --list --as=system:anonymous,返回应为空(非 “yes”)
PodSecurityAdmission 必须在安装时启用 restricted 级别
Kubernetes 1.25+ 已废弃 PodSecurityPolicy,但很多安装工具(包括旧版 KubeKey 模板)仍默认不启用 PodSecurityAdmission 插件,导致 pod-security.kubernetes.io/enforce: restricted 标签完全无效。
- 需在
kubeadm的extraArgs中添加enable-admission-plugins: ...,PodSecurityAdmission - 使用 KubeKey 时,确认
config-sample.yaml中kubernetes段启用了podSecurityStandard字段,且值为restricted - 验证方式:创建一个带
securityContext.privileged: true的 Pod,应被拒绝并返回admission webhook "pod-security-webhook" denied
证书路径与权限必须由安装器严格控制
安装过程生成的证书若权限过宽(如 644),或私钥路径可被普通用户读取(如放在 /etc/kubernetes/pki 但目录权限为 755),等于把集群命脉暴露给任意容器。
- KubeKey 的
builtin/core/roles/security/tasks/main.yaml是可信来源,它会将/etc/kubernetes/pki设为700,私钥文件设为600,可执行文件(如kube-apiserver)设为550 - 手动用 kubeadm 安装时,务必在
kubeadm init后立即执行:chmod -R 700 /etc/kubernetes/pki && chmod 600 /etc/kubernetes/pki/*.key - 特别注意
ca.key—— 如果该文件泄露,攻击者可签发任意合法证书,彻底绕过 TLS 认证
最常被跳过的其实是「安装器自身是否可信」:KubeKey 的 builtin/ 目录若被篡改,或 kubeadm 配置模板从非官方源下载,所有后续安全配置都可能形同虚设。部署前校验 checksum 和签名,比调参重要得多。











