Dawid, I was able to resolve the keytab issue by passing the service name, but now I am facing the KRB5 issue.
Caused by: org.apache.kafka.common.errors.SaslAuthenticationException: Failed to create SaslClient with mechanism GSSAPI Caused by: javax.security.sasl.SaslException: Failure to initialize security context [Caused by GSSException: Invalid name provided (Mechanism level: KrbException: Cannot locate default realm)] I passed KRB5 from yaml conf file like: env.java.opts.jobmanager: -Djava.security.krb5.conf=/path/krb5.conf env.java.opts.taskmanager: -Djava.security.krb5.conf=/path/krb5.conf How can I resolve this? Is there another way to pass KRB5? I also tried via option#1 from flink run command -D parameter. Regards, Vijay On Tue, Aug 11, 2020 at 1:26 AM Dawid Wysakowicz <dwysakow...@apache.org> wrote: > Hi, > > As far as I know the approach 2) is the supported way of setting up > Kerberos authentication in Flink. In the second approach have you tried > setting the `sasl.kerberos.service.name` in the configuration of your > KafkaConsumer/Producer[1]? I think this might be the issue. > > Best, > > Dawid > > [1] > https://ci.apache.org/projects/flink/flink-docs-stable/dev/connectors/kafka.html#enabling-kerberos-authentication > > > On 09/08/2020 20:39, Vijayendra Yadav wrote: > > Hi Team, > > I am trying to stream data from kafkaconsumer using: > https://ci.apache.org/projects/flink/flink-docs-stable/dev/connectors/kafka.html > > Here my KAFKA is Kerberos secured and SSL enabled. > > I am running my Flink streaming in yarn-cluster on EMR 5.31. > > I have tried to pass keytab/principal in following *2 Ways*: > > 1) Passing as JVM property in Flink run Command. > > /usr/lib/flink/bin/flink run > -yt ${app_install_path}/conf/ > \ > >> -Dsecurity.kerberos.login.use-ticket-cache=false >> \ >> -yDsecurity.kerberos.login.use-ticket-cache=false >> \ >> -Dsecurity.kerberos.login.keytab=${app_install_path}/conf/keytab \ >> -yDsecurity.kerberos.login.keytab=${app_install_path}/conf/.keytab \ >> -Djava.security.krb5.conf=${app_install_path}/conf/krb5.conf >> \ >> -yDjava.security.krb5.conf=${app_install_path}/conf/krb5.conf >> \ >> -Dsecurity.kerberos.login.principal=x...@xx.net \ >> -yDsecurity.kerberos.login.principal= x...@xx.net \ >> -Dsecurity.kerberos.login.contexts=Client,KafkaClient >> \ >> -yDsecurity.kerberos.login.contexts=Client,KafkaClient >> > > *Here, I am getting the following Error, it seems like KEYTAB Was not > transported to the run environment and probably not found.* > > > *org.apache.kafka.common.KafkaException: Failed to construct kafka > consumer Caused by: java.lang.IllegalArgumentException: Could not find a > 'KafkaClient' entry in the JAAS configuration. System property > 'java.security.auth.login.config'* > > 2) Passing from flink config: * /usr/lib/flink/conf/flink-conf.yaml* > > security.kerberos.login.use-ticket-cache: false > security.kerberos.login.keytab: ${app_install_path}/conf/keytab > security.kerberos.login.principal: x...@xx.net > security.kerberos.login.contexts: Client,KafkaClient > > *Here, I am getting the following Error, * > > > *org.apache.kafka.common.KafkaException: Failed to construct kafka > consumer Caused by: org.apache.kafka.common.KafkaException: > java.lang.IllegalArgumentException: No serviceName defined in either JAAS > or Kafka config* > > > Could you please help find, what are probable causes and resolution? > > Regards, > Vijay > >