Azure 专用链接和 Snowflake¶
本主题介绍如何配置 Azure 专用链接以将 Azure 虚拟网络 (VNet) 和 Azure 中的 Snowflake VNet 相连接。
请注意,Azure 专用链接 并非 Snowflake 提供的服务。这是 Snowflake 允许与 Snowflake 账户一起使用的 Microsoft 服务。
本主题内容:
概述¶
Azure 专用链接 (https://docs.microsoft.com/en-us/azure/private-link/private-link-overview) 通过确保使用专用 IP 地址访问 Snowflake 来提供到 Snowflake 的专用连接。通过使用 Microsoft 主干网并避开公共互联网,只能产生从客户虚拟网络 (VNet) 到 Snowflake VNet 的流量。通过保持访问规则的私密性同时提供安全和私密的通信,这显著简化了网络配置。
下图总结了与客户 VNet 和 Snowflake VNet 相关的 Azure 专用链接架构。
您可以从虚拟机 (1) 或通过对等互连 (2) 连接到虚拟网络中的 Azure 专用链接端点 (3)。然后,该端点连接到专用链接服务 (4) 并路由到 Snowflake。
以下是将 Snowflake 与 Azure 专用链接集成的概述性步骤:
创建专用端点。
从 Azure 订阅生成并检索访问令牌。
请注意,如果计划使用 Azure 专用链接连接到 Azure 上的 Snowflake 内部暂存区,则必须先向 Azure 存储资源提供商注册订阅,然后才能从专用端点连接到内部暂存区。
启用 Azure 上的 Snowflake 账户以使用 Azure 专用链接。
更新您的出站防火墙设置,以允许 Snowflake 账户 URL 和 OCSP URL。
更新您的 DNS 服务器,以向专用链接 IP 地址解析您的账户 URL 和 OCSP URL。您可以将 DNS 条目添加到您的本地 DNS 服务器或在 VNet 上的专用 DNS,并使用 DNS 转发到来自用户访问 Snowflake 所在的其他位置的条目的直接查询。
专用端点显示 Approved 的 CONNECTION STATE 值后,用 SnowCD (Connectivity Diagnostic Tool) 和 SYSTEM$ALLOWLIST_PRIVATELINK 测试您与 Snowflake 之间的连接。
使用专用连接账户 URL 连接到 Snowflake。
要求和限制¶
在尝试配置 Azure 专用链接以将 Azure VNet 连接到 Azure 上的 Snowflake VNet 之前 ,请注意以下事项:
在 Azure 的子网级别,可为专用端点选择性地 启用网络策略 (https://learn.microsoft.com/en-us/azure/private-link/disable-private-endpoint-network-policy?tabs=network-policy-portal)。
验证 TCP 端口 443 和 80,允许流量到达专用端点网卡的网络安全组中的
0.0.0.0
。如需端口配置方面的帮助,请联系内部 Azure 管理员。
使用 ARM VNets (https://docs.microsoft.com/en-us/azure/azure-resource-manager/)。
仅使用 IPv4 TCP 流量。
目前,本主题中描述的自助服务启用流程不支持从 Azure 数据工厂、Synapse 或其他托管服务为托管专用端点。
有关如何为此用例配置托管专用端点的详细信息,请参阅此 文章 (https://community.snowflake.com/s/article/How-to-set-up-a-managed-private-endpoint-from-Azure-Data-Factory-or-Synapse-to-Snowflake) (Snowflake 社区内容)。
有关 Microsoft Azure 专用链接要求和限制的详细信息,请参阅有关 专用端点限制 (https://docs.microsoft.com/en-us/azure/private-link/private-endpoint-overview#limitations) 和 专用链接服务限制 (https://docs.microsoft.com/en-us/azure/private-link/private-link-service-overview#limitations) 的 Microsoft 文档。
使用 Azure 专用链接配置对 Snowflake 的访问¶
注意
本部分仅介绍用于配置 VNet 环境的 Snowflake 特定详细信息。此外,请注意,Snowflake 不 负责所需防火墙更新和 DNS 记录的实际配置。如果您遇到与这些配置任务有关的任何问题,请直接联系 Microsoft 支持部门。
本部分介绍如何使用 Azure 专用链接配置 Azure VNet,以连接到 Azure 上的 Snowflake VNet。使用 Azure 专用链接启动与 Snowflake 的连接后,您可以在 Azure 门户中确定连接的批准状态。
有关安装帮助,请参阅有关 Azure CLI (https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest) 或 Azure PowerShell (https://docs.microsoft.com/en-us/powershell/azure/install-az-ps?view=azps-2.6.0) 的 Microsoft 文档。
完成配置过程以配置 Microsoft Azure VNet,并启动 Azure 专用链接与 Snowflake 之间的连接。
过程¶
此过程手动创建并初始化必要的 Azure 专用链接资源,以使用 Azure 专用链接连接到 Azure 上的 Snowflake。请注意,此过程假设用例不涉及 将 SSO 与 Azure 专用链接结合使用 (本主题内容)。
作为使用 Azure CLI 的代表性示例,执行
az account list --output table
。请注意Name
、SubscriptionID
和CloudName
列中的输出值。Name CloudName SubscriptionId State IsDefault ------- ---------- ------------------------------------ ------- ---------- MyCloud AzureCloud 13c... Enabled True
导航到 Azure 门户。搜索 Private Link,然后点击 Private Link。
点击 Private endpoints,然后点击 Add。
在 Basics 部分中,填写环境的 Subscription、Resource group、Name 和 Region 字段,然后点击 Next: Resource。
在 Resource 部分中,填写 Connection method 和 Resource ID or alias Field 字段。
对于 Connection Method,请选择 Connect to an Azure resource by resource ID or alias。
在 Snowflake 中,执行 SYSTEM$GET_PRIVATELINK_CONFIG 并将
privatelink-pls-id
的值输入 Resource ID or alias 字段。请注意,此步骤中的屏幕截图将east-us-2
区域的别名值用作代表性示例,Azure 使用绿色复选标记确认有效的别名值。如果您收到有关别名值的错误消息,请联系 Snowflake 支持部门 (https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge) 获取资源 ID 值,然后使用资源 ID 值重复此步骤。
返回到 Private endpoints 部分并等待几分钟。批准后,专用端点会显示 Pending 的 CONNECTION STATE 值 。在下一步完成授权后,此值将更新为 Approved。
通过完成以下步骤,使用 Azure 专用链接启用 Azure上的 Snowflake 账户:
在命令行环境中,使用以下 Azure CLI 网络 (https://docs.microsoft.com/en-us/cli/azure/network/private-endpoint?view=azure-cli-latest#az-network-private-endpoint-show) 命令以记录专用端点资源的 ID 值:
az network private-endpoint show
专用端点是在前面步骤中使用模板文件创建的。资源的 ID 值采用以下形式,包含一个截断值:
/subscriptions/26d.../resourcegroups/sf-1/providers/microsoft.network/privateendpoints/test-self-service
在命令行环境中,执行以下 Azure CLI 账户 (https://docs.microsoft.com/en-us/cli/azure/account?view=azure-cli-latest#az_account_get_access_token) 命令并保存输出。输出将在下一步中用作实参
federated_token
的值。az account get-access-token --subscription <SubscriptionID>
从命令输出中提取访问令牌值。此值将用作下一步中的
federated_token
值。在此示例中,值被截断,访问令牌值为eyJ...
:{ "accessToken": "eyJ...", "expiresOn": "2021-05-21 21:38:31.401332", "subscription": "0cc...", "tenant": "d47...", "tokenType": "Bearer" }
重要
生成 Azure 访问令牌的用户必须对订阅具有读取权限。最小权限是 Microsoft.Subscription/subscriptions/acceptOwnershipStatus/read (https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftsubscription)。或者,默认角色
Reader
授予更多粗粒度的权限。accessToken
值是敏感信息,应像密码值一样对待它 – 而 不 要分享该值。如果需要,请联系 Snowflake 支持部门,在创建支持工单之前编辑任何命令和 URLs 中的访问令牌。
在 Snowflake 中,调用 SYSTEM$AUTHORIZE_PRIVATELINK 函数,使用
private-endpoint-resource-id
值和federated_token
值作为实参,在本示例中会被截断:USE ROLE ACCOUNTADMIN; SELECT SYSTEM$AUTHORIZE_PRIVATELINK ( '/subscriptions/26d.../resourcegroups/sf-1/providers/microsoft.network/privateendpoints/test-self-service', 'eyJ...' );
要验证您的授权配置,请在 Azure 上的 Snowflake 账户中调用 SYSTEM$GET_PRIVATELINK 函数。授权成功后,Snowflake 会返回
Account is authorized for PrivateLink.
。如果有必要 禁用 Snowflake 账户中的 Azure 专用链接,请使用
private-endpoint-resource-id
和federated_token
的实参值调用 SYSTEM$REVOKE_PRIVATELINK 函数。DNS 设置。所有指向 Snowflake 的请求都需要通过专用端点路由。更新您的 DNS,以向专用端点的专用 IP 地址解析 Snowflake 账户和 OCSP URLs。
要获取端点 IP 地址,请导航到 Azure 门户搜索栏并输入端点的名称(即第 5 步中的 NAME 值)。找到网络接口结果并点击它。
复制 Private IP address 的值(即
10.0.27.5
)。配置您的 DNS,以获得以下从 SYSTEM$GET_PRIVATELINK_CONFIG 函数解析到专用 IP 地址的端点值。
这些端点值可允许您访问 Snowflake、Snowsight 和 Snowflake Marketplace,同时还可在 Snowflake 客户端尝试通过 HTTPS 和 连接 URLs 连接到端点时使用 OCSP 来确定证书是否已撤消。
要获取的函数值为:
privatelink-account-url
privatelink-connection-ocsp-urls
privatelink-connection-urls
privatelink-ocsp-url
regionless-privatelink-account-url
regionless-snowsight-privatelink-url
snowsight-privatelink-url
请注意,
regionless-snowsight-privatelink-url
和snowsight-privatelink-url
的值允许使用专用连接访问 Snowsight 和 Snowflake Marketplace。但是,如果要启用 URL 重定向,则还需要进行其他配置。有关详细信息,请参阅 Snowsight 和专用连接。
备注
对 DNS 配置的完整解释超出了此过程的范围。例如,您可以选择将 Azure 专用 DNS 区域 (https://docs.microsoft.com/en-us/azure/dns/private-dns-privatednszone) 集成到您的环境中。请咨询您的内部 Azure 和云基础设施管理员,以正确配置和解析 DNS 中的 URLs。
验证您的出站防火墙设置和 DNS 记录之后,纳入您的 Azure 专用链接账户和 OCSP URLs,使用 SnowCD (Connectivity Diagnostic Tool) 和 SYSTEM$ALLOWLIST_PRIVATELINK 测试您与 Snowflake 的连接。
使用您的专用连接账户 URL 连接到 Snowflake。
请注意,如果您要通过 Azure 专用链接连接到 Snowsight,请按照 Snowsight 文档 中的说明进行操作。
将 SSO 与 Azure 专用链接结合使用¶
Snowflake 支持将 SSO 与 Azure 专用链接结合使用。有关更多信息,请参阅:
将 Client Redirect 与 Azure 专用链接结合使用¶
Snowflake 支持将 Client Redirect 与 Azure 专用链接结合使用。
有关更多信息,请参阅 重定向客户端连接。
将复制和 Tri-Secret Secure 与专用连接配合使用¶
无论您是否在目标账户中启用 Tri-Secret Secure 或此功能,Snowflake 都支持将您的数据从源账户复制到目标账户。
阻止公共访问 – 可选¶
测试 Azure 专用链接与 Snowflake 的连接后,您可以 选择 使用 使用网络策略控制网络流量 阻止公共访问。
配置 CIDR 阻止范围,以阻止使用 您组织的 IP 地址范围 对 Snowflake 的公共访问。该范围可以来自您的虚拟网络。
设置 CIDR 阻止范围后,只有 CIDR 阻止范围内的 IP 地址才能访问 Snowflake。
要使用网络策略阻止公共访问,请执行以下操作:
创建新的网络策略或编辑现有的网络策略。为您的组织添加 CIDR 阻止范围。
激活账户的网络策略。