繁体   English   中英

Kafka制作人/ consuper主题未经授权

[英]Kafka producer/consuper Topic not authorized

每当我尝试将kafka连接到生产者/消费者时,都会收到“未经授权的主题[test2]”

如果我关闭授权,则可以成功通过身份验证,因此身份验证有效,只有授权不起作用。

使用kafka.security.auth.SimpleAclAuthorizer的ACL授权不起作用。

config / server.properties

authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
listeners=SASL_PLAINTEXT://kafka3:9092
security.inter.broker.protocol= SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
delete.topic.enable=false

日志/ kafka授权者

[2019-04-06 13:24:05,693] DEBUG No acl found for resource Topic:LITERAL:test2, authorized = false (kafka.authorizer.logger) [2019-04-06 13:24:05,695] INFO Principal = User:alice is Denied Operation = Describe from host = 10.0.9.20 on resource = Topic:LITERAL:test2(kafka.authorizer.logger)uper.users=User:admin

服务器的jaas文件:

KafkaServer {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="admin"
    password="admin"
    user_admin="admin"
    user_alice="alice";
};

bin / kafka-server-start.sh

$base_dir/kafka-run-class.sh $EXTRA_ARGS -Djava.security.auth.login.config=$base_dir/../config/jaas-kafka-server.conf kafka.Kafka "$@"

ACL输出:

Current ACLs for resource `Topic:LITERAL:test2`:
    User:alice has Allow permission for operations: Write from hosts: *

用户alice当前仅被授权Write该主题。 您可能还希望添加“ DescribeRead ” ACL,以便能够正确地产生和使用现有主题。

在将ACL添加到主题时, kafka-acls工具提供了方便的选项--consumer--producer 否则,您可以使用--operation添加诸如Describe特定操作。 通过添加Describe ,您将删除在logs/kafka-authorizer当前看到的logs/kafka-authorizer

由于您希望通过打开ACL来消费和产生来自特定主题的消息,因此您需要在该主题上应用ACL来消费和产生对其的消息。 您需要通过像kafka这样的超级用户来执行此操作。

登录到kafka经纪人,然后使用以下命令:

苏多苏-卡夫卡

kinit -kt /path/to/keytabs/kafka.service.keytab kafka / serviceprincipal name @域名(可以从kafka jaas文件中获取)

然后从kafka目录执行以下命令:

bin / kafka-acls --add --allow-principal用户:* --consumer --topic test2 --authorizer-properties zookeeper.connect =:2181 --group *

同样,制作人可以将消息推送到主题:

bin / kafka-acls.sh --add --allow-principal用户:* --producer --topic test2 --authorizer-properties zookeeper.connect =:2181

上面的命令将ACL应用于所有用户。 您可以通过在命令中指定单个用户名而不是'*'来限制它。

**请记住,在kafka安装过程中,bin目录中除kafka安装的文件/目录外,您不应有任何文本文件或其他文件。

要获取有关ACL(添加/删除,列出)的更多信息,请访问以下链接:

https://docs.confluent.io/current/kafka/authorization.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM