Kafka Kerberos 安全认证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kafka Kerberos 安全认证相关的知识,希望对你有一定的参考价值。

参考技术A 本主要介绍在 Kafka 中如何配置 Kerberos 认证,文中所使用到的软件版本: Java 1.8.0_261 、 Kafka_2.12-2.6.0 、 Kerberos 1.15.1 。

要使用 Kerberos 服务,需先安装 Kerberos,安装方法可参考: Kerberos 安装及使用 。

节点信息如下:

在安装 Kerberos 的机器上进入 kadmin(Kerberos 服务端上使用 kadmin.local ,安装了 Kerberos Client 的机器上可以使用 kadmin ),然后执行如下命令分别创建服务端和客户端的 keytab:

拷贝 krb5.conf 及 keytab 文件到所有安装 Kafka 的机器,把文件都放到 Kafka 的 config/kerveros 目录下(kerberos 目录需新建)。

复制 config/server.properties(复制动作能帮助我们在 认证/非认证 模式自由切换)重命名为 config/server-sasl.properties ,增加如下配置:

新建 kafka-server-jaas.conf 文件,该文件也放到 Kafka 的 config/kerveros 目录下:

复制 bin/kafka-server-start.sh 脚本重命名为 bin/kafka-server-start-sasl.sh ,倒数第二行增加如下配置:

该配置主要为了使用 bin/kafka-topics.sh、bin/kafka-console-consumer.sh、kafka-console-producer.sh 等命令。

新建 client.properties 文件,该文件也放到 Kafka 的 config/kerveros 目录下:

新建 kafka-client-jaas.conf 文件,该文件也放到 Kafka 的 config/kerveros 目录下:

复制 bin/kafka-topics.sh、kafka-console-producer.sh、bin/kafka-console-consumer.sh 脚本,分别重命名为 bin/kafka-topics-sasl.sh 、 kafka-console-producer-sasl.sh 、 bin/kafka-console-consumer-sasl.sh ,倒数第二行增加如下配置:

运行 bin/kafka-server-start-sasl.s 启动 Kafka 集群:

运行 bin/kafka-topics-sasl.sh 查看 topic 列表信息:

运行 kafka-console-producer-sasl.sh 生产消息:

运行 bin/kafka-console-consumer-sasl.sh 消费消息:

java 可以使用 JAAS 来进行 Kerberos 认证,需要 JAAS 配置文件、keytab 文件及 Kerberos 配置文件。

在 C:\Windows\System32\drivers\etc\hosts 文件中添加:

实际上,样例程序中的种种设置就是为了还原我们在上一步中改动 bin/kafka-console-consumer-sasl.sh + config/kerberos/client.properties 的过程,二者是对应的:

报错原因是 keytab 文件不正确,可能是 principle 不匹配或其它配置文件错误。本文中所犯错误是,Windows 的路径要写双斜线,否则配置文件无法正确读取。

报错的可能原因之一是未配置 hosts 文件。认证策略中肯能会使用缓存,配置了 hosts 文件后要重启 IDE。

以上是关于Kafka Kerberos 安全认证的主要内容,如果未能解决你的问题,请参考以下文章

Kafka 认证三:Kerberos 认证中心部署

Kafka 认证三:添加 Kerberos 认证详细流程

Kafka 认证三:添加 Kerberos 认证详细流程

Kafka 认证三:添加 Kerberos 认证详细流程

kafka kerberos 认证访问与非认证访问共存下的ACL问题

FlinkFlink跨集群访问开启Kerberos认证的Kafka