Secret 默认只做 base64,等于明文躺在 etcd 里。
必须配 EncryptionConfiguration,才真正落盘加密。
apiserver 挂上加密配置文件后要重启才生效。
RBAC 收紧 secrets 的 get 和 list,别给通配。
密钥不进 Git,走外部密钥管理或 SealedSecrets。
# 1) 加密配置 /etc/kubernetes/enc/enc.yaml
apiVersion: apiserver.config.k8s.io/v1
kind: EncryptionConfiguration
resources:
- resources: ["secrets"]
providers:
- aescbc:
keys:
- name: key1
secret: <base64 编码的 32 字节随机串>
- identity: {}
# 2) kube-apiserver 启动参数追加
--encryption-provider-config=/etc/kubernetes/enc/enc.yaml
# 3) 存量 Secret 要重写一遍才会被加密
kubectl get secrets -A -o json | kubectl replace -f -
# 4) 验证:读 etcd 原值应看到 k8s:enc:aescbc 前缀
ETCDCTL_API=3 etcdctl get /registry/secrets/default/mysecret --print-value-only
THE END






暂无评论内容