【问题标题】:Kafka authorization - Email address in certificate subject name converted with OIDKafka 授权 - 使用 OID 转换的证书主题名称中的电子邮件地址
【发布时间】:2022-11-15 22:42:45
【问题描述】:

我们在客户端和 Kafka 集群之间使用 mTLS 身份验证以及在主题上配置的一些 ACL。

客户在其主题名称中包含电子邮件地址,例如:

Owner: EMAILADDRESS=user@my-domain.com, CN=my-service, OU=my-ou, O=my-org, L=my-loc, ST=my-state, C=my-country

但是当客户端调用 kafka 集群时,我们会看到使用他的 [OID 代码] 转换的电子邮件地址。

[2022-07-13 10:37:32,549] INFO Principal = User:1.2.840.113549.1.9.1=#3uR2XK21ru2nwVymHN9u4B7wQCs4wrhcPavdGktA,CN=my-service,OU=my-ou,O=my-org,L=my-loc,ST=my-state,C=my-country is Denied Operation = Write from host = 10.10.10.2 on resource = Topic:LITERAL:my-topic for request = Produce with resourceRefCount = 1 (kafka.authorizer.logger)

有人可以解释一下为什么会发生这种情况以及如何获取电子邮件地址文字吗?

【OID码】https://oidref.com/1.2.840.113549.1.9.1

【问题讨论】:

    标签: apache-kafka authorization oid


    【解决方案1】:

    您无法以文字形式获取电子邮件地址,因为 Kafka 会按照 rfc2253 中所述解析主体 DN(专有名称),它不支持 EMAILADDRESS 属性。不支持的属性按照您的示例进行编码。

    下一步取决于您要实现的目标。

    • 如果您尝试在 ACL 规则中使用电子邮件地址,则可以执行以下操作之一:

      1. 如果可以,请在电子邮件地址位于受支持属性之一(例如 CN)中的情况下颁发证书。
      2. 使用脚本对其进行编码并获取正确的值,您可以在 ACL 规则中按原样使用。
      3. 如果您不是要使用电子邮件地址,而是要使用其他显示为文字的属性(如 CN),您可以:

        1. 如果您有访问权限,最好的选择是颁发主题名称中没有电子邮件的证书,并相应地创建 ACL 规则。
        2. 另一种选择可能是使用Kafka ssl principal mapping rules 去除电子邮件地址和 剩下的留给 ACL 规则使用。这条规则应该做的工作:

          规则:^1.2.840.113549.1.9.1=。,(CN=.)/$1

    此外,不推荐使用 EMAILADDRESS oid,如此处所述:https://oidref.com/1.2.840.113549.1.9.1 altNames 应改为使用。您可以在此处查看示例:On certificates, what type should E-mail addresses be when in subjectAltName

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-31
      • 2017-07-21
      • 2011-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-20
      • 1970-01-01
      相关资源
      最近更新 更多