boot+kafka+kerberos配置

new9mtju  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(918)

我使用springboot1.5.6.release通过kerberos身份验证连接到kafka0.11。以下是我为Kafka使用的依赖项:

<dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-kafka</artifactId>
            <version>3.0.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
            <version>2.0.8.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-stream-kafka</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>

我必须给Kafka服务器发送信息,但Kafka服务器不在我们的管理范围内,我得到了一个Kafka用户名, keytab 文件和文件 krb5.conf 文件。
以下是用于在没有kerberos的情况下进行测试的属性:

spring:
  kafka:
    bootstrap-servers: "10.10.20.185:9092"
    producer:
      value-serializer: org.springframework.kafka.support.serializer.JsonSerializer

很好用。
如何在应用程序配置中实现kerberos?由于我是Kafka和kerberos的新手,任何帮助都将不胜感激。

xj3cbfub

xj3cbfub1#

请参阅kafka文档“使用sasl/kerberos进行身份验证”。
在客户机上配置sasl身份验证:客户机(生产者、消费者、连接工作者等)将使用自己的主体(通常与运行客户机的用户同名)对集群进行身份验证,因此根据需要获取或创建这些主体。然后为每个客户机配置jaas配置属性。jvm中的不同客户机可以通过指定不同的主体作为不同的用户运行。producer.properties或consumer.properties中的属性sasl.jaas.config描述了producer和consumer等客户机如何连接到kafka代理。以下是使用keytab的客户机配置示例(建议用于长时间运行的进程):

sasl.jaas.config=com.sun.security.auth.module.Krb5LoginModule required \
    useKeyTab=true \
    storeKey=true  \
    keyTab="/etc/security/keytabs/kafka_client.keytab" \
    principal="kafka-client-1@EXAMPLE.COM";

对于命令行实用程序,如kafka console consumer或kafka console producer,kinit可以与“useticketcache=true”一起使用,如:

sasl.jaas.config=com.sun.security.auth.module.Krb5LoginModule required \
    useTicketCache=true;

客户机的jaas配置也可以指定为jvm参数,类似于这里描述的代理。客户端使用名为kafkaclient的登录部分。此选项只允许一个用户从jvm进行所有客户端连接。
确保启动kafka客户机的操作系统用户可以读取jaas配置中配置的keytab。可选地将krb5文件位置作为jvm参数传递给每个客户机jvm(有关更多详细信息,请参阅此处):

-Djava.security.krb5.conf=/etc/kafka/krb5.conf

在producer.properties或consumer.properties中配置以下属性:

security.protocol=SASL_PLAINTEXT (or SASL_SSL)
sasl.mechanism=GSSAPI
sasl.kerberos.service.name=kafka

相关问题