我正在阅读 Kafka 文档(版本 0.11.0),我想根据其客户端证书对消费者和发布者的主题进行身份验证和授权。
它的工作方式应该是根据 DN 授予授权,或者仅根据它的一部分,如 CN、电子邮件或其他内容。
我看到 Kafka 代理可以配置为通过 TLS 使用安全通信并根据客户端证书对传入连接进行身份验证。但从我的角度来看,仅此而已。这就是 Kafka 代理可以使用客户端证书执行的所有操作。主题的 ACL 应该使用 SASL,我们可以使用 PLAIN、Kerberos 或 SCRAM。
那么是否可以根据 SSL 证书中的 CN 名称对客户端连接进行身份验证,并将基于它的主题的 ACL 设置放入 Kafka (kafka_2.11-0.11.0.1) 中?
最佳答案
是的,使用开箱即用的工具可以根据 SSL 用户名设置 ACL,但默认的 Principal 构建器不仅仅使用较短的 CN 值作为用户名。
来自 https://docs.confluent.io/current/kafka/authorization.html 处的 Confluent 在线文档
默认情况下,SSL 用户名的格式为
CN=writeuser,OU=Unknown,O=Unknown,L=Unknown,ST=Unknown,C=Unknown
可以通过在 server.properties 中设置自定义的 PrincipalBuilder 来更改它,如下所示:
principal.builder.class=CustomizedPrincipalBuilderClass
关于authentication - 基于客户端证书 DN 或其部分的 Kafka ACL to topic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46974652/