Flink 1.10 Kerberos权限配置 官网翻译

目标


Flink Kerberos安全认证的主要目标是:

    1.任务访问连接器的时候启用数据安全访问权限

    2.与Zookeeper进行安全认证

    3.与Hadoop组件进行安全访问(eg:hdfs,hbase)

生产环境部署中,流作业应理解为可以长时间运行(几天/几周/几个月),并且访问数据源时,能够在整个生命周期中进行身份认证访问。这与Hadoop委派令牌或ticket缓存不同。

当前已经支持带有keytab认证或者hadoop委托token的flink集群(JobManager、TaskManager、jobs)长时间运行。请记住,集群上所有的作业共享统一的凭据(keytab或者token)。要想每一个job采用不同的keytab,只需要启动带有不同配置的单独的flink集群就可以。许多Flink群集可以在YARN或Mesos环境中并行运行。

Flink 安全认证是如何工作的


从概念上讲,Flink程序可以使用第三方连接器(Kafka,HDFS,Cassandra,Flume,Kinesis等),这需要使用身份认证方法(Kerberos,SSL / TLS,用户名/密码等)。Flink尽最大努力满足所有连接器的安全性要求,但其目前仅提供对Kerberos身份验证的支持。 Kerberos身份验证支持以下服务和连接器:

    1.Kafka(0.9+)

    2.HDFS

    3.Hbase

    4.Zookeeper

请注意,可以为每个服务单独启用Kerberos。 例如,用户可以启用Hadoop安全性,而不必为ZooKeeper使用Kerberos,反之亦然。 多个服务启用Kerberos共享的是keytab的配置,然后由每个组件显式使用。

内部体系基于任务启动时的安全模块(实现类 org.apache.flink.runtime.security.modules.SecurityModule)。以下各节介绍每个安全模块。

Hadoop安全模块

该模块使用Hadoop UserGroupInformation(UGI)类来创建登录用户上下文。 然后,登录用户将用于与Hadoop的所有交互,包括HDFS,HBase和YARN。

如果启用了Hadoop安全性(在core-site.xml中),则登录用户将需要配置Kerberos凭据。 否则,登录用户仅传达启动集群的操作系统的用户身份。

详解:flink + kerberos访问hadoop采用的UGI来认证。

JAAS安全模块

该模块为集群提供了动态的JAAS配置,使配置的Kerberos凭据可供ZooKeeper,Kafka和其他依赖JAAS的组件使用。

请注意,用户还可以使用Java SE文档中描述的机制来提供静态JAAS配置文件。静态目录会覆盖此模块提供的任何目录。

Zookeeper安全模块

该模块配置某些与整个进程相关的ZooKeeper安全性相关的设置,即ZooKeeper服务名称(默认:Zookeeper)和JAAS登录上下文名称(默认:Client)。

部署模式


独立模式

在独立/集群模式下运行采用安全认证Flink群集的步骤:

    1.将安全性相关的配置添加到Flink配置文件(在集群所有节点上)(请参见https://ci.apache.org/projects/flink/flink-docs-release-1.9/ops/config.html#kerberos-based-security)。

    2.确保keytab文件存在于所有集群节点上的security.kerberos.login.keytab指示的路径中。

    3.正常部署Flink群集。

集群模式

在独立/集群模式下运行采用安全认证Flink群集的步骤:

    1.将安全性相关的配置添加到Flink配置文件(在集群所有节点上)(请参见https://ci.apache.org/projects/flink/flink-docs-release-1.9/ops/config.html#kerberos-based-security)。

    2.确保keytab文件存在于所有集群节点上的security.kerberos.login.keytab指示的路径中。

    3.正常部署Flink群集。

在YARN / Mesos模式下,keytab会自动从客户端复制到Flink yarn containers。

更多信息,查看https://github.com/apache/hadoop/blob/trunk/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnApplicationSecurity.md

使用kinit(只支持yarn)

在YARN模式下,可以使用ticket cache(由kinit管理)来部署没有keytab的但是需要安全认证的Flink群集。 这避免了生成keytab的复杂性,并避免了将keytab委托给集群管理器。 在这种情况下,Flink CLI获取Hadoop委托令牌(用于HDFS和HBase)。 主要缺点是,由于生成的委派令牌将过期(通常在一周内或者一天),因此群集的寿命必然很短。

使用kinit运行安全Flink集群的步骤:

    1.将与安全性相关的配置选项添加到客户端上的Flink配置文件中(请参见https://ci.apache.org/projects/flink/flink-docs-release-1.9/ops/config.html#kerberos-based-security)。

    2.使用kinit命令登录。

    3.正常部署Flink群集。

更多细节


Ticket 重新生成

每个使用Kerberos的组件都独立负责更新Kerberos ticket-granting-ticket(TGT)。 当提供keytab时,Hadoop,ZooKeeper和Kafka都会自动更新TGT。 在委派令牌场景中,YARN本身会更新令牌(直至其最大使用寿命)。

官网地址:https://ci.apache.org/projects/flink/flink-docs-release-1.9/ops/security-kerberos.html

更多大数据技术请咨询微信 18310801089

你可能感兴趣的:(Flink 1.10 Kerberos权限配置 官网翻译)