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

267 阅读4分钟

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用户或用户权限

在前面的文章中,我们给Zookeeper和Kafka设置了登录验证账户,分别在zk_server_jaas.conf和kafka_server_jaas.conf文件中设置了相应的账户,如下所示。

单纯的只是在这2个文件中设置是不起作用的,客户端在使用的时候是没有任何权限的,所以接下来我们还需要通过Kafka的命令设置每个账户的主题、读和写等权限,这样在客户端(如C#)使用某账户时才有相应的操作权限。

Server {
	org.apache.kafka.common.security.plain.PlainLoginModule required
	username="admin"
	password="admin123456"
	user_quber="quber123456"
	user_quber1="quber123456"
	user_quber2="quber123456"
	user_scyjTestUser1="quber123456"
	user_scyjTestUser2="quber123456"
	user_scyjTestUser3="quber123456";
};

KafkaServer {
	org.apache.kafka.common.security.plain.PlainLoginModule required
	username="admin"
	password="admin123456"
	user_admin="admin123456"
	user_quber="quber123456"
	user_quber1="quber123456"
	user_quber2="quber123456"
	user_scyjTestUser1="quber123456"
	user_scyjTestUser2="quber123456"
	user_scyjTestUser3="quber123456";
};

注意:

以下所有命令执行,都是在CMD窗口中执行的,不管Kafka是配置的单机模式还是集群模式,只需要将CMD窗口随便定位到其中一个Kafka的安装目录即可。

1、查询主题和用户权限
1.1、查询主题
查询192.168.2.200:2181,192.168.2.200:2182,192.168.2.200:2183这3个集群的主题

.\bin\windows\kafka-topics.bat --zookeeper 192.168.2.200:2181,192.168.2.200:2182,192.168.2.200:2183 --list

1.2、查询权限
查询192.168.2.200:2181,192.168.2.200:2182,192.168.2.200:2183这3个集群的用户权限,一下命令为查询在主题TestTopic1下有哪些用户权限

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

2、全新配置
我们在前面的文章中提到了D:\Net_Program\Net_KafkaConfig目录下有zk_server_jaas.conf和kafka_server_jaas.conf文件,这2个文件就是存储用户和密码的,如果是新配置或者中途新增加用户,都需要在这2个文件中先配置增加好

2.1、创建主题
创建一个集群主题,名称为TestTopic1

.\bin\windows\kafka-topics.bat --create --zookeeper 192.168.2.200:2181,192.168.2.200:2182,192.168.2.200:2183 --replication-factor 1 --partitions 1 --topic TestTopic1

2.1、设置用户quber的读和写权限
设置quber的主题权限为TestTopic1,读取的分组权限为TestGroup1

.\bin\windows\kafka-acls.bat --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=192.168.2.200:2181,192.168.2.200:2182,192.168.2.200:2183 --add --allow-principal User:quber --operation Read --operation Write --topic TestTopic1

.\bin\windows\kafka-acls.bat --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=192.168.2.200:2181,192.168.2.200:2182,192.168.2.200:2183 --add --allow-principal User:quber --operation Read --group TestGroup1

2.2、设置quber1的读权限
设置quber1的主题权限为TestTopic1,读取的分组权限为TestGroup2

.\bin\windows\kafka-acls.bat --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=192.168.2.200:2181,192.168.2.200:2182,192.168.2.200:2183 --add --allow-principal User:quber1 --operation Read --topic TestTopic1

.\bin\windows\kafka-acls.bat --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=192.168.2.200:2181,192.168.2.200:2182,192.168.2.200:2183 --add --allow-principal User:quber1 --operation Read --group TestGroup2

2.3、设置quber2的写权限
设置quber2的主题权限为TestTopic1

.\bin\windows\kafka-acls.bat --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=192.168.2.200:2181,192.168.2.200:2182,192.168.2.200:2183 --add --allow-principal User:quber2 --operation Write --topic TestTopic1

2.4、重启Kafka服务
在设置完毕后需要重启Kafka服务才生效

3、中途新增加用户
首先需要我们在D:\Net_Program\Net_KafkaConfig目录中的zk_server_jaas.conf和kafka_server_jaas.conf文件中增加需要增加的用户和密码,然后才使用下列命令设置增加用户的权限

scyjTestUser1:读和写,主题:SCYJ-TEST-TOPIC1,读的分组:SCYJ-TEST-GROUP1
scyjTestUser2:读,主题:SCYJ-TEST-TOPIC1,读的分组:SCYJ-TEST-GROUP2
scyjTestUser3:写,主题:SCYJ-TEST-TOPIC1

3.1、创建主题

.\bin\windows\kafka-topics.bat --create --zookeeper 192.168.2.200:2181,192.168.2.200:2182,192.168.2.200:2183 --replication-factor 1 --partitions 1 --topic SCYJ-TEST-TOPIC1

3.2、设置用户scyjTestUser1的读和写权限
设置scyjTestUser1的主题权限为SCYJ-TEST-TOPIC1,读取的分组权限为SCYJ-TEST-GROUP1

.\bin\windows\kafka-acls.bat --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=192.168.2.200:2181,192.168.2.200:2182,192.168.2.200:2183 --add --allow-principal User:scyjTestUser1 --operation Read --operation Write --topic SCYJ-TEST-TOPIC1

.\bin\windows\kafka-acls.bat --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=192.168.2.200:2181,192.168.2.200:2182,192.168.2.200:2183 --add --allow-principal User:scyjTestUser1 --operation Read --group SCYJ-TEST-GROUP1

3.3、设置scyjTestUser2的读权限
设置scyjTestUser2的主题权限为SCYJ-TEST-TOPIC1,读取的分组权限为SCYJ-TEST-GROUP2

.\bin\windows\kafka-acls.bat --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=192.168.2.200:2181,192.168.2.200:2182,192.168.2.200:2183 --add --allow-principal User:scyjTestUser2 --operation Read --topic SCYJ-TEST-TOPIC1

.\bin\windows\kafka-acls.bat --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=192.168.2.200:2181,192.168.2.200:2182,192.168.2.200:2183 --add --allow-principal User:scyjTestUser2 --operation Read --group SCYJ-TEST-GROUP2

3.4、设置scyjTestUser3的写权限
设置scyjTestUser3的主题权限为SCYJ-TEST-TOPIC1

.\bin\windows\kafka-acls.bat --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=192.168.2.200:2181,192.168.2.200:2182,192.168.2.200:2183 --add --allow-principal User:scyjTestUser3 --operation Write --topic SCYJ-TEST-TOPIC1

3.5、重启Kafka服务
在设置完毕后需要重启Kafka服务才生效

到此,整个Kafka的用户权限就设置完毕了