请教一下大家,我使用的SASL/PLAIN的方式进行身份认证,使用无异常。而后使用acl做访问控制,发现对于用户的访问控制似乎完全无效(完成配置后,参照官网上的各种kafka-acls.sh
的命令执行正常,没有任何报错,但是就是起不到对用户进行权限控制的作用,没被授权的用户依旧可以正常进行各种读写操作)。
server.properties
里的allow.everyone.if.no.acl.found=false
,另外也禁用了超级用户super.users,按理应该是没有授权的用户默认无法进行相关操作了。
请问是否acl只适合跟SASL/keberos的认证配套使用,因为我看有的文章里说acl的用户需要跟principal里的相匹配,但是principal只有keberos里才会配置···
ps:我的kafka_client_jaas.conf
配置如下:
KafkaClient{
org.apache.kafka.common.security.plain.PlainLoginModule required
username="alice"
password="alice-secret"
username="tmp"
password="tmp-secret";
};
kafka_server_jaas.conf
配置也是 user_alice="alice-secret"
user_tmp="tmp-secret"
;
其它的配置都是严格与官网同步,请各位高手帮助解惑,感谢!
在server.properteis中增加:
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
您好,我这样试了下,现在使用consumer的时候,会报
org.apache.kafka.common.errors.GroupAuthorizationException: Not authorized to access group: test-group
然后我使用
bin/kafka-acls.sh --authorizer-properties zookeeper.connect ··· --add --allow-principal User:alice --consumer --topic test --group test-group
为用户alice授权了,可是执行consumer后还是上述的报错。
请问是否我还有哪里没有配置正确?
你启动消费的时候,需要把它带到jvm中。
您好,我之前是在consumer和producer的启动脚本中都加了下面这一段
if ["x$KAFKA_OPTS"="x"]; then export KAFKA_OPTS="-Djava.security.auth.login.config=$KAFKA_HOME/kafka_client_jaas.conf" fi echo -e $KAFKA_OPTS
echo打印出的KAFKA_OPTS也正确,请问这样设置jvm正确吗?
你的答案