etcd 为什么是关键资产
etcd 是 Kubernetes 的键值存储,集群全部对象状态都在这里,包括 Secret 的内容与 Service Account 相关数据;客户端端口默认 2379,节点间通信默认 2380。未启用认证时,任何能到达 2379 的客户端都能读写键空间,风险等级与集群控制面等同:既能读取凭据,也可能篡改影响调度与准入的数据。
基本信息
| 组件 | etcd,Kubernetes 控制面数据存储 |
|---|---|
| 默认端口 | 2379 客户端访问,2380 节点间通信 |
| 存储内容 | 集群对象、配置、Service Account 与 Secret 数据 |
| 主要风险 | 未启用客户端认证时可直接读写键空间 |
| 加固方式 | mTLS 客户端证书认证、仅监听管理网地址、开启静态加密 |
| 备份风险 | 快照文件包含 Secret 明文内容 |
| 检查时机 | 集群上线、证书轮换、季度控制面巡检 |
核查项与期望状态
| 核查项 | 检查要点 | 期望状态 |
|---|---|---|
| 监听地址 | ss 查看 2379 绑定地址 | 仅控制面管理网地址,不绑定全部网卡 |
| 客户端认证 | 不带证书连接应失败 | 强制 mTLS,拒绝无证书连接 |
| 访问来源 | 审计 2379 的连接来源 | 仅控制面与运维网段 |
| 备份文件 | 检查快照存放位置与权限 | 加密存储,权限最小,登记去向 |
| 证书有效期 | 检查 etcd 证书到期时间 | 与集群证书统一管理 |
| 静态加密 | 查看 EncryptionConfiguration | 至少对 Secret 启用加密 |
加固要点
加固要点
1. 仅监听集群内部管理网地址,不绑定 0.0.0.0
2. 启用客户端证书认证(mTLS),拒绝无证书连接
3. 备份文件加密存储并限制访问权限,记录备份去向与保留期
4. 审计 2379 的连接来源,收敛到控制面网段
5. 至少对 Secret 启用静态加密(EncryptionConfiguration)核查命令(授权环境)
核查命令(授权环境)
# 查看监听地址与端口
ss -ltnp | grep 2379
# 无证书直连自检:预期因证书校验失败而被拒绝
ETCDCTL_API=3 etcdctl --endpoints=https://<ip>:2379 endpoint health
# 带客户端证书检查健康状态(凭据路径以实际部署为准)
ETCDCTL_API=3 etcdctl --endpoints=https://<ip>:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt \
--key=/etc/kubernetes/pki/etcd/healthcheck-client.key endpoint health典型使用场景
- 自建集群上线前的控制面安全基线核查
- 证书轮换与到期检查
- 季度巡检:确认 2379 未暴露到非管理网段
- 审计 Secret 是否启用静态加密
- 备份策略复核:快照存放位置、加密与保留期
- 应急排查:确认键空间是否被异常读写
etcd 快照包含 Secret 明文内容,备份文件泄漏与端口暴露同级严重。快照的存放位置、访问权限与加密方式都要纳入核查范围。
托管 Kubernetes 的 etcd 由云厂商维护,但自建控制面、边缘集群与本地测试集群仍需自行核查,不能照搬云上习惯。