Passer au contenu principal

Prérequis

  • Pour effectuer les étapes de configuration suivantes, vous ou un administrateur Snowflake de votre équipe devez disposer des rôles securityadmin et sysadmin. (Pour vérifier votre compte pour ces rôles, exécutez SHOW GRANTS TO USER <your_username>; et examinez la colonne role.)
  • Si votre entrepôt de données Snowflake utilise les Snowflake Access Policies, vous aurez besoin de l’IP statique du service de synchronisation des données pour effectuer l’étape 2.

Étape 1 : Créer le rôle, l’utilisateur, l’entrepôt et la base de données dans l’entrepôt de données

  1. Examinez et apportez les modifications nécessaires au script de configuration suivant.
begin;

   -- create variables for user / password / role / warehouse / database
   set role_name = 'TRANSFER_ROLE'; -- all letters must be uppercase
   set user_name = 'TRANSFER_USER'; -- all letters must be uppercase
   set user_password = 'some_password'; -- alphanumeric only, special characters are not allowed
   set warehouse_name = 'TRANSFER_WAREHOUSE'; -- all letters must be uppercase
   set database_name = 'TRANSFER_DATABASE'; -- all letters must be uppercase

   -- change role to securityadmin for user / role steps
   use role securityadmin;

   -- create role for data transfer service
   create role if not exists identifier($role_name);
   grant role identifier($role_name) to role SYSADMIN; -- establish SYSADMIN as the parent of the new role. Note: this does not grant the access privileges of SYSADMIN to the new role.

   -- create a user for data transfer service
   create user if not exists identifier($user_name)
   password = $user_password;

   -- set default role and warehouse to new user
   alter user identifier($user_name) SET default_role = $role_name;
   alter user identifier($user_name) SET default_warehouse = $warehouse_name;

   grant role identifier($role_name) to user identifier($user_name);

   -- change role to sysadmin for warehouse / database steps
   use role sysadmin;

   -- create a warehouse for data transfer service
   create warehouse if not exists identifier($warehouse_name)
   warehouse_size = xsmall
   warehouse_type = standard
   auto_suspend = 60
   auto_resume = true
   initially_suspended = true;

   -- create database for data transfer service
   create database if not exists identifier($database_name);

   -- grant service role access to warehouse
   grant USAGE
   on warehouse identifier($warehouse_name)
   to role identifier($role_name);

   -- grant service access to database
   grant CREATE SCHEMA, MONITOR, USAGE
   on database identifier($database_name)
   to role identifier($role_name);

 commit;
📘 Utiliser un schema existant Par défaut, un nouveau schéma (avec le nom que vous fournissez) sera créé dans la base de données Snowflake cible lors de la connexion initiale. Si vous créez plutôt le schema à l’avance, vous pouvez supprimer l’autorisation CREATE SCHEMA et accorder grant ALL PRIVILEGES sur le schema cible au role désigné. Le script ci-dessous peut être utilisé pour effectuer cette étape :
set role_name = 'TRANSFER_ROLE';
set database_name = 'TRANSFER_DATABASE';
set schema_name = 'PRECREATED_SCHEMA';

use database identifier($database_name);
grant ALL PRIVILEGES on schema identifier($schema_name) to role identifier($role_name);
📘 Utiliser un warehouse ou une database existante Par défaut, ce script crée un nouvel entrepôt et une nouvelle base de données. Si vous préférez utiliser un entrepôt/base de données existant, modifiez la variable warehouse_name de TRANSFER_WAREHOUSE au nom de l’entrepôt à partager / la variable database_name de TRANSFER_DATABASE au nom de la base de données à partager.
  1. Dans l’interface Snowflake, sélectionnez la liste déroulante à côté du bouton « Run » et cliquez sur Run All. Cela exécutera toutes les requêtes du script en une seule fois. Si l’opération réussit, vous verrez Statement executed successfully dans les résultats de la requête.

Étape 2 : Configurer la politique d’accès Snowflake

Si votre entrepôt de données Snowflake utilise les Snowflake Access Policies, une nouvelle politique doit être ajoutée pour autoriser l’IP statique du service de transfert à écrire dans l’entrepôt.
  1. Examinez les politiques réseau actuelles pour vérifier les listes blanches d’IP existantes.
SHOW NETWORK POLICIES;
  1. S’il n’existe aucune Snowflake Network Policy existante (la requête SHOW ne renvoie aucun résultat), vous pouvez passer à l’étape 3.
  2. S’il existe une Snowflake Network Policy existante, vous devez modifier la politique existante ou en créer une nouvelle pour mettre en liste blanche l’adresse IP statique du service de transfert de données. Utilisez la commande CREATE NETWORK POLICY pour spécifier les adresses IP qui peuvent accéder à votre entrepôt Snowflake.
CREATE NETWORK POLICY <transfer_service_policy_name> ALLOWED_IP_LIST = ('35.192.85.117/32');
❗️ Création de votre première politique réseau Si vous n’avez aucune politique réseau existante et que vous créez votre première politique dans le cadre de cette étape, toutes les autres IP en dehors de la ALLOWED_IP_LIST seront bloquées. Snowflake n’autorise pas la définition d’une politique réseau qui bloque votre adresse IP actuelle. (Un message d’erreur apparaît lors de la tentative de création d’une politique réseau qui bloque l’adresse IP actuelle.) Mais soyez prudent lorsque vous définissez votre première politique réseau.

Étape 3 : Ajouter votre destination

Partagez en toute sécurité avec nous votre host name, database name, votre schema name choisi, votre username et votre password pour finaliser la connexion.