基于客户端证书 DN 或其部分的 Kafka ACL to topic

Kafka ACL to topic based on client certificate DN, or its part

我正在阅读 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,但默认的主体构建器不仅仅使用较短的 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