我可以公开一个 Kafka 队列主题,以便它只能被某些订阅者读取吗

Can I expose a Kafka queue topic so that it can only be read from by certain subscribers

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

我想将该队列主题公开给另一个服务,以便它可以使用这些消息,但我想将该服务限制为只能读取该主题,永远不能写入它。

关于这是否可能,文档似乎非常模糊(或者我一直在错误的区域进行谷歌搜索)。

任何有关如何执行此操作的建议或指示都会很棒。

谢谢, 雷蒙.

简答:你不能

更长的答案:

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

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

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 方法,您也可以“捍卫”主题。您可以轻松地说出哪个用户可以对主题做什么。

想过的想法->

streamthoughts 的小伙伴们创建了一个不错的项目kafka-specs。您可以在 yamls 中轻松管理 git 上的主题和 acls。您甚至可以使用简单的命名约定“设想”命名空间,并让某些团队通过 their yaml on [=34= 仅处理他们的主题和 acls ].您可以是批准 Pull Requests 执行(或 Jenkins)脚本以应用更改的人,并且他们只关于他们的“命名空间”:)

希望我有所帮助!