Хранитель зоопарка SASL security

Я использую версию zookeeper 3.4.12 и при попытке включить SASL найденная ниже ошибка. Может ли кто-нибудь помочь в этом.

Client {
 com.sun.security.auth.module.Krb5LoginModule required
 useKeyTab=true
 storeKey=true
 useTicketCache=true
 keyTab = "/tmp/kafka/zookeeper.service.keytab
 principal = "zookeeper/[email protected]";
};

Ошибка :

2018-11-02 09:35:01,998] ERROR SASL authentication failed using login context 'Client' with exception: {} (org.apache.zookeeper.client.ZooKeeperSaslClient) javax.security.sasl.SaslException: Error in authenticating with a Zookeeper Quorum member: the quorum member's saslToken is null

[2018-11-02 10: 05: 24,321] ОШИБКА аутентификации SASL с использованием контекста входа «Клиент» с исключением: {} (org.apache.zookeeper.client.ZooKeeperSaslClient) javax.security.sasl.SaslException: Ошибка аутентификации с член кворума Zookeeper: saslToken члена кворума имеет значение NULL. по адресу org.apache.zookeeper.client.ZooKeeperSaslClient.createSaslTo‌ ken (ZooKeeperSaslCli‌ ent.java:279) по адресу org.apache.zookeeper.client.ZooKeeperSaslClient.respondToSerache ver (at.zooKli) .zookeeper.ClientCnxn $ SendThread.readResponse

Satya_1 02.11.2018 15:16

Какие изменения вы внесли? Вы проверяли этот раздел в документации Kafka: kafka.apache.org/documentation/#zk_authz

Mickael Maison 03.11.2018 16:40
Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Apache Kafka - популярная платформа распределенной потоковой передачи данных, которую можно использовать для построения конвейеров данных в реальном...
0
2
6 884
4

Ответы 4

Я думаю, проблема в том, что вам не хватает двойной кавычки на

keyTab = "/tmp/kafka/zookeeper.service.keytab

Похоже, я пропустил это при публикации вопроса, он есть. Но у вас все еще та же проблема, что бы это могло быть

Satya_1 04.11.2018 12:04

Первым шагом в обеспечении безопасности Zookeeper является обеспечение связи между узлами кворума. Полное объяснение здесь.

В вашем jaas-файле Zookeeper должны быть разделы QuorumServer и КворумУченик.

Затем вы можете защитить связь между кластером Zookeeper и клиентами как Kafka. Полное объяснение здесь

Вы добавляете раздел Сервер в файл jaas Zookeeper, и в вашем файле Kafka jaas должен быть раздел Клиент

Проблема устранена, пробелы в jaas вызывали проблему

У меня была такая же проблема ...

SaslException: Error in authenticating with a Zookeeper Quorum member: the quorum member's saslToken is null

Эта ошибка также была в журнале Zookeeper Server:

ERROR [NIOWorkerThread-6:ZooKeeperServer@1191] - cnxn.saslServer is null: cnxn object did not initialize its saslServer properly.

Моя конфигурация, использующая взаимную аутентификацию Kerberos между экземплярами zookeeper.

Решение

Отсутствует раздел "Сервер"

Моя проблема заключалась в том, что у меня не было раздела Server в моей конфигурации jaas сервера для Zookeeper.

Мне нужно что-то вроде:

QuorumServer {
       com.sun.security.auth.module.Krb5LoginModule required
       useKeyTab=true
       keyTab = "/etc/security/keytabs/zookeeper.keytab"
       storeKey=true
       useTicketCache=false
       debug=false
       principal = "zookeeper/[email protected]";
};

QuorumLearner {
       com.sun.security.auth.module.Krb5LoginModule required
       useKeyTab=true
       keyTab = "/etc/security/keytabs/zookeeper.keytab"
       storeKey=true
       useTicketCache=false
       debug=false
       principal = "zookeeper/[email protected]";
};

Server {
       com.sun.security.auth.module.Krb5LoginModule required
       useKeyTab=true
       keyTab = "/etc/security/keytabs/zookeeper.keytab"
       storeKey=true
       useTicketCache=false
       principal = "zookeeper/[email protected]";
};

Когда клиенты подключаются к Zookeeper, они будут проходить аутентификацию в разделе Server этой конфигурации. Это необходимо для работы SASL.

Также убедитесь, что у вас установлен conf/java.env с чем-то вроде:

SERVER_JVMFLAGS = "${SERVER_JVMFLAGS} -Djava.security.auth.login.config=/opt/zookeeper/conf/server-jaas.conf"
CLIENT_JVMFLAGS = "${CLIENT_JVMFLAGS} -Djava.security.auth.login.config=/opt/zookeeper/conf/client-jaas.conf"

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