首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用事务PublishKafka_2_0

使用事务PublishKafka_2_0
EN

Stack Overflow用户
提问于 2021-01-14 17:11:57
回答 1查看 109关注 0票数 1

我使用的是Publish Kafka处理器的下一个配置:

编辑kafka和zookeeper配置:

代码语言:javascript
复制
zookeeper.properties

authProvider.sasl=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000
代码语言:javascript
复制
zookeeper_jaas.conf

Server {
org.apache.zookeeper.server.auth.DigestLoginModule required
   user_super="zookeeper"
   user_admin="admin-secret";
};
代码语言:javascript
复制
server.properties

security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
sasl.enabled.mechanisms=SCRAM-SHA-256
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
allow.everyone.if.no.acl.found=false
auto.create.topics.enable=false
listeners=SASL_PLAINTEXT://172.23.199.20:9092
advertised.listeners=SASL_PLAINTEXT://172.23.199.20:9092
zookeeper.set.acl=true
super.users=User:admin
代码语言:javascript
复制
kafka_server_jaas.conf

KafkaServer {
org.apache.kafka.common.security.scram.ScramLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret";
};
Client {
org.apache.zookeeper.server.auth.DigestLoginModule required
username="admin"
password="admin-secret";
};

身份验证工作正常。

启用授权

添加管理员:

代码语言:javascript
复制
./bin/kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[password=admin-secret]' --entity-type users --entity-name admin

添加用户:

代码语言:javascript
复制
./bin/kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[iterations=8192,password=123456]' --entity-type users --entity-name pkalita

添加权限:

代码语言:javascript
复制
./bin/kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:admin --producer --topic test
代码语言:javascript
复制
./bin/kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:pkalita --producer --topic test

完成这些操作后,processor PublishKafka可以很好地处理主体管理员,但如果选择用户pkalita,则会抛出异常:

代码语言:javascript
复制
org.apache.kafka.common.errors.TransactionalIdAuthorizationException: Transactional Id authorization failed

仅当设置为Use transactions - false时,处理器才能工作

我做错了什么?

更新:我尝试使用spring Kafka producer和用户pkalita发送消息-该消息已成功发布到主题上

EN

回答 1

Stack Overflow用户

发布于 2021-01-14 19:24:34

设置ACL时需要指定事务ID。

docs

必须授权事务性生产者使用的主体

对已配置的transactional.id执行描述和写入操作。

代码语言:javascript
复制
bin/kafka-acls --bootstrap-server localhost:9092 --command-config adminclient-configs.conf \
 --add --allow-principal User:Alice \
 --producer --topic test-topic --transactional-id test-txn

您还可以使用--transactional-id *来允许任何事务ID。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65716171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档