我正在阅读Kafka文档(版本0.11.0),我希望根据客户端证书对消费者和发布者的主题进行身份验证和授权。
它的工作方式是授权将根据DN授予,或仅仅是其部分,如CN,电子邮件或其他内容。
我看到Kafka代理可以配置为通过TLS使用安全通信,并根据客户端证书验证传入连接。但从我的角度来看,就是这样。这就是Kafka经纪人可以用客户证书做的事情。主题的ACL应该使用SASL,我们可以使用PLAIN,Kerberos或SCRAM。
那么可以根据SSL证书中的CN名称验证客户端的连接,并在Kafka(kafka_2.11-0.11.0.1)中根据它设置主题的ACL设置吗?
答案 0 :(得分:4)
是的,可以使用开箱即用的工具根据SSL用户名设置ACL,但默认的Principal构建器使用的不仅仅是CN值较短的用户名。
来自https://docs.confluent.io/current/kafka/authorization.html
的Confluent在线文档默认情况下,SSL用户名的格式为
CN = writeuser,OU =未知,O =未知,L =未知,ST =未知,C =未知
可以通过在server.properties中设置自定义的PrincipalBuilder来改变这种情况,如下所示:
principal.builder.class = CustomizedPrincipalBuilderClass