我是否可以公开Kafka队列主题,以便只能由某些订阅者读取它

时间:2015-09-01 23:47:26

标签: apache-kafka

我有一个服务负责将消息写入Kafka队列主题。

我想将该队列主题暴露给另一个服务,因此它可能会使用这些消息,但我想限制该服务只能从主题中读取,永远不能写入它。

关于这是否可能(或者我在谷歌搜索错误的地方),文档似乎很模糊。

关于如何做到这一点的任何建议或指示都会很棒。

谢谢, 雷蒙德。

2 个答案:

答案 0 :(得分:1)

这很可能是很晚的答案,但也许会在将来对某人有所帮助。

Kafka目前支持各种身份验证和授权方法。您可以通过将环境连接到您的公司的kerberos或Active Directory来保护环境,或者换句话说,启用身份验证。 (https://docs.confluent.io/current/kafka/authentication_sasl/index.html

第二步可以启用授权:https://docs.confluent.io/current/kafka/authorization.html

您甚至可以查看来自Open Policy Agent的漂亮项目:https://docs.confluent.io/current/kafka/authentication_sasl/index.html

简而言之:即使使用Kafka项目中提供的现成的SimpleAuthorisation方法,您也可以“捍卫”主题。您可以轻松地说出哪个用户可以执行主题操作。

要考虑的想法->

来自流思想的人创建了一个不错的项目kafka-specs。您可以在yamls中轻松管理git上的主题和ACL。您甚至可以使用简单的命名约定“设想”名称空间,并允许某些团队通过git上的 他们的 yaml仅处理其主题和ACL。您可以是批准执行请求(或Jenkins)脚本以应用更改的脚本,它们只涉及其“名称空间”:)

希望我能帮上忙!

答案 1 :(得分:0)

简短回答:你不能

更长的答案:

Kafka主要是为高性能而设计的,它没有许可机制,例如您无法将经纪人配置为允许生产但不会为某些客户消费。任何有权访问代理的客户都可以生成/使用所有主题的数据。主要思想是客户端本身负责管理权限。