首页/安全/漏洞与攻击面速查/etcd 未授权访问风险
主机与服务风险面53 条

etcd 未授权访问风险

etcd 存放 Kubernetes 全部集群状态与密钥(Secret 亦在其中),客户端端口默认 2379;未启用认证时可被直接读写键空间,风险等级与集群控制面等同。

漏洞与攻击面速查安全更新于 2026-10-13

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 由云厂商维护,但自建控制面、边缘集群与本地测试集群仍需自行核查,不能照搬云上习惯。

易错点

  • 只保护 6443 忽略 2379:APIServer 需要证书,但 etcd 端常常裸奔在控制面网段
  • 备份快照放在共享存储且未加密,等于把 Secret 明文备份散出去
  • 客户端认证只在部分节点启用,集群里仍存在允许无证书访问的实例
  • etcd 证书与集群其他证书分开管理,到期时间不一致引发控制面故障
  • 把 2379 放进内网就认为安全,同网段任何主机仍可读写键空间

数据来源与参考

  • etcd 官方文档(Security 与 TLS)
  • Kubernetes 文档(etcd 加密与备份)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌