CoreOS推出的etcd是现在市面上最流行的分布式KV存储方案之一,尤其是使用到Kubernetes做集群编排的话etcd可是必不可少的依赖项目。可在推广的过程中,CoreOS有意无意的忽略掉了对于搭建的etcd集群存储的保护,甚至在提供了鉴权功能之后为了向前兼容也没有默认打开。这样操作的结果使得etcd在互联网上的部署非常类似MongoDB或者Memcached,很多集群都是直接暴露给外网访问。

The security footgun in etcd这篇blog里,作者说通过简单测试便在公网扫出2284台etcd服务,从中获取到了大量的敏感信息,而这些甚至可以简单的通过etcd提供的API直接遍历拿到:

password 8781
aws_secret_access_key 650
secret_key 23
private_key 8

非常触目惊心的结果,而其实只要开启etcd的鉴权并禁止外网的直接访问,便能很大程度上避免了。

Kubernetes现在还不支持用户校验,所以得使用证书方式,并且只开放k8s的API server对etcd的操作