用于 Snowflake 托管存储卷的 AWS VPC 接口端点。¶
本主题提供通过 AWS VPC 接口端点连接到 Snowflake 托管存储卷的概念和详细操作指南。
概述¶
当您使用 Apache Spark 等外部查询引擎对使用 Snowflake 托管存储的 Iceberg 表进行读取或写入时,该查询引擎会直接与托管在 Amazon S3 上的原生 Iceberg 卷进行通信。默认情况下,此流量可以穿过公共互联网。
用于 Amazon S3 <https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html (https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html)>`_ 的 `AWS PrivateLink 可以与 VPC 接口端点结合使用,为托管存储卷提供安全的连接。此设置可确保从外部查询引擎到原生 Iceberg 卷的读写操作通过 AWS 内部网络进行,而非公共互联网。
优势¶
实施 VPC 接口端点来访问 Snowflake 托管存储卷具有以下优势:
当外部查询引擎读取或写入 Snowflake 管理的 Iceberg 卷时,数据不会穿过公共互联网。
在 AWS VPC 外部运行的客户端和 SaaS 应用程序(如 Microsoft PowerBI)可以安全地连接到 Snowflake。
管理员无需修改防火墙设置即可访问卷数据。
管理员可以对查询引擎连接存储的方式实施一致的安全策略和监控。
限制¶
AWS 不支持 Amazon S3 服务的跨区域 VPC 接口端点。因此,VPC 接口端点必须与 Snowflake 账户位于同一区域,才能提供与 Snowflake 托管存储卷的入站连接。
对 AWS PrivateLink 的跨区域支持在政府区域或中华人民共和国不可用。
使用 SnowGov 区域以符合联邦信息处理标准 (FIPS) 的客户应注意,Amazon S3 的 AWS Privatelink 不支持 FIPS 端点。
有关强制执行 FIPS 的 AWS 区域的更多信息,请参阅 支持的云区域。
有关查找账户区域名称的信息,请参阅 Find the cloud-provider's name of the region for your account。
有关 AWS PrivateLink 限制的更多信息,请参阅 AWS 文档 (https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#privatelink-limitations)。
开始使用¶
在配置 AWS 和 Snowflake 以允许请求通过 AWS PrivateLink 访问 Snowflake 托管存储卷之前,您必须满足相关前提条件。
先决条件¶
AWS PrivateLink for S3 (https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html)。
重要
AWS PrivateLink for S3 是一项 AWS 服务,必须在您的云环境中启用。
配置和实施此服务时如需帮助,请联系您的内部 AWS 管理员。
按如下方式更新防火墙允许列表:
如果使用出站防火墙,请确保它允许 Snowflake 所需的所有 URLs。有关详细信息,请参阅 SnowCD (Connectivity Diagnostic Tool)。
仅 适用于
us-east-1客户:如果使用下列 Snowflake 客户端之一连接到 Snowflake,请升级到如下客户端版本:JDBC 驱动程序:3.13.3(或更高版本)
ODBC 驱动程序:2.23.2(或更高版本)
Python Connector for Snowflake:2.5.1(或更高版本)
SnowSQL:1.2.17(或更高版本)
请先升级 SnowSQL,然后再使用此功能。有关更多信息,请参阅 安装 SnowSQL。
从版本 1.3.0 开始,SnowSQL 默认禁用自动升级,以避免发生自动升级时可能影响生产环境的潜在问题。要升级,您应该手动下载和安装新版本,最好是在非生产环境中。Snowflake 建议您将此设置设为禁用,但您可以通过配置 SnowSQL
noup选项 选项手动启用自动升级行为。
使用接口端点访问 Snowflake 托管存储卷¶
要配置 VPC 接口端点以访问 Snowflake 托管存储卷,您组织中的以下角色必须相互协调:
Snowflake 账户管理员(即具有 Snowflake ACCOUNTADMIN 系统角色的用户)。
AWS 管理员。
网络管理员。
根据组织的不同,可能需要与多个人员或团队协调配置工作,从而实施以下配置步骤。
过程¶
请完成以下步骤,从而配置和实施通过 VPC 端点对 Snowflake 托管存储卷的安全访问:
作为 AWS 管理员,使用 AWS 控制台为 S3 创建一个 VPC 端点。记下 VPCE DNS 名称,以供下一步使用;不要 记录任何 VPCE DNS 分区名称。
端点创建后,可通过 描述接口端点 (https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#describe-interface-endpoint) 找到 VPCE DNS 名称。
示例 VPCE DNS名称:
*.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com配置外部查询引擎以直接使用 VPCE DNS 名称。请将 VPCE DNS 名称中的
*替换为bucket。例如,在 Apache Spark 中:小技巧
请使用单独的 Snowflake 账户进行测试,并在测试 DNS 中配置专用托管 VPC 区域来测试该功能,这样一来,测试是隔离的,不会影响其他工作负载。
阻止公共访问¶
在配置 VPC 接口端点以通过 AWS PrivateLink 访问托管存储卷之后,您可以选择使用网络规则和网络策略来限制对该卷的访问。
先决条件¶
要使用网络规则限制对 Snowflake 托管存储卷的访问,账户管理员必须启用 ENFORCE_NETWORK_RULES_FOR_SNOWFLAKE_MANAGED_STORAGE_VOLUME 参数:
创建网络规则¶
创建一个包含 MODE = SNOWFLAKE_MANAGED_STORAGE_VOLUME 和 TYPE = AWSVPCEID 的网络规则,根据 VPC 端点标识符来限制对托管存储卷的访问:
应用网络策略¶
创建使用网络规则的网络策略并将其应用于账户: