Snowflake, Inc.
|
DOCUMENTATION
  • Community
  • Resources
  • Blog
      • LANGUAGES:
      • English
      • Deutsch
      • Français
      • 日本語
  • Getting Started
  • Introduction to Snowflake
  • Tutorials, Videos & Other Resources
  • Release Notes
  • Connecting to Snowflake
  • Loading Data into Snowflake
  • Unloading Data from Snowflake
  • Using Snowflake
  • Sharing Data Securely in Snowflake
  • Managing Your Snowflake Organization
  • Managing Your Snowflake Account
  • Managing Security in Snowflake
    • Summary of Security Features
    • Authentication
    • Networking & Private Connectivity
      • Network Policies
      • AWS PrivateLink & Snowflake
      • Azure Private Link & Snowflake
        • Azure Private Link Overview
          • Requirements and Limitations
        • Configuring Access to Snowflake with Azure Private Link
          • Prerequisite Steps
          • Option 1: Use Template Files
          • Option 2: Create Azure Resources Manually
        • Using SSO with Azure Private Link
        • Blocking Public Access — Optional
    • Administration & Authorization
  • Developing Applications in Snowflake
  • General Reference
  • SQL Command Reference
  • SQL Function Reference
  • Appendices
Next Previous |
  • Docs »
  • Managing Security in Snowflake »
  • Networking & Private Connectivity »
  • Azure Private Link & Snowflake

Azure Private Link & Snowflake¶

Snowflake logo in black (no text) Business Critical Feature

This feature requires Business Critical (or higher).

If you are using Business Critical (or higher) and wish to use Azure Private Link with your account, please contact Snowflake Support and request it to be enabled, as described in this topic.

.

Related Topics

  • SnowCD

  • SYSTEM$WHITELIST_PRIVATELINK

  • SYSTEM$GET_PRIVATELINK_CONFIG

This topic describes how to configure Azure Private Link to connect your Azure Virtual Network (VNet) to the Snowflake VNet in Azure.

Note that Azure Private Link is not a service provided by Snowflake. It is a Microsoft service that Snowflake enables for use with your Snowflake account.

If you are using Business Critical (or higher) and wish to use Azure Private Link with your account, please contact Snowflake Support and request it to be enabled.

In this Topic:

  • Azure Private Link Overview

    • Requirements and Limitations

  • Configuring Access to Snowflake with Azure Private Link

    • Prerequisite Steps

    • Option 1: Use Template Files

    • Option 2: Create Azure Resources Manually

  • Using SSO with Azure Private Link

  • Blocking Public Access — Optional

Azure Private Link Overview¶

Azure Private Link provides private connectivity to Snowflake by ensuring that access to Snowflake is through a private IP address. Traffic can only occur from the customer virtual network (VNet) to the Snowflake VNet using the Microsoft backbone and avoids the public Internet. This significantly simplifies the network configuration by keeping access rules private while providing secure and private communication.

The following diagram summarizes the Azure Private Link architecture with respect to the customer VNet and the Snowflake VNet.

From either a virtual machine (1) or through peering (2), you can connect to the Azure Private Link endpoint (3) in your virtual network. That endpoint then connects to the Private Link Service (4) and routes to Snowflake.

Architecture overview

Here are the high-level steps to integrate Snowflake with Azure Private Link:

  1. Create a Private Endpoint and request approval from Snowflake as described in Configuring Access to Snowflake with Azure Private Link.

  2. Contact Snowflake Support, and request for approval by providing the value of the Private Endpoint that you created. After Snowflake approves it, using Azure Portal, verify if the Private Endpoint displays a CONNECTION STATE value of Approved. Verify your account URL and the OCSP URL with Snowflake Support.

  3. Update your outbound firewall settings to allow the Snowflake account URL and OCSP URL.

  4. Update your DNS server to resolve your account URL and OCSP URL to the Private Link IP address. You can add the DNS entry to your on-premise DNS server or private DNS on your VNet, and use DNS forwarding to direct queries for the entry from other locations where your users will access Snowflake.

  5. After the Private Endpoint displays a CONNECTION STATE value of Approved, test your connection to Snowflake with SnowCD (Connectivity Diagnostic Tool) and SYSTEM$WHITELIST_PRIVATELINK.

  6. Connect to Snowflake using SnowSQL.

Requirements and Limitations¶

Before attempting to configure Azure Private Link to connect your Azure VNet to the Snowflake VNet on Azure, evaluate the following requirements and limitations:

  • The subnet containing the Private Endpoint needs to have its network policy disabled. Specifically, the subnet properties need to include the following two attributes:

    "privateLinkServiceNetworkPolicies" : "Disabled",
    "privateEndpointNetworkPolicies" : "Disabled"
    

    Note

    If your corporate network protocols require the subnet in which the Azure Private Link endpoint resides to have network policies enabled, then you must configure a separate subnet that contains only the Azure Private Link endpoint and route requests from other subnets to the subnet containing the Azure Private Link endpoint.

  • Use ARM VNets.

  • Use IPv4 TCP traffic only.

  • If you are using a SaaS application to connect to Snowflake, you cannot use the SaaS application and Azure Private Link together. You can continue to use the SaaS application to connect to Snowflake through pathways that do not use Azure Private Link.

For more information on the requirements and limitations of Microsoft Azure Private Link, see the Microsoft documentation on Private Endpoint Limitations and Private Link Service Limitations.

Configuring Access to Snowflake with Azure Private Link¶

Attention

This section only covers the Snowflake-specific details for configuring your VNet environment. Also, note that Snowflake is not responsible for the actual configuration of the required firewall updates and DNS records. If you encounter issues with any of these configuration tasks, please contact Microsoft Support directly.

This section describes how to configure your Azure VNet to connect to the Snowflake VNet on Azure using Azure Private Link. After initiating the connection to Snowflake using Azure Private Link, you can determine the approval state of the connection in the Azure portal.

For installation help, see the Microsoft documentation on the Azure CLI or Azure PowerShell.

Complete the Prerequisite Steps and either Option 1: Use Template Files or Option 2: Create Azure Resources Manually to configure your Microsoft Azure VNet and initiate the Azure Private Link connection to Snowflake.

Prerequisite Steps¶

  1. Determine whether multiple Snowflake accounts in the same Azure region will use the same Azure SubscriptionID. During the initial configuration, one Snowflake account and one Azure SubscriptionID are necessary.

    • If you desire to tether multiple Snowflake accounts in the same Azure region to a single Azure SubscriptionID, please contact Snowflake Support while completing Step 2 in Option 1: Use Template Files.

  2. Configure secure access to data files in your Azure Blob storage using Configuring an Azure Container for Loading Data.

    • This step ensures that bulk data loading from your Azure Blob storage external stage into Snowflake remains on the Azure networking backbone and does not use the public Internet.

  3. Evaluate your Azure environment to determine whether you need a dedicated subnet with an Azure Private Link endpoint or only the Azure Private Link endpoint.

    • If you already have a dedicated subnet to use Azure Private Link to connect to Snowflake, it is only necessary to create a Private Endpoint in this subnet. Therefore, download these two files for use in Option 1 or configure manually as shown in Option 2.

      • customer-private-endpoint-only-template.json

      • customer-private-endpoint-only-parameters.json

    • If you do not have a dedicated subnet and choose to configure with template files, follow the instructions in Option 1. Otherwise, configure manually as shown in Option 2.

Important

Options 1 and 2 make the following two assumptions:

  • Your use case does not involve Using SSO with Azure Private Link.

  • It is necessary to create both the subnet and the Private Endpoint. If your use case requires only the Private Endpoint, use the corresponding files in Step 1 of Option 1: Use Template Files.

Option 1: Use Template Files¶

This sequence of steps uses two different configuration files to create and initialize the necessary Azure Private Link resources to use Azure Private Link to connect to Snowflake on Azure. The configuration files are of two types:

Template file

Use this file to create a Private Endpoint and a subnet for that endpoint.

Parameters file

Use this file to initialize the resources the template file creates.

Depending on your Azure environment, it may not be necessary to create a dedicated subnet. If you already have a dedicated subnet for the Private Endpoint, you can use the corresponding files to create the endpoint in that subnet.

As a representative example, the following steps assume both a dedicated subnet and Private Endpoint are necessary.

Caution

The template files and scripts create resources in your Azure environment to facilitate connecting to Snowflake using Azure Private Link. Exercise caution when completing the configuration procedure. For additional help and support, please contact your internal Azure administrator.

  1. Download these two files for use in the next steps:

    • customer-privatelink-template.json

    • customer-privatelink-parameters.json

  2. As a representative example using the Azure CLI, execute az account list --output table. Note the output values in the Name and CloudName columns.

    Name     CloudName   SubscriptionId                        State    IsDefault
    -------  ----------  ------------------------------------  -------  ----------
    MyCloud  AzureCloud  13c91033-8b4e-40f7-9031-16c8f69233e3  Enabled  True
    
  3. Contact Snowflake Support and share the SubscriptionId value and your account URL to access Snowflake with a note indicating that these values are to use Azure Private Link. Snowflake will then allow the SubscriptionId value for auto-approval. After receiving the approval response from Snowflake, run SYSTEM$GET_PRIVATELINK_CONFIG to obtain the URL to access Snowflake through Azure Private Link.

    Important

    It may take up to 48 hours for Snowflake Support to process the ticket and allow the SubscriptionID value. Please wait patiently for Snowflake Support to provide confirmation. After receiving confirmation, continue with the remaining steps in this procedure.

    If you desire to tether multiple Snowflake accounts in the same Azure region to a single Azure SubscriptionID, please contact Snowflake Support.

  4. For each parameter in customer-privatelink-parameters.json, update the value to match your environment. For example, replace the virtualNetworkName value of privateLinkConsumer_vnet with myVirtualNetwork.

    To determine the correct alias value for snowflakePrivatelinkServiceAlias , execute SYSTEM$GET_PRIVATELINK_CONFIG in Snowflake and use the value for privatelink-pls-id.

  5. In the Azure CLI, execute the following three commands using the values from the previous step. Note that these values are representative examples.

    az cloud set --name <customer_cloud_name>
    az account set --subscription <customer_subscription_name>
    az group deployment create --resource-group CUSTOMER_RESOURCEGROUP_NAME --template-file customer-privatelink-template.json --parameters customer-privatelink-parameters.json
    
    • Replace <customer_cloud_name> with AzureCloud.

    • Replace <customer_subscription_name> with MyCloud.

    • You can choose an arbitrary name for CUSTOMER_RESOURCE_GROUP.

  6. DNS Setup. All requests to Snowflake need to be routed via the Private Endpoint. Update your DNS to resolve the Snowflake account and OCSP URLs to the private IP address of your Private Endpoint.

    • To get the Private Endpoint IP address, navigate to the Azure portal Private Link Center. Click Private endpoints and click on the endpoint.

    • Copy the value for the Private IP address (i.e. 10.0.27.5).

      DNS private IP address
    • Configure your DNS to have your account and OCSP URLs resolve to the private IP address. In Snowflake, execute SYSTEM$GET_PRIVATELINK_CONFIG and use the values for private-link-account-url and private-link-ocsp-url.

      If you are using any of the following features or may use these features in the future, it is necessary to create an additional DNS record with the following values or combine the following values with the Snowflake account and OCSP cache server values. This step ensures access to these features via a Private Endpoint.

      Snowflake Data Marketplace or Snowsight

      app.<region_id>.privatelink.snowflakecomputing.com

      Organizations

      For more information, see Understanding Organization and Account Names.

      Note

      A full explanation of DNS configuration is beyond the scope of this procedure. For example, you can choose to integrate an Azure Private DNS zone into your environment.

      Please consult your internal Azure and Cloud Infrastructure administrators to configure and resolve the URLs in DNS properly.

  7. After verifying your outbound firewall settings and DNS records to include your Azure Private Link account and OCSP URLs, test your connection to Snowflake with SnowCD (Connectivity Diagnostic Tool) and SYSTEM$WHITELIST_PRIVATELINK.

  8. Connect to Snowflake using SnowSQL.

You can now connect to Snowflake using Azure Private Link.

Option 2: Create Azure Resources Manually¶

This sequence of steps manually creates and initializes the necessary Azure Private Link resources to use Azure Private Link to connect to Snowflake on Azure.

  1. Verify that a dedicated subnet exists to contain the Private Endpoint and that network policies are disabled. For more information, see Disable network policies for private endpoints.

  2. As a representative example using the Azure CLI, execute az account list --output table. Note the output values in the Name and CloudName columns.

    Name     CloudName   SubscriptionId                        State    IsDefault
    -------  ----------  ------------------------------------  -------  ----------
    MyCloud  AzureCloud  13c91033-8b4e-40f7-9031-16c8f69233e3  Enabled  True
    
  3. Contact Snowflake Support and share the SubscriptionId value and your account URL to access Snowflake with a note indicating that these values are to use Azure Private Link. Snowflake will then allow the SubscriptionId value for auto-approval. After receiving the approval response from Snowflake, run SYSTEM$GET_PRIVATELINK_CONFIG to obtain the URL to access Snowflake through Azure Private Link.

    Important

    It may take up to 48 hours for Snowflake Support to process the ticket and allow the SubscriptionID value. Please wait patiently for Snowflake Support to provide confirmation. After receiving confirmation, continue with the remaining steps in this procedure.

    If you desire to tether multiple Snowflake accounts in the same Azure region to a single Azure SubscriptionID, please contact Snowflake Support.

  4. Navigate to the Azure portal. Search for Private Link and click Private Link.

    Private Link Preview
  5. Click Private endpoints and then click Add.

    Select Private link endpoint
  6. In the Basics section, complete the Subscription, Resource group, Name, and Region fields for your environment and then click Next: Resource.

    Endpoint Basics
  7. In the Resource section, complete the Connection Method and the Resource ID or Alias Field fields. The Request message value is optional.

    • For Connection Method, select the Connect to an Azure resource by resource ID or alias.

      Endpoint Resource
    • In Snowflake, execute SYSTEM$GET_PRIVATELINK_CONFIG and input the value for privatelink-pls-id into the Resource ID or Alias field. Note that the screenshot in this step uses the alias value for the east-us-2 region as a representative example, and that Azure confirms a valid alias value with a green checkmark.

  8. Return to the Private endpoints section and allow a few minutes to wait. On approval, the Private Endpoint displays a CONNECTION STATE value of Approved.

    Endpoint approved state
  9. DNS Setup. All requests to Snowflake need to be routed via the Private Endpoint. Update your DNS to resolve the Snowflake account and OCSP URLs to the private IP address of your Private Endpoint.

    • To get the endpoint IP address, navigate to Azure portal search bar and enter the name of the endpoint (i.e. the NAME value from Step 6). Locate the Network Interface result and click it.

      DNS endpoint setup
    • Copy the value for the Private IP address (i.e. 10.0.27.5).

      DNS private IP address
    • Configure your DNS to have your account and OCSP URLs resolve to the private IP address. In Snowflake, execute SYSTEM$GET_PRIVATELINK_CONFIG and use the values for private-link-account-url and private-link-ocsp-url.

      If you are using any of the following features or may use these features in the future, it is necessary to create an additional DNS record with the following values or combine the following values with the Snowflake account and OCSP cache server values. This step ensures access to these features via a Private Endpoint.

      Snowflake Data Marketplace or Snowsight

      app.<region_id>.privatelink.snowflakecomputing.com

      Organizations

      For more information, see Understanding Organization and Account Names.

      Note

      A full explanation of DNS configuration is beyond the scope of this procedure. For example, you can choose to integrate an Azure Private DNS zone into your environment. Please consult your internal Azure and Cloud Infrastructure administrators to configure and resolve the URLs in DNS properly.

  10. After verifying your outbound firewall settings and DNS records include your Azure Private Link account and OCSP URLs, test your connection to Snowflake with SnowCD (Connectivity Diagnostic Tool) and SYSTEM$WHITELIST_PRIVATELINK.

  11. Connect to Snowflake using SnowSQL.

You can now connect to Snowflake using Azure Private Link.

Using SSO with Azure Private Link¶

Snowflake supports using SSO with Azure Private Link. For more information, see:

  • Using SSO with Private Connectivity

  • OAuth and Private Connectivity

Blocking Public Access — Optional¶

After testing the Azure Private Link connectivity with Snowflake, you can optionally block public access to Snowflake using Network Policies.

Configure the CIDR block range to block public access to Snowflake using your organization’s IP address range. This range can be from within your virtual network.

Once the CIDR Block ranges are set, only IP addresses within the CIDR block range can access Snowflake.

To block public access using a network policy:

  1. Create a new network policy or edit an existing network policy. Add the CIDR block range for your organization.

  2. Activate the network policy for your account.

Next Previous |
  • Ask the Community
  • Contact Support
  • Report Doc Issue
Snowflake Inc.
  • Platform
    • Cloud Data Platform
    • Architecture
    • Pricing
    • Data Marketplace
  • Solutions
    • Snowflake for Healthcare & Life Sciences
    • Snowflake for Marketing Analytics
    • Snowflake for Retail
    • Snowflake for Education
    • Snowflake for Developers
  • Resources
    • Resource Library
    • Webinars
    • Community
    • Legal
  • Explore
    • News
    • Blog
    • Trending
  • About
    • About Snowflake
    • Leadership & Board
    • Careers
    • Contact
  • Privacy Notice
  • Site Terms

450 Concard Drive, San Mateo, CA, 94402, United States | 844-SNOWFLK (844-766-9355)

© 2021 Snowflake Inc. All Rights Reserved