kafka中SASL/PLAIN与acl配合使用的问题

格文 发表于: 2017-04-17   最后更新时间: 2022-05-11 12:13:50   6,521 游览

请教一下大家,我使用的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";

其它的配置都是严格与官网同步,请各位高手帮助解惑,感谢!

发表于 2017-04-17
添加评论

在server.properteis中增加:

authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
格文 -> 半兽人 7年前

您好,我这样试了下,现在使用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后还是上述的报错。
请问是否我还有哪里没有配置正确?

半兽人 -> 格文 7年前

你启动消费的时候,需要把它带到jvm中。

格文 -> 半兽人 7年前

您好,我之前是在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正确吗?

你的答案

查看kafka相关的其他问题或提一个您自己的问题