基于Kafka 0.9版本 使用ACL进行权限控制
2016-06-29 18:07
483 查看
一.官网内容
kafka附带一个可插拔的认证,并使用zookeeper来存储所有的acl。kafka的acl在一般格式定义"Principal P is [Allowed/Denied] Operation O From Host H On Resource R”,你可以阅读更多关于KIP-11的结构,为了添加,删除或列表,你可以使用kafka认证CLI。默认情况下,如果资源R没有相关acl,除了超级用户,没有用户允许访问,如果你想改变它的行为,你可以在broker.properties配置:allow.everyone.if.no.acl.found=true
你也可以在broker.properties添加超级用户,像这样(注意分隔符是分号,因为SSL的用户名可能包含逗号)。
super.users=User:Bob;User:Alice
添加acl
假设你要添加acl “Principals User:Bob and User:Alice are allowed to perform Operation Read and Write on Topic Test-Topic from IP 198.51.100.0 and IP 198.51.100.1” 。通过执行下列选项
bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:Bob --allow-principal User:Alice --allow-host 198.51.100.0 --allow-host 198.51.100.1 --operation Read --operation Write --topic Test-topic
默认情况下所有主体没有明确的acl,拒绝允许访问操作资源。在极少数情况下,一个允许acl定义,允许访问所有,但一些主要的,我们将不得不使用——deny-principal和deny-host选项。例如,如果我们想让所有用户读取Test-topic 但只拒绝用户:BadBob IP 198.51.100.3,我们可以使用下面的命令:
bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:* --allow-host * --deny-principal User:BadBob --deny-host 198.51.100.3 --operation Read --topic Test-topic
需要注意的是``--allow-host``和``deny-host``仅支持IP地址(主机名不支持)。上面的例子中通过指定--topic [topic-name]作为资源选项添加ACL到一个主题。同样用户可以添加的ACL通过指定--cluster和消费群通过指定--group [group-name]。
删除acl
删除和添加是一样的,—add换成—remove选项,要删除第一个例子中添加的,可以使用下面的命令:
bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --remove --allow-principal User:Bob --allow-principal User:Alice --allow-host 198.51.100.0 --allow-host 198.51.100.1 --operation Read --operation Write --topic Test-topic
acl列表
我们可以通过指定与资源--list选项列出任何资源的ACL。要列出Test-topic,我们可以用下面的选项执行CLI所有的ACL:
bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --list --topic Test-topic
添加或删除作为生产者或消费者的主体
最常见的用例ACL管理添加/删除生产者和消费者主体,所以我们更加方便的选项来处理这些。增加用户:Bob作为Test-topic ,我们可以执行以下命令的生产:
bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:Bob --producer --topic Test-topic
同样,添加Alice作为Test-topic的消费者,用消费者组为Group-1,我们只需要发送 --consumer 选项:
bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:Bob --consumer --topic test-topic --group Group-1
注意,消费者的选择,我们还必须指定消费者组。从生产者或消费者角色删除主体,我们只需要通过--remove选项。
作者:半兽人
链接:http://orchome.com/185
来源:OrcHome
(感谢半兽人之家的半兽人为我们翻译官网)
二.使用
1.首先,要使用 Kafka ACL进行权限验证,要在server.properties 上添加配置(非常重要)authorizer.class.name = kafka.security.auth.SimpleAclAuthorizer
2.为集群赋予权限
3.启动集群
略
4.创建topic并赋权限
kafka-topics.sh --create --zookeeper hadoop01:2181 --replication-factor 1 --partitions 1 --topic test1
kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --operation Write --operation Read --allow-principal User:* --allow-host 192.168.8.91 --add --topic test1
这样,我们就可以在91节点上对 topic test1拥有读与写的权限,也就是说可以在91节点上创建生产者和消费者
相关文章推荐
- Kafka 之 中级
- Windows7下获得System权限问题解决方法
- 用一整天的时间安装postgreSQL NTFS权限
- 星外系统关于权限的综合说明
- MAC上Mysql忘记Root密码或权限错误的快速解决方案
- 用vbs检查注册表项的访问权限的代码
- sqlserver附加.mdf权限问题解决
- MongoDB系列教程(四):设置用户访问权限
- cacls命令设置文件及其文件夹权限的方法
- “SQL2000数据库”运行在普通用户下所需的权限
- 批处理设置文件访问权限的方法分享
- C#枚举中的位运算权限分配浅谈
- WordPress中创建用户角色的相关PHP函数使用详解
- ASP.NET MVC使用ActionFilterAttribute实现权限限制的方法(附demo源码下载)
- 如何实现只授予用户查看存储过程定义的权限
- Oracle Scott创建视图权限不足解决办法
- windows 权限之拒绝运行应用程序
- windows IIS权限经典设置教程
- Android用代码获取手机root之后的最高权限
- IIS6.0的默认权限和用户权限设置小结