Managed Airflow(第 3 代) | Managed Airflow(第 2 代) | Managed Airflow(旧版第 1 代)
借助 VPC Service Controls,组织可以为 Google Cloud 资源定义边界,从而降低数据渗漏风险。
Managed Airflow 环境可以部署在服务边界内。通过使用 VPC Service Controls 配置您的环境,您可以在利用 Managed Airflow 的全代管式工作流编排功能的同时确保敏感数据的私密性。
VPC Service Controls 对 Managed Airflow 的支持意味着:
- 现在可以选择 Managed Airflow 作为 VPC Service Controls 边界内的安全服务。
- 将 Managed Airflow 使用的所有底层资源都配置为支持 VPC Service Controls 架构并遵循其规则。
使用 VPC Service Controls 部署 Managed Airflow 环境时,您可以:
- 降低数据渗漏风险。
- 防止因访问权限控制配置错误而导致数据泄露。
- 降低恶意用户将数据复制到未经授权的 Google Cloud 资源或外部攻击者从互联网访问 Google Cloud 资源的风险。
关于 Managed Airflow 中的 VPC Service Controls
- 所有 VPC Service Controls 网络限制也适用于您的 Managed Airflow 环境。如需了解详情,请参阅 VPC Service Controls 文档。
运行 Managed Airflow 1.12.0 版或更高版本的环境以及运行 Airflow 1.10.9 版或更高版本的环境支持在启用了 DAG 序列化功能的情况下,在网页界面中显示包含函数的渲染模板。
启用 DAG 序列化时,不支持将
async_dagbag_loader标志设置为True。启用 DAG 序列化会停用所有 Airflow Web 服务器插件,因为这些插件可能会影响部署 Managed Airflow 所在 VPC 网络的安全性。这不会影响调度器或工作器插件(包括 Airflow 运算符和传感器)的行为。
如果 Managed Airflow 环境受边界保护,则对公共 PyPI 代码库的访问权限会受到限制。如需了解详情,请参阅 在 VPC Service Controls 中安装 PyPI 软件包。
如果您的环境使用 专用 IP 网络, 所有内部流量都会路由到您的 VPC 网络,但通过专用 Google 访问通道提供给专用 IP 环境的 Google API、服务和网域的流量除外。
根据您配置 VPC 网络的方式,专用 IP 环境可以通过您的 VPC 网络访问互联网 。
在 VPC Service Controls 模式下,Managed Airflow 会运行 Airflow Web 服务器的两个实例。Identity-Aware Proxy 会在这些实例之间对用户流量进行负载均衡处理。Airflow 网络服务器在“只读”模式下运行,这意味着:
已启用 DAG 序列化。因此,Airflow Web 服务器不会解析 DAG 文件。
插件不会同步到 Web 服务器,因此您无法使用插件修改或扩展 Web 服务器的功能。
Airflow Web 服务器使用由 Managed Airflow 服务预构建的容器映像。如果您在环境中安装 PyPI 映像,则这些映像不会安装在 Web 服务器容器映像上。
使用共享 VPC 和 CMEK 的环境的边界
如果您的环境受服务边界保护,并且使用 共享 VPC、 客户管理的加密密钥 (CMEK)或两者都使用,请确保 以下项目位于 同一服务边界 内:
- 服务项目:包含 Managed Airflow 环境的项目。
- 宿主项目:包含共享 VPC 网络的项目。
- 托管 Cloud Key Management Service 密钥的项目。
在边界内创建环境
如需在边界内部署 Managed Airflow,您需要执行以下步骤:
为您的项目启用 Access Context Manager API 和 Cloud Composer API 。如需参考,请参阅启用 API。
确保您的服务边界具有以下 VPC 可访问服务,否则您的环境可能无法创建:
- Cloud Composer API (composer.googleapis.com)
- Compute Engine API (compute.googleapis.com)
- Kubernetes Engine API (container.googleapis.com)
- Container Registry API (containerregistry.googleapis.com)
- Artifact Registry API (artifactregistry.googleapis.com)
- Cloud Storage API (storage.googleapis.com)
- Cloud SQL Admin API (sqladmin.googleapis.com)
- Cloud Logging API (logging.googleapis.com)
- Cloud Monitoring API (monitoring.googleapis.com)
- Cloud Pub/Sub API (pubsub.googleapis.com)
- Cloud Cloud Resource Manager API (cloudresourcemanager.googleapis.com)
- Service Directory API (servicedirectory.googleapis.com)
- Cloud Key Management Service API (cloudkms.googleapis.com),如果您使用的是 Cloud KMS 或 CMEK 密钥。
- Secret Manager API (secretmanager.googleapis.com),如果您使用的是 Secret Manager 作为 Secret 后端。
创建启用了 专用 IP 的新 Managed Airflow 环境。请注意,必须在环境创建期间配置此设置 。
使用 composer-1.10.4 或更高版本。
确保已启用 DAG 序列化 。如果您的环境使用 Managed Airflow 1.15.0 版及更高版本,则默认启用序列化。
创建环境时,务必配置对 Airflow Web 服务器的访问权限。为了提高保护力度,请仅允许从特定 IP 范围访问 Web 服务器。如需了解详情,请参阅 配置 Web 服务器网络访问权限。
将现有环境添加到边界
- 您已按照上一部分中的说明创建或配置边界 。
- 您的环境使用专用 IP。
- 您的环境启用了 DAG 序列化。
在 VPC Service Controls 中安装 PyPI 软件包
在默认 VPC Service Controls 配置中,Managed Airflow 仅支持从可从 VPC 网络的内部 IP 地址空间访问的专用代码库安装 PyPI 软件包。
从专用代码库安装
建议的配置是设置专用 PyPI 代码库:
使用贵组织使用的经过审核的软件包填充该代码库,然后 将 Managed Airflow 配置为 从专用代码库安装 Python 依赖项。
按照访问权限控制中的说明,为环境的服务帐号授予从专用代码库安装软件包的其他权限。
从公共代码库安装
远程仓库
这是从公共代码库安装软件包的推荐方法。
如需从专用 IP 空间之外的代码库安装 PyPI 软件包,请按以下步骤操作:
- 创建 Artifact Registry 远程仓库。
- 授予此代码库 对上游来源的访问权限。
- 将 Airflow 配置为 从 Artifact Registry 代码库安装软件包。
- 按照 访问权限控制中的说明,为环境的服务帐号授予从 Artifact Registry 代码库安装软件包的其他权限。
外部连接
如需从专用 IP 空间之外的代码库安装 PyPI 软件包,请按以下步骤操作:
配置与 Google API 和服务的连接
在 VPC Service Controls 配置中,如需控制网络流量,请通过 restricted.googleapis.com 配置对 Google
API 和服务的访问权限。此网域会阻止对不支持 VPC Service Controls 的 Google API 和服务进行访问。
托管式 Airflow 环境使用以下网域:
*.googleapis.com用于访问其他 Google 服务。*.pkg.dev用于获取环境映像,例如在创建或更新环境时。*.gcr.io无论 Managed Airflow 版本如何,GKE 都需要连接到 Container Registry 网域。
配置与 restricted.googleapis.com 端点的连接:
| 网域 | DNS 名称 | CNAME 记录 | A 记录 |
|---|---|---|---|
*.googleapis.com
|
googleapis.com. |
DNS 名称:*.googleapis.com.资源记录类型: CNAME规范名称: googleapis.com. |
资源记录类型:AIPv4 地址: 199.36.153.4、199.36.153.5、199.36.153.6、199.36.153.7
|
*.pkg.dev
|
pkg.dev. |
DNS 名称:*.pkg.dev.资源记录类型: CNAME规范名称: pkg.dev. |
资源记录类型:AIPv4 地址: 199.36.153.4、199.36.153.5、199.36.153.6、199.36.153.7
|
*.gcr.io
|
gcr.io. |
DNS 名称:*.gcr.io.资源记录类型: CNAME规范名称: gcr.io. |
资源记录类型:AIPv4 地址: 199.36.153.4、199.36.153.5、199.36.153.6、199.36.153.7
|
如需创建 DNS 规则,请执行以下操作:
创建新的 DNS 区域,并使用 DNS 名称 作为此区域的 DNS 名称 。
示例:
pkg.dev.添加记录集为 CNAME 记录。
示例:
- DNS 名称:
*.pkg.dev. - 资源记录类型:
CNAME - 规范名称:
pkg.dev.
- DNS 名称:
添加记录集,适用于 A 记录:
示例:
- 资源记录类型:
A - IPv4 地址:
199.36.153.4、199.36.153.5、199.36.153.6、199.36.153.7
- 资源记录类型:
如需了解详情,请参阅 设置与 Google API 和服务的专用连接。
配置防火墙规则
如果您的项目具有非默认防火墙规则(例如 替换 隐式防火墙规则的规则,或 修改 预先填充的规则(位于 默认网络中)),请验证是否已 配置以下防火墙规则。
例如,如果您有一条拒绝所有出站流量的防火墙规则,则托管式 Airflow 可能无法创建环境。为避免出现问题,请定义遵循列表并具有高于全局
deny 规则优先级的选择性 allow 规则。
配置 VPC 网络以允许来自环境的流量:
| 说明 | 方向 | 操作 | 来源或目标 | 协议 | 端口 |
|---|---|---|---|---|---|
| DNS 按照 VPC Service Controls 对 Cloud DNS 的支持中的说明进行配置 |
- | - | - | - | - |
| Google API 和服务 | 出站流量 | 允许 | 您用于 Google API 和服务的 restricted.googleapis.com 的 IPv4 地址。 |
TCP | 443 |
| 环境的集群节点 | 出站流量 | 允许 | 环境的子网主 IP 地址范围 | TCP、UDP | 全部 |
| 环境的集群 Pod | 出站流量 | 允许 | 环境的子网中 Pod 的辅助 IP 地址范围 | TCP、UDP | 全部 |
| 环境的集群控制层面 | 出站流量 | 允许 | GKE 控制层面 IP 范围 | TCP、UDP | 全部 |
| Web 服务器 | 出站流量 | 允许 | Web 服务器网络 IP 范围 | TCP | 3306、3307 |
如需获取环境集群的 IP 范围,请执行以下操作:
Pod、服务和控制层面地址范围可在环境集群的集群 页面上找到:
在 Google Cloud 控制台中,前往环境 页面。
在环境列表中,点击您的环境名称。环境详情 页面会打开。
前往环境配置 标签页。
点击查看集群详情 链接。
您可以在环境配置 标签页上看到环境的 Web 服务器 IP 范围。
您可以在环境配置 标签页上看到环境的网络 ID。如需获取子网的 IP 范围,请前往 VPC 网络 页面,然后点击网络的名称以查看详情:
VPC Service Controls 日志
在排查环境创建问题时,您可以分析 VPC Service Controls 生成的审核日志。
除了其他日志消息之外,您还可以检查日志,以获取有关
cloud-airflow-prod@system.gserviceaccount.com 和
service-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com
服务账号的信息,这些服务账号配置了您的环境的组件。
Managed Airflow 服务使用
cloud-airflow-prod@system.gserviceaccount.com 服务帐号来管理
环境的租户项目组件。
service-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com
服务帐号(也称为 Composer 服务代理服务账号)管理
服务项目和宿主项目中的
环境组件。