本文档时在centos7直接部署添加认证的kafka文件基础上,做下面的修改实现ACL访问控制topic
参考:https://www.seaxiang.com/blog/Qpsqii
一. 添加多个kafka用户及相关的配置文件
1.kafka_server_jaas.conf
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin"
user_admin="admin"
user_wyk_reader="wyk_reader_pwd"
user_wyk_writer="wyk_writer_pwd"
user_no_acl="no_acl_pwd";
};
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin"
user_admin="admin"
user_wyk_reader="wyk_reader_pwd"
user_wyk_writer="wyk_writer_pwd"
user_no_acl="no_acl_pwd";
};
Client {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin"
user_admin="admin"
user_wyk_reader="wyk_reader_pwd"
user_wyk_writer="wyk_writer_pwd"
user_no_acl="no_acl_pwd";
};
2.kafka_zoo_jaas.conf
ZKServer{
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin"
user_admin="admin"
user_wyk_reader="wyk_reader_pwd"
user_wyk_writer="wyk_writer_pwd"
user_no_acl="no_acl_pwd";
};
3.新增生产者配置文件wyk_writer_jaas.conf
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="wyk_writer"
password="wyk_writer_pwd";
};
4.新增消费者配置文件wyk_reader_jaas.conf
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="wyk_reader"
password="wyk_reader_pwd";
};
二. ACL授权及验证
我们已经开启了SASL,并给控制台客户端配置了生产者和消费者的认证文件,下面我们来测试授权之后和未授权用户的区别
为了起到对比效果,我们先新增一个认证文件用户为no_acl的配置文件no_acl_jaas.conf
1.创建配置文件no_acl_jaas.conf
vim no_acl_jaas.conf
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="no_acl"
password="no_acl_pwd";
};
2.给用户对测试主题csdn01授权
使用下面的命令行授权用户 wyk_reader 对主题csdn01 的读权限,授权用户 wyk_writer 对主题csdn01 的写权限,no_acl用户不设置任何权限用做对比。
# 给用户wyk_writer 添加csdn01主题的 生产者权限
bin/kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=10.255.60.149:2181 --add --allow-principal User:wyk_writer --operation Write --topic csdn01
# 给用户wyk_reader 添加csdn01主题的 消费者权限
#需要注意这里消费者还需要给消费者组配置权限,消费者组名称要和consumer.properties中配置的group.id一致
bin/kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=10.255.60.149:2181 --add --allow-principal User:wyk_reader --operation Read --topic csdn01 --group test-consumer-group
3.验证ACL权限
首先在kafka-console-producer.sh中使用no_acl_jaas.conf配置文件
使用下面命令生产消息时报错未授权
./kafka-console-producer.sh --topic csdn01 --broker-list 10.255.60.149:9092 --producer.config /data/kafka/config/producer.properties
然后在kafka-console-producer.sh中使用wyk_writer_jaas.conf配置文件时,生产消息正常
同样的,当使用no_acl用户作为消费者时可以看到启动时会报错:Not authorized to access topics:[csdn01]。而使用拥有csdn01主题的消费者权限的用户wyk_reader启动时可以正常的消费数据:
标签:ACL,no,--,kafka,admin,acl,wyk From: https://www.cnblogs.com/regit/p/17788727.html