Flink1.9环境下,搭建Flink on yarn平台,用户之间实现租户/资源隔离,在kerberos环境下运行Flink perjob模式,需要在Flink-conf.yaml中添加: security.kerberos.login.use-ticket-cache: true security.kerberos.login.keytab: /home/flink/p_zhangjunjie.keytab security.kerberos.login.principal: p_zhangjunjie@LOCAL.COM 但是如果多个用户使用Flink环境资源,比如说除了p_zhangjunjie,还是p_wanglin,然后我在Flink-conf.yaml中添加: security.kerberos.login.use-ticket-cache: true security.kerberos.login.keytab: /home/flink/p_zhangjunjie.keytab security.kerberos.login.principal: p_zhangjunjie@LOCAL.COM
security.kerberos.login.use-ticket-cache: true security.kerberos.login.keytab: /home/flink/p_wanglin.keytab security.kerberos.login.principal: p_wanglin@LOCAL.COM 但是只有最下面的一个(比如p_wanglin)生效。使用p_zhangjunjie就报错:那如何实现多个keytab用户同时生效呢?
谢谢!麻烦大家帮忙解决一下了。哪怕提供个思路都可以。
*来自志愿者整理的flink邮件归档
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Flink 1.9环境下,要实现多用户(租户)在Kerberos安全认证下共享Flink on YARN平台并保持资源隔离,同时让每个用户的keytab文件都能生效,直接在flink-conf.yaml
中静态配置多个用户的kerberos凭证是不可行的,因为这些配置项是全局性的,只能加载最后一个配置的用户凭证。为了解决这个问题,可以采取以下策略:
利用YARN的Container执行环境:
security.kerberos.login.keytab
和security.kerberos.login.principal
环境变量。自定义Flink客户端提交脚本:
flink-conf.yaml
文件,然后使用这个临时配置文件提交Flink作业。使用Hadoop Secure Client:
-Djava.security.krb5.conf=<path_to_krb5_conf>
、-Djava.security.auth.login.config=<path_to_jaas_config>
以及相应的keytab路径来指定用户的Kerberos身份。基于角色的访问控制(RBAC)与Kerberos委托:
假设选择自定义Flink客户端提交脚本方法:
编写脚本:创建一个脚本,接收用户标识作为参数,根据不同的用户生成或修改临时的flink-conf.yaml
文件,确保其中包含正确的Kerberos配置信息。
调用Flink提交命令:在脚本中,使用生成的临时配置文件路径调用flink run
命令提交作业。
清理临时文件:作业提交后,脚本应负责清理临时生成的配置文件,以避免冲突和泄露敏感信息。
综上所述,通过动态配置和自定义脚本的方法,可以有效解决多用户环境下Kerberos凭证的配置问题,实现资源共享的同时保证了安全性与隔离性。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。