Kerberos身份验证设置和配置

本文档简要介绍了Flink安全性如何在各种部署机制(独立,YARN或Mesos),文件系统,连接器和状态后台的上下文中工作。

目的

Flink Kerberos安全基础架构的主要目标是:

  • 通过连接器(例如Kafka)为群集内的作业启用安全数据访问
  • 对ZooKeeper进行身份验证(如果配置为使用SASL)
  • 验证Hadoop组件(例如HDFS,HBase)在生产部署方案中,流式处理作业被理解为长时间运行(几天/几周/几个月),并且能够在作业的整个生命周期中对安全数据源进行身份验证。与Hadoop授权令牌或票证缓存条目不同,Kerberos键盘不会在该时间范围内到期。

当前实现支持使用已配置的keytab凭据或Hadoop授权令牌运行Flink集群(JobManager / TaskManager / jobs)。请记住,所有作业都共享为给定群集配置的凭据。要为特定作业使用不同的Keys表,只需启动具有不同配置的单独Flink群集。许多Flink集群可以在YARN或Mesos环境中并行运行。

概念上,Flink程序可能使用第一方或第三方连接器(Kafka,HDFS,Cassandra,Flume,Kinesis等),需要任意身份验证方法(Kerberos,SSL / TLS,用户名/密码等)。虽然满足所有连接器的安全要求是一项持续的努力,但Flink仅为Kerberos身份验证提供一流的支持。Kerberos身份验证支持以下服务和连接器:

  • Kafka(0.9+)
  • HDFS
  • HBase的
  • zookeeper请注意,可以为每个服务或连接器单独启用Kerberos。例如,用户可以启用Hadoop安全性,而无需为ZooKeeper使用Kerberos,反之亦然。共享数据元是Kerberos凭据的配置,然后由每个组件显式使用。

内部体系结构基于org.apache.flink.runtime.security.modules.SecurityModule启动时安装的安全模块(实现)。以下部分介绍了每个安全模块。

Hadoop安全模块

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

如果启用了Hadoop安全性(in core-site.xml),则登录用户将具有配置的任何Kerberos凭据。否则,登录用户仅传达启动群集的OS帐户的用户标识。

JAAS安全模块

此模块为集群提供动态JAAS配置,使配置的Kerberos凭据可用于ZooKeeper,Kafka以及依赖于JAAS的其他此类组件。

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

ZooKeeper安全模块

此模块配置某些与进程范围内的ZooKeeper安全相关的设置,即ZooKeeper服务名称(默认值:) zookeeper和JAAS登录上下文名称(默认值:) Client

部署模式

以下是特定于每种部署模式的一些信息。

独立模式

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

  • 将与安全相关的配置选项添加到Flink配置文件(在所有群集节点上)(请参阅此处)。
  • 确保keytab文件存在于security.kerberos.login.keytab所有群集节点上指示的路径上。
  • 正常部署Flink集群。

YARN / Mesos模式

在YARN / Mesos模式下运行安全Flink集群的步骤:

  • 将与安全相关的配置选项添加到客户端上的Flink配置文件中(请参阅此处)。
  • 确保Keys表文件存在于security.kerberos.login.keytab客户机节点上指示的路径中。
  • 正常部署Flink集群。在YARN / Mesos模式下,keytab会自动从客户端复制到Flink容器。

有关更多信息,请参阅YARN安全文档。

使用kinit(仅限YARN)

在YARN模式下,可以仅使用票证缓存(由管理员)部署没有Keys表的安全Flink集群kinit这避免了生成Keys表的复杂性,并避免委托集群管理器。在此方案中,Flink CLI获取Hadoop授权令牌(适用于HDFS和HBase)。主要缺点是群集必然是短暂的,因为生成的委托令牌将过期(通常在一周内)。

使用kinit以下命令运行安全Flink集群的步骤

  • 将与安全相关的配置选项添加到客户端上的Flink配置文件中(请参阅此处)。
  • 使用kinit命令登录。
  • 正常部署Flink集群。

更多细节

凭证续订

使用Kerberos的每个组件都独立负责续订Kerberos票证授予票证(TGT)。当提供Keys表时,Hadoop,ZooKeeper和Kafka都会自动续订TGT。在授权令牌场景中,YARN本身会更新令牌(达到其最长生命周期)。