kafka集群开启sasl认证

article/2025/10/20 14:51:20

kafka集群开启sasl认证

sasl认证

sasl 是扩展C/S模式验证能力的一种认证机制。它可以规范客户端和服务端传输应答和传输内容编码,简而言之sasl决定了认证的规则,即客户端如何存储身份证书、客户端与服务端如何校验密码都由sasl决定。当我们的客户端通过校验,服务端便知晓客户端的身份,将赋给客户端相应的权限。

plain机制

sasl最常使用的认证机制就是plain。通过将用户名和密码以base64字符串(不加密)方式进行传输。
如果你需要更安全的传输,请结合TLS使用。

zookeeper

之所以说zookeeper是因为zookeeper用于kafka的分布式协调、配置管理。
分布式协调
zookeeper 是一个帮助分布式部署的中间件,进行工作协调的工具,它不独立存在。
配置信息管理
如图所示,zookeeper对kafka的元数据、配置信息进行统一管理。

部署 zookeeper 集群

1)准备三台服务器(192.168.1.1、192.168.1.2、192.168.1.3)
2)下载zookeeper 下载链接
3)解压zookeeper(tar -xvf …)
4)移动目录到指定目录(个人习惯)

mv zookeeper-xxx /home/apps/zookeeper

5)编辑zoo.cfg
192.168.1.1

cp /home/apps/zookeeper/conf/zoo_sample.cfg /home/apps/zookeeper/zoo.cfg
cat /home/apps/zookeeper/zoo.cfg
server.1=0.0.0.0:2888:3888
server.2=192.168.1.2:2888:3888
server.3=192.168.1.3:2888:3888authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000

192.168.1.2

cp /home/apps/zookeeper/conf/zoo_sample.cfg /home/apps/zookeeper/zoo.cfg
cat /home/apps/zookeeper/zoo.cfg
server.1=192.168.1.1:2888:3888
server.2=0.0.0.0:2888:3888
server.3=192.168.1.3:2888:3888authProvider.2=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000

192.168.1.3

cp /home/apps/zookeeper/conf/zoo_sample.cfg /home/apps/zookeeper/zoo.cfg
cat /home/apps/zookeeper/zoo.cfg
server.1=192.168.1.1:2888:3888
server.2=192.168.1.2:2888:3888
server.3=0.0.0.0:2888:3888authProvider.3=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000

6)每个节点上都执行启动命令

sh /home/apps/zookeeper/bin/zkServer.sh

在这里插入图片描述
到此zookeeper集群搭建完成。

部署 kafka 集群

1)准备三台服务器(192.168.1.1、192.168.1.2、192.168.1.3)
2)下载kafka下载链接
3)解压kafka(tar -xvf …)
4)移动目录到指定目录(个人习惯)

mv kafka-xxx /home/apps/kafka

5)编辑server.properties文件
192.168.1.1

vim /home/apps/kafka/config/server.properties
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=1
listeners=SASL_PLAINTEXT://0.0.0.0:9092
num.partitions=3
zookeeper.connect=192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181

192.168.1.2

vim /home/apps/kafka/config/server.properties
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=2
listeners=SASL_PLAINTEXT://0.0.0.0:9092
num.partitions=3
zookeeper.connect=192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181

192.168.1.3

vim /home/apps/kafka/config/server.properties
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=3
listeners=SASL_PLAINTEXT://0.0.0.0:9092
num.partitions=3
zookeeper.connect=192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181

6)每个节点上都执行启动命令

sh /home/apps/kafka/bin/kafka-server-start.sh -daemon /home/apps/kafka/config/server.properties

到此kafka集群搭建完成。

开启sasl安全认证

数据备份

# 设置备份目录
mkdir -p /home/apps/backup
mkdir -p /home/apps/backup/zookeeper
mkdir -p /home/apps/backup/kafka
# zookeeper备份
cp -ra  /home/apps/zookeeper/lib /home/apps/backup/zookeeper/
cp -ra  /home/apps/zookeeper/conf /home/apps/backup/zookeeper/
cp -ra  /home/apps/zookeeper/bin /home/apps/backup/zookeeper/
# kafka备份
cp -ra  /home/apps/kafka/libs /home/apps/backup/kafka/
cp -ra  /home/apps/kafka/config /home/apps/backup/kafka/
cp -ra  /home/apps/kafka/bin /home/apps/backup/kafka/

zookeeper sasl配置

1)导入kafka相关的jar包到zookeeper的lib目录

cp /home/apps/kafka/libs/kafka-clients-2.2.0.jar /home/apps/zookeeper/lib/
cp /home/apps/kafka/libs/lz4-java-1.5.0.jar /home/apps/zookeeper/lib/
cp /home/apps/kafka/libs/slf4j-api-1.7.25.jar /home/apps/zookeeper/lib/
cp /home/apps/kafka/libs/slf4j-log4j12-1.7.25.jar /home/apps/zookeeper/lib/
cp /home/apps/kafka/libs/snappy-java-1.1.7.2.jar /home/apps/zookeeper/lib/

2)修改zoo.cfg

echo -e "authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider\nrequireClientAuthScheme=sasl\njaasLoginRenew=3600000\n" >> /home/apps/zookeeper/conf/zoo.cfg

3)编写zk_server_jaas.conf文件,定义了要链接zookeeper服务器所需的用户名和密码

Server {
org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="admin"password="admin-2019"user_kafka="kafka-2019"user_producer="prod-2019";
};

4)zkEnv.sh 添加环境变量

echo 'export SERVER_JVMFLAGS="-Djava.security.auth.login.config=/home/apps/zookeeper/conf/zk_server_jaas.conf' >> /home/apps/zookeeper/bin/zkEnv.sh

5)启动zookeeper服务

/home/apps/zookeeper/bin/zkServer.sh start-foreground

kafka sasl配置

1)新建kafka_server_jaas.conf 文件

# KafkaServer配置的是kafka的账号和密码,Client配置节主要配置了broker到Zookeeper的链接用户名密码
KafkaServer {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="admin"password="admin-2019"user_admin="admin-2019"user_producer="prod-2019"user_consumer="cons-2019";
};Client {
org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="kafka"password="kafka-2019";
};

2)配置server.properties文件
192.168.1.1

listeners=SASL_PLAINTEXT://0.0.0.0:9092
advertised.listeners=SASL_PLAINTEXT://192.168.1.1: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

192.168.1.2

listeners=SASL_PLAINTEXT://0.0.0.0:9092
advertised.listeners=SASL_PLAINTEXT://192.168.1.2: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

192.168.1.3

listeners=SASL_PLAINTEXT://0.0.0.0:9092
advertised.listeners=SASL_PLAINTEXT://192.168.1.3: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

3)kafka-server-start.sh 新增环境变量

export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=/home/apps/kafka/config/kafka_server_jaas.conf"

4)启动kafka服务

/home/apps/kafka/bin/kafka-server-start.sh /home/apps/kafka/config/server.properties

回滚

# 回滚到设置sasl模式前
# zookeeper回滚
cp -ra  /home/apps/backup/zookeeper/lib  /home/apps/zookeeper/lib
cp -ra  /home/apps/backup/zookeeper/conf /home/apps/zookeeper/conf
cp -ra  /home/apps/backup/zookeeper/bin /home/apps/zookeeper/bin
# kafka回滚
cp -ra /home/apps/backup/kafka/libs  /home/apps/kafka/lib
cp -ra  /home/apps/backup/kafka/config /home/apps/kafka/conf
cp -ra  /home/apps/backup/kafka/bin /home/apps/kafka/bin

http://chatgpt.dhexx.cn/article/RIvZ9Wkw.shtml

相关文章

mysql sasl_SASL认证失败的原因(authentication failed)

SASL认证失败的原因(authentication failed) (2012-06-15 00:45:43) 标签: 杂谈 authentication failed) SASL认证失败的原因可分为如下几个可能的方面: Permission问题:对系统用户的SASL Auth尤其重要,要保证postfix用户(smtpd)对…

Kafka安全(以SASL+ACL为例)

目录 1 Security2 SASLACL实现用户及权限认证2.1 下载2.2 Kafka服务配置2.3 修改Kafka 服务启动脚本2.4 配置server.properties2.5 启动Zookeeper2.6 启动Kafka 集群2.7 ACL2.7.1 admin2.7.2 生产者2.7.3 消费者2.7.4 sharga用户2.7.5 shargb用户2.7.6 说明 2.8 生产者客户端代…

安装sasl出错

场景:python项目需要用到 pyhive0.6.4 pyhdfs0.2.2 thrift0.13.0 thrift_connector0.12 thrift_sasl0.3.0进项镜像构建时, 报错:error: command gcc failed with exit status 1 解决方法: 1.ubuntu系统: sudo apt-…

sasl认证原理

SASL - 简单认证和安全层 SASL是一种用来扩充C/S模式验证能力的机制认证机制, 全称Simple Authentication and Security Layer. 当你设定sasl时,你必须决定两件事;一是用于交换“标识信 息”(或称身份证书)的验证机制&#xff1…

kafka sasl java_Kafka 集群配置SASL+ACL

** Kafka 集群配置SASLACL 测试环境:** 系统: CentOS 6.5 x86_64 JDK : java version 1.8.0_121 kafka: kafka_2.11-1.0.0.tgz zookeeper: 3.4.5 ip: 192.168.49.161 (我们这里在一台机上部署整套环境) kafka 名词解析: Broker: Kafka 集群包含一个或多个…

kafka sasl java_Kafka SASL 安全认证

java client 中添加 SASL 设置信息: Java client consumer properties配置.png 注意 sasl.jaas.config 配置中的分号必不可少。 package kafka; import java.time.Duration; import java.util.Arrays; import java.util.Properties; import org.apache.kafka.clients.consumer…

SASL讲解,以及在Spark中的应用

是什么? SASL全称Simple Authentication and Security Layer,是一种用来扩充C/S模式验证能力的机制。在Postfix可以利用SASL来判断用户是否有权使用转发服务,或是辨认谁在使用你的服务器。      SASL提供了一个通用的方法为基于连接的协议增加验证支持,而XMPP使用了一…

关于SASL的介绍文档

http://docs.sun.com/app/docs/doc/819-7056/6n91eac4q?lzh&aview 简单验证安全层 (Simple Authentication Security Layer, SASL) 介绍 SASL 为应用程序和共享库的开发者提供了用于验证、数据完整性检查和加密的机制。开发者可通过 SASL 对通用 API 进行编码。此方法避免…

文献管理与信息分析期末考试答案

可以在考试界面按ctrlf,对照着下图自己敲关键字搜索相应题目,感觉这样更方便点,也不会漏下题目。(仅供参考)

使用NoteExpress做文献管理

NoteExpress 是北京爱琴海软件公司开发的一款专业级别的文献检索与管理系统,具备文献信息检索与下载功能,可以用来管理参考文献的题录,以附件方式管理参考文献全文或者任何格式的文件、文档。 除此以为还有EndNote等其他文献管理软件&#x…

Zotero——一款文献管理工具

1.简介:Zotero是一款开源的文献管理工具,可以提供文献管理、浏览等众多服务,可以极大地为我们的科研和论文写作提供便利。 2.下载与安装 官方网站:Zotero | Your personal research assistant 我们可以直接在其官网上下载该软件…

使用 bibtex 进行参考文献管理

原  文:Bibliography management with bibtex 译  者:Xovee 翻译时间:2020年11月9日 使用 bibtex 进行参考文献管理 LaTeX 中直接支持参考文献的管理。本篇文章介绍如何使用thebibliography环境和BibTeX系统来管理参考文献。 注意&…

参考文献管理

一年以后latex和word都积累了一些经验再看这篇博客,发现有些小错误和语焉不详处,小修小改了一波。 处理参考文献真的是一件说复杂也很复杂,说简单也很简单的事,关键看能不能掌握门(tao)路,这里只…

Zotero文献管理软件入门使用方法:软件下载、文献导入、引文插入

本文介绍文献管理软件Zotero的基础使用方法,包括软件下载与安装、文献与PDF导入、在Word中插入参考文献等的方法。 在EndNote文献输出引用格式自定义修改与编辑界面解读(https://blog.csdn.net/zhebushibiaoshifu/article/details/115221112)…

学习笔记:MOOC 文献管理与信息分析

学习笔记:MOOC 文献管理与信息分析 文章目录 学习笔记:MOOC 文献管理与信息分析前言本科硕士博士的差异科研的特性读研的意义学习策略 学习与搜索两种类型的知识什么是需求?搜商基本检索及逻辑关系(AND OR NOT高级搜索命令检索图片…

今天【分享】一个好用的文献管理软件——Zetero

文章目录 一、下载与安装二、基础设置 一、下载与安装 首先去Zetero的官网下载即可,该软件不大,直接在百度搜索下载即可,这里不再放其网址。 下载之后,直接解压 点击安装即可。 下载完进去,是这种页面显示&#xff…

文献管理软件Zotero的安装和使用

文章目录 前言一、Zotero简介二、安装与使用1、账号注册2、软件安装3、插件安装4、关联账户设置5、坚果云扩充(WebDAV)6、保存路径设置7、与Connected Papers联动8、参考文献的引用 前言 随着阅读文献数量的增加,感觉一个好用的文献管理工具…

文献管理与信息分析

文献管理与信息分析_罗昭锋 一、搜索引擎使用1.谷歌百度的高级搜索功能2.命令搜索3.图片搜索4.语音搜索5.本地搜索工具Everything 二、RSS-同步世界最新资讯1.RSS的意义及使用2.订阅科技文献 三、为知笔记和思维导图1.为知笔记2.思维导图3.快速学习某个主题知识的步骤 四、十大…

Zotero参考文献管理

Zotero 参考文献管理 简介 Zotero 作为一个开源免费的优秀文献管理工具,在写论文中时进行参考文献插入也是非常方便的,本文介绍如何利用 Zotero 的 Word 插件高效进行参考文献管理。 准备工作 确保自己的电脑上安装了 Word、Zotero 以及 Zotero Word…

Endnote插入文献与文献管理

介绍如何使用endnote进行文献管理 一、导入Endnote 以这篇文章为例: M. Nasr, R. Shokri and A. Houmansadr, “Comprehensive Privacy Analysis of Deep Learning: Passive and Active White-box Inference Attacks against Centralized and Federated Learning,…