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

Conditions préalables

Avant de configurer un volume externe, vous avez besoin des éléments suivants :

  • Un conteneur de stockage Azure dans la même région que celle qui héberge votre compte Snowflake.

  • 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 Autorisation des IDs de sous-réseau VNet pour accorder explicitement à Snowflake l’accès à votre compte de stockage Azure.

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

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

  8. 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
  9. 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_s3_external_volume');
Copy

Prochaines étapes

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