Apache Airflow Kerberos 集成

2025 年 6 月 9 日 | 阅读 4 分钟

引言

Apache Airflow 是一个开源工作流程编排工具,用于管理复杂的工作流程、自动化任务和高效地调度作业。在企业环境中,确保安全的身份验证和访问控制至关重要,尤其是在与 Hadoop 等分布式系统交互时。 这就是 Kerberos 身份验证发挥作用的地方。 Kerberos 是一种网络身份验证协议,旨在通过使用密钥密码学为客户端-服务器应用程序提供强大的身份验证。 它在企业中广泛用于安全访问资源。

Kerberos 的局限性

Apache Airflow 与 Kerberos 集成虽然增加了一层安全性,但也带来了一些挑战和限制

  • 配置复杂: 设置 Kerberos 身份验证需要深入了解 Kerberos 密钥分发中心 (KDC)、服务主体和票证管理。 组织必须确保正确配置以防止身份验证失败。
  • 操作复杂性: 管理员必须定期监视日志、续订票证并处理密钥表轮换以确保安全。 配置错误的身份验证设置可能会导致持续的访问问题。
  • 资源限制: 运行启用 Kerberos 的 Airflow 设置需要额外的系统资源,因为身份验证处理开销。 组织必须确保有足够的计算资源以防止性能下降。

启用 Kerberos 身份验证

要在 Apache Airflow 中启用 Kerberos 身份验证,请按照以下步骤操作

安装所需的依赖项

确保您的 Airflow 环境已安装必要的依赖项

这将安装身份验证所需的 Kerberos 相关库。

配置 Kerber

修改 Airflow 配置文件 (airflow.cfg) 以包含 Kerberos 身份验证设置

生成和配置 Keytab

需要一个 key tab 文件,以允许 Airflow 自动通过 Kerberos 进行身份验证。

要为 Airflow 用户创建一个 key tab 文件

确保为安全设置正确的权限

在 Airflow 中启用 Kerberos 票证续订

运行 Kerberos 票证续订守护程序以确保票证保持有效

此命令将按照 airflow.Cf 中定义的频率自动续订 Kerberos 票证。

重新启动 Airflow 服务

重新启动所有 Airflow 组件以应用更改

使用 Kerberos 将 Apache Airflow 与 Hadoop 集成

使用 Kerberos 保护的 Hadoop 集群需要身份验证,然后用户或服务才能访问 HDFS、YARN、Hive 或其他 Hadoop 组件。 Airflow 支持通过 Kerberos 身份验证的 Kerberos 安全 Hadoop

配置 Airflow 以使用 Kerberos for Hadoop

修改 airflow.cfg 文件以包含 Hadoop 相关的设置

将 HDFS 传感器与 Kerberos 配合使用

Airflow 提供 HdfsSensor 来检查 HDFS 中文件的可用性。 使用 Kerberos 时,请包含密钥路径

确保在 Airflow 连接设置中正确配置 hdfs_conn_id。

使用 Kerberos 运行 Hive 查询

要在 Kerberos 安全的 Hadoop 集群上执行 Hive 查询,请使用启用了身份验证的 HiveOperator

应在 Airflow 中预配置 hive_kerberos 连接并启用 Kerberos 身份验证。

使用 Kerberos 提交 Spark 作业

要在 Kerberos 安全的环境中运行 Spark 作业,请配置 SparkSubmitOperator

确保在 Airflow 连接中正确配置 spark_kerberos。

在 Apache Airflow 中使用 Kerberos 身份验证

Airflow 支持跨不同组件的 Kerberos 身份验证

  • Web 身份验证: 可以使用身份验证后端为 Airflow Web UI 启用 Kerberos 身份验证。 这确保只有具有有效 Kerberos 票证的授权用户才能访问 Web 界面。
  • 任务执行: Kerberos 身份验证可确保在 Hadoop、Spark 或其他服务上执行的任务使用有效的凭据。 这有助于安全地访问数据和执行分布式作业。
  • 数据库连接: 与 Kerberized 数据库(例如,PostgreSQL、Hive)的安全连接需要 Kerberos 身份验证。 这可以防止未经授权的数据库访问,并确保只有合法的用户或服务才能与敏感数据交互。
  • Airflow 工作人员: 如果使用 CeleryExecutor,请确保每个工作人员都可以访问有效的 Kerberos 票证以安全地执行任务。 这可以防止由于过期或丢失的身份验证令牌而导致的故障。
  • 日志记录和监视: 由于 Kerberos 身份验证需要票证续订,因此管理员必须主动监视日志(airflow-webserver.log、airflow-scheduler.log)是否存在任何身份验证失败。 设置票证到期自动警报有助于防止中断。
  • 服务帐户: 组织可以选择使用专用的 Kerberos 服务帐户进行 Airflow 身份验证,以提高安全性并将身份验证与用户帐户隔离。

验证 Kerberos 身份验证

要检查 Kerberos 身份验证是否有效,请运行

这应该显示活动的 Kerberos 票证及其到期时间。

如果身份验证失败,请使用以下命令手动续订票证

排查 Kerberos 身份验证问题

  • 票证过期: 如果票证频繁过期,请调整 airflow.cfg 中的 reinit_frequency 参数以更频繁地刷新票证。
  • 错误的 Keytab 权限: 确保 Keytab 文件具有正确的所有权和权限设置 (chmod 600)。
  • 配置错误的主体: 验证 airflow.cfg 中的主体是否与用于身份验证的 Kerberos 原则匹配。
  • 用于调试的日志记录: 在 Airflow 中启用详细日志记录以捕获 Kerberos 身份验证相关问题
  • 验证票证可用性: 在运行 Airflow 任务之前,使用列表检查是否存在有效的 Kerberos 票证。
  • 手动续订票证: 如果需要,请使用以下命令手动续订票证
  • Apache Airflow 与 Kerberos 身份验证相结合,可在处理敏感数据和 Hadoop 等分布式系统时增强安全性。
  • 虽然它引入了操作复杂性,但正确的配置可确保安全的身份验证和顺利的任务执行。

为了进一步优化,请考虑自动执行密钥表轮换、监视票证续订以及使用 Airflow 的日志记录功能来跟踪身份验证问题。


下一个主题Apache-airflow-lineage