[英]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.