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) 进行路由。

限制

为您的账户授权 Private Service Connect

本节介绍如何授权 Snowflake 通过 Private Service Connect 接受网络流量。

  1. 登录到对您计划授权的项目有访问权限的 Google Cloud 账户。您可以使用您的 `Google Cloud CLI<https://cloud.google.com/sdk/gcloud>`_ 环境来执行以下操作:

    gcloud auth login
    
    Copy

    如果要查看当前账户,请执行以下操作:

    gcloud auth list
    
    Copy
  2. 通过执行以下命令来使用 Google Cloud CLI 创建访问令牌:

    gcloud auth print-access-token
    
    Copy

    此命令可为您的 Google Cloud 账户生成访问令牌。默认情况下,令牌有效期为 1 小时。如果您需要在令牌到期后授权、验证或撤消 Private Service Connect 的授权,则需重复此步骤生成新令牌。

    如果您有 Google Cloud 项目的服务账户,则可以改为生成一个 短期访问令牌 (https://cloud.google.com/iam/docs/create-short-lived-credentials-direct#sa-credentials-oauth),但请确保令牌的生命周期足够长,足以完成这些配置步骤。

  3. 作为 Snowflake 账户管理员(即具有 ACCOUNTADMIN 系统角色的用户),调用 SYSTEM$AUTHORIZE_PRIVATELINK 函数以为您的 Snowflake 账户授权(即启用)Private Service Connect。用于 Private Service Connect 的此函数的语法为:

    SELECT SYSTEM$AUTHORIZE_PRIVATELINK ( '<gcp_project_id>' , '<access_token>' )
    
    Copy

    其中:

    • gcp_project_id 是您计划用来创建端点并安全连接到 Snowflake 的 Google Cloud 项目 ID。

    • access_token 是您在此配置过程的上一步中生成的访问令牌。

    例如:

    USE ROLE ACCOUNTADMIN;
    
    SELECT SYSTEM$AUTHORIZE_PRIVATELINK (
     'my-gcp-project-id',
     'ya29.a0AcM612zT4pJaXdYfwgY8aiMoDE9W_xkqQ20coFTB1TJcImKDPo...'
    );
    
    Copy
  4. 调用 SYSTEM$GET_PRIVATELINK 函数,以验证您的 Snowflake 账户是否成功授权 Private Service Connect。传入您用于授权的相同实参。例如:

    SELECT SYSTEM$GET_PRIVATELINK(
     'my-gcp-project-id',
     'ya29.a0AcM612zT4pJaXdYfwgY8aiMoDE9W_xkqQ20coFTB1TJcImKDPo...'
    );
    
    Copy

    如果账户获得 Private Service Connect 的授权,Snowflake 将返回 Account is authorized for PrivateLink

配置您的 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 管理员。

  1. 作为 Snowflake 账户管理员(即具有 ACCOUNTADMIN 系统角色的用户),打开工作表并调用 SYSTEM$GET_PRIVATELINK_CONFIG 函数。您需要保存输出,以供后续步骤使用。

    例如:

    USE ROLE ACCOUNTADMIN;
    
    SELECT key, value FROM TABLE(flatten(input=>parse_json(system$get_privatelink_config())));
    
    Copy
  2. 使用 Google Cloud CLI 将 gcloud 库 (https://cloud.google.com/sdk/gcloud/reference/components/update) 更新到最新版本:

    gcloud components update
    
    Copy
  3. 使用以下命令进行 身份验证 (https://cloud.google.com/sdk/gcloud/reference/auth/login) 以登录 Google Cloud:

    gcloud auth login
    
    Copy
  4. 在您的 Google Cloud VPC 中,设置转发规则应驻留的项目 ID (https://cloud.google.com/sdk/gcloud/reference/config/set)。

    gcloud config set project <project_id>
    
    Copy

    要获取项目 IDs 列表,请执行以下命令:

    gcloud projects list --sort-by=projectId
    
    Copy
  5. 在您的 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>
    
    Copy

    其中:

    • 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
    
    Copy

    输出:

    Created [https://www.googleapis.com/compute/v1/projects/docstest-123456/regions/us-central1/addresses/psc-vip-1].
    
  6. 创建一个 转发规则 (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>
    
    Copy

    其中:

    • 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
    
    Copy

    输出:

    Created [https://www.googleapis.com/compute/projects/mdlearning-293607/regions/us-central1/forwardingRules/test-psc-rule].
    
  7. 使用以下命令验证转发规则是否已 成功 (https://cloud.google.com/sdk/gcloud/reference/compute/forwarding-rules/list) 创建:

    gcloud compute forwarding-rules list --regions=<region>
    
    Copy

    其中:

    • region 是您的 Snowflake 账户所在的云区域。例如,如果您的 Snowflake 账户位于 europe-west2 地区,则请替换 <region> with europe-west2

    有关 Google Cloud 区域及其格式的完整列表,请参阅 查看可用区域列表 (https://cloud.google.com/compute/docs/regions-zones/viewing-regions-zones#viewing_a_list_of_available_regions)。

  8. 更新您的 DNS 设置。

    所有对 Snowflake 的请求都需要通过 Private Service Connect 端点进行路由,以便由 SYSTEM$GET_PRIVATELINK_CONFIG 函数返回的 URLs 解析到您创建的 VIP 地址 (<customer_vip_address>)。

    从 SYSTEM$GET_PRIVATELINK_CONFIG 的输出中获取的值取决于您通过专用连接访问哪些 Snowflake 功能。有关可能值的描述,请参阅 返回值

    请注意,regionless-snowsight-privatelink-urlsnowsight-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 的网络连接情况。有关更多信息,请参阅 SnowCDSYSTEM$ALLOWLIST_PRIVATELINK

要使用您的私人连接账户连接到 Snowflake,请参阅 与 URL 连接

撤销授权

如果需要在您的 Snowflake 账户中禁用 Private Service Connect,请使用与授权该账户相同的实参值来调用 SYSTEM$REVOKE_PRIVATELINK 函数。例如:

SELECT SYSTEM$REVOKE_PRIVATELINK(
 'my-gcp-project-id',
 'ya29.a0AcM612zT4pJaXdYfwgY8aiMoDE9W_xkqQ20coFTB1TJcImKDPo...'
);
Copy

将 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 都支持将您的数据从源账户复制到目标账户。

语言: 中文