Кафка настраивает jaas, используя sasl.jaas.config на kubernetes - PullRequest
0 голосов
/ 13 сентября 2018

Я использую эту схему руля: https://github.com/helm/charts/tree/master/incubator/kafka

и эти переопределения в values.yaml

configurationOverrides:
  advertised.listeners: |-
    EXTERNAL://kafka-${KAFKA_BROKER_ID}.host-removed:$((31090 + ${KAFKA_BROKER_ID}))
  listener.security.protocol.map: |-
    PLAINTEXT:SASL_PLAINTEXT,EXTERNAL:SASL_PLAINTEXT
  sasl.enabled.mechanisms: SCRAM-SHA-256
  auto.create.topics.enable: false
  inter.broker.listener.name: PLAINTEXT
  sasl.mechanism.inter.broker.protocol: SCRAM-SHA-256
  listener.name.EXTERNAL.scram-sha-256.sasl.jaas.config: org.apache.kafka.common.security.scram.ScramLoginModule required username="user" password="password";

на основании этой документации: https://kafka.apache.org/documentation/#security_jaas_broker

(краткое резюме)

Brokers may also configure JAAS using the broker configuration property sasl.jaas.config. The property name must be prefixed with the listener prefix including the SASL mechanism, i.e. listener.name.{listenerName}.{saslMechanism}.sasl.jaas.config. Only one login module may be specified in the config value. If multiple mechanisms are configured on a listener, configs must be provided for each mechanism using the listener and mechanism prefix

listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
    username="admin" \
    password="admin-secret";

Проблема в том, что при запуске Kafka появляется следующая ошибка:

java.lang.IllegalArgumentException: Could not find a 'KafkaServer' or 'plaintext.KafkaServer' entry in the JAAS configuration. System property 'java.security.auth.login.config' is not set

В соответствии с порядком приоритета, он должен использовать статический файл jass, если вышеупомянутая конфигурация НЕ установлена.

If JAAS configuration is defined at different levels, the order of precedence used is:
  • Свойство конфигурации посредника listener.name. {ListenerName}. {SaslMechanism} .sasl.jaas.config
  • {listenerName}. Секция KafkaServer статической конфигурации JAAS
  • Раздел KafkaServer статической конфигурации JAAS

Диаграмма руля не поддерживает способ настройки этого jaas-файла, поэтому использование этого свойства представляется желательным, я просто запутался в том, что настроено неправильно.

Примечание: кластер работает нормально, если я отключаю все SASL и просто использую простой текст, но это не очень хорошо в реальной среде.

1 Ответ

0 голосов
/ 13 сентября 2018

Мы определили 2 слушателей: PLAINTEXT и EXTERNAL.Вы отобразили оба на SASL_PLAINTEXT.

Это действительно то, что вы хотели сделать?или вы хотите, чтобы PLAINTEXT не требовал SASL, а был просто открытым текстом?

  • Если вы действительно хотите, чтобы оба были SASL, тогда им обоим нужна конфигурация JAAS.В вашем вопросе я вижу только конфигурацию JAAS для ВНЕШНЕГО:

    listener.name.EXTERNAL.scram-sha-256.sasl.jaas.config: org.apache.kafka.common.security.scram.ScramLoginModule required username="user" password="password";
    

    Поскольку вы сопоставили PLAINTEXT с SASL_PLAINTEXT, для нее также требуется конфигурация JAAS.Вы можете указать его, например, с помощью:

     listener.name.PLAINTEXT.scram-sha-256.sasl.jaas.config: org.apache.kafka.common.security.scram.ScramLoginModule required username="user" password="password";
    
  • Если вы хотите, чтобы ваш PLAINTEXT слушатель действительно был открытым текстом без SASL, то вам нужно обновить отображение слушателя:

    listener.security.protocol.map: |-
      PLAINTEXT:PLAINTEXT,EXTERNAL:SASL_PLAINTEXT
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...