apache-kafka - Kafka Producer - 跟踪 Kerberos 用户

标签 apache-kafka kerberos kafka-producer-api

在带有 Kafka 集群的 Kerberized 设置中,我可以轻松强制执行对于主题 X,用户 A 和 B 有权生成消息,对于主题 Y,用户 C 有权生成消息。

就可追溯性而言,这可以保证主题 Y 上的所有消息都是由用户 C 生成的。但是,我还想知道主题 X 上的哪些消息是由用户 A 生成的,哪些消息是由用户 A 生成的用户B。

是否可以选择用生成该消息的用户来标记每条消息?也许有一点需要注意的是,我不想在生产者端执行此操作,但希望在代理端强制执行此操作,因此我可以绝对保证此用户信息存在。

任何帮助将不胜感激。

最佳答案

说实话,我认为目前没有办法做到这一点。据我所知,代理中唯一的两个可插入类是 KafkaPrincipalBuilder 和 Authorizer,它们都具有您所追求的主体,但无法访问实际记录以将主体添加到 header 字段中或任何需要的地方想要它。

即使我们着眼于生产者方面,这两个选项也将是您可以自定义的拦截器和序列化器类,它们都可以访问记录,但不能访问用户主体。

如果您真的想强制执行此操作,恐怕您必须变得有点创意,并做一些事情,例如让他们在 header 字段中使用私钥或类似的内容签署每条消息 - 在处理其他数据时end 然后您可以丢弃任何不包含该字段的内容。

除此之外,我认为除了实际更改 Kafka 本身以添加此信息之外,您无能为力 - 一般来说 the handleProduceRequest method应该是一个很好的起点,在这里您拥有已授权的请求,并且还可以访问包含主体的请求 session 。不过,这里的记录仅表示为字节缓冲区,不确定此时是否可以轻松添加 header ..

关于apache-kafka - Kafka Producer - 跟踪 Kerberos 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48911585/

相关文章:

node.js - kafka-node 就绪事件没有被触发

windows - 将 kinit 与 key 表文件一起使用时会发生什么

apache-kafka - Kafka 连接教程停止工作

java - Kafka Template 和 kafka producer 有什么区别?

python - Kafka SSL with Python : kafka. errors.NoBrokersAvailable: NoBrokersAvailable

apache-kafka - 卡夫卡消费群正在重新平衡

powershell - 使用 Kerberos 进行机器身份验证时 CredSSP PowerShell session 失败

apache-kafka - 卡夫卡 : Throughput of producing to thousands of topics with different message rate

elasticsearch - 卡夫卡融合云ElasticsearchSink Connector:索引中的映射冲突

ASP.Net Web 应用程序尝试使用模拟和委派连接到 SQL Server