ZooKeeper 到底加密了什么?哪些地方是明文?这篇把一个「机密」写进去,然后在磁盘文件、客户端连接、节点间复制三个位置分别「抓一下」,看它是否出现在明文里,再试应用层加密。
数据目录里各文件是否含有明文机密: {'log.1': True, 'log.37': False, 'log.93': False, 'snapshot.0': False, 'snapshot.35': True, 'snapshot.91': True}
(digest ACL 只控制「通过 ZooKeeper 访问」,能读数据目录文件的人不需要任何口令)明文端口(代理 7390 → 7300)抓到 367 字节,含机密: True TLS 端口(代理 7391 → 7301)抓到 6120 字节,含机密: False
明文 quorum:节点间抓到 10465 字节,含机密: True | 集群角色 {'z78q0-1': 'follower', 'z78q0-2': 'leader', 'z78q0-3': 'follower'}
sslQuorum=true:节点间抓到 65762 字节,含机密: False | 集群角色 {'z78q1-1': 'follower', 'z78q1-2': 'leader', 'z78q1-3': 'follower'}字节是我写的 TCP 代理从每对节点的 quorum 连接上抓到的;election 端口的流量也经过代理,一并统计。
从 ZooKeeper 读回、客户端解密 → b'SUPER-SECRET-TOKEN-8842'
数据目录里各文件是否含有明文机密: {'log.1': False, 'log.4b': False, 'log.8c': False, 'snapshot.0': False, 'snapshot.49': False, 'snapshot.8a': False}