Закрепление Кафки и Зоопарка с помощью Kerberos - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь настроить идентификацию kerberos между zookeeper и kafka.

Я выполнил следующие шаги настройки: https://docs.confluent.io/4.1.1/kafka/authentication_sasl_gssapi.html#sasl-gssapi-broker.

Брокеры kafka успешно подключились к ансамблю zookeeperи брокеры устанавливают ACL на znodes.

В Zookeeper я вижу znodes / brokers / ids, но ACL установлены следующим образом:

'world,'anyone
: r
'sasl,'kafka/kafka-broker-01.c.aesthetic-way-193809.internal@MYREALM.COM
: cdrwa

Первый брокер создает znode, помещает его ACL и делает его недоступным для изменениядля всех узлов, которые хотят добавить свои идентификаторы.

В документах говорится, что мы должны использовать один и тот же принципал для всех брокеров, но пример документации не соответствует этой рекомендации:

 // ZooKeeper client authentication
 Client {
   com.sun.security.auth.module.Krb5LoginModule required
   useKeyTab=true
   storeKey=true
   keyTab="/etc/security/keytabs/kafka_server.keytab"
   principal="kafka/kafka1.hostname.com@EXAMPLE.COM";
};

Должен ли я создать принципал, такой как kafka_zk_cli @ MYREALM.COM и использовать его клиентский раздел моего JAAS-файла на каждом брокере?Если да, могу ли я поделиться таблицей ключей для этого пользователя на каждом брокере?

Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 19 августа 2019

Свойства kerberos.removeHostFromPrincipal, kerberos.removeRealmFromPrincipal не работали для меня.После просмотра исходного кода zookeeper версии 3.4.14 я передал указанное выше свойство в качестве аргумента JVM, например

-Dzookeeper.kerberos.removeHostFromPrincipal=true
-Dzookeeper.kerberos.removeRealmFromPrincipal=true

. Также в моем случае, как и в случае с аутентификацией билетов между областями, я добавилправила аутентификации, такие как:

-Dzookeeper.security.auth_to_local=RULE:[2:$1](.*)

Посмотрите на класс https://github.com/apache/zookeeper/blob/release-3.4.14/zookeeper-server/src/main/java/org/apache/zookeeper/server/auth/SaslServerCallbackHandler.java

Теперь мои темы ACLS выглядят так

getAcl /kafka-cluster/config/topics/test20
'world,'anyone
: r
'sasl,'zookeeper
: cdrwa
0 голосов
/ 14 июня 2018

Вы можете удалить хост из принципала и использовать один и тот же для всех брокеров, вы можете установить acls вручную (не идеально) или добавить их в свою конфигурацию zookeeper.

kerberos.removeHostFromPrincipal= true kerberos.removeRealmFromPrincipal = true

Здесь может помочь любой из этих трех вариантов.

...