[英]kafka authentication and authorization
我阅读了 Kafka 的文档
但我不明白。 我可以为 Python Producers 使用用户名和密码吗?
可以指定任何Producer只能生产一个Topic,比如MySQL
。(producer已经用Python写过)
是的,您可以为每个主题设置用户/通行证。 请参阅官方文档授权和 ACL 。
您可以使用 SSL 或 SASL(Kafka 的 SASL 支持)启用安全性:
从文档中,添加 ACL 的示例:
假设您要添加一个 acl“允许 Principals User:Bob 和 User:Alice 对来自 IP 198.51.100.0 和 IP 198.51.100.1 的主题测试主题执行读写操作”。 您可以通过使用以下选项执行 CLI 来做到这一点:1
bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:Bob --allow-principal User:Alice --allow-host 198.51.100.0 --allow-host 198.51.100.1 --operation Read --operation Write --topic Test-topic
同样在这篇博客文章中,您可以找到一些信息
我不确定您使用的是什么库,但这应该只是将适当的属性传递给生产者/客户端的问题; kafka-python支持:
如果要使用用户名+密码进行身份验证,则需要在集群上使用普通机制启用 SASL 身份验证。 有关完整说明,请参阅 Kafka 网站上的使用 SASL进行身份验证部分。
请注意,您可能还想启用 SSL (SASL_SSL),否则,SASL Plain 将以明文形式传输凭据。
一些 Python 客户端支持 SASL Plain,例如:
关于授权,使用默认授权方kafka.security.auth.SimpleAclAuthorizer
,您可以限制生产者只能生产到一个主题。 同样,这在 Kafka 网站的授权和 ACL部分都有完整记录。
例如,对于 SASL Plain,默认情况下,主体名称是用于连接的用户名。 使用以下命令,您可以限制用户Alice
只能生成名为testtopic
的主题:
bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:Alice --producer --topic testtopic
你的意思是这样的:
topic = "test"
sasl_mechanism = "PLAIN"
username = "admin"
password = "pwd$"
security_protocol = "SASL_PLAINTEXT"
#context = ssl.create_default_context()
#context.options &= ssl.OP_NO_TLSv1
#context.options &= ssl.OP_NO_TLSv1_1
consumer = KafkaConsumer(topic, bootstrap_servers='kafka1:9092',
#api_version=(0, 10),
security_protocol=security_protocol,
#ssl_context=context,
#ssl_check_hostname=True,
#ssl_cafile='../keys/CARoot.pem',
sasl_mechanism = sasl_mechanism,
sasl_plain_username = username,
sasl_plain_password = password)
#ssl_certfile='../keys/certificate.pem',
#ssl_keyfile='../keys/key.pem')#,api_version = (0, 10))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.