Kafka+zookeeper安装及sasl认证(二)

kafka安全认证sasl

一、环境

kafka_2.13-2.8.0,zookeeper-3.6.3(这里不是用kafka自带的zookeeper)

二、修改配置文件

1、zookeeper配置(三台操作一样)
(1)为zookeeper添加SASL支持,在conf下配置文件zoo.cfg添加

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

(2)conf下新建jaas.conf文件,为Zookeeper添加账号认证信息,具体位置不固定,只要后面zkEnv配置正确的路径就可以。

Server {
  org.apache.zookeeper.server.auth.DigestLoginModule required
  user_admin="kafka_zk"
  user_kafka="kafka_zk";
};

username和paasword是zk集群之间的认证密码。
user_kafka=“kafka_zk"定义了一个用户"kafka”,密码是"kafka_zk"。
(3)导入kafka的相关jar

kafka-clients-2.8.0.jar
lz4-java-1.7.1.jar
slf4j-api-1.7.30.jar
slf4j-log4j12-1.7.30.jar
snappy-java-1.1.8.1.jar

(4)修改 zkEnv.sh

SERVER_JVMFLAGS=" -Djava.security.auth.login.config=/data1/apache-zookeeper-3.6.3/conf/zk_server_jaas.conf "

2、kafka配置文件
(1)在config下增加kafka_server_jaas.conf

KafkaServer {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="admin"
    password="admin"
    user_admin="admin"
    user_kafka="kafka_zk";
};

Client {
  org.apache.kafka.common.security.plain.PlainLoginModule required
    username="kafka"
    password="kafka_zk";
};

说明:KafkaServer中的username和password是用于节点间的连接认证,节点初始化连接到其他的节点,在上面配置中,admin用户为broker间的通讯使用的账号和密码。
user_userName定义了所有连接到 broker和 broker验证的所有的客户端连接包括其他 broker的用户密码,user_admin 表示的是用户名为admin,后面的双引号中表示为密码,在这里设置了两个账号,一个为admin,一个为kafka。在使用生产者和消费者连接kakfa的topic时,需要拿用户名和密码与这个做验证。也可以另外根据不同业务部门需求创建独立的账号密码。
Client中是kafka作为用户使用zk的认证信息,这里的username和password一定要和zk_server_jaas.conf的配置对的上。(由于这里不是用的自带的zookeeper,所以需要增加这部分配置,如果使用自带zookeeper,就不用配置)
(2)在config下增加kafka_client_jaas.conf

KafkaClient {
        org.apache.kafka.common.security.plain.PlainLoginModule required
        username="kafka"
        password="kafka_zk";
};

KafkaClient中的username和password是客户端用来配置客户端连接broker的用户使用,通俗来讲,该配置为生产者或者消费者连接kafka时需要用到的用户名和密码

(3)增加kafka_zoo_jaas.conf

Server {
    org.apache.zookeeper.server.auth.DigestLoginModule required
    user_kafka="kafka_zk";
};

(4)修改server.properties配置文件

listeners=SASL_PLAINTEXT://ip:9092
security.inter.broker.protocol = SASL_PLAINTEXT
sasl.enabled.mechanisms = PLAIN
sasl.mechanism.inter.broker.protocol = PLAIN
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
allow.everyone.if.no.acl.found=true
advertised.listeners=SASL_PLAINTEXT://ip:9092
super.users=User:kafka

添加sasl认证说明

super.users=User:kafka 设置kafka为超级用户

(5)修改kafka启动脚本,在bin/kafka-server-start.sh中

exec $base_dir/kafka-run-class.sh $EXTRA_ARGS kafka.Kafka "$@"

修改为

exec $base_dir/kafka-run-class.sh $EXTRA_ARGS -Djava.security.auth.login.config=/usr/local/kafka_2.13-2.8.0/config/kafka_server_jaas.conf kafka.Kafka "$@"

启动kafka

配置kafka client端认证

在kafka安装目录config下创建kafka_client_jaas.conf,内容如下

KafkaClient {
  org.apache.kafka.common.security.plain.PlainLoginModule required
  username="kafka"
  password="kafkapasswd";
};

修改producer脚本启动参数 vi kafka-console-producer.sh

exec $(dirname $0)/kafka-run-class.sh kafka.tools.ConsoleProducer "$@"

修改为

exec $(dirname $0)/kafka-run-class.sh -Djava.security.auth.login.config=/data1/kafka_2.13-2.8.0/config/kafka_client_jaas.conf kafka.tools.ConsoleProducer "$@"

在kafka安装目录config下创建 sasl_client.conf 写入以下内容

security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN

同样的使用kafka-console-consumer.sh kafka-topics.sh 这些脚本都需要按照kafka-console-producer.sh 一样修改启动参数 指定sasl_client.conf配置文件
如创建topic 先修改kafka-topics.sh (本人为做此修改)

exec $(dirname $0)/kafka-run-class.sh  kafka.admin.TopicCommand "$@"
 
改为
 
exec $(dirname $0)/kafka-run-class.sh -Djava.security.auth.login.config=/data1/kafka_2.13-2.8.0/config/kafka_client_jaas.conf  kafka.admin.TopicCommand "$@"
 
---------------------------------------------------------------------------
 
或者直接添加
export KAFKA_OPTS="-Djava.security.auth.login.config=/data1/kafka_2.13-2.8.0/config/kafka_client_jaas.conf"

创建topic

[root@FLMG-146 bin]# ./kafka-topics.sh --create --zookeeper ip1:2181,ip2:2181,ip3:2181 --replication-factor 1 --partitions 1 --topic test

启动命令zookeeper和kafka
(1)切换到zookeeper bin,目录下

./zkServer start

前台打印日志的方式启动

./zkServer.sh start-foreground

(2)kafka启动

./kafka-server-start.sh -daemon ../config/server.properties
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
SASL_PLAINTEXT是一种Kafka的安全机制,可以在传输数据时进行身份验证和加密。下面是在Kafka2.7中设置SASL_PLAINTEXT的步骤: 1. 安装Kafka2.7 首先需要安装Kafka2.7,可以根据自己的操作系统下载安装包或使用源代码编译安装。 2. 配置KafkaKafka配置文件中,需要添加以下配置项: ``` listeners=SASL_PLAINTEXT://localhost:9092 security.inter.broker.protocol=SASL_PLAINTEXT sasl.mechanism.inter.broker.protocol=PLAIN ``` 这些配置项将启用SASL_PLAINTEXT,并指定Kafka监听的地址和端口。 3. 配置认证机制 在Kafka配置文件中,还需要指定认证机制。例如,可以使用PLAIN认证机制进行身份验证。需要添加以下配置项: ``` sasl.enabled.mechanisms=PLAIN sasl.mechanism.inter.broker.protocol=PLAIN sasl.server.callback.handler.class=io.confluent.kafka.security.authenication.plain.PlainServerCallbackHandler security.inter.broker.protocol=SASL_PLAINTEXT ``` 4. 创建用户和密码 在Kafka中,需要为每个用户创建用户名和密码。可以使用kafka-configs.sh工具创建用户和密码。例如,以下命令将创建用户名为“admin”,密码为“admin”的用户: ``` bin/kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[password=admin],SCRAM-SHA-512=[password=admin]' --entity-type users --entity-name admin ``` 5. 重启Kafka 完成以上步骤后,需要重启Kafka以使配置生效。 6. 测试SASL_PLAINTEXT 可以使用Kafka的命令行工具(kafka-console-producer.sh和kafka-console-consumer.sh)测试SASL_PLAINTEXT是否生效。例如,以下命令将在SASL_PLAINTEXT模式下启动一个生产者: ``` bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test --producer.config config/producer.properties ``` 在控制台中输入消息后,可以使用以下命令在SASL_PLAINTEXT模式下启动一个消费者来接收消息: ``` bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning --consumer.config config/consumer.properties ``` 如果一切正常,应该能够成功发送和接收消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值