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.

  • 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'
      )
    );
Copy

Note

  • Utilisez le préfixe azure:// et non https:// 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

  1. 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;
    
    Copy

    Enregistrez les valeurs des propriétés suivantes :

    Propriété

    Description

    AZURE_CONSENT_URL

    URL vers la page de demande d’autorisations de Microsoft.

    AZURE_MULTI_TENANT_APP_NAME

    Nom 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.

  2. Dans un navigateur web, accédez à la page de demande d’autorisations Microsoft (l”AZURE_CONSENT_URL).

  3. 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).

  4. Connectez-vous au portail Microsoft Azure.

  5. 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.

  6. Sélectionnez Access Control (IAM) » Add role assignment.

  7. Sélectionnez le rôle Storage Blob Data Contributor pour accorder un accès en lecture et en écriture au principal du service Snowflake.

    Note

    Le rôle Storage Blob Data Contributor permet 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ètre ALLOW_WRITES du volume externe sur TRUE (la valeur par défaut).

  1. Sélectionnez + Select members.

  1. 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.

    Ajout d'une affectation de rôle dans la console de stockage Azure
  2. 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');
Copy

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

  1. Connectez-vous à Snowsight.

  2. 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.

  3. Dans le menu de navigation, sélectionnez Catalog » External data.

  4. Sélectionnez l’onglet External volumes.

  5. Sélectionnez + Create.

  6. Sélectionnez Microsoft Azure & OneLake puis Next.

  7. À 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.

  8. Sélectionnez Next.

  9. À partir de la page Grant storage access, pour accorder à Snowflake l’accès à l’emplacement de stockage, procédez comme suit :

    1. 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.

    2. 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).

    3. 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é.

  10. Pour accorder à votre application l’autorisation d’obtenir un jeton d’accès à votre emplacement de stockage autorisé, procédez comme suit :

    1. Connectez-vous au portail Microsoft Azure.

    2. 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.

    3. Sélectionnez Access Control (IAM) » Add role assignment.

    4. Sélectionnez le rôle Storage Blob Data Contributor pour accorder un accès en lecture et en écriture au principal du service Snowflake.

      Note

      Le rôle Storage Blob Data Contributor permet 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ètre ALLOW_WRITES du volume externe sur TRUE (la valeur par défaut).

    5. Sélectionnez + Select members.

    6. 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.

      Ajout d'une affectation de rôle dans la console de stockage Azure
    7. 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.

  11. Dans Snowflake, sélectionnez. Next.

  12. 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.

  13. 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.

  14. Sélectionnez Create.

Prochaines étapes

Après avoir configuré un volume externe, vous pouvez créer une table Iceberg.