Partage sécurisé des données entre les régions et les plateformes Cloud

Cette rubrique fournit des instructions sur l’utilisation de la réplication pour permettre aux fournisseurs de données de partager en toute sécurité des données avec des consommateurs de données dans différentes régions et plateformes Cloud.

Note

Si vous partagez des données avec d’autres comptes à l’aide d’annonces proposées à des consommateurs spécifiques, ou sur Snowflake Marketplace, vous pouvez utiliser l’exécution automatique inter-Cloud pour exécuter automatiquement votre produit de données dans d’autres régions. La réplication automatique n’est pas prise en charge pour les annonces partagées avec un échange de données.

Le partage de données entre régions est pris en charge par les comptes Snowflake hébergés sur l’une des plateformes Cloud suivantes :

  • Amazon Web Services (AWS)

  • Google Cloud Platform (GCP)

  • Microsoft Azure (Azure)

Important

Si vous répliquez une base de données primaire vers des comptes dans une région géographique différente ou un pays différent de la région/du pays dans laquelle ou lequel se trouve votre compte Snowflake source, vous devez confirmer que votre entreprise n’est soumise à aucune restriction légale ou réglementaire en ce qui concerne l’emplacement où vos données peuvent être transférées ou hébergées.

Dans ce chapitre :

Considérations relatives au partage de données

Diagram of data replication and sharing between regions and clouds

Partage de données avec des consommateurs de données dans une région et une plateforme Cloud différentes

Les fournisseurs de données Snowflake peuvent partager des données avec des consommateurs de données d’une autre région en quelques étapes simples.

Étape 1 : Configurer la réplication de données

Note

Avant de configurer la réplication de données, vous devez créer un compte dans une région où vous souhaitez partager des données et le lier à votre compte local. Pour plus d’informations, voir Gestion des organisations et des comptes.

La configuration de la réplication des données implique les tâches suivantes :

  1. Autorisez la réplication pour vos comptes.

    Un utilisateur ayant le rôle ORGADMIN doit activer la réplication pour le compte source qui contient les données à partager et les comptes cibles des régions dans lesquelles vous souhaitez partager les données avec les consommateurs. Pour savoir comment activer la réplication, voir Condition préalable : activer la réplication des comptes dans l’organisation. Pour plus d’informations sur le rôle ORGADMIN, voir Premiers pas avec les organisations.

  2. Créez un groupe de réplication et ajoutez des bases de données et des partages.

  3. Répliquez le groupe avec les bases de données et les partages dans les régions dans lesquelles vous souhaitez partager les données avec des consommateurs.

Étape 2. Partage des données avec des consommateurs de données

Le partage des données avec des consommateurs de données de la même région implique l’ajout d’un ou de plusieurs comptes consommateurs aux partages secondaires que vous avez répliqués à partir du compte source.

Pour des instructions détaillées, voir Premiers pas avec le partage de données sécurisé.

Exemple 1 : Partager les données

Acme, un fournisseur de données, souhaite partager des données avec des consommateurs de données d’une autre région.

Diagram of a basic example on how to share data between regions

Exécuter à partir du compte source

Pour créer un groupe de réplication contenant les bases de données et les partages à répliquer dans une autre région, exécutez l’instruction SQL suivante.

Note

Si vous avez précédemment activé la réplication pour une base de données individuelle, vous devez désactiver la réplication de base de données pour la base de données avant de l’ajouter à un groupe de réplication. Pour plus de détails, voir Transition de la réplication de base de données à la réplication par groupe.

Créez un groupe de réplication my_rg qui inclut la base de données db1 et le partage share1 à répliquer dans le compte account_2 de l’org acme.

USE ROLE ACCOUNTADMIN;

CREATE REPLICATION GROUP my_rg
  OBJECT_TYPES = databases, shares
  ALLOWED_DATABASES = db1
  ALLOWED_SHARES = share1
  ALLOWED_ACCOUNTS = acme.account_2;
Copy

Exécuter à partir du compte cible

Depuis le compte cible de l’autre région, exécutez les instructions SQL suivantes.

  1. Créez un groupe de réplication secondaire dans account_2 :

    USE ROLE ACCOUNTADMIN;
    
    CREATE REPLICATION GROUP my_rg
      AS REPLICA OF acme.account1.my_rg;
    
    Copy
  2. Actualisez manuellement le groupe de réplication pour répliquer les bases de données et les partages dans account_2 :

    ALTER REPLICATION GROUP my_rg REFRESH;
    
    Copy
  3. Ajoutez un ou plusieurs comptes consommateurs à share1 :

    ALTER SHARE share1 ADD ACCOUNTS = consumer_org.consumer_account_name;
    
    Copy

Vous pouvez automatiser les opérations d’actualisation en définissant le paramètre REPLICATION_SCHEDULE du groupe de réplication principal à l’aide de la commande ALTER REPLICATION GROUP dans le compte source. Pour plus d’informations, voir Planification de réplication.

Exemple 2 : Partager un sous-ensemble de données d’une base de données

Acme, un fournisseur de données, souhaite partager un sous-ensemble de données avec des consommateurs de données d’une autre région. Pour réduire les coûts de réplication, ils souhaitent uniquement répliquer les lignes pertinentes de leur table principale. La réplication étant effectuée au niveau de la base de données, cet exemple montre comment Acme peut utiliser les flux et les tâches pour copier les lignes souhaitées de la base de données principale dans une nouvelle base de données, créer un partage et accorder des privilèges sur la vue, puis répliquer les deux dans un groupe de réplication dans un compte situé dans une région différente pour que les consommateurs puissent y accéder. Dans ce scénario, la nouvelle base de données et le nouveau partage sont désignés comme objets principaux de la réplication de données.

Diagram of an advanced example on how to share data between regions

Exécuter à partir du compte source

Utilisez les commandes SQL suivantes pour créer une nouvelle base de données dans le compte source et activer la réplication.

Note

Si vous avez précédemment activé la réplication pour une base de données individuelle, vous devez désactiver la réplication de base de données pour la base de données avant de l’ajouter à un groupe de réplication. Pour plus de détails, voir Transition de la réplication de base de données à la réplication par groupe.

  1. Sur votre compte local, créez une base de données db1 avec un sous-ensemble de données provenant de la base de données contenant les données sources :

    USE ROLE ACCOUNTADMIN;
    
    CREATE DATABASE db1;
    
    CREATE SCHEMA db1.sch;
    
    CREATE TABLE db1.sch.table_b AS
      SELECT customerid, user_order_count, total_spent
      FROM source_db.sch.table_a
      WHERE REGION='azure_eastus2';
    
    Copy
  2. Créez une vue sécurisée avec les données à partager :

    CREATE SECURE VIEW db1.sch.view1 AS
      SELECT customerid, user_order_count, total_spent
      FROM db1.sch.table_b;
    
    Copy
  3. Créez un flux pour enregistrer les modifications apportées à la table source :

    CREATE STREAM mystream ON TABLE source_db.sch.table_a APPEND_ONLY = TRUE;
    
    Copy
  4. Créez une tâche pour insérer des données dans la table de db1 avec les modifications des données sources :

    CREATE TASK mytask1
      WAREHOUSE = mywh
      SCHEDULE = '5 minute'
    WHEN
      SYSTEM$STREAM_HAS_DATA('mystream')
    AS
      INSERT INTO table_b(CUSTOMERID, USER_ORDER_COUNT, TOTAL_SPENT)
        SELECT customerid, user_order_count, total_spent
        FROM mystream
        WHERE region='azure_eastus2'
        AND METADATA$ACTION = 'INSERT';
    
    Copy
  5. Démarrez la tâche de mise à jour des données :

    ALTER TASK mytask1 RESUME;
    
    Copy
  6. Créez un partage et accordez des privilèges sur le partage :

    CREATE SHARE share1;
    
    GRANT USAGE ON DATABASE db1 TO SHARE share1;
    GRANT USAGE ON SCHEMA db1.sch TO SHARE share1;
    GRANT SELECT ON VIEW db1.sch.view1 TO SHARE share1;
    
    Copy
  7. Créez un groupe de réplication principal avec la base de données et le partage :

    CREATE REPLICATION GROUP my_rg
      OBJECT_TYPES = DATABASES, SHARES
      ALLOWED_DATABASES = db1
      ALLOWED_SHARES = share1
      ALLOWED_ACCOUNTS = acme_org.account_2;
    
    Copy

Exécuter à partir du compte cible

Exécutez les commandes SQL suivantes depuis le compte cible dans l’autre région.

  1. Créez un groupe de réplication secondaire pour répliquer les bases de données et les partages du compte source :

    USE ROLE ACCOUNTADMIN;
    
    CREATE REPLICATION GROUP my_rg
      AS REPLICA OF acme_org.account_1.my_rg;
    
    Copy
  2. Actualisez manuellement le groupe pour répliquer les objets sur le compte actuel :

    ALTER REPLICATION GROUP my_rg REFRESH;
    
    Copy
  3. Ajoutez un ou plusieurs comptes consommateurs au partage :

    ALTER SHARE share1 ADD ACCOUNTS = consumer_org.consumer_account_name;
    
    Copy

Vous pouvez automatiser les opérations d’actualisation en définissant le paramètre REPLICATION_SCHEDULE du groupe de réplication principal à l’aide de la commande ALTER REPLICATION GROUP dans le compte source. Pour plus d’informations, voir Planification de réplication.

Exemple 3 : Partager des données provenant de plusieurs bases de données

Acme, un fournisseur de données, souhaite partager des données provenant de plusieurs bases de données avec des consommateurs de données d’une autre région. Il crée une vue et un partage sécurisés (pour des instructions, voir Partage des données de plusieurs bases de données), puis réplique l’ensemble des bases de données et du partage dans un groupe de réplication afin de répliquer les données dans des comptes situés dans d’autres régions.

Exécuter à partir du compte source

Créez un groupe de réplication my_rg qui inclut les bases de données et le partage de Exemple 1 : Créer et partager une vue sécurisée dans une base de données existante pour les répliquer dans account_2 de l’org acme :

CREATE REPLICATION GROUP my_rg
  OBJECT_TYPES = databases, shares
  ALLOWED_DATABASES = database1, database2, database3
  ALLOWED_SHARES = share1
  ALLOWED_ACCOUNTS = acme.account_2;
Copy

Exécuter à partir du compte cible

Exécutez les commandes SQL suivantes depuis le compte cible dans l’autre région.

  1. Créez un groupe de réplication secondaire pour répliquer les bases de données et les partages du compte source :

    USE ROLE ACCOUNTADMIN;
    
    CREATE REPLICATION GROUP my_rg
      AS REPLICA OF acme_org.account_1.my_rg;
    
    Copy
  2. Actualisez manuellement le groupe pour répliquer les objets sur le compte actuel :

    ALTER REPLICATION GROUP my_rg REFRESH;
    
    Copy
  3. Ajoutez un ou plusieurs comptes consommateurs au partage :

    ALTER SHARE share1 ADD ACCOUNTS = consumer_org.consumer_account_name;
    
    Copy

Vous pouvez automatiser les opérations d’actualisation en définissant le paramètre REPLICATION_SCHEDULE du groupe de réplication principal à l’aide de la commande ALTER REPLICATION GROUP dans le compte source. Pour plus d’informations, voir Planification de réplication.