Google Cloud Private Service Connect 和 Snowflake¶
本主题介绍各种概念以及如何配置 Google Cloud Private Service Connect,以将您的 Google Cloud Virtual Private Cloud (VPC) 网络子网连接到托管在 Google Cloud 上的 Snowflake 账户,而无需穿越公共互联网。
请注意,Google Cloud Private Service Connect 不 是 Snowflake 提供的服务。这是 Snowflake 允许与您的 Snowflake 账户一起使用的 Google 服务。
概述¶
Google Cloud Private Service Connect (https://cloud.google.com/vpc/docs/private-service-connect) 通过确保使用私有 IP 地址访问 Snowflake 来提供与 Snowflake 的私有连接。Snowflake 在您的网络(即客户网络)中显示为一种资源,但流量通过 Google 网络主干从 VPC 单向流向 Snowflake VPC。此设置显著简化了网络配置,同时提供安全和私密的通信。
下图总结了与客户 Google Cloud VPC 和 Snowflake 服务相关的 Google Cloud Private Service Connect 架构。

Google Compute Engine(一个虚拟机)连接到私有虚拟 IP 地址,该地址路由到转发规则 (1)。转发规则通过专用连接 (2) 连接到服务附件。连接通过重定向到 Snowflake (4) 的负载均衡器 (3) 进行路由。
限制¶
每个项目最多 10 个连接。
每个账户最多 50 个连接。
某些用于自助管理的 Snowflake 系统函数不受支持。有关信息,请参阅 Google Cloud 上账户的当前限制。
有关详细信息,请参阅:
配置您的 Google Cloud VPC 环境¶
本部分介绍用于配置 Google Cloud VPC 环境的 Snowflake 特定详细信息。
重要
Snowflake 不 负责配置您的 Google Cloud 环境。本过程展示了如何使用 Google Cloud CLI 的基础知识,但不是详尽的指南。例如:
您可以使用 Google Cloud console 来配置您的 Google Cloud 环境,而不是 Google Cloud CLI,这会更改步骤。例如,使用 Google Cloud console 时,您是在创建一个端点,而不是转发规则。
此过程不会向您展示如何配置所需的防火墙更新和 DNS 记录。
此过程不会向您展示如何使端点在其他区域可用(Private Service Connect 端点是区域性资源)。有关如何使端点在其他区域可用的更多信息,请参阅 Google 文档 (https://cloud.google.com/vpc/docs/about-accessing-vpc-hosted-services-endpoints#global-access)。
如需更多帮助,请联系您的内部 Google Cloud 管理员。
作为 Snowflake 账户管理员(即具有 ACCOUNTADMIN 系统角色的用户),打开工作表并调用 SYSTEM$GET_PRIVATELINK_CONFIG 函数。您需要保存输出,以供后续步骤使用。
例如:
USE ROLE ACCOUNTADMIN; SELECT key, value FROM TABLE(flatten(input=>parse_json(system$get_privatelink_config())));
使用 Google Cloud CLI 将 gcloud 库 (https://cloud.google.com/sdk/gcloud/reference/components/update) 更新到最新版本:
gcloud components update
使用以下命令进行 身份验证 (https://cloud.google.com/sdk/gcloud/reference/auth/login) 以登录 Google Cloud:
gcloud auth login
在您的 Google Cloud VPC 中,设置转发规则应驻留的项目 ID (https://cloud.google.com/sdk/gcloud/reference/config/set)。
gcloud config set project <project_id>
要获取项目 IDs 列表,请执行以下命令:
gcloud projects list --sort-by=projectId
在您的 Google Cloud VPC 中,创建 (https://cloud.google.com/sdk/gcloud/reference/compute/addresses/create) 一个虚拟 IP 地址:
gcloud compute addresses create <customer_vip_name> \ --subnet=<subnet_name> \ --addresses=<customer_vip_address> --region=<region>
其中:
customer_vip_name
指定虚拟 IP 规则的名称(如psc-vip-1
)。subnet_name
指定子网的名称。customer_vip_address
指定一个 IP 地址,所有私有连接 URLs 将解析到该地址。从您的网络中指定一个 IP 地址或使用 CIDR 表示法指定一个 IP 地址范围。region
指定您的 Snowflake 账户所在的云区域。
例如:
gcloud compute addresses create psc-vip-1 \ --subnet=psc-subnet \ --addresses=192.168.3.3 \ --region=us-central1
输出:
Created [https://www.googleapis.com/compute/v1/projects/docstest-123456/regions/us-central1/addresses/psc-vip-1].
创建一个 转发规则 (https://cloud.google.com/sdk/gcloud/reference/compute/forwarding-rules/create),使您的子网路由到 Private Service Connect 端点,然后到 Snowflake 服务端点。
gcloud compute forwarding-rules create <name> \ --region=<region> \ --network=<network_name> \ --address=<customer_vip_name> \ --target-service-attachment=<privatelink-gcp-service-attachment>
其中:
name
指定转发规则的名称。region
指定您的 Snowflake 账户所在的云区域。network_name
指定此转发规则的网络名称。customer_vip_name
指定在上一步中创建的虚拟 IP 地址的<name>
value (that is, `` psc-vip-1``)。privatelink-gcp-service-attachment
指定 Snowflake 服务的端点,该端点是在之前的步骤中执行 SYSTEM$GET_PRIVATELINK_CONFIG 函数时获得的。
例如:
gcloud compute forwarding-rules create test-psc-rule \ --region=us-central1 \ --network=psc-vpc \ --address=psc-vip-1 \ --target-service-attachment=projects/us-central1-deployment1-c8cc/regions/us-central1/serviceAttachments/snowflake-us-central1-psc
输出:
Created [https://www.googleapis.com/compute/projects/mdlearning-293607/regions/us-central1/forwardingRules/test-psc-rule].
使用以下命令验证转发规则是否已 成功 (https://cloud.google.com/sdk/gcloud/reference/compute/forwarding-rules/list) 创建:
gcloud compute forwarding-rules list --regions=<region>
其中:
region
是您的 Snowflake 账户所在的云区域。例如,如果您的 Snowflake 账户位于europe-west2
地区,则请替换<region>
witheurope-west2
。
有关 Google Cloud 区域及其格式的完整列表,请参阅 查看可用区域列表 (https://cloud.google.com/compute/docs/regions-zones/viewing-regions-zones#viewing_a_list_of_available_regions)。
更新您的 DNS 设置。
所有对 Snowflake 的请求都需要通过 Private Service Connect 端点进行路由,以便由 SYSTEM$GET_PRIVATELINK_CONFIG 函数返回的 URLs 解析到您创建的 VIP 地址 (
<customer_vip_address>
)。从 SYSTEM$GET_PRIVATELINK_CONFIG 的输出中获取的值取决于您通过专用连接访问哪些 Snowflake 功能。有关可能值的描述,请参阅 返回值。
请注意,
regionless-snowsight-privatelink-url
和snowsight-privatelink-url
的值允许使用专用连接访问 Snowsight 和 Snowflake Marketplace。但是,如果要启用 URL 重定向,还需要其他配置。有关信息,请参阅 Snowsight 和专用连接。备注
对 DNS 配置的完整解释超出了此过程的范围。例如,您可以选择使用 Cloud DNS (https://cloud.google.com/dns/docs/overview) 将专用 DNS 区域集成到您的环境中。请咨询您的内部 Google Cloud 和云基础设施管理员,以正确配置和解析 DNS 中的 URLs。
连接到 Snowflake¶
在连接到 Snowflake 之前,您 可以选择 使用 SnowCD (Snowflake Connectivity Diagnostic Tool) 来评估与 Snowflake 和 Private Service Connect 的网络连接情况。有关更多信息,请参阅 SnowCD 和 SYSTEM$ALLOWLIST_PRIVATELINK。
要使用您的私人连接账户连接到 Snowflake,请参阅 与 URL 连接。
将 SSO 与 Google Private Service Connect 结合使用¶
Snowflake 支持将 SSO 与 Google Cloud Private Service Connect 结合使用。有关更多信息,请参阅:
将 Client Redirect 与 Google Cloud Private Service Connect 结合使用¶
Snowflake 支持将 Client Redirect 与 Google Cloud Private Service Connect 结合使用。
有关更多信息,请参阅 重定向客户端连接。
将复制和 Tri-Secret Secure 与专用连接结合使用¶
无论您是否在目标账户中启用 Tri-Secret Secure 或此功能,Snowflake 都支持将您的数据从源账户复制到目标账户。
阻止公共访问 – 建议¶
在测试 Google Cloud Private Service Connect 与 Snowflake 的连接后,您可以 选择 使用网络策略来阻止对 Snowflake 的公共访问。有关更多信息,请参阅 使用网络策略控制网络流量。
配置 CIDR 阻止范围,以阻止使用 您组织的 IP 地址范围 对 Snowflake 的公共访问。该范围可以来自您的虚拟网络。
设置 CIDR 阻止范围后,只有 CIDR 阻止范围内的 IP 地址才能访问 Snowflake。
要使用网络策略阻止公共访问,请执行以下操作:
创建一个 IPv4 网络规则或编辑现有 IPv4 网络规则,以便为您的组织添加 CIDR 块范围。
创建或修改网络策略,以使用 IPv4 网络规则。
激活账户的网络策略。