首页 文章

Kafka SASL_PLAINTEXT与GSSAPI for kerberos

提问于
浏览
0

我试图使用SASL和GSSAPI运行单个kafka服务器与明文,但低于错误 .

[2018-10-03 16:08:54,220] ERROR [Controller id = 0,targetBrokerId = 0]由于以下原因,与节点0的连接验证失败:错误:(java.security.PrivilegedActionException:javax.security.sasl.SaslException :GSS启动失败[由GSSException引起:未提供有效凭据])在评估从Kafka Broker收到的SASL令牌时发生 . Kafka客户端将进入AUTHENTICATION_FAILED状态 . (org.apache.kafka.clients.NetworkClient)

在server.properties中的更改是:

listeners=SASL_PLAINTEXT://kafka.example.com:9095
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=GSSAPI
advertised.listeners=SASL_PLAINTEXT://kafka.example.com:9095
sasl.enabled.mechanism=GSSAPI
sasl.kerberos.service.name=HTTP

这是我的jaas配置:

KafkaServer {
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    useTicketCache=true
    storeKey=true
    keyTab="/home/kafka/kafka_server.keytab"
    principal="HTTP/kafka.example.com@UNIX.EXAMPLE.COM";
};

有关如何解决此问题的任何线索?

1 回答

  • 0

    首先,使用KeyTab(useKeyTab = true)或使用TicketCache(useTicketCache = true) . 不要一次使用两者 . 这可能会导致冲突 .

    如果您有自己的路缘,请为kafka创建原则

    sudo /usr/sbin/kadmin.local -q 'addprinc -randkey kafka/{hostname}@{REALM}' sudo /usr/sbin/kadmin.local -q "ktadd -k /etc/security/keytabs/{keytabname}.keytab kafka/{hostname}@{REALM}"

    使用

    sasl.kerberos.service.name="kafka"

    设置JVM参数

    export KAFKA_OPTS="-Djava.security.auth.login.config=/path/to/jaas.conf -Djava.security.krb5.conf=/etc/krb5.conf -Dsun.security.krb5.debug=true"

    希望这会有所帮助 .

相关问题