K8s Secret 只是 base64,别当成加密存储

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
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容