Configuration d’un volume externe pour Azure¶
Accordez à Snowflake un accès restreint à votre propre conteneur Microsoft Azure à l’aide d’un volume externe. Snowflake prend en charge les services de stockage Cloud Azure suivants pour les volumes externes :
Stockage d’objets blob
Data Lake Storage Gen2
Usage général v1
Usage général v2
Microsoft Fabric OneLake
Note
Pour renforcer votre sécurité, vous pouvez configurer un volume externe de manière à ce qu’il utilise une connectivité privée plutôt que l’internet public pour le trafic réseau. Pour plus d’informations, voir Connectivité privée vers des volumes externes pour Microsoft Azure.
Pour configurer un volume externe pour Azure, vous pouvez utiliser SQL ou utiliser Snowsight.
Conditions préalables¶
Avant de configurer un volume externe, vous avez besoin des éléments suivants :
Un conteneur de stockage Azure.
Pour utiliser le volume externe pour les tables Iceberg gérées en externe, tous vos fichiers de métadonnées et de données de table doivent être situés dans le conteneur.
Pour faciliter la récupération des données, activez la gestion des versions pour votre emplacement de stockage Cloud externe.
Autorisations dans Azure pour créer et gérer des politiques et des rôles IAM. Si vous n’êtes pas un administrateur Azure, demandez à votre administrateur Azure d’effectuer ces tâches.
Si vous utilisez un pare-feu de stockage Azure pour bloquer le trafic non autorisé sur votre compte de stockage, suivez les instructions dans Allow the VNet subnet IDs pour accorder explicitement à Snowflake l’accès à votre compte de stockage Azure.
Configurer un volume externe en utilisant SQL¶
Étape 1 : Créer un volume externe dans Snowflake¶
Créez un volume externe via la commande CREATE EXTERNAL VOLUME.
Note
Seuls les administrateurs de compte (utilisateurs dotés du rôle ACCOUNTADMIN) peuvent exécuter cette commande SQL.
L’exemple suivant crée un volume externe qui définit un emplacement de stockage Azure avec chiffrement :
CREATE EXTERNAL VOLUME exvol
STORAGE_LOCATIONS =
(
(
NAME = 'my-azure-northeurope'
STORAGE_PROVIDER = 'AZURE'
STORAGE_BASE_URL = 'azure://exampleacct.blob.core.windows.net/my_container_northeurope/'
AZURE_TENANT_ID = 'a123b4c5-1234-123a-a12b-1a23b45678c9'
)
);
Note
Utilisez le préfixe
azure://et nonhttps://lorsque vous spécifiez une valeur pour STORAGE_BASE_URL.Pour obtenir des informations sur la spécification d’un emplacement OneLake (fonction en avant-première), consultez la page de référence CREATE EXTERNAL VOLUME.
Si vous utilisez un point de terminaison régional pour un emplacement de stockage Microsoft Fabric OneLake, utilisez la même région que votre capacité Microsoft Fabric. Il doit s’agir de la même région que celle qui héberge votre compte Snowflake.
Étape 2 : Accorder à Snowflake un accès à l’emplacement de stockage¶
Pour récupérer une URL vers la page de demande d’autorisations Microsoft, utilisez la commande DESCRIBE EXTERNAL VOLUME. Indiquez le nom du volume externe que vous avez créé précédemment.
DESC EXTERNAL VOLUME exvol;
Enregistrez les valeurs des propriétés suivantes :
Propriété
Description
AZURE_CONSENT_URLURL vers la page de demande d’autorisations de Microsoft.
AZURE_MULTI_TENANT_APP_NAMENom de l’application client Snowflake créée pour votre compte. Ultérieurement dans cette section, vous accorderez à cette application l’autorisation nécessaire pour obtenir un jeton d’accès sur votre emplacement de stockage autorisé.
Vous utiliserez ces valeurs dans les étapes suivantes.
Dans un navigateur web, accédez à la page de demande d’autorisations Microsoft (l”
AZURE_CONSENT_URL).Sélectionnez Accept. Cette action permet au principal du service Azure créé pour votre compte Snowflake d’obtenir un jeton d’accès sur une ressource indiquée à l’intérieur de votre client. L’obtention d’un jeton d’accès ne réussit que si vous accordez au principal du service les autorisations appropriées au niveau du compte de stockage (voir l’étape suivante).
La page de demande d’autorisations Microsoft redirige vers le site d’entreprise de Snowflake (snowflake.com).
Connectez-vous au portail Microsoft Azure.
Allez à Azure Services » Storage Accounts. Sélectionnez le nom du compte de stockage auquel le principal de service Snowflake doit accéder.
Note
Vous devez définir des autorisations IAM pour un volume externe au niveau du compte de stockage, et non au niveau du conteneur.
Sélectionnez Access Control (IAM) » Add role assignment.
Sélectionnez le rôle
Storage Blob Data Contributorpour accorder un accès en lecture et en écriture au principal du service Snowflake.Note
Le rôle
Storage Blob Data Contributorpermet d’accéder en écriture à l’emplacement du volume externe. Pour une configuration complète de l’accès en écriture, définissez le paramètreALLOW_WRITESdu volume externe surTRUE(la valeur par défaut).
Sélectionnez + Select members.
Recherchez le principal du service Snowflake. Il s’agit de l’identité de la propriété AZURE_MULTI_TENANT_APP_NAME dans la sortie DESC EXTERNAL VOLUME (à l’étape 1). Recherchez la chaîne avant le trait de soulignement dans la propriété AZURE_MULTI_TENANT_APP_NAME.
Important
Azure peut prendre une heure ou plus pour créer le principal de service Snowflake demandé via la page de demande Microsoft dans cette section. Si le principal du service n’est pas disponible immédiatement, attendez une heure ou deux, puis relancez la recherche.
Si vous supprimez le principal du service, le volume externe cesse de fonctionner.
Sélectionnez Review + assign.
Note
Lors de l’attribution d’un rôle, il faut compter jusqu’à 10 minutes pour que les modifications soient prises en compte. Pour plus d’informations, voir Symptôme - Les changements d’attribution de rôle ne sont pas détectés dans la documentation Microsoft Azure.
Étape 3 : Vérifier l’accès au stockage¶
Pour vérifier que Snowflake peut s’authentifier avec succès auprès de votre fournisseur de stockage, appelez la fonction SYSTEM$VERIFY_EXTERNAL_VOLUME.
SELECT SYSTEM$VERIFY_EXTERNAL_VOLUME('my_external_volume');
Note
Si vous recevez l’erreur suivante, cela signifie que l’administrateur de votre compte doit activer AWS STS dans la région de déploiement de Snowflake. Pour obtenir des instructions, consultez Gérer AWS STS dans une région AWS dans la documentation AWS.
Error assuming AWS_ROLE:
STS is not activated in this region for account:<external volume id>. Your account administrator can activate STS in this region using the IAM Console.
Configurer un volume externe dans Snowsight¶
Connectez-vous à Snowsight.
Dans le coin inférieur gauche, sélectionnez votre nom » Switch role, puis sélectionnez ACCOUNTADMIN ou un rôle disposant du privilège CREATE EXTERNAL VOLUME.
Pour plus d’informations, voir Changer de rôle principal.
Dans le menu de navigation, sélectionnez Catalog » External data.
Sélectionnez l’onglet External volumes.
Sélectionnez + Create.
Sélectionnez Microsoft Azure & OneLake puis Next.
À partir de la page Prerequisites, pour Azure tenant ID, indiquez votre ID de client Azure.
Pour trouver votre ID de client Azure, consultez Comment trouver votre ID de client Microsoft Entra dans la documentation Microsoft Entra.
Sélectionnez Next.
À partir de la page Grant storage access, pour accorder à Snowflake l’accès à l’emplacement de stockage, procédez comme suit :
Pour donner votre consentement à Snowflake afin qu’il se connecter au stockage Azure ou Microsoft OneLake, sélectionnez Provide consent.
La page de demande d’autorisations Microsoft s’ouvre dans un nouvel onglet du navigateur.
Sur la page de demande d’autorisations de Microsoft, sélectionnez Accept. Cette action permet au principal du service Azure créé pour votre compte Snowflake d’obtenir un jeton d’accès sur une ressource indiquée à l’intérieur de votre client. L’obtention d’un jeton d’accès ne réussit que si vous accordez au principal du service les autorisations appropriées au niveau du compte de stockage (voir l’étape suivante).
La page de demande d’autorisations Microsoft redirige vers le site d’entreprise de Snowflake (snowflake.com).
Dans Snowflake, depuis le champ Multi-tenant app name, copiez le nom de l’application cliente Snowflake créée pour votre compte dans un éditeur de texte. À l’étape suivante, vous accordez à cette application l’autorisation nécessaire pour obtenir un jeton d’accès à votre emplacement de stockage autorisé.
Pour accorder à votre application l’autorisation d’obtenir un jeton d’accès à votre emplacement de stockage autorisé, procédez comme suit :
Connectez-vous au portail Microsoft Azure.
Allez à Azure Services » Storage Accounts. Sélectionnez le nom du compte de stockage auquel le principal de service Snowflake doit accéder.
Note
Vous devez définir des autorisations IAM pour un volume externe au niveau du compte de stockage, et non au niveau du conteneur.
Sélectionnez Access Control (IAM) » Add role assignment.
Sélectionnez le rôle
Storage Blob Data Contributorpour accorder un accès en lecture et en écriture au principal du service Snowflake.Note
Le rôle
Storage Blob Data Contributorpermet d’accéder en écriture à l’emplacement du volume externe. Pour une configuration complète de l’accès en écriture, définissez le paramètreALLOW_WRITESdu volume externe surTRUE(la valeur par défaut).Sélectionnez + Select members.
Recherchez le principal de service Snowflake.
Il s’agit du nom de l’application multi-locataire que vous avez copié depuis Snowflake à l’étape précédente.
Important
Azure peut prendre une heure ou plus pour créer le principal de service Snowflake demandé via la page de demande Microsoft dans cette section. Si le principal du service n’est pas disponible immédiatement, attendez une heure ou deux, puis relancez la recherche.
Si vous supprimez le principal du service, le volume externe cesse de fonctionner.
Sélectionnez Review + assign.
Note
Lors de l’attribution d’un rôle, il faut compter jusqu’à 10 minutes pour que les modifications soient prises en compte. Pour plus d’informations, voir Symptôme - Les changements d’attribution de rôle ne sont pas détectés dans la documentation Microsoft Azure.
Dans Snowflake, sélectionnez. Next.
Dans Snowflake, pour configurer votre volume externe, sur la page Configure external volume, renseignez les champs :
Champ
Description
External volume name
Saisissez un nom pour votre volume externe.
Storage base URL
Spécifie l’URL de base de votre emplacement de stockage Cloud.
Access scope
Spécifie si les opérations d’écriture sont autorisées pour le volume externe ; doit être défini sur Allow writes pour les tables suivantes :
Tables Iceberg qui utilisent Snowflake comme catalogue.
Tables Iceberg qui utilisent un catalogue externe et sont accessibles en écriture. Les tables Iceberg gérées en externe sont accessibles en écriture lorsque vous y accédez via une base de données liée à un catalogue qui possède le paramètre ALLOWED_WRITE_OPERATIONS défini sur TRUE.
Pour les tables Iceberg créées à partir de fichiers de table Delta, la définition de ce paramètre sur Allow writes permet à Snowflake d’écrire des métadonnées Iceberg dans votre stockage externe. Pour plus d’informations, voir Tables basées sur Delta.
La valeur de ce paramètre doit également correspondre aux autorisations définies sur le compte de stockage Cloud pour chaque emplacement de stockage spécifié.
Note
Si vous prévoyez d’utiliser le volume externe pour accéder en lecture à des tables Iceberg gérées en externe, vous pouvez définir ce paramètre sur Off (Désactivé). Snowflake n’écrit pas de fichiers de métadonnées Iceberg ni de données dans votre stockage Cloud lorsque vous lisez des tables dans un catalogue Iceberg externe.
Scope
Choisissez si le volume externe doit devenir l’emplacement par défaut pour les futures tables Iceberg. Les valeurs possibles sont les suivantes :
Do not set a default : Ne définissez le volume externe comme valeur par défaut nulle part.
Account : Définissez le volume externe comme volume par défaut pour les tables Iceberg créées sous l’ensemble du compte.
Specific database : Définissez le volume externe comme volume par défaut pour les tables Iceberg créées sous la base de données que vous spécifiez. Pour spécifier cette base de données, utilisez le Database la liste déroulante qui apparaît lorsque vous sélectionnez Specific database.
Specific schema : Définissez le volume externe comme valeur par défaut pour les tables Iceberg créées sous le schéma que vous spécifiez. Pour spécifier ce schéma, utilisez la liste déroulante Database qui apparaît pour sélectionner d’abord la base de données parente du schéma, puis le schéma.
Comment (optional)
Spécifie un commentaire pour le volume externe.
Connectivity
Indique s’il faut utiliser la connectivité privée sortante pour renforcer votre sécurité. Pour obtenir des informations sur l’utilisation de la connexion privée sortante, consultez Connectivité privée vers des volumes externes pour Microsoft Azure. Les valeurs possibles sont les suivantes :
Public (default) : Utilisez l’Internet public.
Private (Azure Private Endpoint) : Utilisez la connexion privée sortante.
Sélectionnez Next.
Sur la page Verify connection & create volume, Snowflake vérifie votre connexion à Azure, puis affiche un message « Connecté avec succès ».
Note
Si Snowflake n’est pas en mesure de vérifier votre connexion, vérifiez votre autorisation ou la configuration de votre volume externe, puis sélectionnez Verify again.
Sélectionnez Create.
Prochaines étapes¶
Après avoir configuré un volume externe, vous pouvez créer une table Iceberg.
Pour créer une table Iceberg en lecture seule qui utilise un catalogue externe, consultez Configuration d’une intégration de catalogue.
Pour créer une table Iceberg avec une prise en charge complète de la plateforme Snowflake, voir Création d’une table gérée par Snowflake.