У меня проблема с Kerberos (в данном случае я пытаюсь использовать ее с kafka).
Во-первых, мой kdc.conf
файл выглядит следующим образом:
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
default_realm=KAFKA.SECURE
[realms]
KAFKA.SECURE = {
acl_file = /var/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
# supported_enctypes = des3-hmac-sha1 des-cbc-crc des-cbc-md5
}
На основев этой конфигурации я создал пользователя с именем admin
и субъект-службы с именем kafka
.
kinit -kt admin.user.keytab admin
успешно получил билет:
Credentials cache: API:A96189DD-B94C-41F4-BD65-B4C0C1C1F522
Principal: admin@KAFKA.SECURE
Issued Expires Principal
Jan 24 09:49:06 2019 Jan 25 09:49:06 2019 krbtgt/KAFKA.SECURE@KAFKA.SECURE
Это то, что регистрируетсяна стороне krb5kdc:
Jan 24 07:49:06 ip-aaa.bbb.ccc.ddd.compute.internal krb5kdc[1075](info): AS_REQ (4 etypes {18 17 16 23}) 195.97.116.228: ISSUE: authtime 1548316146, etypes {rep=18 tkt=18 ses=18}, admin@KAFKA.SECURE for krbtgt/KAFKA.SECURE@KAFKA.SECURE
Jan 24 07:49:06 ip-aaa.bbb.ccc.ddd.compute.internal krb5kdc[1075](info): closing down fd 13
Затем я пытаюсь запустить клиент kafka:
kafka/bin/kafka-console-producer.sh --broker-list xxx.xxx.xxx.xxx.amazon.com:9094 --topic kafka-security-topic --producer.config krb5/kafka_client_kerberos.properties
Java config name: null
Native config name: /Library/Preferences/edu.mit.Kerberos
Loaded from native config
>>>KinitOptions cache name is /tmp/krb5cc_501
>> Acquire default native Credentials
Using builtin default etypes for default_tkt_enctypes
default etypes for default_tkt_enctypes: 17 16 23.
>>> Found no TGT's in LSA
org.apache.kafka.common.KafkaException: Failed to construct kafka producer
at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:433)
at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:291)
at kafka.producer.NewShinyProducer.<init>(BaseProducer.scala:40)
at kafka.tools.ConsoleProducer$.main(ConsoleProducer.scala:49)
at kafka.tools.ConsoleProducer.main(ConsoleProducer.scala)
Caused by: org.apache.kafka.common.KafkaException: javax.security.auth.login.LoginException: Could not login: the client is being asked for a password, but the Kafka client code does not currently support obtaining a password from the user. not available to garner authentication information from the user
и на стороне сервера krb5kdc ничего не регистрируется.
Теперь, если я перейду к файлу kdc.conf
, указанному выше, и переключу supported_enctypes
на менее безопасные алгоритмы des3-hmac-sha1 des-cbc-crc des-cbc-md5
, создайте нового принципала пользователя KDC admin-less
и kinit
этого пользователя -> kafka-console-producer.sh
Команда выполнена успешно!
Я пробовал OSX и CentOS (на стороне клиента).KDC находится на машине CentOS в Amazon.
Есть идеи, что здесь может быть не так?