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 la connectivité privée URL pour votre compte Open Catalog.
Étape 1 : Récupération de vos paramètres de 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 :
PrivateLinkCompte URL
PrivateLink Compte URL sans région
PrivateLink OCSP URL
PrivateLink OCSP URL sans région
ID du service Private Link
Vous collez ces valeurs lorsque vous Configurez l’accès à Open Catalog avec Azure Private Link et vous connectez à Open Catalog via le lien Azure Private Link.
Pour obtenir une description de chaque paramètre, voir Valeurs renvoyées pour la fonction système SYSTEM$GET_PRIVATELINK_CONFIG dans la documentation Snowflake. Dans ce chapitre, les noms des paramètres de compte sont au format JSON.
Note
N’oubliez pas que, le cas échéant, la description fait référence à un compte Snowflake, mais que votre valeur vient en fait de votre compte Snowflake Open Catalog. Par exemple, l’privatelink-account-url
est l’URL pour votre compte Snowflake Open Catalog.
En option : Pour récupérer ces valeurs au format JSON, Créer une CLI Snowflake de connexion pour Open Catalog, puis appelez la fonction système SYSTEM$GET_PRIVATELINK_CONFIG.
Étape 2 : Configurer 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 problèmes avec l’une de ces tâches de configuration, contactez le support Microsoft directement.
Cette section explique comment connecter votre VNet à l’Open Catalog VNet via Azure Private Link.
Pour compléter les instructions, vous devez utiliser la CLI Azure ou Azure PowerShell. Pour obtenir de l’aide sur l’installation, voir la documentation Microsoft pour le Azure CLI ou Azure PowerShell.
Après avoir établi 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 le compte se trouve dans le même déploiement que votre compte Open Catalog, la création d’un nouveau point de terminaison privé pour votre compte Open Catalog n’est pas nécessaire. Vous pouvez éventuellement ignorer cette étape.
Récupérez les détails de votre compte Azure. L’exemple suivant utilise la commande
az account list
de la CLI Azure.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, remplissez les champs Abonnement, Groupe de ressources, Nom et Région pour votre environnement, puis cliquez sur Suivant : Ressource.
Dans l’onglet Ressource, pour Méthode de connexion, sélectionnez Connexion à une ressource Azure par ressource ID ou alias.
Pour la ressource ID ou alias, saisissez la valeur pour
Private Link Service ID
que vous avez obtenu lorsque vous avez extrait vos paramètres de 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 la valeur de la ressource ID, puis répétez cette étape en utilisant cette valeur.
Lorsque le point de terminaison privé est approuvé, le paramètre CONNECTION STATE dans la section Points de terminaison privés de la page Private Link Center affiche la valeur En attente. Cette valeur devient Approuvé lorsque vous complétez l’autorisation dans la procédure suivante.
Activer 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 ressource de point de terminaison privé ID, un abonnement ID, et la valeur du jeton fédéré qui contient les identifiants d’accès pour un utilisateur fédéré.
Pour obtenir ces valeurs, exécutez les commandes suivantes dans la CLI Azure :
Pour obtenir votre ressource de point de terminaison privé ID, exécutez la commande suivante et copiez la valeur dans un éditeur de texte :
az network private-endpoint show
Pour obtenir l’abonnement ID, exécutez la commande suivante et notez la valeur dans 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 du jeton d’accès 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](https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider- Operations#microsoftsubscription). 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.
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 ID, entrez la ressource de point de terminaison privé ID que vous avez copiée dans un éditeur de texte.
Pour Jeton fédéré, saisissez 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 demandes adressées à Open Catalog doivent être acheminées par 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 de vos Paramètres de compte Open Catalog pour la connectivité privée soient résolues vers l’adresse IP privée.
Étape 3 : Connexion à 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
Configurez votre service DNS pour qu’il corresponde à la valeur que vous spécifiez 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 l’ID client à utiliser par le principal de service. |
|
Spécifie le secret client à utiliser par le principal de service. |
|
Spécifie l’URL pour vous connecter à votre compte Snowflake en utilisant AWS PrivateLink ou Azure Private Link.
|
|
Spécifie le rôle principal accordé au principal de service. |
Étape 4 (facultative) : Étape 2 : Créer une intégration de catalogue pour Snowflake¶
Si vous utilisez Snowflake pour interroger 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 de 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 Snowflake.
Note
Vous pouvez également configurer la connectivité privée pour l’UI de Snowflake Open Catalog. Cette configuration, combinée à la configuration de la connectivité privée pour votre compte Open Catalog, vous permet d’accéder à l’UI d’Open Catalog via une connectivité privée plutôt que sur l’Internet public.
Pour configurer cet accès, voir Configurer la connectivité privée pour l’UI de Snowflake Open Catalog.