Managed Airflow(第 3 代) | Managed Airflow(第 2 代) | Managed Airflow(旧版第 1 代)
确保 Managed Airflow 环境的安全对于保护敏感数据和防止未经授权的访问至关重要。本页面概述了重要的最佳实践,包括网络安全、Identity and Access Management、加密和环境配置管理的建议。
如需详细了解 Managed Airflow 中提供的安全功能,请参阅安全概览。
使用版本控制管理环境配置和 DAG
使用 Terraform 创建环境。 这样,您就可以将环境的配置作为代码存储在代码库中。这样,您就可以在应用环境配置之前查看对环境配置的更改,并且可以通过分配权限较少的角色来减少有权更改配置的用户数量。
在 Identity and Access Management 中,禁止普通用户直接访问 DAG 和环境的 配置,如 Identity and Access Management 部分中所述。
使用 CI/CD 流水线在环境中部署 DAG, 以便从代码库检索 DAG 代码。这样,系统会在将更改合并到版本控制系统之前审核并批准 DAG。在审核过程中,审批者会确保 DAG 符合其团队内建立的安全标准。审核步骤对于防止部署可能会执行不必要操作的 DAG 至关重要。
审核 DAG 时需要考虑的一些重要安全方面包括:
修改环境存储桶内容的 DAG 不得修改其他 DAG 的代码或访问敏感数据,除非有意为之。
DAG 不得直接查询 Airflow 数据库,除非有意为之。Managed Airflow 环境中的 DAG 有权访问 Airflow 数据库中的所有表。它可以从任何表中检索信息,对其进行处理,然后将其存储在 Airflow 数据库之外。
网络安全
使用 专用 IP 环境,以便运行环境集群的 Airflow 组件不会被分配公共 IP 地址,并且只能通过 Google 的内部网络进行通信。
实施严格的防火墙规则,以控制 进出环境集群的流量。
配置与 Google API 和服务的连接 通过
private.googleapis.com网域,以便您的环境 通过仅可从内部路由的 IP 地址访问 Google API 和服务 。 Google Cloud查看项目和环境所在的 VPC 网络中的常规防火墙规则。根据配置方式的不同,环境的 Airflow 组件(例如运行 DAG 的 Airflow 工作器)可能会访问互联网。
Identity and Access Management
隔离权限。 创建环境服务账号 并为不同的环境使用不同的服务账号。仅向这些服务账号分配运行这些环境以及执行其运行的 Airflow DAG 中定义的操作所必需的权限。
避免使用具有广泛权限的服务账号。虽然可以创建使用具有广泛权限的账号(例如由 Editor 基本角色授予的权限)的环境,但这会带来 DAG 使用的权限比预期更广泛的风险。
请勿依赖 Managed Airflow 使用的 Google 服务的默认服务账号。通常,如果不影响项目中的其他 Google 服务,就无法减少这些服务账号可用的权限。
遵循最小权限原则。仅向用户授予必要的最低权限。例如, 分配 IAM 角色,以便只有 管理员可以访问环境的存储桶 和环境的集群 , 并且禁止普通用户直接访问。例如,Composer User 角色仅允许访问 DAG 界面和 Airflow 界面。
强制执行 Airflow 界面访问权限控制,该控制允许根据用户的 Airflow 角色减少 Airflow 界面和 DAG 界面中的可见性,并且可用于为各个 DAG 分配 DAG 级权限。
定期审核。定期审核 IAM 权限和角色,以识别并移除任何过多或未使用的特权。
注意传递和存储敏感数据:
在传递存储个人身份信息或密码等敏感数据时,请务必小心。在需要时, 使用 Secret Manager 安全地存储 Airflow 连接和 Airflow Secret、API 密钥、 密码和证书。请勿将此信息存储在 DAG 或环境变量中。
仅向受信任的用户授予对环境存储桶的 IAM 权限。如果可能,请使用按对象授予的权限。 环境服务账号的安全注意事项 列出了具有环境存储桶访问权限的用户可以代表环境服务账号执行操作的几种方式。
确保您熟悉 快照中存储的数据,并且仅向受信任的用户授予创建环境快照和访问存储 快照的存储桶的 权限。
默认情况下,所有 Managed Airflow 的外部接口都使用加密。连接到外部产品和服务时,请确保使用加密通信 (SSL/TLS)。