README.md

org-little-kafka

Библиотека содержит два модуля:

  • модуль поддержки SASL PLAIN аутентификации;
  • модуль поддержки хранилищ сертификатов для SSL.

Первый обеспечивает устранение недостатков использования стандартного механизма sasl plaintext для внешних взаимодействий. В стандартном модуле аутентификации невозможно изменять аутентификационные параметры без перезагрузки брокера, а также пароли пользователей хранятся на диске в легко читаемом виде.

Дополнительно модуль позволяет:

  • изменять аутентификационные параметры без перезагрузки брокера
  • использовать пароли пользователей в зашифрованном виде

Стандартный способ включения SASL аутентификации является задание при запуске бокера параметра KAFKA_OPTS=-Djava.security.auth.login.config=/kafka_xxxx/config/kafka-jaas.conf, где kafka-jaas.conf – стандартный файл конфигурации JAAS

KafkaServer {
	org.apache.kafka.common.security.plain.PlainLoginModule required
		username="admin_user"
		password="admin_passwd"
		user_user1=" passwd_user1";
};

И добавления в файл конфигурации брокера

listeners=SASL_PLAINTEXT://:9093
security.protocol=SASL_PLAINTEXT
sasl.enabled.mechanisms=PLAIN
advertised.listeners=SASL_PLAINTEXT://:9093

При использовании библиотеки дополнительно к стандартной процедуре нужно:

  1. Поместить jar библиотеки в каталог /kafka_xxxx/Libs.
  2. В конфигурационном файле брокера KAFKA внести строку.

    listener.name.sasl_plaintext.plain.sasl.server.callback.handler.class=org.little.broker.auth.authLocal1
    
    

    sasl_plaintext - это имя листенера создаваемого записью в конфиге listeners=SASL_PLAINTEXT://:хххх и плюс при использовании KRAFT необходимо добавить запись

    listener.name.controller.plain.sasl.server.callback.handler.class=org.little.broker.auth.authLocal1
    
    

    controller - это имя листенера создаваемого записью в конфиге listeners=CONTROLLER://:yyyy Данная строка заменит стандартный модуль аутентификации на класс org.little.broker.auth.authLocal1. или можно использовать другой парсер

    listener.name.sasl_plaintext.plain.sasl.server.callback.handler.class=org.little.broker.auth.authLocal2
    listener.name.controller.plain.sasl.server.callback.handler.class=org.little.broker.auth.authLocal2
    
    

    Данная строка заменяет стандартный модуль аутентификации на класс org.little.broker.auth.authLocal2. Классы authLocal1 и authLocal2 различаются способом парсинга файла конфигурации JAAS.

    При использовании KRAFT в файл описания в конфигурационном файле JASS, который задается определением

    KAFKA_OPTS=-Djava.security.auth.login.config=/путь к файлу/kafka-jaas.conf)
    
    

    необходимо в файле конфигурации JAAS заменить класс org.apache.kafka.common.security.plain.PlainLoginModule на класс org.little.broker.auth.PlainLoginModule:

    KafkaServer {
    	org.little.broker.auth.PlainLoginModule required
    		username="admin_user"
    		password="admin_passwd"
    		user_user1="passwd_user1";
    };
    
    

    Библиотека позволяет

  • изменять файл конфигурации JAAS без перезагрузки брокера. Изменения применяются с периодом 1 минуту. Период можно изменить задав параметр в файле конфигурации брокера KAFKA

    plain.sasl.server.callback.handler.timeout=60000
    
    
  • использовать файл конфигурации JAAS вида:

    KafkaServer {
    	org.little.broker.auth.PlainLoginModule required
    		username="admin"
    		password="{mds5}bdjbhqddnqMvUn2MGmV1YQ=="
    		user_user1="{mds5}lDXazB27hDSFsUgOMs8MoA==";
    };
    
    
  • позволяет для внесения изменений в распределенные системы сохранять в течении 10 минут значение старого пароля (старый файл конфигурации JAAS). Время можно изменить задав в файле конфигурации брокера KAFKA

    plain.sasl.server.callback.handler.reset=600000
    
    

Преобразование паролей пользователей в не читаемый вид выполняется утилитой passwd_util.sh (passwd_util.bat) Пример запуска:

passwd_util.sh 123Passwd
original: 123Passwd
mask identifier: {mds5}d0llTpoUTaoJ+qUScwLm/g==

или

passwd_util.sh 
enter key >>>
mask identifier: {mds5}d0llTpoUTaoJ+qUScwLm/g==

Второй модуль позволяет исправить недостаток при использовании стандартного SSL аутентификации Стандартные настройки конфигурации хранилища сертификатов

ssl.truststore.location=/kafka_xxxx/certs/kafka_traststore.jks 
ssl.truststore.password=user_passwd_1
ssl.keystore.location=/kafka_ xxxx /certs/kafka_keystore.jks 
ssl.keystore.password= user_passwd_2
ssl.key.password= user_passwd_3

содержит легко читаемые пароли для хранилища сертификатов

При использовании библиотеки дополнительно к стандартной процедуре нужно

  1. Поместить jar библиотеки в каталог /kafka_xxxx/Libs.
  2. В конфигурационном файле брокера KAFKA внести строку ssl.engine.factory.class= org.little.broker.ssl.NewSslEngineFactory для замены стандартной фабрики SSL соединений.

Это позволит использовать в конфигурационном файле брокера KAFKA как стандартные строки приведенные выше, так и использовать хранение паролей хранилищ сертификатов в не читаемом виде

ssl.truststore.location=/kafka_xxxx/certs/kafka_traststore.jks 
ssl.truststore.password={mds5}lDXazB27hDS5G1h898Xzug==
ssl.keystore.location=/kafka_ xxxx /certs/kafka_keystore.jks 
ssl.keystore.password={mds5}lDXazB27hDRgeKokdfriSw==
ssl.key.password={mds5}lDXazB27hDRSqNyP9zkYTg==

Преобразование паролей пользователей в не читаемый вид выполняется утилитой passwd_util.sh (passwd_util.bat).

Описание

Опишите проект

Конвейеры
0 успешных
0 с ошибкой