Kafka安全性:在单个主题内仅允许某些用户阅读某些消息

时间:2019-06-30 14:47:35

标签: apache-kafka

我有一个要求,我们要在卡夫卡的一个“市场数据”主题中“寻找”许多不同提供商的财务价格。事实是,其中一些提供商对个人证券有着严格的许可要求。如果不为每个不同的许可谷物创建不同的主题,是否有一种方法可以防止Kafka客户根据消息内的内容接收信息? IE可以让Kafka做细粒度的主题内许可吗?

如果没有,那么规范的解决方案是什么?

1 个答案:

答案 0 :(得分:1)

不。 Apache Kafka不能立即使用“细粒度的内部主题权限”。

您将必须编写一个自定义的Kafka序列化器/反序列化器(SerDes)库或在中间实现自己的授权服务器,以提供基于角色的访问控制(RBAC)和基于内容的筛选。

如果您将数据分为不同的主题,那么可以,基本的Kafka ACL可以控制对该主题的访问,但这不是原始问题,并且您不会在kafka中制作600万个主题。

最初的问题是关于一个主题混合不同类型的数据。为此,您需要有一个客户端反序列化器,该反序列化器读取所有数据,然后根据授权服务器认为允许查看的内容过滤掉某些消息。

如果您担心客户端永远不应该接收不允许接收的数据,甚至在客户端堆栈的深处,那么您可以使用不同的密钥对消息进行加密,并且可以控制谁获得了密钥。