使用SSL的Kafka - 写入主题 - 授权错误

时间:2018-04-24 12:39:03

标签: ssl apache-kafka avro confluent-schema-registry

我正在尝试从命令行生成启用了SSL的本地Kafka群集上的主题。

主题刚刚创建:

kafka-topics --zookeeper localhost:2181  --create --topic simple    --replication-factor 1 --partitions 1

生产命令是:

kafka-avro-console-producer \ 
         --broker-list localhost:9092 --topic simple \
         --property value.schema='{"type":"record","name":"myrecord","fields":[{"name":"f1","type":"string"}]}' \
         --property schema.registry.url=http://localhost:8080

打字:

{"f1": "Alyssa"}

错误:

 {"f1": "Alyssa"}
Error when sending message to topic simple with key: null, value: 12 bytes with error: 
(org.apache.kafka.clients.producer.internals.ErrorLoggingCallback:52) org.apache.kafka.common.errors.TopicAuthorizationException: 
Not authorized to access topics: [simple]

如何添加对此主题的访问权限?
什么是ACL的正确命令(我在本地计算机上运行它。)

2 个答案:

答案 0 :(得分:0)

由于您拥有受SSL保护的群集,因此我建议创建一个配置文件,并使用此参数供CLI引用。

--producer.config <String: config file>  Producer config properties file. Note
                                           that [producer-property] takes
                                           precedence over this config

示例文件如下

bootstrap.servers=localhost:9092
# SSL related properties
security.protocol=SSL
ssl.keystore.location=/path/to/keystore-cert.jks
ssl.truststore.location=/path/to/truststore-cert.jks
ssl.key.password=xxxx
ssl.keystore.password=yyyy
ssl.truststore.password=zzzz

其他方式,您必须将每一项都传递给--property选项

答案 1 :(得分:0)

由于 SSL 属性,我得到了相同的结果,请通过 SSL。

以下是 AVRO 消息的示例

./kafka-avro-console-producer --topic <topic_name> --broker-list <broker:port> --producer.config ssl.properties --property schema.registry.url=<schema_registru_url (for avro msg)> --property value.schema="$(< /path/to/avro_chema.avsc)" --property key.schema='{"type":"string"}' --property parse.key=true --property key.separator=":"