目录
1.kfaka安装篇
1.1 安装jdk
1.2安装kafka
2.安全篇
2.1 kafka安全涉及3部份:
2.2 Kafka权限控制认证方式
2.3 SASL/SCRAM-SHA-256 配置实例
2.3.1 创建用户
2.3.2 创建 JAAS 文件及配置
3.测试
3.1 创建测试用户
3.2 配置JAAS 文件
3.2.1 生产者配置
3.2.2 消费者配置
3.3 消息收发测试
1.kfaka安装篇
- 依赖环境:jdk 1.8+
- 系统:centos 7.6
- 安装版本:v2.6.2
- 下载:Apache Kafka
1.1 安装jdk
# 安装jdk 1.8 yum install java-1.8.0-openjdk.x86_64 -y
1.2安装kafka
# 下载2.6.2 kafka wget https://archive.apache.org/dist/kafka/2.6.2/kafka_2.13-2.6.2.tgz # 解压 tar -xzf kafka_2.13-2.6.2.tgz && mv kafka_2.13-2.6.2 /usr/local/kafka cd /usr/local/kafka # 启动zk bin/zookeeper-server-start.sh config/zookeeper.properties # 启动kafka bin/kafka-server-start.sh config/server.properties # 启动后查看端口 # 查看监听zk端口2181、kafka端口 9092 # netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp6 0 0 :::9092 :::* LISTEN 2164/java tcp6 0 0 :::2181 :::* LISTEN 1008/java
2.安全篇
2.1 kafka安全涉及3部份:
- 传输加密
- 用户认证与授权
- ZK开启ACL(默认不开启acl,所有用户可更改,按需开启)
这里只开启传输加密和用户认证部分,acl不在这里配置
2.2 Kafka权限控制认证方式
Kafka支持的认证类别有
具体使用哪种按需选择,这里以sasl scram认证配置为例
2.3 SASL/SCRAM-SHA-256 配置实例
步骤:
- 创建用户
- 配置认证
2.3.1 创建用户
配置 SASL/SCRAM 的第一步,是创建能连接 Kafka 集群的用户,创建用户admin ,用于实现 Broker 间通信。
创建用户:
# 注意将密码替换 # 创建用户admin bin/kafka-configs.sh --zookeeper 127.0.0.1:2181 --alter --add-config 'SCRAM-SHA-256=[password=admin],SCRAM-SHA-512=[password=admin]' --entity-type users --entity-name admin
附:管理用户命令
# 查看用户信息 bin/kafka-configs.sh --zookeeper localhost:2181 --describe --entity-type users --entity-name admin # 删除用户 bin/kafka-configs.sh --zookeeper localhost:2181 --alter --delete-config 'SCRAM-SHA-512' --entity-type users --entity-name admin
2.3.2 创建 JAAS 文件及配置
2.3.2.1 broker配置
创建用户之后,需要为每个 Broker 创建一个对应的 JAAS 文件。因为本例为单机部署,所以只创建了一份 JAAS 文件即可。如果是集群,需要为每个 Broker 机器都创建一份 JAAS 文件
JAAS 的文件内容如下
# 在kafka工作目录下创建jaas.conf文件,用于broker通信 vim config/kafka_server_jaas.conf KafkaServer { org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin"; };
开启broker认证配置
vim config/server.properties # 添加如下配置 # 开启认证配置 advertised.listeners=SASL_PLAINTEXT://:9092 listeners=SASL_PLAINTEXT://:9092 security.inter.broker.protocol=SASL_PLAINTEXT # Broker 间通信也开启 SCRAM 认证,使用 SHA-256 算法 sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256 # 开启 SCRAM 认证机制,并启用 SHA-256 算法 sasl.enabled.mechanisms=SCRAM-SHA-256
broker启动命令添加 jaas conf配置,用于通信认证
vim /usr/local/kafka/bin/kafka-server-start.sh # 将最下面的命令注释 # exec $base_dir/kafka-run-class.sh $EXTRA_ARGS kafka.Kafka "$@" # 增加jvm参数:-Djava.security.auth.login.config # 修改如下 exec $base_dir/kafka-run-class.sh $EXTRA_ARGS -Djava.security.auth.login.config=/usr/local/kafka/config/kafka_server_jaas.conf kafka.Kafka "$@"
重启kafka
3.测试
3.1 创建测试用户
在这里创建 2个用户,分别是producer和 consumer 。producer 用于生产消息,consumer 用于消费消息,producer和consumer用于测试使用,生产中使用可根据业务需要创建对应用户,这里仅用于演示。
# 创建用户producer bin/kafka-configs.sh --zookeeper 127.0.0.1:2181 --alter --add-config 'SCRAM-SHA-256=[password=producer],SCRAM-SHA-512=[password=producer]' --entity-type users --entity-name producer # 创建用户consumer bin/kafka-configs.sh --zookeeper 127.0.0.1:2181 --alter --add-config 'SCRAM-SHA-256=[password=consumer],SCRAM-SHA-512=[password=consumer]' --entity-type users --entity-name consumer
3.2 配置JAAS 文件
3.2.1 生产者配置
vim /usr/local/kafka/config/producer_jaas.conf KafkaClient { org.apache.kafka.common.security.scram.ScramLoginModule required username="producer" password="producer"; };
配置生产者启动脚本添加JAAS文件
vim bin/kafka-console-producer.sh # 将下面的命令注释 #exec $(dirname
vim config/producer.properties # 添加如下内容 security.protocol=SASL_PLAINTEXT sasl.mechanism=SCRAM-SHA-256
)/kafka-run-class.sh kafka.tools.ConsoleProducer "$@" # 修改如下 exec $(dirname3.2.2 消费者配置
)/kafka-run-class.sh -Djava.security.auth.login.config=/usr/local/kafka/config/producer_jaas.conf kafka.tools.ConsoleProducer "$@"配置producer.properties
vim /usr/local/kafka/config/consumer_jaas.conf KafkaClient { org.apache.kafka.common.security.scram.ScramLoginModule required username="consumer" password="consumer"; };
vim bin/kafka-console-consumer.sh # 将下面的命令注释 #exec $(dirname
vim config/consumer.properties # 添加如下内容 security.protocol=SASL_PLAINTEXT sasl.mechanism=SCRAM-SHA-256
)/kafka-run-class.sh kafka.tools.ConsoleConsumer "$@" # 修改如下 exec $(dirname3.3 消息收发测试
)/kafka-run-class.sh -Djava.security.auth.login.config=/usr/local/kafka/config/consumer_jaas.conf kafka.tools.ConsoleConsumer "$@"配置JAAS文件
# 发送消息到topic test bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test --producer.config config/producer.properties # 读取test消息 bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning --consumer.config config/consumer.properties
配置消费者启动脚本添加JAAS文件配置
配置consumer.properties
效果如下
至此kafka SASL SCRAM认证配置完毕
猜你喜欢
网友评论
- 搜索
- 最新文章
- 热门文章