配置 VPC Service Controls

Cloud Composer 1 |Cloud Composer 2 |Cloud Composer 3

借助 VPC Service Controls,组织可以为 Google Cloud 资源定义边界,从而降低数据渗漏风险。

Cloud Composer 环境可以部署在服务边界内。通过使用 VPC Service Controls 配置您的环境,您可以在利用 Cloud Composer 的全代管式工作流编排功能的同时确保敏感数据的私密性。

VPC Service Controls 对 Cloud Composer 的支持意味着:

  • 现在可以选择 Cloud Composer 作为 VPC Service Controls 边界内的安全服务。
  • 将 Cloud Composer 使用的所有底层资源都配置为支持 VPC Service Controls 架构并遵循其规则。

使用 VPC Service Controls 部署 Cloud Composer 环境时,您可以:

  • 降低数据泄露风险。
  • 防止因访问权限控制配置错误而导致数据泄露。
  • 降低恶意用户将数据复制到未经授权的 Google Cloud 资源或外部攻击者从互联网访问 Google Cloud 资源的风险。

VPC Service Controls 模式下的 Airflow 网络服务器

在 VPC Service Controls 模式下,Cloud Composer 会运行 Airflow 网络服务器的两个实例。Identity-Aware Proxy 会在这些实例之间对用户流量进行负载均衡处理。Airflow 网络服务器在“只读”模式下运行,这意味着:

  • 已启用 DAG 序列化。因此,Airflow 网络服务器不会解析 DAG 定义文件。

  • 插件不会同步到网络服务器,因此您无法使用插件修改或扩展网络服务器功能。

  • Airflow 网络服务器使用由 Cloud Composer 服务预构建的容器映像。如果您在自己的环境中安装 PyPI 映像,则这些映像不会安装到网络服务器容器映像上。

创建服务边界

如需了解如何创建和配置服务边界,请参阅创建服务边界。确保选择 Cloud Composer 作为边界内保护的一项服务。

在边界中创建环境

在边界内部署 Cloud Composer 需要执行一些额外步骤。创建 Cloud Composer 环境时:

  1. 为您的项目启用 Access Context Manager APICloud Composer API。如需参考,请参阅启用 API

  2. 请确保您的服务边界包含以下 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 后端)
  3. 使用 composer-1.10.4 或更高版本。

  4. 确保已启用 DAG 序列化。如果您的环境使用 1.15.0 及更高版本的 Cloud Composer,则默认情况下会启用序列化。

  5. 创建启用专用 IP 的新 Cloud Composer 环境。 请注意,必须在环境创建期间配置此设置

  6. 创建环境时,务必配置对 Airflow 网络服务器的访问权限。为实现最大程度的保护,仅允许从特定 IP 范围访问网络服务器。有关详情,请参阅 配置 Web 服务器网络访问权限

使用 VPC Service Controls 配置现有环境

在以下情况下,您可以将环境所属的项目添加到边界:

安装 PyPI 软件包

在默认 VPC Service Controls 配置中,Cloud Composer 仅支持从可从 VPC 网络的内部 IP 地址空间访问的专用代码库安装 PyPI 软件包。

从私有代码库安装

推荐的配置是设置私有 PyPI 代码库,使用组织使用的经过审核的软件包填充,然后配置 Cloud Composer 以从私有代码库安装 Python 依赖项

从公共代码库安装

远程代码库

这是从公共资源库安装软件包的推荐方法 存储库

如需从专用 IP 空间之外的代码库安装 PyPI 软件包,请执行以下操作: 请按以下步骤操作:

  1. 创建 Artifact Registry 远程代码库
  2. 授予此代码库 对上游来源的访问权限
  3. 将 Airflow 配置为 从 Artifact Registry 代码库中安装软件包

外部连接

如需从专用 IP 空间之外的代码库安装 PyPI 软件包,请执行以下操作: 请按以下步骤操作:

  1. 配置 Cloud NAT 以允许在专用 IP 空间中运行的 Cloud Composer 与外部 PyPI 代码库连接。

  2. 配置防火墙规则以允许从 Composer 集群到代码库的出站连接。

用于 Cloud Composer 数据平面的服务账号 必须具有以下权限角色:Composer.Workeriam.serviceAccountUser

配置与 Google API 和服务的连接

在 VPC Service Controls 配置中,如需控制网络流量, 通过 restricted.googleapis.com。此网域禁止访问 Google API 和 不支持 VPC Service Controls 的服务。

Cloud Composer 环境使用以下网域:

  • *.googleapis.com 用于访问其他 Google 服务。

  • *.pkg.dev 用于获取环境映像,例如在创建或更新环境时。

  • *.gcr.io GKE 需要连接到 Container Registry 网域,而不考虑 Cloud Composer 版本。

配置与 restricted.googleapis.com 端点的连接:

网域 DNS 名称 CNAME 记录 A 记录
*.googleapis.com googleapis.com. DNS 名称:*.googleapis.com.
资源记录类型:CNAME
规范名称:googleapis.com.
资源记录类型:A
IPv4 地址:199.36.153.4199.36.153.5199.36.153.6199.36.153.7
*.pkg.dev pkg.dev. DNS 名称:*.pkg.dev.
资源记录类型:CNAME
规范名称:pkg.dev.
资源记录类型:A
IPv4 地址:199.36.153.4199.36.153.5199.36.153.6199.36.153.7
*.gcr.io gcr.io. DNS 名称:*.gcr.io.
资源记录类型:CNAME
规范名称:gcr.io.
资源记录类型:A
IPv4 地址:199.36.153.4199.36.153.5199.36.153.6199.36.153.7

如需创建 DNS 规则,请执行以下操作:

  1. 创建一个新的 DNS 区域并使用 DNS 名称作为 DNS 名称 资源。

    示例:pkg.dev.

  2. CNAME 记录添加记录集

    示例:

    • DNS 名称:*.pkg.dev.
    • 资源记录类型:CNAME
    • 规范名称:pkg.dev.
  3. 添加记录集,并为 A 记录指定以下值:

    示例:

    • 资源记录类型:A
    • IPv4 地址:199.36.153.4199.36.153.5199.36.153.6199.36.153.7

如需了解详情,请参阅 设置与 Google API 和服务的专用连接

配置防火墙规则

如果您的项目具有非默认防火墙规则(例如替换隐含的防火墙规则或修改默认网络中的预先填充的规则),请验证是否已配置以下防火墙规则。

例如,如果存在以下情况,Cloud Composer 可能无法创建环境: 您有一条拒绝所有出站流量的防火墙规则。为避免问题,请定义遵循列表且优先级高于全局 deny 规则的选择性 allow 规则。

配置 VPC 网络以允许来自您的环境的流量:

  • 请参阅使用防火墙规则,了解如何 检查、添加和更新 VPC 网络的规则。
  • 使用连接性工具验证 IP 网段之间的连接性。
  • 您可以使用网络标记进一步 限制访问。您可以在创建环境时设置这些标记。
说明 方向 操作 来源或目标 协议 端口
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、Service 和控制平面地址范围 环境集群的集群页面上:

    1. 在 Google Cloud 控制台中,前往环境页面。

      转到“环境”

    2. 在环境列表中,点击您的环境名称。环境详情页面会打开。

    3. 转到环境配置标签页。

    4. 点击查看集群详情链接。

  • 您可以在环境配置标签页上查看环境的 Web 服务器 IP 地址范围。

  • 您可以查看环境的 环境配置标签页上的网络 ID。如需获取子网的 IP 地址范围,请前往 VPC 网络页面,然后点击网络名称以查看详细信息:

    前往“VPC 网络”页面

VPC Service Controls 日志

排查环境创建问题时,您可以分析审核日志 VPC Service Controls

除了其他日志消息之外,您还可以查看日志 cloud-airflow-prod@system.gserviceaccount.comservice-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com 服务账号。

Cloud Composer 服务使用 cloud-airflow-prod@system.gserviceaccount.com 个服务账号需要管理 您的环境中的租户项目组件

通过 service-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com 服务账号(也称为Composer Service Agent Service Account) 环境组件 服务项目和宿主项目

限制

  • 所有 VPC Service Controls 网络限制条件也适用于您的 Cloud Composer 环境。如需了解详情,请参阅 VPC Service Controls 文档
  • 运行 Cloud Composer 1.12.0 版或更高版本的环境以及运行 Airflow 1.10.9 版或更高版本的环境支持在启用了 DAG 序列化功能的情况下,在网页界面中显示包含函数的渲染模板。

  • 启用 DAG 序列化时,不支持将 async_dagbag_loader 标志设置为 True

  • 启用 DAG 序列化会停用所有 Airflow 网络服务器插件,因为这些插件可能会影响部署 Cloud Composer 所在 VPC 网络的安全性。这不会影响调度器或工作器插件的行为,包括 Airflow 操作器、传感器等。

  • 当 Cloud Composer 在边界内运行时,对公共 PyPI 代码库的访问权限会受到限制。请参阅安装 Python 依赖项,了解如何在专用 IP 模式下安装 PyPI 模块。

后续步骤