- Apache Flink 文档
- 概念
- 数据流编程模型
- 分布式运行时环境
- 教程
- API 教程
- DataStream API 教程
- Setup 教程
- 本地安装教程
- 在 Windows 上运行 Flink
- 例子
- 批处理示例
- 应用开发
- 项目构建设置
- Java 项目模板
- Scala 的项目模板
- 配置依赖关系,连接器,库
- 基础 API 概念
- Scala API 扩展
- Java Lambda 表达式
- Flink DataStream API 编程指南
- 活动时间
- 事件时间/处理时间/摄取时间
- 活动时间和水印
- 状态与容错
- 算子
- DataStream 转换
- 物理分区
- 任务链和资源组
- 流连接器
- 旁路输出
- Python 编程指南(流)Beta
- 测试
- 实验特点
- Flink DataSet API 编程指南
- 数据集转换
- 容错
- 在数据集中压缩数据元
- 迭代
- Python 编程指南 Beta
- 连接器
- Hadoop 兼容性测试版
- 本地执行
- 群集执行
- Table API 和 SQL
- 概念和通用 API
- 流处理概念
- 连接到外部系统
- Table API
- SQL
- 内置函数
- 用户定义的源和接收器
- 用户定义的函数
- SQL 客户端测试版
- 数据类型和序列化
- 为 Flink 程序注册自定义序列化程序
- 管理执行
- 执行配置
- 程序打包和分布式执行
- 并行执行
- 执行计划
- 重启策略
- 类库
- FlinkCEP - Flink 的复杂事件处理
- 风暴兼容性 Beta
- 项目配置
- 执行 Storm 拓扑
- 在 Flink 流程序中嵌入 Storm 算子
- Flink Extensions
- Storm 兼容性示例
- Gelly:Flink Graph API
- 图 API
- FlinkML - Flink 的机器学习
- 最佳实践
- API 迁移指南
- 部署和运营
- 集群和部署
- 独立群集
- YARN 设置
- Mesos 设置
- Kubernetes 设置
- Docker 设置
- 亚马逊网络服务(AWS)
- Google Compute Engine 设置
- 先决条件
- 在 Google Compute Engine 上部署 Flink
- MapR 设置
- Hadoop 集成
- JobManager 高可用性(HA)
- 状态和容错
- 检查点
- 保存点
- 状态后台
- 调整检查点和大状态
- 配置
- 生产准备清单
- 命令行界面
- Scala REPL
- Kerberos 身份验证设置和配置
- SSL 设置
- 文件系统
- 升级应用程序和 Flink 版本
- 调试和监控
- 度量
- 如何使用日志记录
- 历史服务器
- 监控检查点
- 监测背压
- 监控 REST API
- 调试 Windows 和事件时间
- 调试类加载
- 应用程序分析
- 使用 Java Flight Recorder 进行性能分析
- 使用 JITWatch 进行分析
- Flink Development
- 将 Flink 导入 IDE
- 从 Source 建立 Flink
- 内幕
- 组件堆栈
- 数据流容错
- 工作和调度
- 任务生命周期
- 文件系统
- 实现
- 坚持保证
- 更新文件内容
- 覆盖文件
- 线程安全
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 Security 的工作原理
概念上,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 本身会更新令牌(达到其最长生命周期)。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论