专用 IP

本页面介绍如何将专用 IP 与 Cloud SQL 配合使用。如需了解将 Cloud SQL 实例配置为使用专用 IP 的分步说明,请参阅配置专用 IP

概览

将 Cloud SQL 实例配置为使用专用 IP 地址需要专用服务访问通道。通过专用服务访问通道,您可以在 VPC 网络和底层 Google 服务提供方的 VPC 网络之间创建专用连接。提供服务的 Google 实体(如 Cloud SQL)称为服务提供方。每项 Google 服务都会创建一个子网,用于预配资源。子网的 IP 地址范围通常是服务选择的 /24 CIDR 地址块,来自分配的 IP 地址范围。

专用连接可让您不必通过互联网或使用外部 IP 地址即可访问服务。因此,专用 IP 地址的网络延迟时间比公共 IP 地址短。

您可以使用专用服务访问通道连接到 Cloud SQL 实例:

您可以跨区域连接到专用 IP 地址。您还可以在项目间使用共享 VPC 建立连接。

分配的 IP 地址范围

如需在具有专用 IP 地址的 VPC 网络中使用 Cloud SQL 实例,您需要分配 IP 地址范围,以便为此 VPC 设置专用服务访问通道。如需组织 Cloud SQL 实例,您可能需要为专用连接分配多个 IP 地址范围。为专用 IP 地址配置 Cloud SQL 实例时,您可以同时选择 VPC 网络和分配的 IP 地址范围。对于 Cloud SQL,分配的 IP 地址范围必须至少为每个区域的最小 /24 CIDR 块,以便为基本部署提供足够的地址。此 CIDR 块专用于 Cloud SQL 实例。如果您打算创建更大的部署,则需要分配足够大的范围,以涵盖您的实例以及服务提供方。

分配的范围参考文档

分配 IP 地址范围时,您需要考虑计划创建的实例数以及服务提供方的资源需求。范围内的可用主机数量取决于其子网掩码。例如:

子网掩码 地址数 可用的主机
/24256254
/23512510
/2210241022
/2120482046
/2040964094

为您的网络设置专用服务访问通道

首次在特定 VPC 网络上配置专用 IP 连接时,您需要执行一次性过程为 Cloud SQL 设置专用服务访问通道

建立专用服务访问通道后,您可以创建一个 Cloud SQL 实例并将其配置为使用专用 IP,或为现有 Cloud SQL 实例配置专用 IP。如需查看分步说明,请参阅配置专用 IP

每当更改已建立的连接时,您都需要更新 vpc-peerings

专用 IP 的要求

如需使用专用 IP,您的网络和应用环境必须满足以下要求。此外,首次设置专用 IP 时,还需要一些额外的 IAM 权限。

应用环境要求

  • 如果您是从 GKE 连接,则必须在 VPC 原生集群上运行 GKE 1.8 或更高版本。

API 和 IAM 要求

  • 您必须为您的项目启用 Service Networking API
  • 如果您使用的是共享 VPC 网络,还需要为宿主项目启用 Service Networking API。

  • 为了管理专用服务访问通道连接,您的用户必须具有以下 IAM 权限。如果用户不具备所需的权限,您会收到权限不足的错误。
    • compute.networks.list
    • compute.addresses.create
    • compute.addresses.list
    • servicenetworking.services.addPeering

    如果您使用的是共享 VPC 网络,还需要添加相同的用户,并为宿主项目分配相同的权限。

示例

在以下示例中,客户 VPC 网络为 Google 服务分配了地址范围 10.240.0.0/16,并建立了使用已分配范围的专用连接。每项 Google 服务(例如 Cloud SQL)都会在所分配的块中创建一个子网,以预配给定区域中的新资源,例如 Cloud SQL 实例。

专用 IP 配置概览图。

  • 分配给专用连接的分配范围是 10.240.0.0/16。通过此分配,Google 服务可以创建子网来预配新资源。
  • 在专用连接的 Google 服务端,Google 会为客户创建一个项目。该项目是独立的,这意味着没有其他客户共享该项目,并且客户只需要为客户预配的资源付费。
  • 每项 Google 服务都会创建一个子网,用于预配资源。子网的 IP 地址范围通常是服务选择的 /24 CIDR 块,来自分配的 IP 地址范围。您无法修改服务提供方的子网。服务在现有区域子网(以前由该服务创建)中预配新资源。如果子网已满,该服务便会在同一区域中创建新子网。
  • 如果服务支持,客户网络中的虚拟机实例可以访问任何区域中的服务资源。一些服务可能不支持跨区域通信。如需了解详情,请查看相关服务的文档。
  • 仍需支付跨区域流量的出站费用(此情况下,虚拟机实例与不同区域的资源进行通信)。
  • 为 Cloud SQL 实例分配的 IP 地址是 10.240.0.2。在客户 VPC 网络中,目标为 10.240.0.2 的请求会路由到专用连接,再路由到服务提供方的网络。到达服务网络后,服务网络会包含将请求定向到正确资源的路由。
  • VPC 网络之间的流量在 Google 网络内部传输,而不是通过公共互联网传输。

网络问题

Cloud SQL 会为每个区域的专用服务访问 IP 范围分配一个 /24 子网。例如,将 PostgreSQL 实例置于两个区域需要分配的 IP 地址范围至少包含两个大小为 /24 的可用子网。

使用专用 IP 地址连接到 Cloud SQL 实例时会自动获得授权来使用 RFC 1918 地址范围。因此,所有专用客户端都可以在不经过 Cloud SQL Auth 代理的情况下访问数据库。非 RFC 1918 地址范围必须配置为已获授权的网络

默认情况下,Cloud SQL 不会从 VPC 中获知非 RFC 1918 子网路由。您需要将网络对等互连更新到 Cloud SQL,以导出所有非 RFC 1918 路由。

安全

通过专用服务访问通道传输的流量会经过特定级别的加密。如需了解详情,请参阅 Google Cloud 的虚拟网络加密和身份验证

Cloud SQL Auth 代理可配置为使用专用 IP 地址进行连接,它使用 IAM 凭据提供身份验证,并使用轮替 SSL/TLS 证书进行端到端加密。

如果您的安全要求强制您使用自行管理的 SSL/TLS 证书,请参阅配置 SSL/TLS 中的说明。

与将所有实例置于“默认”VPC 网络中相比,为每个具有专用 IP 地址的实例创建一个 VPC 网络可实现更好的网络隔离。

专用 IP 主题快速参考

管理使用专用 IP 地址的 Cloud SQL 实例时,您可能希望了解以下某些主题:

主题 讨论
共享 VPC 网络 您可以在共享 VPC 网络中创建使用专用 IP 地址的 Cloud SQL 实例。但是,您无法将共享 VPC 网络中的专用 IP 地址分配给现有 Cloud SQL 实例。
区域 您可以跨区域通过专用 IP 建立连接。
传统网络 您无法从旧版网络连接到 Cloud SQL 实例的专用 IP 地址。旧版网络不支持 VPC 网络对等互连或专用服务访问通道。
移除专用 IP 将 Cloud SQL 实例配置为使用专用 IP 地址后,您将无法从该实例中移除专用 IP 地址功能。
公共 IP 和专用 IP 您可以同时使用公共 IP 和专用 IP 连接到同一个 Cloud SQL 实例。两种连接方法不会相互影响。
现有 Cloud SQL 实例 您可以在创建实例时将实例配置为使用专用 IP。您也可以将现有实例配置为使用专用 IP。 将现有实例配置为使用专用 IP 地址或更改其连接的网络会导致实例重启,进而出现几分钟的停机时间。
静态 IP 地址 Cloud SQL 实例的专用 IP 地址是静态的,它不会改变。
副本 副本继承其主实例的专用 IP 状态。您无法直接在副本上配置专用 IP。如果您要使用专用 IP 地址连接到副本,则无需为副本创建其他 VPC 专用连接,因为它是从主实例继承的。
Cloud SQL Auth 代理 如需连接到使用专用 IP 的 Cloud SQL 实例,Cloud SQL Auth 代理必须位于可以访问实例所在 VPC 网络的资源中。如果实例同时启用了这两种 IP 地址类型,则 Cloud SQL Auth 代理将默认使用公共 IP 地址。为确保实例使用专用 IP 地址,您需要将 -ip_address_types=PRIVATE 标志传递给 Cloud SQL Auth 代理。了解详情
无服务器 VPC 访问通道 如需从无服务器源(例如 App Engine 标准环境Cloud RunCloud Functions 进行连接,您的应用或函数将通过无服务器 VPC 访问通道直接连接到您的实例,而无需使用 Cloud SQL Auth 代理。
VPC 网络对等互连 使用专用服务访问通道的连接依赖于 VPC 网络对等互连。但是,您不能显式创建 VPC 网络对等互连,因为要对等互连的网络是 Google Cloud 内部的网络。创建专用服务访问通道连接后,您可以在 Cloud Console 的“VPC 网络对等互连”页面上看到其底层 VPC 网络对等互连,除非您想移除专用连接,否则不要删除它。

详细了解 VPC 网络对等互连。

VPC Service Controls VPC Service Controls 可提高您降低数据渗漏风险的能力。借助 VPC Service Controls,您可以为 Cloud SQL 实例创建边界。VPC Service Controls 限制了外部对边界内资源的访问权限。只有边界内的客户端和资源才能彼此互动。如需了解详情,请参阅 VPC Service Controls 概览。此外,还请查看使用 VPC Service Controls 时的 Cloud SQL 限制。如需将 VPC Service Controls 与 Cloud SQL 搭配使用,请参阅配置 VPC Service Controls
传递性对等互连 只有直接对等互连的网络才能进行通信。不支持传递性对等互连。换句话说,如果 VPC 网络 N1 与 N2 和 N3 对等互连,但是 N2 和 N3 未直接连接,则 VPC 网络 N2 不能与 VPC 网络 N3 通过 VPC 网络对等互连进行通信。

一个项目中的客户端可以使用共享 VPC 网络连接到多个项目中的 Cloud SQL 实例。

移动 Cloud SQL 实例 Cloud SQL 实例只能在其所属项目拥有的网络之间移动。此外,Cloud SQL 实例既不能在项目之间移动,也不能在由不同项目托管的网络之间移动。

后续步骤