Azure Private Link et Snowflake¶
Ce chapitre décrit comment configurer Azure Private Link pour connecter votre réseau virtuel Azure (VNet) au VNet Snowflake dans Azure.
Notez qu’Azure Private Link n’est pas un service fourni par Snowflake. Il s’agit d’un service Microsoft que Snowflake permet d’utiliser avec votre compte Snowflake.
Dans ce chapitre :
Présentation d’Azure Private Link¶
Azure Private Link fournit une connectivité privée à Snowflake en garantissant que l’accès à Snowflake se fait via une adresse IP privée. Le trafic ne peut se produire que depuis le réseau virtuel client (VNet) vers le VNet Snowflake à l’aide de la dorsale Microsoft et évite l’Internet public. Cela simplifie considérablement la configuration du réseau en gardant les règles d’accès privées tout en assurant une communication sécurisée et privée.
Le diagramme suivant résume l’architecture Azure Private Link par rapport au VNet client et au VNet Snowflake.
Depuis une machine virtuelle (1) ou via l’homologation (2), vous pouvez vous connecter au point de terminaison Azure Private Link (3) dans votre réseau virtuel. Ce point de terminaison se connecte ensuite au service Private Link (4) et effectue l’acheminement vers Snowflake.
Voici les étapes de haut niveau pour intégrer Snowflake à Azure Private Link :
Créez un point de terminaison privé.
Générez et récupérez un jeton d’accès à partir de votre abonnement Azure.
Activez votre compte Snowflake sur Azure pour utiliser Azure Private Link.
Mettez à jour vos paramètres de pare-feu sortant pour autoriser l’URL du compte Snowflake et l’URL OCSP.
Mettez à jour votre serveur DNS pour résoudre l’URL du compte et l’URL OCSP en adresse IP Private Link. Vous pouvez ajouter l’entrée DNS à votre serveur DNS local ou DNS privé sur votre VNet, et utiliser le transfert DNS afin de diriger les requêtes pour l’entrée à partir d’autres emplacements où vos utilisateurs accéderont à Snowflake.
Une fois que le point de terminaison privé affiche une valeur CONNECTION STATE Approved, testez votre connexion à Snowflake avec SnowCD (Connectivity Diagnostic Tool) et SYSTEM$WHITELIST_PRIVATELINK.
Connectez-vous à Snowflake à l’aide de SnowSQL.
Exigences et limitations¶
Avant d’essayer de configurer Azure Private Link pour connecter votre VNet Azure au VNet Snowflake sur Azure, évaluez les exigences et limitations suivantes :
Le sous-réseau contenant le point de terminaison privé doit avoir sa politique réseau désactivée. Plus précisément, les propriétés de sous-réseau doivent inclure les deux attributs suivants :
"privateLinkServiceNetworkPolicies" : "Disabled", "privateEndpointNetworkPolicies" : "Disabled"
Note
Si vos protocoles réseau d’entreprise nécessitent que le sous-réseau dans lequel réside le point de terminaison Azure Private Link contienne des politiques réseau activées, vous devez configurer un sous-réseau distinct qui contient uniquement le point de terminaison Azure Private Link et acheminer les demandes d’autres sous-réseaux vers le sous-réseau contenant le point de terminaison Azure Private Link.
Utilisez des VNets ARM.
Utilisez uniquement le trafic TCP IPv4.
Si vous utilisez une application SaaS pour vous connecter à Snowflake, vous ne pouvez pas utiliser l’application SaaS et Azure Private Link ensemble. Vous pouvez continuer à utiliser l’application SaaS pour vous connecter à Snowflake via des chemins qui n’utilisent pas Azure Private Link.
Pour plus d’informations sur les exigences et les limitations de Microsoft Azure Private Link, consultez la documentation Microsoft relative aux limitations des points de terminaison privés et aux limitations du service Private Link.
Configuration de l’accès à Snowflake avec Azure Private Link¶
Attention
Cette section ne couvre que les détails spécifiques à Snowflake pour la configuration de votre environnement VNet. De plus, notez que Snowflake n’est pas responsable de la configuration finale des mises à jour de pare-feu nécessaires et des enregistrements DNS. Si vous rencontrez des problèmes avec l’une de ces tâches de configuration, veuillez contacter le support Microsoft directement.
Cette section décrit comment configurer votre VNet Azure pour se connecter au VNet Snowflake sur Azure à l’aide d’Azure Private Link. Après avoir établi la connexion à Snowflake à l’aide d’Azure Private Link, vous pouvez déterminer l’état d’approbation de la connexion dans le portail Azure.
Pour obtenir de l’aide sur l’installation, consultez la documentation Microsoft sur Azure CLI ou Azure PowerShell.
Effectuez l’option 1 : utilisez les fichiers de modèle ou l’option 2 : créez manuellement des ressources Azure pour configurer votre VNet Microsoft Azure et initier la connexion Azure Private Link à Snowflake.
Important
Les options 1 et 2 font les deux hypothèses suivantes :
Votre cas d’utilisation n’implique pas l’utilisation de SSO avec Azure Private Link.
Il est nécessaire de créer à la fois le sous-réseau et le point de terminaison privé. Si votre cas d’utilisation nécessite uniquement le point de terminaison privé, utilisez les fichiers correspondants dans Étape 1 de Option 1 : utilisez les fichiers de modèle.
Option 1 : utilisez les fichiers de modèle¶
Cette séquence d’étapes utilise deux fichiers de configuration différents pour créer et initialiser les ressources Azure Private Link nécessaires pour utiliser Azure Private Link pour se connecter à Snowflake sur Azure. Les fichiers de configuration sont de deux types :
- Fichier modèle
Utilisez ce fichier pour créer un point de terminaison privé et un sous-réseau pour ce point de terminaison.
- Fichier de paramètres
Utilisez ce fichier pour initialiser les ressources créées par le fichier modèle.
Selon votre environnement Azure, il peut ne pas être nécessaire de créer un sous-réseau dédié. Si vous disposez déjà d’un sous-réseau dédié pour le point de terminaison privé, vous pouvez utiliser les fichiers correspondants pour créer le point de terminaison dans ce sous-réseau.
À titre d’exemple représentatif, les étapes suivantes supposent qu’un sous-réseau dédié et un point de terminaison privé sont nécessaires.
Prudence
Les fichiers de modèle et les scripts créent des ressources dans votre environnement Azure pour faciliter la connexion à Snowflake à l’aide d’Azure Private Link. Faites preuve de prudence lorsque vous terminez la procédure de configuration. Pour obtenir de l’aide et une assistance supplémentaires, veuillez contacter votre administrateur Azure interne.
Téléchargez ces deux fichiers pour les utiliser dans les étapes suivantes :
À titre d’exemple représentatif utilisant CLI Azure, exécutez
az account list --output table
. Notez les valeurs de sortie dans les colonnesSubscriptionID
,Name
(tronqué) etCloudName
.Name CloudName SubscriptionId State IsDefault ------- ---------- ------------------------------------ ------- ---------- MyCloud AzureCloud 13c... Enabled True
Pour chaque paramètre dans
customer-privatelink-parameters.json
, mettez à jour le paramètrevalue
en fonction de votre environnement. Par exemple, remplacez la valeurvirtualNetworkName
deprivateLinkConsumer_vnet
parmyVirtualNetwork
.Pour déterminer la valeur d’alias correcte pour
snowflakePrivatelinkServiceAlias
, exécutez SYSTEM$GET_PRIVATELINK_CONFIG dans Snowflake et utilisez la valeur pourprivatelink-pls-id
.Dans Azure CLI, exécutez les trois commandes suivantes en utilisant les valeurs de l’étape précédente. Ces commandes créent les ressources définies dans les fichiers de modèles et de paramètres, y compris le point de terminaison privé. Notez que ces valeurs sont des exemples représentatifs.
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
Remplacez
<nom_cloud_client>
parAzureCloud
.Remplacez
<nom_abonnement_client>
parMyCloud
.Vous pouvez choisir un nom arbitraire pour
CUSTOMER_RESOURCE_GROUP
.
Activez votre compte Snowflake sur Azure pour utiliser Azure Private Link en effectuant les étapes suivantes :
Dans votre environnement de ligne de commande, enregistrez la valeur de l’ID de la ressource du point de terminaison privé à l’aide de la commande Azure CLI network suivante :
az network private-endpoint show
Le point de terminaison privé a été créé dans les étapes précédentes en utilisant les fichiers modèles. La valeur de l’ID de la ressource prend la forme suivante, dont la valeur est tronquée :
/subscriptions/26d.../resourcegroups/sf-1/providers/microsoft.network/privateendpoints/test-self-service
Dans votre environnement de ligne de commande, exécutez la commande suivante Azure CLI account et enregistrez le résultat. La sortie sera utilisée comme valeur pour l’argument
federated_token
dans l’étape suivante.az account get-access-token --subscription <SubscriptionID>
Extraire la valeur du jeton d’accès de la sortie de la commande. Cette valeur sera la valeur
federated_token
dans l’étape suivante. Dans cet exemple, les valeurs sont tronquées et la valeur du jeton d’accès esteyJ...
:{ "accessToken": "eyJ...", "expiresOn": "2021-05-21 21:38:31.401332", "subscription": "0cc...", "tenant": "d47...", "tokenType": "Bearer" }
Important
L’utilisateur qui génère le jeton d’accès Azure doit avoir des droits de lecture sur l’abonnement. L’autorisation la moins privilégiée est Microsoft.Subscription/subscriptions/acceptOwnershipStatus/read. Alternativement, le rôle par défaut
Reader
accorde des autorisations plus larges.La valeur
accessToken
est une information sensible et doit être traitée comme un mot de passe — ne partagez pas cette valeur.S’il est nécessaire de contacter le support Snowflake, supprimez le jeton d’accès de toute commande et URLs avant de créer un ticket de support.
Dans Snowflake, appelez la fonction SYSTEM$AUTHORIZE_PRIVATELINK en utilisant comme arguments la valeur
private-endpoint-resource-id
et la valeurfederated_token
qui sont tronquées dans cet exemple :use role accountadmin; select SYSTEM$AUTHORIZE_PRIVATELINK ( '/subscriptions/26d.../resourcegroups/sf-1/providers/microsoft.network/privateendpoints/test-self-service', 'eyJ...');
Pour vérifier votre configuration autorisée, appelez la fonction SYSTEM$GET_PRIVATELINK de votre compte Snowflake sur AWS. Snowflake renvoie
Account is authorized for PrivateLink.
pour une autorisation réussie.S’il est nécessaire de désactiver Azure Private Link dans votre compte Snowflake, appelez la fonction SYSTEM$REVOKE_PRIVATELINK en utilisant les valeurs des arguments pour
privatelink-pls-id
etfederated_token
.Configuration DNS. Toutes les demandes adressées à Snowflake doivent être acheminées via le point de terminaison privé. Mettez à jour vos DNS pour résoudre les URL et les URL OCSP du compte Snowflake vers l’adresse IP privée de votre point de terminaison privé.
Pour obtenir l’adresse IP du point de terminaison privé, accédez au portail Azure Private Link Center. Cliquez sur Private endpoints et cliquez sur le point de terminaison.
Copiez la valeur de Private IP address (c’est-à-dire
10.0.27.5
).Configurez votre DNS pour que les URLs de votre compte et OCSP résolvent l’adresse IP privée. Dans Snowflake, exécutez SYSTEM$GET_PRIVATELINK_CONFIG et utilisez les valeurs pour
private-link-account-url
etprivate-link-ocsp-url
.Si vous utilisez l’une des fonctionnalités suivantes ou êtes susceptible de les utiliser à l’avenir, il est nécessaire de créer un enregistrement DNS supplémentaire avec les valeurs suivantes ou de combiner les valeurs suivantes avec les valeurs du compte Snowflake et du serveur de cache OCSP. Cette étape garantit l’accès à ces fonctionnalités via un point de terminaison privé.
- Snowflake Data Marketplace ou Snowsight
app.<id_région>.privatelink.snowflakecomputing.com
- Organisations
<nom_de_l'organisation>-<nom_du_compte>.privatelink.snowflakecomputing.com
Pour plus d’informations, voir Identificateurs de compte.
Note
Une explication complète de la configuration de DNS dépasse le cadre de cette procédure. Par exemple, vous pouvez choisir d’intégrer une zone DNS Azure Private dans votre environnement.
Veuillez contacter les administrateurs de votre infrastructure Azure et Cloud interne pour configurer et résoudre correctement les URLs dans les DNS.
Après avoir vérifié vos paramètres de pare-feu sortant et vos enregistrements DNS pour inclure votre compte Azure Private Link et les URLs OCSP, testez votre connexion à Snowflake avec SnowCD (Connectivity Diagnostic Tool) et SYSTEM$WHITELIST_PRIVATELINK.
Connectez-vous à Snowflake à l’aide de SnowSQL.
Vous pouvez maintenant vous connecter à Snowflake à l’aide d’Azure Private Link.
Option 2 : créez manuellement des ressources Azure¶
Cette séquence d’étapes crée et initialise manuellement les ressources Azure Private Link nécessaires pour utiliser Azure Private Link pour se connecter à Snowflake sur Azure.
À titre d’exemple représentatif utilisant CLI Azure, exécutez
az account list --output table
. Notez les valeurs de sortie dans les colonnesName
,SubscriptionID
etCloudName
.Name CloudName SubscriptionId State IsDefault ------- ---------- ------------------------------------ ------- ---------- MyCloud AzureCloud 13c... Enabled True
Accédez au portail Azure. Recherchez Private Link et cliquez sur Private Link.
Cliquez sur Private endpoints puis sur Add.
Dans la section Basics, remplissez les champs Subscription, Resource group, Name et Region pour votre environnement, puis cliquez sur Next: Resource.
Dans la section Resource, complétez les champs Connection Method et Resource ID or Alias Field. La valeur Request message est facultative.
Pour Connection Method, sélectionnez Connect to an Azure resource by resource ID or alias.
Dans Snowflake, exécutez SYSTEM$GET_PRIVATELINK_CONFIG et entrez la valeur de
privatelink-pls-id
dans le champ Resource ID or Alias. Notez que la capture d’écran de cette étape utilise la valeur d’alias pour la régioneast-us-2
comme exemple représentatif et qu’Azure confirme une valeur d’alias valide avec une coche verte.
Revenez à la section Private endpoints et attendez quelques minutes. Une fois approuvé, le point de terminaison privé affiche une valeur CONNECTION STATE Pending. Cette valeur sera mise à jour sur Approved après avoir complété l’autorisation dans l’étape suivante.
Activez votre compte Snowflake sur Azure pour utiliser Azure Private Link en effectuant les étapes suivantes :
Dans votre environnement de ligne de commande, enregistrez la valeur de l’ID de la ressource du point de terminaison privé à l’aide de la commande Azure CLI network suivante :
az network private-endpoint show
Le point de terminaison privé a été créé dans les étapes précédentes en utilisant les fichiers modèles. La valeur de l’ID de la ressource prend la forme suivante, dont la valeur est tronquée :
/subscriptions/26d.../resourcegroups/sf-1/providers/microsoft.network/privateendpoints/test-self-service
Dans votre environnement de ligne de commande, exécutez la commande suivante Azure CLI account et enregistrez le résultat. La sortie sera utilisée comme valeur pour l’argument
federated_token
dans l’étape suivante.az account get-access-token --subscription <SubscriptionID>
Renvoie (tronqué) :
{ "accessToken": "eyJ...", "expiresOn": "2021-05-21 21:38:31.401332", "subscription": "0cc...", "tenant": "d47...", "tokenType": "Bearer" }
Important
L’utilisateur qui génère le jeton d’accès Azure doit avoir des droits de lecture sur l’abonnement. L’autorisation la moins privilégiée est Microsoft.Subscription/subscriptions/acceptOwnershipStatus/read. Alternativement, le rôle par défaut
Reader
accorde des autorisations plus larges.La valeur
accessToken
est une information sensible et doit être traitée comme un mot de passe — ne partagez pas cette valeur.S’il est nécessaire de contacter le support Snowflake, supprimez le jeton d’accès de toute commande et URLs avant de créer un ticket de support.
Dans Snowflake, appelez la fonction SYSTEM$AUTHORIZE_PRIVATELINK en utilisant comme arguments la valeur
private-endpoint-resource-id
et la valeurfederated_token
qui sont tronquées dans cet exemple :use role accountadmin; select SYSTEM$AUTHORIZE_PRIVATELINK ( '/subscriptions/26d.../resourcegroups/sf-1/providers/microsoft.network/privateendpoints/test-self-service', '{ "accessToken": "eyJ...", "expiresOn": "2021-05-21 21:38:31.401332", "subscription": "13c...", "tenant": "d47...", "tokenType": "Bearer" }' );
Pour vérifier votre configuration autorisée, appelez la fonction SYSTEM$GET_PRIVATELINK de votre compte Snowflake sur AWS. Snowflake renvoie
TRUE
pour une autorisation réussie.S’il est nécessaire de désactiver Azure Private Link dans votre compte Snowflake, appelez la fonction SYSTEM$REVOKE_PRIVATELINK en utilisant les valeurs des arguments pour
private-endpoint-resource-id
etfederated_token
.Configuration DNS. Toutes les demandes adressées à Snowflake doivent être acheminées via le point de terminaison privé. Mettez à jour vos DNS pour résoudre les URLs OCSP et du compte Snowflake vers l’adresse IP privée de votre interface de point de terminaison privé.
Pour obtenir l’adresse IP du point de terminaison, accédez à la barre de recherche du portail Azure et saisissez le nom du point de terminaison (c’est-à-dire la valeur NAME de l’étape 5). Localisez le résultat de l’interface réseau et cliquez dessus.
Copiez la valeur de Private IP address (c’est-à-dire
10.0.27.5
).Configurez votre DNS pour que les URLs de votre compte et OCSP résolvent l’adresse IP privée. Dans Snowflake, exécutez SYSTEM$GET_PRIVATELINK_CONFIG et utilisez les valeurs pour
private-link-account-url
etprivate-link-ocsp-url
.Si vous utilisez l’une des fonctionnalités suivantes ou êtes susceptible de les utiliser à l’avenir, il est nécessaire de créer un enregistrement DNS supplémentaire avec les valeurs suivantes ou de combiner les valeurs suivantes avec les valeurs du compte Snowflake et du serveur de cache OCSP. Cette étape garantit l’accès à ces fonctionnalités via un point de terminaison privé.
- Snowflake Data Marketplace ou Snowsight
app.<id_région>.privatelink.snowflakecomputing.com
- Organisations
<nom_de_l'organisation>-<nom_du_compte>.privatelink.snowflakecomputing.com
Pour plus d’informations, voir Identificateurs de compte.
Note
Une explication complète de la configuration de DNS dépasse le cadre de cette procédure. Par exemple, vous pouvez choisir d’intégrer une zone DNS Azure Private dans votre environnement. Veuillez contacter les administrateurs de votre infrastructure Azure et Cloud interne pour configurer et résoudre correctement les URLs dans les DNS.
Après avoir vérifié que vos paramètres de pare-feu sortant et vos enregistrements DNS incluent votre compte Azure Private Link et les URLs OCSP, testez votre connexion à Snowflake avec SnowCD (Connectivity Diagnostic Tool) et SYSTEM$WHITELIST_PRIVATELINK.
Connectez-vous à Snowflake à l’aide de SnowSQL.
Vous pouvez maintenant vous connecter à Snowflake à l’aide d’Azure Private Link.
Utilisation de SSO avec Azure Private Link¶
Snowflake prend en charge l’utilisation de SSO avec Azure Private Link. Pour plus d’informations, voir :
Utilisation de la redirection des clients avec Azure Private Link¶
Snowflake prend en charge l’utilisation de la redirection des clients avec Azure Private Link.
Pour plus d’informations, voir Rediriger les connexions du client.
Blocage de l’accès public — Facultatif¶
Après avoir testé la connectivité Azure Private Link avec Snowflake, vous pouvez éventuellement configurer le blocage de l’accès public à Snowflake à l’aide de Politiques réseau.
Configurez la plage de blocage CIDR pour bloquer l’accès public à Snowflake à l’aide de la plage d’adresses IP de votre entreprise. Cette plage peut provenir de votre réseau virtuel.
Une fois les plages de blocage CIDR définies, seules les adresses IP comprises dans la plage de blocage CIDR peuvent accéder à Snowflake.
Pour bloquer l’accès public à l’aide d’une politique réseau :
Créez une politique réseau ou modifiez une politique réseau existante. Ajoutez la plage de blocage CIDR pour votre organisation.
Activez la politique réseau pour votre compte.