Kafka系列之:Apache Kafka端到端安全性,实现数据加密
- 一、背景
- 二、Kafka的加密算法
- 三、消息处理链
- 四、实现数据加密
- 五、使用数据加密
- 六、基准测试
- 七、局限性
- 八、结论
- 九、完整代码
一、背景
Apache Kafka 具有许多开箱即用的安全功能(至少从 0.9 版本开始)。但是,如果您处理敏感的关键任务数据,就会缺少一项功能:数据本身的加密。
当然,这可以简单地通过加密 Kafka 代理存储数据的磁盘来实现。但未加密的形式可能仍然驻留在内存或其他缓存中,更糟糕的是,任何可以访问适当消息的人都可以读取它。因此,对于敏感数据来说,仅仅磁盘加密似乎是不够的。除了“仅加密数据”之外,我们还需要一种机制来确保在生产者发送消息后没有人更改数据。请记住,Kafka 是一个分布式系统,必须处理不安全的网络,并且 SSL/TLS 可能无法在所有情况下保护您的数据(弱密码套件、中间人攻击和 openssl 错误等)。此外,启用 SSL/TLS 后,Kafka 无法再利用 sendfile 系统调用(它将页面缓存直接写入套接字)。
为了实现所有这