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 环境受到边界的保护,则对公共 PyPI 代码库的访问权限会受到限制。如需了解详情,请参阅 在 VPC Service Controls 中安装 PyPI 软件包。
如果您的环境使用 专用 IP 网络, 所有内部流量都会路由到您的 VPC 网络,但通过专用 Google 访问通道提供给专用 IP 环境的 Google API、服务和网域的流量除外。
根据您配置 VPC 网络的方式,专用 IP 环境可以通过您的 VPC 网络访问互联网 。
托管式 Airflow 不支持在 入站流量和出站流量规则中使用 第三方身份来允许 Apache Airflow 界面 操作。不过,您可以在入站流量和出站流量规则中使用
ANY_IDENTITY身份类型,以允许访问所有身份,包括第三方身份。如需详细了解ANY_IDENTITY身份类型,请参阅 入站流量和出站流量规则。在 VPC Service Controls 模式下,对 Web 服务器的访问受到边界的保护,并且来自边界外部的访问会被阻止。如需允许从服务边界外部进行访问,请根据需要配置 访问权限级别或 入站流量和出站流量规则。此外, 您还可以 将对 Web 服务器的访问权限限制为特定 IP 范围。
在边界中创建环境
如需在边界内部署 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)
- Security Token Service API (sts.googleapis.com)
- 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 后端。
创建新的 Managed Airflow 环境:
专用 IP 必须启用。请注意,必须在环境创建期间配置此设置 。
请务必配置对 Airflow Web 服务器的访问权限。为提高保护力度,请仅允许从特定 IP 范围访问 Web 服务器。如需了解详情,请参阅 配置 Web 服务器网络访问权限。
默认情况下,仅允许从安全边界内访问 Airflow 界面和 API。如果您希望在安全 边界外提供访问权限,请配置 访问权限级别 或 入站流量和出站流量规则。
将现有环境添加到边界
如果满足以下条件,您可以将包含环境的项目添加到边界:
在 VPC Service Controls 中安装 PyPI 软件包
在默认 VPC Service Controls 配置中,Managed Airflow 仅支持从可从 VPC 网络的内部 IP 地址空间访问的专用代码库安装 PyPI 软件包。
默认情况下,VPC Service Controls 边界内的所有 Managed Airflow 环境都无法访问公共 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 服务。*.composer.cloud.google.com用于使环境的 Airflow Web 服务器可访问。您必须先应用此规则,然后才能创建环境。- 或者,您可以为特定区域创建规则。为此,
请使用
REGION.composer.cloud.google.com。 将REGION替换为环境所在的区域,例如us-central1。
- 或者,您可以为特定区域创建规则。为此,
请使用
(可选)
*.composer.googleusercontent.com在访问环境的 Airflow Web 服务器时使用。仅当您从 VPC 网络中运行的实例 访问 Airflow Web 服务器时,才需要此规则,否则不需要。此规则的常见场景是,您想要从 VPC 网络内调用 Airflow REST API。- 或者,您可以为特定环境创建规则。为此,请使用
ENVIRONMENT_WEB_SERVER_NAME.composer.googleusercontent.com。将ENVIRONMENT_WEB_SERVER_NAME替换为环境的 Airflow 界面网址的唯一部分,例如bffe6ce6c4304c55acca0e57be23128c-dot-us-central1。
- 或者,您可以为特定环境创建规则。为此,请使用
*.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
|
*.composer.cloud.google.com
|
composer.cloud.google.com. |
DNS 名称:*.composer.cloud.google.com.资源记录类型: CNAME规范名称: composer.cloud.google.com. |
资源记录类型:AIPv4 地址: 199.36.153.4、199.36.153.5、199.36.153.6、199.36.153.7
|
*.composer.googleusercontent.com
(可选,请参阅说明) |
composer.googleusercontent.com. |
DNS 名称:*.composer.googleusercontent.com.资源记录类型: CNAME规范名称: composer.googleusercontent.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 和服务的专用连接。
配置防火墙规则
如果您的项目具有非默认防火墙规则(例如 替换 隐式防火墙规则的规则,或 修改 预先填充的规则(位于 默认网络中)),请验证是否已 配置以下防火墙规则。
例如,如果您有拒绝所有出站流量的防火墙规则,则 Managed 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 | 全部 |
| (如果您的环境使用 Private Service Connect)连接子网 | 出站流量 | 允许 | Managed Airflow 连接子网范围 | TCP | 3306、3307、19090 |
| (如果您的环境使用 VPC 对等互连)租户网络 | 出站流量 | 允许 | 托管式 Airflow 租户网络 IP 地址范围 | TCP | 3306、3307、19090 |
如需获取环境集群的 IP 地址范围,请执行以下操作:
Pod、服务和控制平面地址范围位于环境集群的集群 页面上:
在 Google Cloud 控制台中,前往环境 页面。
在环境列表中,点击您的环境名称。环境详情 页面会打开。
前往环境配置 标签页。
点击查看集群详情 链接。
您可以在环境配置 标签页上看到环境的 Managed Airflow 租户网络 IP 地址范围。
您可以在环境配置 标签页上看到环境的子网 ID 和 Managed Airflow 连接子网 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 服务帐号来管理
环境的租户项目组件。