zookeeper、kafka、kafka tool与spring boot之间访问时的身份验证配置

zookeeper、kafka、kafka tool与spring boot之间访问时的身份验证配置,第1张

zookeeper、kafka、kafka tool与spring boot之间访问时的身份验证配置 zookeeper、kafka、kafka tool与spring boot之间访问时的身份验证配置 一. zookeeper配置 1. 非kafka自带的zookeeper

安装目录/conf/zoo.cfg添加以下配置

authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000

同目录下新建文件zk_server_jaas.conf

Server {
	org.apache.zookeeper.server.auth.DigestLoginModule required
	username="admin" 
	password="passwd1" 
	user_admin="passwd1";
	user_kafka="passwd2"
};

这里的user_指的是配置访问用户及其密码。

然后修改启动脚本

win 修改zkServer.cmd,在启动命令行call %JAVA%···后增加启动参数"-Djava.security.auth.login.config=%~dp0…confzk_server_jaas.conf"

linux修改zkServer.sh,在启动命令行nohup “$JAVA” $ZOO_DATADIR_AUTOCREATE “····后增加启动参数”-Djava.security.auth.login.config=/zookeeper安装地址/conf/zk_server_jaas.conf"

2. kafka自带的zookeeper配置

修改kafka安装目录/config/zookeeper.properties,增加

authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000

在同目录下新增文件kafka_zookeeper_jaas.conf

Server {
	org.apache.zookeeper.server.auth.DigestLoginModule required
	username="admin"
	password="passwd1"
	user_admin="passwd1";
};

修改启动脚本。脚本都在bin目录下。

win修改zookeeper-server-start.bat,将启动参数加在KAFKA_HEAP_OPTS后面,例如:

set KAFKA_HEAP_OPTS=-Xmx512M -Xms512M -Djava.security.auth.login.config=file:%~dp0../../config/kafka_zookeeper_jaas.conf

linux修改zookeeper-server-start.sh

export KAFKA_HEAP_OPTS="-Xmx512M -Xms512M -Djava.security.auth.login.config=file:/kafka安装目录/config/kafka_zookeeper_jaas.conf"
二. kafka配置

修改kafka安装目录/config/server.properties,增加

#身份安装配置
listeners=SASL_PLAINTEXT://127.0.0.1:9092
#advertised.listeners=SASL_PLAINTEXT://127.0.0.1:9092
#使用的认证协议
security.inter.broker.protocol=SASL_PLAINTEXT
#SASL机制 
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
# 完成身份验证的类
#authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
# 如果没有找到ACL(访问控制列表)配置,则允许任何 *** 作
allow.everyone.if.no.acl.found=true
#超级管理员权限用户
super.users=User:admin

同目录下新建kafka_server_jaas.conf

KafkaServer {
	org.apache.kafka.common.security.plain.PlainLoginModule required
	username="admin"
	password="passwd1"
	user_admin="passwd1"
	user_producer="passwd2"
	user_consumer="passwd3";
};
Client {
	org.apache.zookeeper.server.auth.DigestLoginModule required
	username="admin"
	password="上面配置的zookeeper访问密码";
};

这边的user_也是一样的,后面跟的是设置的用户名和其密码。

修改启动脚本。bin目录下。

win启动脚本kafka-server-start.bat:

set KAFKA_HEAP_OPTS=-Xmx512M -Xms512M -Djava.security.auth.login.config=file:%~dp0../../config/kafka_server_jaas.conf

linux启动脚本kafka-server-start.sh:

export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=file:/kafka安装目录/config/kafka_server_jaas.conf"

启动:kafka-server-start.bat … …configserver.properties

三. kafka tool 配置

要注意是否在hosts配置ip和host的映射。建议直接用ip。

org.apache.kafka.common.security.plain.PlainLoginModule required username=“admin” password=“passwd”;

四. spring boot配置

yml文件里的配置:

spring:
  kafka:
    bootstrap-servers: localhost:9092
    template:
      default-topic: topic
    # 生产者
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
    # 消费者
    consumer:
      group-id: foo1
      auto-offset-reset: earliest
      enable-auto-commit: true
      auto-commit-interval: 1000
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
    properties:
      security:
        protocol: SASL_PLAINTEXT
      sasl:
        mechanism: PLAIN
        jaas:
          config: 'org.apache.kafka.common.security.plain.PlainLoginModule required username="username" password="password";'

注: 以上例子kafka使用的是SASL/PLAIN认证,如果要使用SASL/SCRAM认证(可配合ACL实现动态创建用户及权限控制),需做以下配置调整。

首先为连接用户,如admin创建 SCRAM 证书

.kafka-configs.bat --zookeeper 127.0.0.1:2181 --alter --add-config 'SCRAM-SHA-256=[password=PASSWD],SCRAM-SHA-512=[password=PASSWD]' --entity-type users --entity-name admin

查看证书

.kafka-configs.bat --zookeeper localhost:2181 --describe --entity-type users --entity-name admin

然后修改jaas配置文件,kafka_server_jaas.conf,

org.apache.kafka.common.security.plain.PlainLoginModule 
#修改为
org.apache.kafka.common.security.scram.ScramLoginModule

修改server.properties文件

sasl.enabled.mechanisms=PIAIN
sasl.mechanism.inter.broker.protocol=PLAIN
#修改为
sasl.enabled.mechanisms=SCRAM-SHA-256
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256

然后关闭所有连接kafka的进程,包括kafka tool,然后按重启kafka。

再用kafka tool连接时,修改连接配置:Advanced->SASL Mechanism 为SCRAM-SHA-256,JAAS Config配置改为org.apache.kafka.common.security.scram.ScramLoginModule required username=“admin” password=“PASSWD”;

同样的,spring boot配置文件中也将spring.kafka.propertites.sasl.mechanism配置项改为SCRAM-SHA-256,将jaas.config改为org.apache.kafka.common.security.scram.ScramLoginModule required username=“admin” password=“PASSWD”;

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5606177.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存