Python 卡夫卡认证和授权

Python 卡夫卡认证和授权,python,apache-kafka,Python,Apache Kafka,我读过卡夫卡的文件 但我不明白。我可以使用Python生产者的用户名和密码吗 可以指定任何制作者只能生成一个主题,如MySQL(制作者使用Python编写)是的,每个主题可以有user/pass。请参见授权和ACL 您可以使用SSL或SASL(卡夫卡的SASL支持)启用安全性: SASL/GSSAPI(Kerberos)-从版本0.9.0.0开始 SASL/PLAIN-从版本0.10.0.0开始 SASL/SCRAM-SHA-256和SASL/SCRAM-SHA-512-从版本0.10.2.0

我读过卡夫卡的文件

但我不明白。我可以使用Python生产者的用户名和密码吗


可以指定任何制作者只能生成一个主题,如
MySQL
(制作者使用Python编写)

是的,每个主题可以有user/pass。请参见授权和ACL

您可以使用SSL或SASL(卡夫卡的SASL支持)启用安全性:

  • SASL/GSSAPI(Kerberos)-从版本0.9.0.0开始
  • SASL/PLAIN-从版本0.10.0.0开始
  • SASL/SCRAM-SHA-256和SASL/SCRAM-SHA-512-从版本0.10.2.0开始
从文档中,添加ACL的示例:

假设您希望添加acl“允许主体用户:Bob和用户:Alice对来自IP 198.51.100.0和IP 198.51.100.1的主题测试主题执行读写操作”。可以通过使用以下选项执行CLI来实现这一点: 一,

在这里你也可以找到一些信息

我不确定您使用的是什么库,但这应该只是将适当的属性传递给生产者/客户的问题kafka python支持:


如果要使用用户名+密码进行身份验证,需要在集群上使用普通机制启用SASL身份验证。有关完整说明,请参见卡夫卡网站上的部分

请注意,您可能还希望启用SSL(SASL_SSL),否则,SASL Plain将以明文形式传输凭据

一些Python客户端支持SASL平原,例如:

  • 卡夫卡巨蟒:
  • 合流卡夫卡巨蟒:

关于授权,使用默认授权程序kafka.security.auth.SimpleClauthorizer,您可以将制作人限制为只能制作主题。卡夫卡的网站上的这一部分也详细记录了这一切

例如,对于SASL平原,默认情况下,主体名称是用于连接的用户名。使用以下命令,可以将用户
Alice
限制为只能生成名为
testtopic
的主题:

bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:Alice --producer --topic testtopic

你的意思是这样的:

topic=“测试”
sasl_机构=“普通”
username=“admin”
password=“pwd$”
安全协议=“SASL\U明文”
#context=ssl.create\u default\u context()
#context.options&=ssl.OP\u NO\u TLSv1
#context.options&=ssl.OP\u NO\u TLSv1\u 1
consumer=KafkaConsumer(主题,bootstrap_servers='kafka1:9092',
#api_版本=(0,10),
安全协议=安全协议,
#ssl_context=context,
#ssl\u check\u hostname=True,
#ssl_cafile='../keys/CARoot.pem',
sasl_机制=sasl_机制,
sasl_plain_username=用户名,
sasl_普通密码=密码)
#ssl_certfile='../keys/certificate.pem',
#ssl_keyfile='../keys/key.pem')#,api_版本=(0,10))
bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:Alice --producer --topic testtopic