Airflow 安全模型¶
本文档从 Airflow 用户的角度描述了 Airflow 的安全模型。旨在帮助用户理解安全模型,并就如何部署和管理 Airflow 做出明智的决定。
如果您想了解如何报告安全漏洞以及 Airflow 安全团队如何处理安全报告,请访问 Airflow 安全策略。
Airflow 安全模型 - 用户类型¶
Airflow 安全模型涉及不同类型的用户,他们拥有不同的访问权限和功能
在小型安装中,与 Airflow 相关的所有操作可以由单个用户执行,但在大型安装中,显然需要分离不同的职责、角色和功能。
这就是 Airflow 具有以下用户类型的原因
部署管理员 - 全面负责 Airflow 的安装、安全和配置
已认证的 UI 用户 - 可以访问 Airflow UI 和 API 并与其交互的用户
DAG 作者 - 负责创建 DAG 并将其提交到 Airflow
您可以在架构概述中查看更多关于用户类型如何影响 Airflow 架构的信息,包括查看简单和复杂部署的图示。
部署管理员¶
他们拥有最高级别的访问权限和控制权。他们负责安装和配置 Airflow,并就技术和权限做出决定。他们可以潜在地删除整个安装并访问所有凭据。部署管理员还可以决定在 Airflow 之外保留审计、备份和信息副本,这些不属于 Airflow 安全模型的范围。
已认证的 UI 用户¶
他们有权访问 UI 和 API。有关已认证 UI 用户可能拥有的功能的更多详细信息,请参见下文。
未认证的 UI 用户¶
Airflow 默认不支持未经认证的用户。如果允许,部署管理员必须评估并解决潜在漏洞。但是,这也有例外。/health
端点用于获取健康检查更新,它应该是公开可访问的。这是因为其他系统可能需要检索该信息。另一个例外是 /login
端点,因为用户在使用它时应处于未经认证的状态。
已认证 UI 用户的功能¶
已认证 UI 用户的功能可能因部署管理员或管理员用户配置的角色以及这些角色拥有的权限而异。角色权限的范围可以小至单个 DAG,例如,或大至管理员权限。以下是四个通用类别,有助于概念化已认证用户可能拥有的一些功能
管理员用户¶
他们管理并授予其他用户权限,完全访问所有 UI 功能。他们可以通过配置连接在工作节点上执行代码,因此需要信任他们不会滥用这些权限。他们可以访问敏感凭据并修改它们。默认情况下,他们无权访问系统级配置。应信任他们不会滥用通过连接配置可访问的敏感信息。他们也有能力制造 API 服务器拒绝服务的情况,因此应信任他们不会滥用此能力。
只有管理员用户可以访问审计日志。
操作员用户¶
操作员与管理员的主要区别在于管理和授予其他用户权限的能力,以及访问审计日志 - 只有管理员能够做到这一点。否则,假定他们拥有与管理员相同的访问权限。
连接配置用户¶
他们配置连接,并在 DAG 执行期间可能在工作节点上执行代码。需要信任以防止滥用这些权限。他们完全访问存储在连接中的敏感凭据并可以修改它们。应信任他们不会滥用通过连接配置可访问的敏感信息。他们也有能力错误配置连接,可能导致 API 服务器拒绝服务的情况,并指定不安全的连接选项,这可能导致在执行 DAG 时对某些提供者(无论是社区发布的还是自定义的)造成任意远程代码执行的情况。
应高度信任这些用户不会滥用此能力。
审计日志用户¶
他们可以查看整个 Airflow 安装的审计事件。
普通用户¶
他们能够查看和编辑 DAG、任务实例和 DAG 运行,并查看任务日志。
查看者用户¶
他们可以以只读方式查看与 DAG 相关的信息、任务日志和其他相关详情。此角色适用于只需要只读访问权限,而不能触发或修改 DAG 的用户。
查看者也无权访问审计日志。
有关已认证 UI 用户功能的更多信息,请参见使用 FAB 认证管理器进行访问控制。
部署管理员的职责¶
作为部署管理员,您应该了解 DAG 作者的能力,并确保您信任他们不会滥用他们拥有的能力。您还应该确保已正确配置 Airflow 安装,以防止 DAG 作者在调度器和 API 服务器进程中执行任意代码。
部署和保护 Airflow 安装¶
部署管理员还负责部署 Airflow,并以符合部署 Airflow 的组织所适用的安全部署最佳实践的方式,使其可供用户访问。这包括但不限于
使用 TLS/VPC 和部署 Airflow 的组织要求的任何网络安全措施来保护通信
应用通常用于 Web 应用程序的速率限制和其他形式的保护
对 Web 应用程序应用身份验证和授权,以便只有已知和授权的用户才能访问 Airflow
检测任何异常活动并加以保护
选择正确的会话后端并进行适当配置,包括会话超时
限制已认证 UI 用户的访问权限¶
部署管理员还确定访问级别,并且必须了解用户可能造成的潜在损害。一些部署管理员可能会通过为已认证 UI 用户设置细粒度权限来进一步限制访问。然而,这些限制超出了 Airflow 的基本安全模型范围,由部署管理员自行决定。
细粒度访问控制的示例包括(但不限于)
限制登录权限:限制用户可以登录的账户,只允许属于特定账户或角色的用户访问 Airflow 系统。
限制对视图或 DAG 的访问:控制用户对特定视图或特定 DAG 的访问,确保用户只能查看或与授权组件交互。
未来:多租户隔离¶
这些示例展示了部署管理员如何在 Airflow 中细化和限制用户权限,提供更严格的控制,并根据用户的角色和职责确保他们只能访问必要的组件和功能。然而,细粒度访问控制目前尚未提供完全隔离和访问分离,以实现在多租户模式下隔离不同的用户组。在未来的 Airflow 版本中,一些细粒度访问控制功能可能会成为 Airflow 安全模型的一部分,因为 Airflow 社区目前正在研究多租户模型。