具有 kerberos 身份验证的 Kafka 控制台消费者

Kafka Console consumer with kerberos authentication

如何使用来自 kafka(版本 0.10)服务器的已发布消息,该服务器已获得 kerberos 授权,因为正在使用身份验证密钥表文件。

我尝试使用以下命令,但没有显示任何输出。

bin/kafka-console-consumer.sh --bootstrap-server :9092 --topic --from-beginning

Kerberos-enabled 集群有时会带来一些棘手的挑战。我不得不自己处理其中的一些问题。

如果 Kafka 集群是 Kerberos-enabled,那么您需要提供包含 Kerberos 详细信息的 jaas.conf 文件。尝试按照以下步骤操作(它们对我有用):

  1. 创建一个 jaas.conf 文件,内容如下:
KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="<path-to-the-keytab-file>"
principal="<kafka-principal>";
};

注意:我假设已经创建了 Kafka 主体和关联的密钥表。如果没有,您需要先创建这些。

  1. 创建一个包含以下内容的属性文件(比如“consumer.properties”):
security.protocol=SASL_PLAINTEXT
sasl.kerberos.service.name=kafka
  1. 然后在终端 运行 执行以下命令:
$export KAFKA_OPTS="-Djava.security.auth.login.config=<path-to-jaas.conf>"
  1. 执行Kafka-console-consumer脚本:
$ kafka-console-consumer --topic <topic-name> --from-beginning 
--bootstrap-server <anybroker>:9092 --consumer.config <consumer.properties>

编辑 - 可以合并步骤 3 和 4,以防万一有偏好将它们作为一个命令保留在命令历史记录中。

希望对您有所帮助。