用于内部暂存区的 Google Private Service Connect 端点¶
本主题介绍了通过 ` Google Private Service Connect 端点 <https://cloud.google.com/vpc/docs/private-service-connect#endpoints (https://cloud.google.com/vpc/docs/private-service-connect#endpoints)>`_ 连接到 Snowflake 内部暂存区的相关概念和详细操作步骤。
本主题内容:
Google Private Service Connect 端点:概述¶
您可以配置 Google Private Service Connect (PSC) 端点,为 Snowflake 内部暂存区提供安全的专用连接。此配置可确保对 Snowflake 内部暂存区执行的数据加载和卸载操作通过 Google PSC 网络完成,而不会经过公共互联网。下图总结了这一新支持:
以下列表说明了示意图中各编号所代表的含义:
该图展示了一个来自单个 Google VPC 网络的 PSC 端点,指向一个 Snowflake 内部暂存区(编号 2 和 3)。
备注
您可以在同一个 VPC 网络中配置多个私有端点,用于访问同一个 Snowflake 内部暂存区。
本地用户可以直接连接到 Snowflake,如图中编号 1 所示。
要连接到 Snowflake 内部暂存区,本地用户必须先通过 VPC 网络 2,再通过 Google PSC 网络 3,才能访问该内部暂存区。
优势¶
通过私有端点访问 Snowflake 内部暂存区具有以下优势:
内部暂存区的数据不会经过公共互联网。
本地客户端和 SaaS 应用程序可以通过 Google PSC 网络安全地访问 Snowflake 内部暂存区桶。
管理员无需修改防火墙设置即可访问内部暂存区数据。
管理员可以实施统一的安全策略和监控机制,以限制对内部暂存区的访问。
限制¶
每个 Snowflake 账户最多可以将 10 个 VPC 网络加入允许列表。
配置专用端点以访问 Snowflake 内部暂存区¶
要配置专用端点以访问 Snowflake 内部暂存区,必须使用以下三个角色:
Snowflake ACCOUNTADMIN 系统角色。
Google Cloud 管理员。
网络管理员。
根据组织中的角色层级,您可能需要与多个人员或团队协调配置工作。
完成以下步骤,通过 Google PSC 端点配置并实现对 Snowflake 内部暂存区的安全访问:
作为 Google Cloud 管理员,请使用 Google Cloud Console 获取 Snowflake 用于限制网络访问的完全限定路径值。
在 https://console.cloud.google.com (https://console.cloud.google.com) 中,导航到 Quick Access » VPC Network,然后在 » VPC Networks » Name 中选择您的项目。
在 VPC network details 中,选择 Equivalent REST。
在 Equivalent REST Response 中,复制
"selfLink"的值。该值应类似于
projects/vpc_network_name/global/networks/network_name。在下一步的系统函数中,您将把该值作为
“google_cloud_vpc_network_name”实参传入。
在 Snowflake 中,使用 ACCOUNTADMIN 角色通过调用 SYSTEM$AUTHORIZE_STAGE_PRIVATELINK_ACCESS 函数授权访问内部暂存区。例如:
USE ROLE ACCOUNTADMIN; SELECT SYSTEM$AUTHORIZE_STAGE_PRIVATELINK_ACCESS('<google_cloud_vpc_network_name>');
以 Google Cloud 管理员身份访问 https://console.cloud.google.com/ (https://console.cloud.google.com/),创建 Google PSC 端点,并将其附加到 Snowflake 将访问的 VPC 网络:
创建新端点:在 Network services » Private Service Connect 中,选择 Connect endpoint。
在 Target 中,选择
All Google APIs作为目标,并填写必填字段。备注
All Google APIs适用于 全局 端点。目前,仅支持全局端点。选择 ADD ENDPOINT。
记录新创建的 Google PSC 端点 IP 地址,以及 Google PSC 端点所连接的 VPC 网络 ID。
作为网络管理员,配置 DNS 设置以解析 URLs:
在 Network services 中,导航至 Cloud DNS。
创建新的 DNS 区域,并设置如下:
区域类型:
privateDNS名称:
storage.googleapis.com选项:
Default (private)网络:
prod
选择 CREATE。
在新的私有 DNS 区域中,创建新记录,使用以下值:
使用内部暂存区的桶名称。
资源记录类型:
AIPv4 地址:
10.10.80.55– 使用您之前创建的 Google PSC 端点的 IP 地址。选择 CREATE。
在同一 VPC 的客户端中,使用
nslookup或dig命令确认内部暂存区 URL 能正确解析端点 IP 的地址。例如,使用以下
dig命令确认解析结果:dig gcpeuropewest4-63osaw1-stage.storage.googleapis.com正确配置的全局端点应返回如下结果:
DNS name: gcpeuropewest4-63osaw1-stage
阻止对内部暂存区的公共访问 – 建议¶
Snowflake 建议您禁止对 Google PSC 端点的所有访问,除非通过您授权的 VPC 网络。这包括阻止公共互联网访问内部暂存区。
要阻止对内部暂存区的公共访问,请调用 SYSTEM$BLOCK_INTERNAL_STAGES_PUBLIC_ACCESS 函数。
控制 Google 内部暂存区的公共访问,与控制 Snowflake 服务的公共访问不同。您应使用 SYSTEM$BLOCK_INTERNAL_STAGES_PUBLIC_ACCESS 函数(而非网络策略)来阻止对内部暂存区的请求。与网络策略不同,此函数不能阻止某些公共 IP 地址,而允许其他地址。此函数会阻止 所有 公共 IP 地址。SYSTEM$BLOCK_INTERNAL_STAGES_PUBLIC_ACCESS 函数可能需要几分钟才能完成。
确保公共访问已被阻止¶
通过运行 SYSTEM$INTERNAL_STAGES_PUBLIC_ACCESS_STATUS 函数,确认公共 IP 地址是否可以访问内部暂存区。
如果 Google Cloud 设置当前已阻止所有公共流量,则此函数返回 Public Access to internal stages is blocked。此消息表示 SYSTEM$BLOCK_INTERNAL_STAGES_PUBLIC_ACCESS 函数执行后,设置未发生更改。
取消阻止公共访问¶
若要允许之前被阻止的内部暂存区进行公共访问,可执行 SYSTEM$UNBLOCK_INTERNAL_STAGES_PUBLIC_ACCESS 函数。
执行此函数将移除内部暂存区的所有限制。
撤销对 Snowflake 内部暂存区的访问权限¶
要通过 Google PSC 专用端点撤销对 Snowflake 内部暂存区的访问,请完成以下步骤:
作为 Snowflake 管理员,请确认 ENABLE_INTERNAL_STAGES_PRIVATELINK 参数已设置为
TRUE。例如:USE ROLE ACCOUNTADMIN; SHOW PARAMETERS LIKE 'enable_internal_stages_privatelink' IN ACCOUNT;
作为 Snowflake 管理员,调用 SYSTEM$REVOKE_STAGE_PRIVATELINK_ACCESS 函数撤销对专用端点的访问,并使用最初用于授权访问该专用端点的相同
google_cloud_vpc_network_name值。例如:USE ROLE ACCOUNTADMIN; SELECT SYSTEM$REVOKE_STAGE_PRIVATELINK_ACCESS('<google_cloud_vpc_network_name>');
作为 Google Cloud 管理员,通过 Google Cloud 门户删除专用端点。
作为网络管理员,删除用于解析存储账户 URLs 的 DNS 和别名记录。
完成这些步骤后,将撤销对 VPC 网络的访问权限。