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.

Conditions préalables

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

  • Un compartiment Google Cloud Storage dans la même région que celle qui héberge votre compte Snowflake.

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

É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

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

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 à la console Google Cloud Platform 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 à la console Google Cloud Platform 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 à la console Google Cloud Platform 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_s3_external_volume');
Copy

Prochaines étapes

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