Configurer un volume externe pour Google Cloud Storage

Accordez à Snowflake un accès restreint à un compartiment Google Cloud Storage (GCS) à l’aide d’un volume externe. Pour configurer un volume externe pour Google Cloud Storage, vous pouvez utiliser SQL ou utiliser Snowsight.

Conditions préalables

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

  • Un compartiment Google Cloud Storage.

  • Autorisations dans Google Cloud pour créer et gérer des politiques et des rôles IAM. Si vous n’êtes pas un administrateur Google Cloud, demandez à votre administrateur Google Cloud d’effectuer ces tâches.

Pour configurer un volume externe, vous pouvez utiliser SQL ou Snowsight :

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 GCS unique avec chiffrement :

CREATE EXTERNAL VOLUME my_gcs_external_volume
  STORAGE_LOCATIONS =
    (
      (
        NAME = 'my-us-west-2'
        STORAGE_PROVIDER = 'GCS'
        STORAGE_BASE_URL = 'gcs://mybucket1/path1/'
        ENCRYPTION=(TYPE='GCS_SSE_KMS' KMS_KEY_ID = '1234abcd-12ab-34cd-56ef-1234567890ab')
      )
    );
Copy

Étape 2 : récupérer le compte de service GCS de votre compte Snowflake

Pour récupérer l’ID du compte de service GCS automatiquement créé pour votre compte Snowflake, utilisez la commande DESCRIBE EXTERNAL VOLUME. Indiquez le nom du volume externe que vous avez créé précédemment.

Par exemple :

DESC EXTERNAL VOLUME my_gcs_external_volume;
Copy

Enregistrez la valeur de la propriété STORAGE_GCP_SERVICE_ACCOUNT dans la sortie (par exemple, service-account-id@project1-123456.iam.gserviceaccount.com).

Snowflake provisionne un seul compte de service GCS pour l’ensemble de votre compte Snowflake. Tous les volumes externes de GCS utilisent ce compte de service.

Étape 3 : Accorder au compte de service des autorisations lui permettant d’accéder à des objets du compartiment

Dans cette étape, vous configurez les autorisations d’accès à IAM pour Snowflake dans votre Google Cloud console.

Créer un rôle IAM personnalisé

Créez un rôle personnalisé disposant des autorisations requises pour accéder au compartiment et obtenir des objets.

  1. Connectez-vous à Google Cloud console en tant qu’éditeur de projet.

  2. Dans le tableau de bord d’accueil, sélectionnez IAM & Admin » Roles.

  3. Sélectionnez Create Role.

  4. Saisissez un Title et un Description facultatif pour le rôle personnalisé.

  5. Sélectionnez Add Permissions.

  6. Dans Filter, sélectionnez Service puis storage.

  7. Filtrez la liste des autorisations et ajoutez les éléments suivants dans la liste :

    • storage.buckets.get

    • storage.objects.create

    • storage.objects.delete

    • storage.objects.get

    • storage.objects.list

  8. Sélectionnez Add.

  9. Sélectionnez Create.

Affecter le rôle personnalisé au compte de service GCS

  1. Connectez-vous à Google Cloud console en tant qu’éditeur de projet.

  2. Dans le tableau de bord d’accueil, sélectionnez Cloud Storage » Buckets.

  3. Filtrez la liste des compartiments et sélectionnez le compartiment que vous avez spécifié lors de la création d’un volume externe.

  4. Sélectionnez Permissions » View by principals, puis sélectionnez Grant access.

  5. Sous Add principals, collez le nom du compte de service à partir de la sortie de Étape 2 : récupérer le compte de service GCS de votre compte Snowflake.

  6. Sous Assign roles, sélectionnez le rôle personnalisé IAM que vous avez créé précédemment, puis Save.

Accordez au compte de service GCS des autorisations sur les clés du service de gestion des clés de Google Cloud

Note

Cette étape n’est requise que si votre compartiment GCS est chiffré à l’aide d’une clé stockée dans Google Cloud Key Management Service (Cloud KMS).

  1. Connectez-vous à Google Cloud console en tant qu’éditeur de projet.

  2. Depuis le tableau de bord d’accueil, recherchez et sélectionnez Security » Key Management.

  3. Sélectionnez le porte-clés affecté à votre compartiment GCS.

  4. Dans le coin supérieur droit, sélectionnez SHOW INFO PANEL. Le panneau d’information du porte-clés apparaît.

  5. Dans le champ Add members, recherchez le nom du compte de service à partir de la sortie DESCRIBE EXTERNAL VOLUME dans Étape 2 : récupérer le compte de service GCS de votre compte Snowflake.

  6. Dans la liste déroulante Select a role, sélectionnez le rôle Cloud KMS CryptoKey Encrypter/Decrypter.

  7. Sélectionnez Add. Le nom du compte de service est ajouté à la liste déroulante des rôles Cloud KMS CryptoKey Encrypter/Decrypter dans le panneau d’informations.

Étape 4 : 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

Étape 1 : récupérer le compte de service GCS de votre compte Snowflake

  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 Google Cloud Storage puis Next.

  7. À partir de la page Grant storage access, copiez la valeur de GCS service account dans un éditeur de texte.

    Snowflake provisionne un seul compte de service GCS pour l’ensemble de votre compte Snowflake. Tous les volumes externes de GCS utilisent ce compte de service.

Étape 2 : Octroi d’autorisations au compte de service pour accéder à des objets de compartiment

Dans cette étape, vous configurez les autorisations d’accès à IAM pour Snowflake dans votre Google Cloud console.

Créer un rôle IAM personnalisé

Créez un rôle personnalisé disposant des autorisations requises pour accéder au compartiment et obtenir des objets.

  1. Connectez-vous à Google Cloud console en tant qu’éditeur de projet.

  2. Dans le tableau de bord d’accueil, sélectionnez IAM & Admin » Roles.

  3. Sélectionnez Create Role.

  4. Saisissez un Title et un Description facultatif pour le rôle personnalisé.

  5. Sélectionnez Add Permissions.

  6. Dans Filter, sélectionnez Service puis storage.

  7. Filtrez la liste des autorisations et ajoutez les éléments suivants dans la liste :

    • storage.buckets.get

    • storage.objects.create

    • storage.objects.delete

    • storage.objects.get

    • storage.objects.list

  8. Sélectionnez Add.

  9. Sélectionnez Create.

Affecter le rôle personnalisé au compte de service GCS

  1. Connectez-vous à Google Cloud console en tant qu’éditeur de projet.

  2. Dans le tableau de bord d’accueil, sélectionnez Cloud Storage » Buckets.

  3. Filtrez la liste des compartiments et sélectionnez le compartiment que vous avez spécifié lors de la création d’un volume externe.

  4. Sélectionnez Permissions » View by principals, puis sélectionnez Grant access.

  5. Sous Add principals, collez le nom du compte de service à partir de la sortie de Étape 1 : récupérer le compte de service GCS de votre compte Snowflake.

  6. Sous Assign roles, sélectionnez le rôle personnalisé IAM que vous avez créé précédemment, puis Save.

Étape 3 : Créer un volume externe

Pour créer un volume externe dans Snowflake en utilisant Snowsight, procédez comme suit :

  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 obtenir des instructions, 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 Google Cloud Storage puis Next.

  7. Sélectionnez Next.

    Note

    Vous avez déjà accordé l’accès au stockage plus tôt lorsque vous avez récupéré le compte de service GCS de votre compte Snowflake et attribué le rôle personnalisé au compte de service GCS.

  8. Pour configurer votre volume externe, à partir de la page Configure external volume, renseignez les champs suivants :

    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.

    Encryption (optional)

    Indique le type de chiffrement utilisé. Les valeurs possibles sont les suivantes :

    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 champ 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 lire des tables Iceberg gérées en externe, vous pouvez désactiver ce champ. 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 la liste déroulante Database qui apparaît lorsque vous sélectionnez Specific database.

    • Specific schema : Définissez le volume externe comme volume 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 ce paramètre, voir Connectivité privée vers des volumes externes pour Google Cloud. Les valeurs possibles sont les suivantes :

    • Public (default) : Utilisez l’Internet public.

    • Private (Private Service Connect) : Utilisez la connexion privée sortante.

  9. Sélectionnez Next.

    Sur la page Verify connection & create volume, Snowflake vérifie votre connexion à Google Cloud Storage, 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.

  10. Sélectionnez Create.

Prochaines étapes

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