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.
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 compartiment.
Pour faciliter la récupération des données, activez la gestion des versions pour votre emplacement de stockage Cloud externe.
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')
)
);
É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;
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.
Connectez-vous à la console Google Cloud Platform en tant qu’éditeur de projet.
Dans le tableau de bord d’accueil, sélectionnez IAM & Admin » Roles.
Sélectionnez Create Role.
Saisissez un Title et un Description facultatif pour le rôle personnalisé.
Sélectionnez Add Permissions.
Dans Filter, sélectionnez Service puis storage.
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
Sélectionnez Add.
Sélectionnez Create.
Affecter le rôle personnalisé au compte de service GCS¶
Connectez-vous à la console Google Cloud Platform en tant qu’éditeur de projet.
Dans le tableau de bord d’accueil, sélectionnez Cloud Storage » Buckets.
Filtrez la liste des compartiments et sélectionnez le compartiment que vous avez spécifié lors de la création d’un volume externe.
Sélectionnez Permissions » View by principals, puis sélectionnez Grant access.
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.
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).
Connectez-vous à la console Google Cloud Platform en tant qu’éditeur de projet.
Depuis le tableau de bord d’accueil, recherchez et sélectionnez Security » Key Management.
Sélectionnez le porte-clés affecté à votre compartiment GCS.
Dans le coin supérieur droit, sélectionnez SHOW INFO PANEL. Le panneau d’information du porte-clés apparaît.
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.
Dans la liste déroulante Select a role, sélectionnez le rôle Cloud KMS CryptoKey Encrypter/Decrypter.
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');
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.