【概述】
通常情况下,Kafka部署后都是自己的业务进行生产消费,但也有一些情况,比如通过kafka和第三方对接,甚至是多个三方对接;或者是多用户使用同一套kafka集群,各自使用不同的topic。在这种场景下,一般不希望不同的用户能访问彼此的数据,因此需要进行权限控制,这就会用到Kafka中的ACL。
Kafka中的ACL定义为:来自指定主机(Host)的指定用户(User)对任意资源(Resource)的操作(Operation)是否符合指定的资源模式(ResourcePattern)。默认情况下是不开启的,通过在配置文件中增加如下配置项,则启用了kafka的ACL机制。
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
kafka中的ACL模块是以插件化的形式存在的,除了自带默认的实现外,可以较容易的引入外部插件实现权限控制,例如ranger、santry。
【kafka中的资源与对应操作】
上面提到了ACL定义本质上是对指定资源的指定操作的访问控制,在kafka中的资源包括主题(Topic)、消费者组(ConsumerGroup)、集群(Cluster)、事务(ClusterID)以及委派token(DelegationToken)。对我们而言,最常用的则是主题、消费者组和集群。
对于topic涉及的操作包括:
操作 |
描述 |
Write |
向topic发送消息 |
Read |
从topic消费消息 |
Create |
创建topic |
Delete |
删除topic |
Describe |