为 Schema Registry 定义 Kerberos 主体名称

Posted

技术标签:

【中文标题】为 Schema Registry 定义 Kerberos 主体名称【英文标题】:Define a Kerberos principal name for Schema Registry 【发布时间】:2022-01-20 04:04:25 【问题描述】:

我已经为我的 Kafka 代理激活了 SASL。 Schema Registry 需要经过身份验证才能连接到 Kafka。 Here 它说 “如果启用 Kafka 授权,则必须授予 Schema Registry 服务主体对指定资源执行以下操作的能力:” 如何定义主体?

There is 一个配置kafkastore.sasl.kerberos.service.name 但我不知道如何使用它。看起来它只需要一个角色或其他东西,而不是用户名密码对。

【问题讨论】:

【参考方案1】:

SASL 只是一个身份验证系统,它支持多种语言,包括 kerberos。 kafkastore.sasl.kerberos.service.name 只是一个名字......通常是“kafka”。 (并且应该与您的 Jaas 配置相匹配,如下所述)

Kerberos 使用原则和 Keytab 进行身份验证。 Kafka 通常使用 JAAS 来管理其 Kerberos 需求。 Here's a typical jaas kerberos 代理的文件:

   KafkaServer 
       com.sun.security.auth.module.Krb5LoginModule required
       useKeyTab=true
       keyTab="/etc/security/keytabs/kafka.service.keytab"
       storeKey=true
       useTicketCache=false
       serviceName="kafka" 
       principal="kafka/c6401.ambari.apache.org@EXAMPLE.COM";
       ;

您需要principlekeytab。您的 kerberos 管理员应该创建 principle 和 produce a keytab。由于这些超出了这个问题的范围,因此我将它们作为链接进行探索。

【讨论】:

以上是关于为 Schema Registry 定义 Kerberos 主体名称的主要内容,如果未能解决你的问题,请参考以下文章

Kafka Schema-Registry

Kafka 与 Confluent Kubernetes Helm Charts = Schema Registry WakeupException

使用apicurio-registry 管理schema

提供了 kafka schema.registry.url 但不是已知配置

KafkaAvroSerializer 用于在没有 schema.registry.url 的情况下序列化 Avro

spring模仿dubbo自定义schema解析并注入容器