Kafka的SASL/PLAIN认证配置说明

Kafka 天涯孤鸟 8677℃ 0评论

Kafka 的安全机制主要分为两部分:

  • 身份认证(Authentication):对client 与服务器的连接进行身份认证。
  • 权限控制(Authorization):实现对于消息级别的权限控制

自version 0.10.0.0之后,Kafka提供了SASL/PLAIN认证机制。这篇文章主要介绍身份认证(Authentication)
测试环境:

  • Linux:centos7
  • jdk:1.8.0_111-b14
  • Kafka:kafka_2.10-0.10.1.0

首先修改server.properties添加如下配置信息

在config目录添加kafka_server_jaas.conf

p.s:注意KafkaServer,一定要是KafkaServer,否则会报Could not find a ‘KafkaServer’ entry in the JAAS configuration. System property ‘java.security.auth.login.config’ is /usr/local/src/kafka_2.10-0.10.1.0/config/jaas/kafka_server_jaas.conf
这里username,password是broker内部使用的账号和密码,
user_alice=”alice-secret”客户端连接时的账号 alice 密码 alice-secret
然后在kafka-run-class.sh添加下面配置(其实只需添加KAFKA_SASL_OPTS和$KAFKA_SASL_OPTS部分)

这样,kafka已经开启了SASL/PLAIN权限认证,在这种情况下,producer和consumer是如果不做配置是无法连接kafka的。
如果是用kafka的命令行连接,需要做如下设置:
在config目录下创建kafka_client_jaas.conf

在config下的producer.properties和consumer.properties添加下面配置:

在bin下的kafka-console-producer.sh和kafka-console-consumer.sh下添加下面配置:

配置完成后,测试下
producer发送消息:


P.S:记得要加–producer.config部分,否则连不上broker

consumer消费消息:


P.S:记得加 –consumer.config 部分,否则连不上broker

如果是在程序里面只需要在kafka配置信息里添加如下配置:

无论是producer还是consumer,都需要配置认证信息,其中kafka_client_jaas.conf的内容如下:

如果不配置,会报如下错误(我的demo是springboot):

下面是我用springboot写的一个demo:
producer配置类:

如果没配置java.security.auth.login.config,会报:

consumer配置类:

如果没配置java.security.auth.login.config,会报:

因为我的producer和consumer都是写在同一个demo下,所以为了方便,这里在启动的时候就设置了

还有另外一种方法统一设置可以设置,就是在java的JAVA_HOME\jre\lib\security\java.security,添加这个登陆配置

参考:

  • http://matt33.com/2016/07/29/sasl-plain-kafka/
  • https://github.com/MaxSherry/kafka_sasl_plain
  • https://www.confluent.io/blog/apache-kafka-security-authorization-authentication-encryption/

转载请注明:猫头鹰工作室 » Kafka的SASL/PLAIN认证配置说明

喜欢 (6)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址