热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Kafka配置2Windows下配置Kafka的SASLPLAIN身份验证

Kafka配置1--Windows环境安装和配置KafkaKafka配置2--Windows下配置Kafka的SASL-PLAIN身份验证Kafka配置3--Windows下配

 

Kafka配置1--Windows环境安装和配置Kafka

Kafka配置2--Windows下配置Kafka的SASL-PLAIN身份验证

Kafka配置3--Windows下配置Kafka集群

Kafka配置4--Windows下配置Kafka的SSL证书

Kafka配置5--Windows下配置Kafka的集群+SASL+SSL

Kafka配置6--Windows下设置和增加SASL用户或用户权限


1、Zookeeper配置
    1.1、修改Zookeeper配置文件
        在Zookeeper安装目录conf中,打开zoo.cfg进行编辑,在该文件中加入如下配置:

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

            
    1.2、新建zk_server_jaas.conf
        在Zookeeper安装目录conf中,新建zk_server_jaas.conf文件,添加如下内容:

Server {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="admin"password="admin123456"user_quber="quber123456"user_quber1="quber123456"user_quber2="quber123456";
};

        说明:
            username和paasword是zk集群之间的认证
            定义了quber、quber1和quber2这3个用户,密码为quber123456,是用于Kafka客户端访问Zookeeper的
            quber:用于读和写
            quber1:用于读
            quber2:用于写
        
    1.3、修改zkEnv.cmd
        在Zookeeper安装目录bin中,打开zkEnv.cmd进行编辑,在该文件中set ZOO_LOG4J_PROP=INFO,CONSOLE下一行加入如下配置:

set SERVER_JVMFLAGS=-Djava.security.auth.login.cOnfig=D:/Net_Program/Net_Zookeeper/conf/zk_server_jaas.conf

        注意上述配置是斜杠,不是反斜杠

        
    1.4、导入相关jar
        在Kafka安装目录libs中分别找到如下jar,复制它们到Zookeeper安装目录的lib中即可
            kafka-clients-2.4.0.jar
            lz4-java-1.6.0.jar
            slf4j-api-1.7.28.jar
            slf4j-log4j12-1.7.28.jar
            snappy-java-1.1.7.3.jar

        
2、Kafka配置
    2.1、新建kafka_server_jaas.conf
        在Kafka安装目录config中,新建kafka_server_jaas.conf文件,添加如下内容:

KafkaServer {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="admin"password="admin123456"user_admin="admin123456"user_quber="quber123456"user_quber1="quber123456"user_quber2="quber123456";
};

        说明:
            在KafkaServer部分,username和password是broker用于初始化连接到其他的broker
            在上面配置中,admin用户为broker间的通讯
            user_userName定义了所有连接到broker和broker验证的所有的客户端连接
            包括其他broker的用户密码,user_userName必须配置admin用户,否则会报错
            
    2.2、新建kafka_client_jaas.conf
        在Kafka安装目录config中,新建kafka_client_jaas.conf文件,添加如下内容:

KafkaClient {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="quber"password="quber123456";
};

        说明:
            在KafkaClient部分,username和password是客户端用来配置客户端连接broker的用户
            在上面配置中,客户端使用quber用户连接到broker
            
    2.3、修改server.properties
        在Kafka安装目录config中,打开server.properties进行编辑,在该文件中加入如下配置:

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

        说明:
            listeners后面的IP地址为内网IP
            advertised.listeners后面的IP地址为外网IP
            
    2.4、修改consumer.properties和producer.properties
        在Kafka安装目录config中,打开consumer.properties和producer.properties进行编辑,在该文件中加入如下配置:

security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN

        修改consumer.propertie中group.id=TestGroup1,若有多个消费客户端需保证group.id不重复,否则无法同时消费消息
    
    2.5、修改kafka-server-start.bat
        在Kafka安装目录bin\windows中,打开kafka-server-start.bat进行编辑,在该文件中SetLocal关键字下一行加入如下配置:

set KAFKA_OPTS=-Djava.security.auth.login.cOnfig=D:/Net_Program/Net_Kafka/config/kafka_server_jaas.conf

        注意上述配置是斜杠,不是反斜杠

    
    2.6、修改kafka-console-consumer.bat和kafka-console-producer.bat
        在Kafka安装目录bin\windows中,打开kafka-console-consumer.bat和kafka-console-producer.bat进行编辑,在该文件中SetLocal关键字下一行加入如下配置:

set KAFKA_OPTS=-Djava.security.auth.login.cOnfig=D:/Net_Program/Net_Kafka/config/kafka_client_jaas.conf

        注意上述配置是斜杠,不是反斜杠

        
3、启动服务与配置
    3.1、分别启动Zookeeper和Kafka服务
        分别以管理员身份运行CMD(打开2个窗口,以便分别启动Zookeeper和Kafka服务),然后输入:
        zkServer
        kafka-server-start D:\Net_Program\Net_Kafka\config\server.properties

    
    3.2、设置用户权限
        此处就是配置在前面提到的3个用户(quber[读和写]、quber1[读]和quber2[写])的读、写和分组权限
    
        3.2.1、设置用户quber的读和写权限
            以管理员身份运行CMD,然后分别输入:

kafka-acls --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.cOnnect=192.168.2.200:2181 --add --allow-principal User:quber --operation Read --operation Write --topic TestTopic1kafka-acls --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.cOnnect=192.168.2.200:2181 --add --allow-principal User:quber --operation Read --group TestGroup1

            说明:
                上述第一行命令是给用户quber设置“读”和“写”的权限
                上述第二行命令是给用户quber设置在分组TestGroup1中的权限,如果第二条命令不设置的话,在消费数据时是没有访问TestGroup1分组权限的

                
        3.2.2、设置quber1的读权限
            以管理员身份运行CMD,然后分别输入:

kafka-acls --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.cOnnect=192.168.2.200:2181 --add --allow-principal User:quber1 --operation Read --topic TestTopic1kafka-acls --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.cOnnect=192.168.2.200:2181 --add --allow-principal User:quber1 --operation Read --group TestGroup1

            说明:
                上述第一行命令是给用户quber1设置“读”的权限
                上述第二行命令是给用户quber1设置在分组TestGroup1中的权限,如果第二条命令不设置的话,在消费数据时是没有访问TestGroup1分组权限的

                
        3.2.3、设置quber2的写权限
            以管理员身份运行CMD,然后输入:

kafka-acls --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.cOnnect=192.168.2.200:2181 --add --allow-principal User:quber2 --operation Write --topic TestTopic1

            说明:
                上述命令为给用户quber2设置“写”的权限
            
        3.2.4、查询用户操作权限
            以管理员身份运行CMD,然后输入:

.\bin\windows\kafka-acls.bat --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.cOnnect=192.168.2.200:2181 --list --topic TestTopic1
.\bin\windows\kafka-acls.bat --authorizer-properties zookeeper.cOnnect=192.168.2.200:2181 --list --topic TestTopic1

kafka-acls --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.cOnnect=192.168.2.200:2181 --list
kafka-acls --authorizer-properties zookeeper.cOnnect=192.168.2.200:2181 --list --topic TestTopic1  

            说明:
                上述命令的作用是列出主题为TestTopic1的所有权限用户

                
        3.2.5、删除用户的权限
            以管理员身份运行CMD,然后输入:

.\bin\windows\kafka-acls.bat --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.cOnnect=192.168.2.200:2181 --remove --allow-principal User:quber --operation Read --topic TestTopic1 --force

kafka-acls --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.cOnnect=192.168.2.200:2181 --remove --allow-principal User:quber --operation Read --topic TestTopic1 --force

            说明:
                上述命令的作用是将用户quber在主题TestTopic1中的读权限删除
                
        3.2.6、总结
            到此,我们配置SASL就完成了,接下来就可以使用各个语言(如C#)的客户端读和写发送消息到Kafka中了
            如果需要动态的增加其他读写账号,只需要在文件kafka_server_jaas.conf中增加账号和对应的密码,然后按照3.2.1~3.2.3步骤设置账号权限即可
            
            注意:
                在客户端消费数据的时候,如果使用不同账号消费同一个主题,需要将不同账号设置到不同的分组中,不然后启动消费的客户端不能消费数据
                动态增加了账号并且设置了账号权限后,需要重启Kafka服务,否则不生效

    3.3、测试
        3.3.1、启动Kafka自带的生产者producer
            以管理员身份运行CMD,然后输入:

.\bin\windows\kafka-console-producer.bat --broker-list PLAINTEXT://192.168.2.200:9092 --topic TestTopic1 --producer.config .\config\producer.properties

kafka-console-producer --broker-list PLAINTEXT://192.168.2.200:9092 --topic TestTopic1 --producer.config D:\Net_Program\Net_Kafka\config\producer.properties

    
        3.3.2、启动Kafka自带的消费者consumer
            以管理员身份运行CMD,然后输入:

.\bin\windows\kafka-console-consumer.bat --bootstrap-server PLAINTEXT://192.168.2.200:9092 --topic TestTopic1 --from-beginning --consumer.config .\config\consumer.properties

kafka-console-consumer --bootstrap-server PLAINTEXT://192.168.2.200:9092 --topic TestTopic1 --from-beginning --consumer.config D:\Net_Program\Net_Kafka\config\consumer.properties

            说明:
                此时在3.3.1设置后,上述命令就可以正常启动消费者了
            
4、参考文档
    KAFKA权限配置SASL/PLAIN身份验证:https://www.mscto.com/cloud/262978.html
    迟来的干货 | Kafka权限管理实战:https://blog.csdn.net/u013256816/article/details/99619334        
            
            
            
            
            
            
            
            
    
    
    


推荐阅读
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • REVERT权限切换的操作步骤和注意事项
    本文介绍了在SQL Server中进行REVERT权限切换的操作步骤和注意事项。首先登录到SQL Server,其中包括一个具有很小权限的普通用户和一个系统管理员角色中的成员。然后通过添加Windows登录到SQL Server,并将其添加到AdventureWorks数据库中的用户列表中。最后通过REVERT命令切换权限。在操作过程中需要注意的是,确保登录名和数据库名的正确性,并遵循安全措施,以防止权限泄露和数据损坏。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 本文介绍了Windows Vista操作系统中的用户账户保护功能,该功能是为了增强系统的安全性而设计的。通过对Vista测试版的体验,可以看到系统在安全性方面的进步。该功能的引入,为用户的账户安全提供了更好的保障。 ... [详细]
  • VSCode快速查看函数定义和代码追踪方法详解
    本文详细介绍了在VSCode中快速查看函数定义和代码追踪的方法,包括跳转到定义位置的三种方式和返回跳转前的位置的快捷键。同时,还介绍了代码追踪插件的使用以及对符号跳转的不足之处。文章指出,直接跳转到定义和实现的位置对于程序员来说非常重要,但需要语言本身的支持。以TypeScript为例,按下F12即可跳转到函数的定义处。 ... [详细]
  • Jboss的EJB部署描述符standardjaws.xml配置步骤详解
    本文详细介绍了Jboss的EJB部署描述符standardjaws.xml的配置步骤,包括映射CMP实体EJB、数据源连接池的获取以及数据库配置等内容。 ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • 我创建了一个新的AWSSSO(使用内部IDP作为身份源,因此不使用ActiveDirectory)。我能够登录AWSCLI、AWSGUI,但 ... [详细]
  • 一、新建登录名1.在登录名右侧的文本框中输入新建的管理员账号名称;2.一对单选按钮组中,选择SqlServer身份验证,并输入登录密码;3.勾选强制实施密码策略复选框;(密码策略一 ... [详细]
  • pc电脑如何投屏到电视?DLNA主要步骤通过DLNA连接,使用WindowsMediaPlayer的流媒体播放举例:电脑和电视机都是连接的 ... [详细]
author-avatar
手机用户2502916591
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有