Настройка Kafka в Windows с использованием проверки подлинности kerberos

#apache-kafka #kerberos #apache-kafka-security

Вопрос:

Нет таких гладких документов для использования Kerberos в Windows, а также Kafka в Windows. Я следую https://docs.confluent.io/2.0.0/kafka/sasl.html

Все говорят о UNIX или Linux.

Я настроил ActiveDirectory на компьютере с Windows Server 2016 (A) Zookeeper и Kafka на компьютере с Windows Server (B).

Не уверен, как передать ввод jvm в файл kafka-server-start.bat.

Шаг 1.

 C:kafka_2.11-1.1.1binwindows>set KAFKA_OPTS=-Djava.security.auth.login.config=c:kafka_server_jaas.conf,-Djava.security.krb5.conf=c:krb5.conf
 

шаг 2.

 C:kafka_2.11-1.1.1binwindows>kafka-server-start.bat ....configserver.properties
 

После выполнения этого я получаю исключения:

 C:kafka_2.11-1.1.1binwindows>kafka-server-start.bat ....configserver.properties
[2021-11-11 14:45:17,137] INFO Registered kafka:type=kafka.Log4jController MBean (kafka.utils.Log4jControllerRegistration$)
[2021-11-11 14:45:17,668] INFO starting (kafka.server.KafkaServer)
[2021-11-11 14:45:17,668] INFO Connecting to zookeeper on localhost:2181 (kafka.server.KafkaServer)
[2021-11-11 14:45:17,700] ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
org.apache.kafka.common.KafkaException: Exception while loading Zookeeper JAAS login context 'Client'
        at org.apache.kafka.common.security.JaasUtils.isZkSecurityEnabled(JaasUtils.java:45)
        at kafka.server.KafkaServer.initZkClient(KafkaServer.scala:358)
        at kafka.server.KafkaServer.startup(KafkaServer.scala:202)
        at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:38)
        at kafka.Kafka$.main(Kafka.scala:75)
        at kafka.Kafka.main(Kafka.scala)
Caused by: java.lang.SecurityException: java.io.IOException: c:kafka_server_jaas.conf,-Djava.security.krb5.conf=c:krb5.conf (No such file or directory)
        at sun.security.provider.ConfigFile$Spi.<init>(ConfigFile.java:137)
        at sun.security.provider.ConfigFile.<init>(ConfigFile.java:102)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at java.lang.Class.newInstance(Class.java:442)
        at javax.security.auth.login.Configuration$2.run(Configuration.java:255)
        at javax.security.auth.login.Configuration$2.run(Configuration.java:247)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.login.Configuration.getConfiguration(Configuration.java:246)
        at org.apache.kafka.common.security.JaasUtils.isZkSecurityEnabled(JaasUtils.java:42)
        ... 5 more
Caused by: java.io.IOException: c:kafka_server_jaas.conf,-Djava.security.krb5.conf=c:krb5.conf (No such file or directory)
        at sun.security.provider.ConfigFile$Spi.ioException(ConfigFile.java:666)
        at sun.security.provider.ConfigFile$Spi.init(ConfigFile.java:262)
        at sun.security.provider.ConfigFile$Spi.<init>(ConfigFile.java:135)
        ... 16 more
[2021-11-11 14:45:17,700] INFO shutting down (kafka.server.KafkaServer)
[2021-11-11 14:45:17,715] WARN  (kafka.utils.CoreUtils$)
java.lang.NullPointerException
        at kafka.server.KafkaServer$anonfun$shutdown$5.apply$mcV$sp(KafkaServer.scala:572)
        at kafka.utils.CoreUtils$.swallow(CoreUtils.scala:85)
        at kafka.server.KafkaServer.shutdown(KafkaServer.scala:572)
        at kafka.server.KafkaServer.startup(KafkaServer.scala:329)
        at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:38)
        at kafka.Kafka$.main(Kafka.scala:75)
        at kafka.Kafka.main(Kafka.scala)
[2021-11-11 14:45:17,715] INFO shut down completed (kafka.server.KafkaServer)
[2021-11-11 14:45:17,715] ERROR Exiting Kafka. (kafka.server.KafkaServerStartable)
[2021-11-11 14:45:17,746] INFO shutting down (kafka.server.KafkaServer)
 

Мой kafka_server_jass.conf

 KafkaServer {
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    storeKey=true
    keyTab="C:kafka.keytab"
    principal="KAFKA/Randome.com@EXAMPLE.COM";
};

# Zookeeper client authentication
Client {
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    storeKey=true
    keyTab="C:kafka.keytab"
    principal="KAFKA/Randome.com@EXAMPLE.COM";
};
 

В чем причина получения исключения?

Комментарии:

1. Я не думаю, что вам следует заполнять свой корневой диск C сертификатами. В частности, только процессы администратора должны иметь доступ для чтения к этой папке (все остальное не будет иметь разрешений и скажет, что файл не найден).