Установка свойства 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.

Другие вопросы по тегам