簡體   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