赞
踩
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
本文主要介绍kafka的权限控制相关的资源类型以及针对不同资源的权限。
kafka的ACL可对如下资源进行控制。
1、cluster资源,对集群的相关操作需要相应的权限,如果授权不通过,会报: CLUSTER_AUTHORIZATION_FAILED错误。
2、topic资源,对topic的操作需要相应的权限,如果授权不通过,会报:TOPIC_AUTHORIZATION_FAILED错误。
3、consumer-group资源,表示消费者组,对消费者组的操作,比如将某消费者加到消费者组需要具有相应的权限,如果授权不通过,会报:GROUP_AUTHORIZATION_FAILED错误。
4、transactionalid资源,kafka的事务ID,表示事务的相关操作,如果授权不通过,会报:TRANSACTIONAL_ID_AUTHORIZATION_FAILED错误。
5、delegationtoken资源,集群的委托令牌。
权限名 | 权限解释 |
---|---|
Configure | 扩容操作 |
Describe | 查询操作:当收到list_groups的请求时,broker会先检查集群级别的权限,如果没有发现集群级别的权限,接着回去检查组级别的权限。该鉴权没通过,不会报CLUSTER_AUTHORIZATION_FAILED错误。 |
Kafka-Admin | kafka管理员 |
Create | 创建操作:在集群中如果配置了自动创建topic,客户端向服务的还未创建的topic发送数据,会判断集群是否有该权限。 |
Idempotent Write | 幂等写入操作:幂等生产操作需要该权限。 |
Describe Configs | 查询配置操作:如果查询broker、broker Logger信息,需要该权限,不涉及查询topic。 |
Alter Configs | 更改配置操作:如果需要更改集群配置,主要指broker、broker Logger的配置,当用户具有配置修改权限时,即使不配置查询权限也可以进行查询。 |
Cluster Action | 集群操作:集群中的follower需要该权限,进行获取分区数据。 |
Alter | 更改操作 |
权限名 | 权限解释 |
---|---|
Publish | 生产操作:当对topic进行生产操作时,需要该权限。 |
Consume | 消费操作:当对topic进行消费操作时,需要该权限。 |
Configure | 配置操作:当对topic进行topic进行扩容操作时,需要该权限。 |
Describe | 查询操作:当获取topic描述信息时,需要该权限。 |
Create | 新建操作:当新建topic时,需要该权限。 |
Delete | 删除操作:当删除topic,需要该权限。 |
Describe Configs | 查询配置操作:如果请求topic配置的话,broker会检查topic是否有该权限。 |
Alter | 更改操作:如果更改topic的相关操作,需要该权限。 |
权限名 | 权限解释 |
---|---|
Consume | 消费操作:当对topic开启消费权限时,涉及到offset的管理操作,此时也要开启消费者组的消费权限。 |
Describe | 查询操作:应用程序会先进行组的查询权限认证,之后才会进行topic权限认证。 |
Delete | 删除操作 |
权限名 | 权限解释 |
---|---|
Publish | 该权限主要是对用户开启事务特性的客户端请求进行鉴权,主要针对事务开启、结束、提交Offset、事务性数据生产等操作。 |
Describe | 主要是对于开启事务特性的客户端与Coordinator的请求进行鉴权。 |
权限名 | 权限解释 |
---|---|
Describe | 查询操作:如果需要查询Token资源,需要该权限。当前仅支持查询权限操作。 |
1、创建topic需要用户具有creat和describe
权限,如果需要对已有的topic的相关配置进行查询和修改,需要Alter Configs和Describe Configs权限。如果需要进行扩容操作,需要Configure权限。如果不需要该topic可以获取delete权限进行删除。
生产消息过程:
涉及到的资源操作:
1、topic:用户进行生产消息时,消息最后是落到topic的分区上的,因此需要具有写入数据的topic的生产权限,此外还需要describe权限。
2、transactionalid:当客户端开启事务特性时,会对客户端请求和Coordinator请求进行鉴权,建议是当开启事务特性时,给用户同事授予“publish”和“Describe”权限。
3、cluster:
1)当集群配置了自动创建topic,当客户端向服务还未创建的topic发送消息时,会检查集群是否具有cluster资源的creat权限。
2)当数据写入leader分区之后,需要进行主从数据同步,因此需要cluster的Cluster Action权限,更新元数据。
3)当生产者需要写入topic中的数据不重复,则需要获取cluster的Idempotent Write幂等写入权限。
消费消息过程:
涉及到的资源操作:
1、topic:消费者需要消费指定topic中的消息的,因此需要具有topic的Consume权限,此外还需要describe权限。
2、consumer-group:消费者是以consumer-group消费者组的方式工作的,一个或者多个消费者组成消费者组消费一个topic,每个分区在同一时间消费者组中只能有一个消费者消费。因此消费消息时,需要获取consumer-group的Consume权限。
3、cluster:
1)当数据消费后,需要进行主从数据同步,因此需要cluster的Cluster Action权限,更新元数据。
1、当指定用户具有生产消费权限时,该用户会默认具有describe权限,也可以进行新增describe权限。
2、当指定用户单独拒绝消费权限时,需要排除describe权限,因为生产时还需要describe权限。【单独拒绝生产同理】
3、如果测试hadoop用户的消费策略的话,需要在all-consumergroup策略中添加用户hadoop。否则,即使给了hadoop用户消费权限,会报消费者组异常,用户访问消费者组权限认证失败。权限拒绝的报错信息应该是topic认证失败。所以消费的权限认证应该是先进行consumergroup的权限认证,然后是topic权限的认证。
以上内容主要介绍了kafka权限相关的资源类型,不同资源所涉及的权限配置以及topic创建生产和消费操作所需要的权限,为之后实现kafka权限配置做准备工作。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。