Azure Private Link et Snowflake Open Catalog¶
Cette rubrique décrit comment configurer Azure Private Link pour connecter directement votre compte Snowflake Open Catalog à votre moteur de requête en utilisant la connectivité privée entrante.
Conditions préalables¶
Votre compte Snowflake Open Catalog est hébergé sur Azure.
Vous disposez des autorisations nécessaires pour configurer votre service DNS avec l’URL de connectivité privée pour votre compte Open Catalog.
Étape 1 : récupérez les paramètres de votre compte Open Catalog¶
Récupérez les paramètres suivants pour configurer l’accès à Open Catalog avec Azure Private Link.
Connectez-vous à Snowflake Open Catalog.
Dans le menu de navigation, sélectionnez Paramètres.
Sur la page Paramètres, copiez les valeurs des paramètres suivants dans un éditeur de texte :
Compte PrivateLink : URL
Compte PrivateLink sans région : URL
PrivateLink OCSP URL
URLOCSPPrivateLink sans région
ID de service Private Link
Vous collerez ces valeurs lors de la configuration de l’accès à Open Catalog avec Azure Private Link et de la connexion à Open Catalog via Azure Private Link.
Pour une description de chaque paramètre, voir Valeurs de retour pour la fonction système SYSTEM$GET_PRIVATELINK_CONFIG dans la documentation de Snowflake. Dans cette rubrique, les noms des paramètres des comptes sont au format JSON.
Note
N’oubliez pas que, le cas échéant, la référence est celle d’un compte Snowflake, mais que votre valeur est en fait celle de votre compte Snowflake Open Catalog. Par exemple, l”privatelink-account-url
est l’URL de votre compte Snowflake Open Catalog.
Facultatif : pour récupérer ces valeurs au format JSON, créez une connexion Snowflake CLI pour Open Catalog, puis appelez la fonction système SYSTEM$GET_PRIVATELINK_CONFIG.
Étape 2 : configurez l’accès à Open Catalog avec Azure Private Link¶
Attention
Cette section ne couvre que les détails spécifiques à Open Catalog 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 difficultés avec l’une de ces tâches de configuration, contactez directement le service d’assistance de Microsoft.
Cette section décrit comment connecter votre VNet au VNet Open Catalog à l’aide d’Azure Private Link.
Pour compléter les instructions, vous devez utiliser Azure CLI ou Azure PowerShell. Pour obtenir de l’aide sur l’installation, consultez la documentation Microsoft pour Azure CLI ou Azure PowerShell.
Après avoir initié la connexion à Snowflake Open Catalog à l’aide d’Azure Private Link, vous pouvez déterminer l’état d’approbation de la connexion dans le portail Azure.
Créez un point de terminaison privé.¶
Note
Si vous avez déjà créé un point de terminaison privé pour votre compte Snowflake et que ce compte se trouve dans le même déploiement que votre compte Open Catalog, il n’est pas nécessaire de créer un nouveau point de terminaison privé pour votre compte Open Catalog. Vous pouvez éventuellement sauter cette étape.
Récupérez les détails de votre compte Azure. L’exemple suivant utilise la commande
az account list
d’Azure CLI.Name CloudName SubscriptionId State IsDefault ------- ---------- ------------------------------------ ------- ---------- MyCloud AzureCloud 13c... Enabled True
Dans le portail Azure, recherchez Private Link, puis sélectionnez Private Link dans les résultats.
Cliquez sur Points de terminaison privés, puis cliquez sur Ajouter.
Dans l’onglet Bases, complétez les champs Abonnement, Groupe de ressource, Nom et Région pour votre environnement, puis cliquez sur Suivant : Ressource.
Dans l’onglet Resource, pour Méthode de connexion, sélectionnez Se connecter à une ressource Azure par ID ou alias de ressource.
Pour l’ID ou l’alias de ressource, entrez la valeur pour
Private Link Service ID
que vous avez obtenue lorsque vous avez récupéré les paramètres de votre compte Open Catalog pour la connectivité privée.Si vous recevez un message d’erreur concernant la valeur de l’alias, contactez le support Snowflake pour obtenir la valeur de l’ID de ressource, puis répétez cette étape en utilisant cette valeur.
Lorsque le point de terminaison privé est approuvé, la valeur CONNECTION STATE de la section Points de terminaison privés de la page Private Link Center affiche la valeur En attente. Cette valeur passe à Approuvé lorsque vous terminez l’autorisation dans la procédure suivante.
Activez la connectivité privée entrante¶
Dans cette procédure, vous activez Azure Private Link pour votre compte Open Catalog. Cette configuration permet au moteur de requête de se connecter à Open Catalog via une connectivité privée. Vous aurez besoin de votre ID de ressource de point de terminaison privée, d’un ID d’abonnement et de la valeur du jeton d’accès fédéré qui contient les identifiants d’accès d’un utilisateur fédéré.
Pour obtenir ces valeurs, exécutez les commandes suivantes dans Azure CLI:
Pour obtenir l’ID de ressource de votre point de terminaison privé, exécutez la commande suivante et copiez la valeur dans un éditeur de texte :
az network private-endpoint show
Pour obtenir l’ID d’abonnement, exécutez la commande suivante et notez la valeur de la colonne SubscriptionID dans la sortie :
az account list --output table
Pour obtenir la valeur du jeton fédéré, exécutez la commande suivante et copiez la valeur accessToken dans un éditeur de texte :
az account get-access-token --subscription <SubscriptionID>
Où :
SubscriptionID
est l’identificateur unique que vous avez obtenu à l’étape précédente.
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 pas partager 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.
Connectez-vous à Snowflake Open Catalog.
Dans le menu de navigation, sélectionnez Paramètres.
Sélectionnez Autoriser.
Dans la boîte de dialogue Autoriser Private Link, activez la connectivité privée pour votre compte :
Pour l”ID, entrez l’ID de ressource de point de terminaison privée que vous avez copiée dans un éditeur de texte.
Pour le jeton fédéré, entrez la valeur du jeton fédéré que vous avez copiée dans un éditeur de texte.
Sélectionnez Enregistrer.
Configuration des DNS¶
Toutes les requêtes adressées au catalogue ouvert doivent être routées via le point de terminaison privé. Pour résoudre le compte Open Catalog et les URLs OCSP vers l’adresse IP privée de votre point de terminaison privé, mettez à jour votre DNS.
Pour obtenir l’adresse IP du point de terminaison, dans la barre de recherche du portail Azure, saisissez le nom du point de terminaison privé que vous avez créé.
Sélectionnez le résultat de l’interface réseau.
Copiez la valeur de l’adresse IP privée.
Configurez votre DNS pour que les valeurs de point de terminaison appropriées, issues des paramètres de votre compte Open Catalog pour la connectivité privée résolvent l’adresse IP privée.
Étape 3 : connectez-vous à Open Catalog via Azure Private Link¶
Pour enregistrer une connexion de service et connecter votre moteur de requête à Open Catalog via Azure Private Link, utilisez le code suivant :
import pyspark from pyspark.sql import SparkSession spark = SparkSession.builder.appName('iceberg_lab') \ .config('spark.jars.packages', 'org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.1,<maven_coordinate>') \ .config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \ .config('spark.sql.defaultCatalog', 'opencatalog') \ .config('spark.sql.catalog.opencatalog', 'org.apache.iceberg.spark.SparkCatalog') \ .config('spark.sql.catalog.opencatalog.type', 'rest') \ .config('spark.sql.catalog.opencatalog.uri','https://<open_catalog_privatelink_account_url>/polaris/api/catalog') \ .config('spark.sql.catalog.opencatalog.header.X-Iceberg-Access-Delegation','vended-credentials') \ .config('spark.sql.catalog.opencatalog.credential','<client_id>:<client_secret>') \ .config('spark.sql.catalog.opencatalog.warehouse','<catalog_name>') \ .config('spark.sql.catalog.opencatalog.scope','PRINCIPAL_ROLE:<principal_role_name>') \ .getOrCreate()
Paramètres¶
Note
Veillez à ce que votre service DNS soit paramétré pour correspondre à la valeur spécifiée pour <open_catalog_account_identifier>
.
Paramètre |
Description |
---|---|
|
Spécifie le nom du catalogue auquel se connecter. |
|
Spécifie les coordonnées Maven pour votre fournisseur de stockage Cloud externe :
|
|
Spécifie la valeur ID client que le principal de service doit utiliser. |
|
Spécifie le secret client que le principal de service doit utiliser. |
|
Spécifie l’URL pour se connecter à votre compte Snowflake à l’aide de AWS PrivateLink ou d’Azure Private Link.
|
|
Spécifie le rôle principal attribué au principal de service. |
Étape 4 (facultative) : créez une intégration de catalogue pour Snowflake¶
Si vous utilisez Snowflake pour effectuer des requêtes sur des tables gérées par Open Catalog, créez un catalogue pour Snowflake qui utilise une adresse IP privée. Pour créer cette intégration de catalogue, votre compte Snowflake doit être dans le même déploiement que votre compte Open Catalog.
Pour un exemple, voir Exemple : Intégration d'un catalogue qui utilise une adresse IP privée <https://docs.snowflake.com/en/user-guide/tables-iceberg-open-catalog-query#example-catalog-integration-that-uses-a-private-ip-address>
_ dans la documentation de Snowflake.
Note
Vous pouvez également configurer la connectivité privée pour l’UI Snowflake Open Catalog. Cette configuration, associée à la configuration de la connectivité privée pour votre compte Open Catalog, vous permet d’accéder à l’UI Open Catalog par une connectivité privée plutôt que via l’internet public.
Pour configurer cet accès, voir Configurer la connectivité privée pour l’UI Snowflake Open Catalog..