zookeeper在公网上的数据安全

在上一篇文章中提到过如何保证zookeeper在节点访问控制上的ACL实现机制。这种机制依赖于zookeeper的配置和支持,今天看了下阿里云的zookeeper引擎和相关的API,大致猜测阿里云是怎么实现zookeeper的公网访问安全。

方法很简单,就是计算机里经常说的,加一层代理。

zookeeper部署在阿里云内部网络,通过防火墙或者物理网络隔离,保证只有代理能够访问zookeeper服务。

在代理上实现一套服务,对外部以Restful接口的形式,封装了一系列对zk节点进行增删读写的接口,这些接口需要通过阿里云的公共鉴权才能调用成功。

也就是说,用阿里云的鉴权保证zookeeper读写安全。

但是这种方式也有一个没有解决的问题:就目前阿里云提供的API接口来看,zookeeper的watch机制是完全用不上了。

如果应用依赖于zookeeper的watch机制,那么可能就需要改造成轮训的方式去实现,但是这样又会有一个问题,因为代理的存在,zookeeper对调用阿里云Restful接口的客户端来说,客户端最后拿到的应答结果,不代表zookeeper真实的状态。