创建配置了 Private Service Connect 的专用实例

本页面介绍了如何在 Cloud Data Fusion 中配置 Private Service Connect。

Cloud Data Fusion 中的 Private Service Connect 简介

Cloud Data Fusion 实例可能需要连接到本地、Google Cloud 或其他云服务提供商处的资源。通过内部 IP 地址使用 Cloud Data Fusion 时,通过 Google Cloud 项目中的虚拟私有云 (VPC) 网络建立与外部资源的连接。通过网络的流量不会通过公共互联网。使用 VPC 对等互连为 Cloud Data Fusion 提供对 VPC 网络的访问权限时,这些限制会在您使用大规模网络时变得明显。

借助 Private Service Connect 接口,Cloud Data Fusion 可以连接到您的 VPC,而无需使用 VPC 对等互连。Private Service Connect 接口是一种 Private Service Connect,它为 Cloud Data Fusion 提供了启动与使用方 VPC 网络的专用且安全连接的方法。这不仅可以提供灵活性和便捷的访问(如 VPC 对等互连),还可以提供 Private Service Connect 提供的明确授权和消费者端控制。

下图显示了如何在 Cloud Data Fusion 中部署 Private Service Connect 接口:

Private Service Connect 接口的部署。

图 1. Private Service Connect 接口的部署

图 1 的说明

  • 运行 Cloud Data Fusion 的虚拟机 (VM) 托管在 Google 拥有的租户项目中。为了访问客户 VPC 中的资源,Cloud Data Fusion 虚拟机使用 Private Service Connect 网络接口从客户子网分配的 IP 地址。此子网会添加到 Cloud Data Fusion 使用的网络连接中。

  • 源自 Private Service Connect 接口的 IP 数据包的处理方式与来自同一子网中虚拟机的 IP 数据包类似。此配置使 Cloud Data Fusion 能够直接访问客户 VPC 或对等 VPC 中的资源,而无需代理。

  • 在客户 VPC 中启用 Cloud NAT 后,即可访问互联网资源,而可通过互连访问本地资源。

  • 如需管理 Private Service Connect 的入站流量或出站流量,您可以实现防火墙规则。

主要优势

以下是将 Cloud Data Fusion 与 Private Service Connect 结合使用的主要优势:

  • 更好地控制 IP 空间。您可以控制 Cloud Data Fusion 用于连接到您的网络的 IP 地址。您可以选择要从哪些子网中向 Cloud Data Fusion 分配 IP 地址。来自 Cloud Data Fusion 的所有流量都具有来自已配置子网的来源 IP 地址。

    使用 Private Service Connect 时,就不需要客户 VPC 中预留 IP 地址。VPC 对等互连需要每个 Cloud Data Fusion 实例一个 /22 CIDR 块(1024 个 IP 地址)。

  • 提高安全性和隔离性。通过配置网络连接,您可以控制哪些服务可以访问您的网络。

  • 简化了 Cloud Data Fusion 实例设置。每个客户 VPC 只需创建一次网络连接。无需使用代理虚拟机连接到互联网、对等 VPC 或本地资源。

主要概念

本部分介绍 Cloud Data Fusion 中的 Private Service Connect 中涉及的概念。

网络连接

网络连接是一种区域级资源,用于授权 Cloud Data Fusion 以私密方式使用和建立网络连接,以便访问 VPC 中的资源。如需了解详情,请参阅关于网络连接

共享 VPC

以下是具有共享 VPC 的 Private Service Connect 接口的用例:

  • 网络或基础架构团队拥有宿主项目中的子网。它们允许应用团队在他们的服务项目中使用这些子网。

  • 应用团队拥有服务项目中的网络连接。网络连接定义了哪些 Cloud Data Fusion 租户项目可以连接到与该网络连接关联的子网。

您可以在服务项目中创建网络连接。网络连接中使用的子网只能位于宿主项目中。

下图说明了此用例:

具有共享 VPC 的 Private Service Connect 接口的用例

图 2. 使用共享 VPC 的 Private Service Connect 接口

图 2 的说明

  • 服务项目中存在网络连接。网络连接使用的子网属于宿主项目中的共享 VPC。

  • Cloud Data Fusion 实例存在于服务项目中,并且它使用服务项目中的网络连接来建立专用连接。

  • 系统会为 Cloud Data Fusion 实例分配共享 VPC 中子网的 IP 地址。

准备工作

  • Private Service Connect 仅在 Cloud Data Fusion 6.10.0 版及更高版本中提供。

  • 只有在创建新的 Cloud Data Fusion 实例时,您才能启用 Private Service Connect。您无法将现有实例迁移到使用 Private Service Connect。

价格

通过 Private Service Connect 的数据入站和出站流量是收费的。如需了解详情,请参阅 Private Service Connect 价格

所需的角色和权限

如需获取创建 Cloud Data Fusion 实例和网络连接所需的权限,请让管理员向您授予项目的以下 Identity and Access Management (IAM) 角色:

如需获取 Cloud Data Fusion 验证网络配置所需的权限,请让管理员向 Cloud Data Fusion 服务代理授予以下 IAM 角色(格式为 service-CUSTOMER_PROJECT_NUMBER@gcp-sa-datafusion.iam.gserviceaccount.com):

  • 对于与网络连接关联的 VPC:Compute Network Viewer (roles/compute.networkViewer)

  • 为了让 Cloud Data Fusion 将其租户项目添加到网络连接的提供方接受列表,请执行以下操作:

    • compute.networkAttachments.get
    • compute.networkAttachments.update
    • compute.networkAttachments.list

    具有这些权限的限制性最强的角色是 Compute Network Admin (roles/compute.networkAdmin) 角色。这些权限是 Cloud Data Fusion API Service Agent (roles/datafusion.serviceAgent) 角色的一部分,该角色会自动授予给 Cloud Data Fusion 服务代理。因此,除非已明确撤消服务代理角色授予,否则无需执行任何操作。

如需详细了解如何授予角色,请参阅管理访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

如需详细了解 Cloud Data Fusion 中的访问权限控制选项,请参阅使用 IAM 进行访问权限控制

创建 VPC 或共享 VPC 网络

确保您已创建 VPC 网络共享 VPC 网络

配置 Private Service Connect

如需在 Cloud Data Fusion 中配置 Private Service Connect,您必须先创建网络连接,然后创建配置了 Private Service Connect 的 Cloud Data Fusion 实例。

创建网络连接

网络连接提供一组子网。如需创建网络连接,请按照以下步骤操作:

控制台

  1. 在 Google Cloud 控制台中,前往网络连接页面:

    转到“网络连接”

  2. 点击创建网络连接

  3. 名称字段中,为网络连接输入名称。

  4. 网络列表中,选择一个 VPC 或共享 VPC 网络。

  5. 区域列表中,选择一个 Google Cloud 区域。此区域必须与 Cloud Data Fusion 实例相同。

  6. 子网列表中,选择一个子网范围。

  7. 连接偏好设置中,选择接受所选项目的连接

    当您创建 Cloud Data Fusion 实例时,Cloud Data Fusion 会自动将 Cloud Data Fusion 租户项目添加到接受的项目列表中。

  8. 请勿添加已接受的项目被拒的项目

  9. 点击创建网络连接

    创建网络连接

gcloud

  1. 创建一个或多个子网。例如:

    gcloud compute networks subnets create subnet-1 --network=network-0 --range=10.10.1.0/24 --region=REGION
    

    网络连接会在后续步骤中使用这些子网。

  2. 在 Cloud Data Fusion 实例所在的区域中创建网络连接资源,并将 connection-preference 属性设置为 ACCEPT_MANUAL

    gcloud compute network-attachments create NAME
    --region=REGION
    --connection-preference=ACCEPT_MANUAL
    --subnets=SUBNET
    

    请替换以下内容:

    • NAME:网络连接的名称。
    • REGION:Google Cloud 区域的名称。此区域必须与 Cloud Data Fusion 实例相同。
    • SUBNET:子网的名称。

    此命令的输出是以下格式的网络连接网址:

    projects/PROJECT/locations/REGION/network-attachments/NETWORK_ATTACHMENT_ID.

    记下此网址,因为 Cloud Data Fusion 需要它来建立连接。

REST API

  1. 创建子网

  2. 创建网络连接:

    alias authtoken="gcloud auth print-access-token"
    NETWORK_ATTACHMENT_NAME=NETWORK_ATTACHMENT_NAME
    REGION=REGION
    SUBNET=SUBNET
    PROJECT_ID=PROJECT_ID
    
    read -r -d '' BODY << EOM
    {
      "name": "$NETWORK_ATTACHMENT_NAME",
      "description": "Network attachment for private Cloud Data Fusion",
      "connectionPreference": "ACCEPT_MANUAL",
      "subnetworks": [
        "projects/$PROJECT_ID/regions/$REGION/subnetworks/$SUBNET"
      ]
    }
    EOM
    
    curl -H "Authorization: Bearer $(authtoken)" \
    -H "Content-Type: application/json" \
    -X POST   -d "$BODY" "https://compute.googleapis.com/compute/v1/projects/$PROJECT_ID/regions/$REGION/networkAttachments"
    

    请替换以下内容:

    • NETWORK_ATTACHMENT_NAME:网络连接的名称。
    • REGION:Google Cloud 区域的名称。此区域必须与 Cloud Data Fusion 实例相同。
    • SUBNET:子网的名称。
    • PROJECT_ID:您的项目的 ID。

创建 Cloud Data Fusion 实例

Cloud Data Fusion 对租户项目中的资源使用 /25 CIDR 地址块 (128 IP)。这称为“无法访问的范围”或“预留范围”。您可以在 VPC 中使用相同的 IP 地址,但 Cloud Data Fusion 虚拟机无法使用此范围连接到您的资源。

在大多数情况下,这不成问题,因为默认情况下无法访问的 CIDR 地址块位于非 RFC 1918 范围 (240.0.0.0/8) 中。如果要控制无法访问的范围,请参阅高级配置

如需创建启用了 Private Service Connect 的 Cloud Data Fusion 实例,请按照以下步骤操作:

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud Data Fusion 实例页面,然后点击创建实例

    创建实例

  2. 实例名称字段中,为新实例输入名称。

  3. 说明字段中,为实例输入说明。

  4. 区域列表中,选择您要在其中创建实例的 Google Cloud 区域。

  5. 版本列表中,选择 6.10 或更高版本。

  6. 选择版本。如需详细了解不同版本的价格,请参阅 Cloud Data Fusion 价格概览

  7. 展开高级选项并执行以下操作:

    1. 选择启用专用 IP

    2. 选择 Private Service Connect 作为连接类型

    3. 网络连接部分中,选择您在创建网络连接中创建的网络连接。

  8. 点击创建。最长可能需要 30 分钟才能完成实例创建过程。

    创建配置了 Private Service Connect 的 Cloud Data Fusion 实例

REST API

运行以下命令:

alias authtoken="gcloud auth print-access-token"

EDITION=EDITION
PROJECT_ID=PROJECT_ID
REGION=REGION
CDF_ID=INSTANCE_ID
NETWORK_ATTACHMENT_ID=NETWORK_ATTACHMENT_ID

read -r -d '' BODY << EOM
{
  "description": "PSC enabled instance",
  "version": "6.10",
  "type": "$EDITION",
  "privateInstance": "true",
  "networkConfig": {
    "connectionType": "PRIVATE_SERVICE_CONNECT_INTERFACES",
    "privateServiceConnectConfig": {
      "networkAttachment": "$NETWORK_ATTACHMENT_ID"
    }
  }
}
EOM

curl -H "Authorization: Bearer $(authtoken)" \
-H "Content-Type: application/json" \
-X POST   -d "$BODY" "https://datafusion.googleapis.com/v1/projects/$PROJECT_ID/locations/$REGION/instances/?instanceId=$CDF_ID"

请替换以下内容:

  • EDITION:Cloud Data Fusion 版本 - BASICDEVELOPERENTERPRISE
  • PROJECT_ID:您的项目的 ID。
  • REGION:Google Cloud 区域的名称。此区域必须与 Cloud Data Fusion 实例相同。
  • INSTANCE_ID:您的实例的 ID。
  • NETWORK_ATTACHMENT_ID:网络连接的 ID。

高级配置

如需实现子网共享,您可以为多个 Cloud Data Fusion 实例提供同一网络连接。相比之下,如果您想为特定 Cloud Data Fusion 实例指定一个子网,则必须提供供 Cloud Data Fusion 实例使用的特定网络连接。

建议:如需对所有 Cloud Data Fusion 实例应用统一的防火墙政策,请使用同一网络连接。

如果您要控制 Cloud Data Fusion 无法访问的 /25 CIDR 地址块,请在创建实例时指定 unreachableCidrBlock 属性。例如:

alias authtoken="gcloud auth print-access-token"

EDITION=EDITION
PROJECT_ID=PROJECT_ID
REGION=REGION
CDF_ID=INSTANCE_ID
NETWORK_ATTACHMENT_ID=NETWORK_ATTACHMENT_ID
UNREACHABLE_RANGE=UNREACHABLE_RANGE

read -r -d '' BODY << EOM
{
  "description": "PSC enabled instance",
  "version": "6.10",
  "type": "$EDITION",
  "privateInstance": "true",
  "networkConfig": {
    "connectionType": "PRIVATE_SERVICE_CONNECT_INTERFACES",
    "unreachableCidrBlock": "$UNREACHABLE_RANGE"
    "privateServiceConnectConfig": {
      "networkAttachment": "projects/$PROJECT_ID/regions/$REGION/networkAttachments/$NETWORK_ATTACHMENT_ID"
    }
  }
}
EOM

curl -H "Authorization: Bearer $(authtoken)" \
-H "Content-Type: application/json" \
-X POST -d "$BODY" "https://datafusion.googleapis.com/v1/projects/$PROJECT_ID/locations/$REGION/instances/?instanceId=$CDF_ID"

请替换以下内容:

  • EDITION:Cloud Data Fusion 版本 - BASICDEVELOPERENTERPRISE
  • PROJECT_ID:您的项目的 ID。
  • REGION:Google Cloud 区域的名称。此区域必须与 Cloud Data Fusion 实例相同。
  • INSTANCE_ID:您的实例的 ID。
  • NETWORK_ATTACHMENT_ID:网络连接的 ID。
  • UNREACHABLE_RANGE:无法访问的范围,例如 10.0.0.0/25

安全性

本部分介绍 Cloud Data Fusion 与使用方之间的安全性。

从 Cloud Data Fusion 迁移到消费者安全

Private Service Connect 接口支持出站防火墙规则,以控制 Cloud Data Fusion 可以在您的 VPC 中访问哪些内容。如需了解详情,请参阅限制生产者到消费者的入站流量

使用方到 Cloud Data Fusion 的安全性

具有 Private Service Connect 接口的 Cloud Data Fusion 虚拟机会屏蔽源自您的 VPC 且不是响应数据包的任何流量。