4.1 开启权限控制
开启权限控制
Kafka 提供了权限控制的接口(kafka.security.authorizer.Authorizer
),并且提供了默认的实现,用 zookeeper 存储 acl 规则(默认存储路径 /kafka-acl
)。
通过 authorizer.class.name
指定 Authorizer 后,kafka broker 启动时会初始化该类,并在处理 api 请求时通过该类判断权限:
# 2.4 版本之前
# authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
# 2.4 版本之后建议使用这个
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
为了方便自定义 Authorizer,2.4 之后接口由原来的 scala 定义的 kafka.security.authorizer.Authorizer 变为 java 定义的 org.apache.kafka.server.authorizer.Authorizer
Authorizer
默认和 kafka 使用同一个 zookeeper 服务,也可以单独配置:
authorizer.zookeeper.url=
authorizer.zookeeper.connection.timeout.ms=
authorizer.zookeeper.session.timeout.ms=
authorizer.zookeeper.max.in.flight.requests=
其他相关配置
默认情况下,如果资源 R 没有关联的 acl 规则,那么除了 super users 外的任何用户都不能访问 R。
如果想改变这种行为,可以设置:
allow.everyone.if.no.acl.found=true
super users 可以通过 super.users
定义:
super.users=User:Bob;User:Alice
设置
allow.everyone.if.no.acl.found=true
在生产环境是不推荐的,会带来 2 个问题:
- 对于没有关联 acl 规则的资源,相当于对所有用户开放
- 将一个资源关联 acl 规则后,之前访问这个资源的用户将失去访问权限