#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 сертификатами. В частности, только процессы администратора должны иметь доступ для чтения к этой папке (все остальное не будет иметь разрешений и скажет, что файл не найден).