【问题标题】:Kafka ACL to topic based on client certificate DN, or its partKafka ACL 到基于客户端证书 DN 或其部分的主题
【发布时间】:2019-07-08 03:18:39
【问题描述】:

我正在阅读 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) 中?

【问题讨论】:

    标签: authentication ssl apache-kafka authorization ssl-certificate


    【解决方案1】:

    是的,可以使用开箱即用的工具根据 SSL 用户名设置 ACL,但默认的 Principal builder 使用的不仅仅是较短的 CN 值作为用户名。

    来自https://docs.confluent.io/current/kafka/authorization.html的 Confluent Online 文档

    默认情况下,SSL 用户名的格式为

    CN=writeuser,OU=Unknown,O=Unknown,L=Unknown,ST=Unknown,C=Unknown

    可以通过在 server.properties 中设置自定义的 PrincipalBuilder 来改变这一点,如下所示:

    principal.builder.class=CustomizedPrincipalBuilderClass

    【讨论】:

    • 使用 kafka-acls 定义 ACL 时,避免 FQN 中逗号前面的空格很重要。 IE。不要使用 CN=writeruser, OU=Unknown 定义 ACL,而是使用 CN=writeruser,OU=Unknown...
    猜你喜欢
    • 2021-09-26
    • 1970-01-01
    • 2022-10-30
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    相关资源
    最近更新 更多