etcd 加密

本指南帮助您安装、理解并操作 中的 etcd Encryption Manager,以实现集群内 etcd 数据加密密钥的自动轮换。

它确保存储在 etcd 中的敏感数据(如 secrets 和 configmaps)使用安全算法加密,从而提升集群的安全性。

目录

安装

请参阅 Cluster Plugin 获取安装说明。

注意:

  • 当前支持:

    • On-Premises 集群
    • DCS 集群
  • 不支持:

    • global cluster

工作原理

安装后,会在 kube-system 命名空间部署一个 etcd-encryption-manager 控制器,该控制器:

  • 定期轮换 etcd 数据加密密钥。
  • 保留最近 8 个密钥以支持回滚兼容。
  • 更新所有控制节点上的加密配置。
  • 触发 kube-apiserver 热加载新密钥。
  • 自动迁移资源,使用新密钥重新加密数据。

在整个操作过程中,集群稳定性得到保障。

默认配置

参数
加密资源secrets, configmaps
加密算法256-bit AES-GCM
轮换间隔168 小时(7 天)

操作指南

配置文件

路径内容
/etc/kubernetes/encryption-provider.conf当前加密配置
/etc/kubernetes/encryption-provider-history.bak历史密钥记录(用于恢复)
/etc/kubernetes/encryption-provider-bak/过期加密配置版本

状态检查

运行以下命令检查当前轮换状态:

kubectl get EtcdEncryptionConfig default -o yaml

示例输出:

apiVersion: cluster.alauda.io/v1alpha1
kind: EtcdEncryptionConfig
metadata:
  name: default
spec:
  resources:
    - secrets
    - configmaps
  rotationInterval: 168h0m0s
  type: aesgcm
status:
  deployStatus:
    192.168.100.1:
      revision: 3
      state: Success
    192.168.100.2:
      revision: 3
      state: Success
    192.168.100.3:
      revision: 3
      state: Success
  migration:
    completeTimestamp: "2025-05-27T05:47:01Z"
    resources:
      - secrets
      - configmaps
    revision: 3
    state: Success
  revision: 3