繁体   English   中英

KAFKA SSL 使用 pem 密钥和客户端证书连接

[英]KAFKA SSL connectivity using pem key and client certificate

我能够使用 client.properties 中的以下 ssl 详细信息连接到 kafka 并从 CLI (bin/kafka-console-consumer.sh) 读取数据

ssl.keystore.location=/test/keystore.jks
ssl.keystore.password=abcd1234
ssl.key.password=abcd1234
Command: bin/kafka-console-consumer.sh --bootstrap-server 'server details'  --topic topic_name --consumer.config client.properties --group group-id

但我无法使用相同的数据从 python 或 spark 连接

consumer = KafkaConsumer(topic,bootstrap_servers=bootstrap_server,security_protocol='SSL',sasl_mechanism='PLAIN',ssl_certfile='certificate.pem',ssl_keyfile='pk.key')

我尝试更改上面代码中的多个选项,例如添加 check_host_name 等,但没有成功。 kafka 不属于我们的团队,它是由另一个团队管理的,当我们请求访问时,我们会获得私钥和证书以及 CA 包和 ARN 名称。

从 Spark(Python),我尝试了下面的代码

sdf1 = spark.readStream.format("kafka")
       .option("kafka.bootstrap.servers",bootstrap_server)
       .option("subscribe", topic_name)
       .option("startingOffsets", "latest")
       .option("kafka.security.protocol","SSL")
       .option("kafka.ssl.keystore.location",'keystore.jks')
       .option("kafka.ssl.keystore.password", '****')
       .option("kafka.ssl.key.password",'****')
       .load()

我收到类似“org.apache.kafka.common.errors.GroupAuthorizationException:未授权访问组:spark-kafka-source-xxxxxxx-xxxxx-xxxxx”的错误

上述错误与每次访问时生成唯一组 ID 的火花有关。 仅在 spark 3.0 及更高版本中才允许在 spark dataframe 中使用 group-id。 我需要在 spark 2.4.4 中修复此问题的选项。

任何建议,将不胜感激。

您只需要提供您正在使用的委托人来验证对主题的访问权限,而不考虑消费者组。 它看起来像这样:

kafka-acls --authorizer-properties zookeeper.connect=zk_ip_or_fqdn:2181  --add  --allow-principal User:"userName" --operation All --topic yourTopicName --group=*

您的用户名(主体名称)将是您的 SSL 证书的主题名称,格式为“CN=toto,OU=titi,...”。

暂无
暂无

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

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