Установка свойства Python KafkaProducer для механизма sasl
Механизм sasl, который мы используем SCRAM-SHA-256
но производитель кафки примет только sasl_mechanism
как PLAIN
, GSSAPI
, OAUTHBEARER
Следующий конфиг выдаст ошибку
sasl_mechanism must be in PLAIN, GSSAPI, OAUTHBEARER
конфиг
ssl_produce = KafkaProducer(bootstrap_servers='brokerCName:9093',
security_protocol='SASL_SSL',
ssl_cafile='pemfilename.pem',
sasl_mechanism='SCRAM-SHA-256',
sasl_plain_username='password',
sasl_plain_password='secret')
Мне нужно знать, как я могу указать правильный механизм sasl.
Спасибо
1 ответ
Решение
Насколько я понимаю, вы используете kafka-python
клиент. Из исходного кода я вижу, что sasl_mechanism='SCRAM-SHA-256'
недопустимый параметр:
"""
...
sasl_mechanism (str): Authentication mechanism when security_protocol
is configured for SASL_PLAINTEXT or SASL_SSL. Valid values are:
PLAIN, GSSAPI, OAUTHBEARER.
...
"""
if self.config['security_protocol'] in ('SASL_PLAINTEXT', 'SASL_SSL'):
assert self.config['sasl_mechanism'] in self.SASL_MECHANISMS, (
'sasl_mechanism must be in ' + ', '.join(self.SASL_MECHANISMS))
Одним из быстрых решений является использование confluent-kafka
клиент, который поддерживает sasl_mechanism='SCRAM-SHA-256'
:
from confluent_kafka import Producer
# See https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md
conf = {
'bootstrap.servers': 'localhost:9092',
'security.protocol': 'SASL_SSL',
'sasl.mechanisms': 'SCRAM-SHA-256',
'sasl.username': 'yourUsername',
'sasl.password': 'yourPassword',
# any other config you like ..
}
p = Producer(**conf)
# Rest of your code goes here..
kafka-python
поддерживает оба SCRAM-SHA-256
а также SCRAM-SHA-512
в версии 2.0.0.