Flink Kerberos认证问题

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Flink Kerberos认证问题

zhangjunjie1130@163.com
您好:
          因为业务需要,需要Flink连接CDK(带有kerberos环境下的Kafka Topic)。
          同一集群,Flink on Yarn模式,在kerberos环境下申请yarn-session资源通过:yarn-session.sh -n 2 -d -jm 2048 -tm 4096 -qu root.AAAA_AAAA_AAAA -D security.kerberos.login.keytab=AAA.keytab -D security.kerberos.login.principal=AAA, 申请的资源去连接同一集群的CDK,在代码中添加了认证信息:
                    System.setProperty("java.security.krb5.conf", krb5);
                    System.setProperty("java.security.auth.login.config", jaas);
                    System.setProperty("sun.security.krb5.debug", "true");
                    Properties properties = new Properties();
                    properties.setProperty("bootstrap.servers", prop.getProperty("KafkaBrokers"));
                    properties.setProperty("group.id", prop.getProperty("GroupId"));


         同一集群, 如果申请的yarn-session的认证用户 和  kafka的认证用户是同一个,比如说都是AAA_AAA_AAA.keytab ,那就能成功。
         同一集群, 如果申请的yarn-session的认证用户 和  kafka的认证用户是不同用户,比如说都是申请的yarn-session是AAA.keytab,而认证的kafka是BBB.keytab ,那就是失败的。报错:errors.TopicAuthorizationException: Not authorized to access topics[].  认证不通过。  麻烦问一下这个问题该怎么解决。我在google、百度都没有这方面的资料,然后自己尝试了各种方法,都不行。




感谢感谢!





Reply | Threaded
Open this post in threaded view
|

Re: Flink Kerberos认证问题

caozhen
"认证的kafka是BBB.keytab"  这个是怎么设置的呢?是自己实现的kafkaSink嘛?



--
Sent from: http://apache-flink.147419.n8.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: Flink Kerberos认证问题

Leslie Yuen
可以通过提交flink任务的客户端配置文件实现认证,具体配置可参考:
https://ci.apache.org/projects/flink/flink-docs-stable/ops/config.html#auth-with-external-systems


caozhen <[hidden email]> 于2020年10月12日周一 下午6:05写道:

> "认证的kafka是BBB.keytab"  这个是怎么设置的呢?是自己实现的kafkaSink嘛?
>
>
>
> --
> Sent from: http://apache-flink.147419.n8.nabble.com/
>
Reply | Threaded
Open this post in threaded view
|

Re: Flink Kerberos认证问题

Husky Zeng
In reply to this post by zhangjunjie1130@163.com
给AAA用户添加对应topic的读写权限就可以了。不必使用kafka的用户去认证。方便的话可以赋给AAA用户kafkaSuper权限,可以消费和生成所有topic



--
Sent from: http://apache-flink.147419.n8.nabble.com/