Utilisation des partages

Ce chapitre décrit les tâches associées à la création et à la configuration d’un compte de fournisseur de données, au partage des partages avec d’autres comptes (c’est-à-dire les comptes client) et à la maintenance continue des partages.

Sauf pour la préparation des objets à partager, qui peut être effectuée avec n’importe quel rôle, vous devez utiliser le rôle ACCOUNTADMIN (ou un rôle ayant le privilège global CREATE SHARE) pour effectuer ces tâches. Pour plus de détails sur le privilège CREATE SHARE, voir Autoriser les rôles non ACCOUNTADMIN à effectuer des tâches de partage de données.

Dans ce chapitre :

Partage de données et comptes Business Critical

Si vous avez un compte Business Critical, notez les conditions suivantes pour partager des données avec d’autres comptes (c.-à-d. des comptes de consommateur) :

Fournisseur

Consommateur

Pris en charge

Activé

Remarques

Business Critical (avec HIPAA et HITRUST)

dans

Business Critical (avec HIPAA et HITRUST)

Les deux comptes HIPAA devraient avoir un BAA signé l’un avec l’autre.

Business Critical (avec HIPAA et HITRUST)

dans

Toutes les autres éditions

Pour plus d’informations, voir Activation du partage depuis un compte Business Critical vers un compte non Business Critical.

Business Critical

dans

Business Critical ou Business Critical (avec HIPAA et HITRUST)

Business Critical

dans

Toutes les autres éditions

Pour plus d’informations, voir Activation du partage depuis un compte Business Critical vers un compte non Business Critical.

Pour toutes les autres éditions Snowflake :

Attention

Snowflake n’est pas responsable de s’assurer que les comptes HIPAA (et HITRUST) qui participent au partage de données ont un BAA signé entre eux. Ceci reste à la discrétion des comptes qui partagent des données. Ne pas avoir un BAA signé pourrait avoir des conséquences sur la conformité HIPAA (et HITRUST) des deux comptes, en particulier pour le compte fournisseur.

Si vous avez un compte Business Critical, tenez compte des éléments suivants pour maintenir le niveau de protection des données attendu avant de demander à Snowflake d’activer Secure Data Sharing avec des comptes non Business Critical :

  • Ne partagez pas de données sensibles avec des comptes non Business Critical.

  • Envisagez de créer un deuxième compte non Business Critical où vous stockerez des données moins sensibles et partagerez ces données avec des comptes non Business Critical.

  • Si vous utilisez Tri-Secret Secure avec votre compte Business Critical et que vous partagez des données avec d’autres comptes, Snowflake traite l’accès aux données à partir de ces comptes comme si l’accès se faisait à partir de votre propre compte. Plus précisément, donner accès au compte consommateur peut exiger que Snowflake accède à votre AWS KMS.

Il ne s’agit que de recommandations qui ne sont pas imposées par Snowflake. La décision de partager les données reste toujours à la discrétion du fournisseur de données, et Snowflake ne peut être tenu responsable des données qui sont partagées de façon inappropriée.

Considérations générales sur le partage de données et utilisation

Notez les détails d’utilisation importants suivants pour la création et la gestion des partages :

  • Vous pouvez partager des données entre régions et plates-formes Cloud. Pour plus d’informations, voir Partage sécurisé des données entre les régions et les plateformes Cloud.

  • Un partage peut inclure des données provenant de plusieurs bases de données. Pour plus d’informations, voir Partage des données de plusieurs bases de données.

  • Pour des raisons de sécurité et de confidentialité des données, seules les vues sécurisées sont actuellement prises en charge dans les partages. Si une vue standard est ajoutée à un partage, Snowflake renvoie une erreur.

  • Il n’est pas recommandé de créer des vues sécurisées sur les flux dans votre base de données, puis de partager ces vues avec les consommateurs. Ce scénario nécessite la possibilité de modifier un flux dans un autre compte, ce qui n’est pas une opération prise en charge et constitue donc un anti-modèle. Au lieu de cela, permettez aux consommateurs de créer leurs propres flux sur les tables et les vues sécurisées que vous partagez. Pour plus d’informations, voir Flux sur les objets partagés (dans ce chapitre).

  • L’ajout de comptes à un partage rend le partage immédiatement disponible pour être consommé par les comptes.

  • Les lignes nouvelles et modifiées dans les tables d’un partage (ou dans les tables référencées par une vue dans un partage) sont immédiatement disponibles pour tous les consommateurs qui ont créé une base de données à partir du partage. Gardez cela à l’esprit lorsque vous mettez ces tables à jour.

  • Un nouvel objet créé dans une base de données accordé à un partage n’est pas automatiquement disponible aux consommateurs.

    Pour rendre l’objet disponible aux consommateurs, vous devez utiliser la commande GRANT <privilège> … TO SHARE pour ajouter explicitement l’objet au partage.

    Note

    Cela s’applique également aux objets qui ont été supprimés d’une base de données, puis recréés sous le même nom dans la base de données. L’objet recréé est traité comme un nouvel objet et n’est pas accessible aux consommateurs du partage tant que l’objet n’a pas reçu explicitement les privilèges nécessaires dans le partage.

  • Un rôle de base de données partagée ne prend pas en charge les attributions futures sur les objets. Pour plus de détails, voir GRANT DATABASE ROLE … TO SHARE.

DDL pour les partages

Pour faciliter la création et la gestion des partages, Snowflake fournit l’ensemble suivant de commandes spéciales DDL :

Pour faciliter la création et la gestion des rôles de base de données, Snowflake fournit l’ensemble suivant de commandes spéciales DDL :

En outre, les fournisseurs peuvent afficher, accorder ou révoquer l’accès aux objets de base de données d’un partage en utilisant le contrôle d’accès standard suivant DDL :

Préparation à la création d’un partage

Avant de créer un partage, Snowflake recommande d’identifier les objets Snowflake que vous prévoyez de partager :

  • Bases de données

  • Tables

  • Tables dynamiques

  • Tables externes

  • Tables Iceberg

  • Vues sécurisées

  • Vues matérialisées sécurisées

  • Fonctions définies par l’utilisateur sécurisées (UDFs)

Cela peut nécessiter des tâches administratives et de planification supplémentaires, en particulier si vous décidez de ne partager qu’un sous-ensemble de données dans l’une de vos tables.

Base de données et tables

Peu ou aucune préparation n’est nécessaire pour partager une base de données. De même, si vous choisissez de partager des tables entières dans une base de données, aucune préparation n’est nécessaire.

Toutefois, si vous décidez de filtrer les données dans une table (ou un ensemble de tables), soit en fonction de certaines conditions, soit par compte de consommateur, vous devez créer une ou plusieurs vues sécurisées sur la ou les tables.

Objets sécurisés (vues, vues matérialisées et UDFs)

Pour assurer un contrôle strict de l’accès aux données d’une base de données partagée, vous devez utiliser des vues sécurisées, des vues sécurisées matérialisées et/ou des UDFs sécurisés. Par exemple, vous pouvez choisir de filtrer les données par date ou une autre condition, ou vous pouvez décider d’utiliser un seul partage pour partitionner les données partagées pour différents comptes de consommateur. Les objets sécurisés vous permettent de dicter le niveau de granularité que vous souhaitez appliquer à vos données, tout en assurant que les tables de base et la logique commerciale sont protégées de toute exposition.

Les objets sécurisés sont définis de la même manière que les objets standard, en utilisant les commandes correspondantes CREATE <objet> ou ALTER <objet>. Veuillez toutefois prendre note de ces informations d’utilisation importantes :

  • Les objets sécurisés qui référencent des tables par leur nom complet (c’est-à-dire <nom_bd>.<nom_schéma>.<nom_table>) peuvent être inclus dans un partage. Cependant, vous devez vous assurer que le nom de base de données référencé correspond à la base de données pour le partage.

  • N’incluez pas d’objets sécurisés utilisant les fonctions CURRENT_USER ou CURRENT_ROLE dans leur définition. Les valeurs contextuelles renvoyées par ces fonctions n’ont aucune importance pour les comptes de consommateur et provoquent l’échec de l’objet lorsqu’il est interrogé/utilisé.

  • Lors de la définition d’un objet sécurisé à partager avec les comptes de consommateur, une étape clé/essentielle supplémentaire à effectuer est de vérifier que l’objet est configuré correctement pour afficher uniquement les données que vous souhaitez afficher. Ceci est particulièrement important si vous souhaitez limiter l’accès aux données en fonction du compte avec lequel les données sont partagées.

    Pour faciliter cette validation, Snowflake fournit le paramètre de session SIMULATED_DATA_SHARING_CONSUMER.

    Pour le moment, le paramètre de session SIMULATED_DATA_SHARING_CONSUMER ne prend en charge que les vues sécurisées et les vues matérialisées sécurisées, mais ne prend pas en charge les UDFs sécurisés. Le réglage de ce paramètre dans une session vous permet de simuler l’interrogation d’une vue sécurisée en tant qu’utilisateur dans un compte de consommateur avec lequel vous souhaitez partager cette vue.

    Par exemple, pour un compte de consommateur nommé xy12345 :

    ALTER SESSION SET SIMULATED_DATA_SHARING_CONSUMER = xy12345;
    
    Copy

Pour un exemple détaillé, voir Utilisation d’objets sécurisés pour contrôler l’accès aux données.

Flux sur les objets partagés

Les consommateurs de données peuvent créer des flux dans leurs propres bases de données qui enregistrent les modifications apportées en langage de manipulation des données (DML) aux tables ou vues sources.

Note

La création des flux d’ajout uniquement sur des partages d’objets de source secondaire n’est pas prise en charge.

Permettre aux consommateurs de données de créer des flux de table sur des tables partagées

Pour que les consommateurs de données puissent créer des flux sur des tables partagées ou des vues sécurisées, vous devez activer le suivi des modifications sur les tables partagées ou les tables sous-jacentes d’une vue partagée.

En outre, la période de conservation des données doit être prolongée pour les tables.

Activer le suivi des modifications:

Actuellement, lorsque le premier flux d’une table locale est créé, une paire de colonnes masquées est ajoutée automatiquement à la table et commence à stocker les métadonnées de suivi des modifications. Cette modification n’est pas possible pour les tables partagées, car un consommateur d’un partage ne peut pas modifier la base de données source. Au lieu de cela, pour activer le suivi des modifications pour les tables destinées au partage, exécutez ALTER TABLE … CHANGE_TRACKING = TRUE sur chacune des tables.

Prolonger la période de conservation des données pour la table:

Lorsqu’un flux sur une table locale n’est pas consommé régulièrement, Snowflake prolonge temporairement la période de conservation des données pour la table source afin d’éviter la désuétude.

Un flux sur une table partagée ne prolonge pas la période de conservation des données pour la table. De même, un flux sur une vue partagée ne prolonge pas la période de conservation des données pour les tables sous-jacentes. Pour spécifier manuellement une période de conservation des données plus longue pour toute table partagée ou toute table sous-jacente d’une vue partagée, définissez le paramètre DATA_RETENTION_TIME_IN_DAYS pour la table.

Les paramètres CHANGE_TRACKING et DATA_RETENTION_TIME_IN_DAYS peuvent être définis lors de la création d’une table (en utilisant CREATE TABLE) ou ultérieurement (en utilisant ALTER TABLE).

Références de balises partagées

Un fournisseur de données peut apposer une balise sur un objet et partager à la fois la balise et l’objet balisé avec le consommateur de données. En outre, les références des balises de l’objet partagé sont à la disposition du consommateur. Le partage des références de balises permet au fournisseur de partager un contexte supplémentaire concernant l’objet partagé, tel que la sensibilité des données d’une table ou d’une colonne sur la base de la valeur de la chaîne de balises.

Le consommateur peut utiliser SQL pour voir les affectations de balises sur les objets partagés et déterminer les références des balises des objets partagés. En voyant les attributions de balises et les références des objets partagés, les gestionnaires de données du compte du consommateur peuvent fournir une évaluation plus complète de l’origine des données et de la façon dont elles sont utilisées. Ces nouvelles connaissances peuvent faciliter le respect des exigences réglementaires.

Le fournisseur doit créer la balise dans la même base de données que les objets balisés et partager cette base de données. Après le partage de la base de données, si le fournisseur retire une balise d’un objet partagé, le changement d’affectation de la balise se produit également dans le compte du consommateur. Le consommateur ne peut plus suivre l’objet partagé à l’aide de la balise une fois que celle-ci est désactivée. En désactivant la balise, le fournisseur peut maintenir la discrétion des données dans les cas où un objet a été balisé par inadvertance.

La lignée de balises s’applique aux objets balisés dans la base de données partagée. Par exemple, si un fournisseur définit une balise sur un schéma de la base de données partagée, les objets et les colonnes de ce schéma sont également balisés. Toutefois, le consommateur ne peut pas utiliser la fonction de table TAG_REFERENCES Information Schema pour déterminer l’endroit où le fournisseur a initialement défini la balise. Snowflake cache les valeurs de la colonne LEVEL dans la sortie de la fonction de table afin de protéger le fournisseur de données en ne révélant pas l’endroit où la balise a été initialement définie.

Important

Les balises partagées sont en lecture seule. Le consommateur ne peut pas définir une balise partagée sur un objet de son compte.

Options du fournisseur

Pour partager une balise, le fournisseur dispose des options suivantes :

  • Utilisez SQL pour autoriser le partage à accéder à la balise et permettre au consommateur de voir les affectations de la balise partagée sur les objets partagés.

    Le fournisseur doit accorder le privilège READ sur chaque balise pour mettre la balise à la disposition d’un consommateur.

    GRANT READ ON TAG mydb.tags.tag1 TO SHARE my_share;
    
    GRANT USAGE ON DATABASE mydb TO SHARE my_share;
    GRANT USAGE ON SCHEMA mydb.tags TO SHARE my_share;
    
    Copy
  • Créez un rôle de base de données, accordez le privilège READ sur la balise au rôle de base de données et accordez le rôle de base de données au partage. Le rôle de base de données doit également disposer du privilège USAGE sur le schéma qui stocke la balise.

    GRANT READ ON TAG mydb.tags.tag1 TO DATABASE ROLE my_db_role;
    GRANT USAGE ON SCHEMA mydb.tags TO DATABASE ROLE my_db_role;
    GRANT DATABASE ROLE my_db_role TO SHARE my_share;
    
    Copy
Options pour les consommateurs

Pour voir les balises partagées dans le compte du consommateur, ce dernier dispose des options suivantes :

  • Utilisez le rôle ACCOUNTADMIN. Les administrateurs des comptes de consommateurs peuvent voir les balises partagées que le fournisseur met à leur disposition.

  • Utilisez un rôle avec IMPORTED PRIVILEGES. Un rôle de compte qui se voit accorder ou qui hérite d’un rôle avec IMPORTED PRIVILEGES sur la base de données créée à partir du partage peut voir la balise partagée que le fournisseur met à disposition.

    GRANT IMPORTED PRIVILEGES ON DATABASE db_share TO ROLE db_share_role;
    
    Copy
  • Utilisez un rôle de base de données partagé. Si le fournisseur accorde le privilège READ sur une balise au rôle de base de données et partage le rôle de base de données, le consommateur peut accorder le rôle de base de données partagé à un rôle de compte dans son compte.

    GRANT DATABASE ROLE my_db_role TO ROLE consumer_analyst_role;
    
    Copy

Dans le compte du consommateur, vous pouvez utiliser SQL pour voir les balises, les références de balises et les objets balisés que le fournisseur partage :

Actuellement, vous ne pouvez pas utiliser les options suivantes dans le compte du consommateur pour voir les balises, les références de balises et les objets balisés que le fournisseur partage :

Création d’un partage

Vous devez utiliser le rôle ACCOUNTADMIN ou un rôle auquel a été attribué le privilège global CREATE SHARE pour créer des partages.

Utilisation de Snowsight

Il existe plusieurs façons de partager des données dans Snowsight :

  • Fournir une annonce à des consommateurs spécifiques ou publiquement sur la Snowflake Marketplace en utilisant Provider Studio. Voir Création et publication d’une annonce.

  • Publier une annonce dans un échange de données.

  • Créer un partage direct pour partager des données avec des comptes de consommateurs de votre région.

Pour créer un partage direct afin de partager des données avec d’autres comptes :

  1. Connectez-vous à Snowsight.

  2. Sélectionnez Data Products » Private Sharing.

  3. Sélectionnez Share » Create a Direct Share. La boîte de dialogue Share Data s’ouvre.

  4. Dans la boîte de dialogue Partager des données, sélectionnez + Select Data puis :

    1. Sélectionnez une base de données source.

    2. Sélectionnez un objet cible ou des objets de la base de données source.

    3. Si vous le souhaitez, mettez à jour l”Secure Share Identifier créé pour votre partage.

    4. En option, entrez une Description.

    5. Dans la zone de texte restante, saisissez un nom de compte. La saisie d’un nom de compte partiel permet d’obtenir la liste de tous les comptes qui correspondent au texte saisi. Répétez l’opération si nécessaire pour ajouter des comptes supplémentaires. Vous ne pouvez ajouter au partage que des comptes situés dans la même région.

    6. Sélectionnez Create Share.

Si vous souhaitez convertir un partage direct avec des consommateurs actifs en annonce, voir Conversion d’un partage direct en annonce.

À l’aide de la console classique

Sur la page Shares Onglet Partages de Classic Console, sélectionnez l’onglet Outbound.

Utilisation de SQL

Pour créer un partage à l’aide de SQL :

  1. Utilisez la commande CREATE SHARE pour créer un partage vide.

  2. Utilisez la commande GRANT <privilège> … TO SHARE pour ajouter une base de données au partage, puis accordez sélectivement l’accès à des objets de base de données spécifiques (schémas, tables et vues sécurisées) au partage.

  3. Utilisez la commande ALTER SHARE pour ajouter un ou plusieurs accès de compte au partage.

Note

Les étapes suivantes supposent qu’un compte fournisseur nommé prvdr1 partage des données avec deux comptes de consommateur nommés xy12345 et yz23456.

Étape 1 : création d’un partage vide

L’exemple suivant crée un partage vide nommé sales_s :

CREATE SHARE sales_s;
Copy

Étape 2 : attribution de privilèges pour une base de données et d’objets au partage

Ajoutez des objets (base de données, schéma, tables, vues sécurisées, etc.) au partage. Vous pouvez soit ajouter des privilèges sur ces objets à un partage via un rôle de base de données, soit accorder des privilèges sur les objets directement au partage. Pour plus d’informations sur ces options, voir Choisir comment partager des objets de base de données.

Option 1:

L’exemple suivant illustre la création d’un rôle de base de données, l’octroi de privilèges sur les objets suivants au rôle de base de données, puis l’octroi du rôle de base de données au partage sales_s créé à l’étape précédente :

  • sales_db (base de données)

  • aggregates_eula (schéma)

  • aggregate_1 (table)

CREATE DATABASE ROLE sales_db.dr1;

GRANT USAGE ON DATABASE sales_db TO DATABASE ROLE sales_db.dr1;

GRANT USAGE ON SCHEMA sales_db.aggregates_eula TO DATABASE ROLE sales_db.dr1;

GRANT SELECT ON TABLE sales_db.aggregates_eula.aggregate_1 TO DATABASE ROLE sales_db.dr1;

GRANT USAGE ON DATABASE sales_db TO SHARE sales_s;

GRANT DATABASE ROLE sales_db.dr1 TO SHARE sales_s;
Copy
Option 2:

Pour inclure des objets dans le partage, accordez des privilèges sur chaque objet. Lorsque vous accordez des privilèges, accordez d’abord l’usage sur tout objet de conteneur avant d’accorder l’usage sur les objets dans le conteneur. Par exemple, autorisez l’utilisation sur une base de données avant d’accorder l’utilisation sur tout schéma inclus dans la base de données.

Note

Effectuez cette tâche avant d’ajouter des comptes au partage. Tenter d’ajouter un compte avant d’autoriser l’utilisation sur une base de données entraîne une erreur.

L’exemple suivant illustre l’octroi de privilèges sur les objets suivants au partage sales_s créé à l’étape précédente :

  • sales_db (base de données)

  • aggregates_eula (schéma)

  • aggregate_1 (table)

GRANT USAGE ON DATABASE sales_db TO SHARE sales_s;

GRANT USAGE ON SCHEMA sales_db.aggregates_eula TO SHARE sales_s;

GRANT SELECT ON TABLE sales_db.aggregates_eula.aggregate_1 TO SHARE sales_s;
Copy

Pour confirmer les contenus du partage :

SHOW GRANTS TO SHARE sales_s;

+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+
| created_on                    | privilege | granted_on | name                                 | granted_to | grantee_name   | grant_option | granted_by   |
|-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------|
| 2017-06-15 16:45:07.307 -0700 | USAGE     | DATABASE   | SALES_DB                             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:10.310 -0700 | USAGE     | SCHEMA     | SALES_DB.AGGREGATES_EULA             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:12.312 -0700 | SELECT    | TABLE      | SALES_DB.AGGREGATES_EULA.AGGREGATE_1 | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+
Copy

Cela permet de s’assurer que le partage est correctement configuré avant de le mettre à la disposition d’autres comptes pour le consommer.

Étape 3 : Ajout de comptes au partage

Attention

Si vous possédez un compte Business Critical et partagez des données avec des comptes de consommateurs :

  • Snowflake prend en charge le partage de données sensibles avec des comptes non Business Critical (désactivé par défaut), mais n’encourage pas à le faire.

  • Pour assurer la conformité aux exigences HIPAA et HITRUST, Snowflake n’autorise pas les comptes HIPAA à partager des données avec des comptes non HIPAA.

  • Si vous utilisez la protection des données Tri-Secret Secure, notez que Snowflake traite l’accès aux données à partir des comptes de consommateur comme si l’accès se faisait à partir de votre propre compte.

Pour plus d’informations sur ces recommandations et restrictions, voir Partage de données et comptes Business Critical.

L’exemple suivant ajoute deux comptes au partage sales_s :

ALTER SHARE sales_s ADD ACCOUNTS=xy12345, yz23456;
Copy

Les comptes xy12345 et yz23456 peuvent maintenant voir le partage et créer une base de données à partir de celui-ci.

Note

Lorsque vous ajoutez des comptes à un partage, si les comptes n’existent pas, la commande se termine avec succès, mais aucune mise à jour n’est effectuée sur le partage. Pour vous assurer que le partage est correctement mis à jour, assurez-vous que les comptes existent et que vous avez saisi les noms correctement.

Utilisez SHOW SHARES pour confirmer le partage. La sortie de la commande répertorie le partage sales_s. La colonne kind indique que le partage est OUTBOUND, ce qui signifie que ce partage partage une base de données avec d’autres comptes Snowflake. La colonne to répertorie tous les comptes auxquels le partage a été mis à disposition :

SHOW SHARES;
Copy
+-------------------------------+----------+----------------------+---------------+-----------------------+------------------+--------------+----------------------------------------+---------------------+
| created_on                    | kind     | owner_account        | name          | database_name         | to               | owner        | comment                                | listing_global_name |
|-------------------------------+----------+----------------------+---------------+-----------------------+------------------+--------------+----------------------------------------|---------------------|
| 2017-07-09 19:18:09.821 -0700 | INBOUND  | SNOW.XY12345         | SALES_S2      | UPDATED_SALES_DB      |                  |              | Transformed and updated sales data     |                     |
| 2017-06-15 17:02:29.625 -0700 | OUTBOUND | SNOW.MY_TEST_ACCOUNT | SALES_S       | SALES_DB              | XY12345, YZ23456 | ACCOUNTADMIN |                                        |                     |
+-------------------------------+----------+----------------------+---------------+-----------------------+------------------+--------------+----------------------------------------+---------------------+

Maintien des partages

Vous devez utiliser un rôle doté du privilège OWNERSHIP sur un partage et du privilège global CREATE SHARE pour gérer les partages.

Ajout d’objets à un partage

Vous pouvez ajouter des objets à un partage existant à tout moment. Les objets que vous ajoutez à un partage sont instantanément disponibles pour les comptes de consommateurs qui ont créé des bases de données à partir du partage. Par exemple, si vous ajoutez une table à un partage, les utilisateurs des comptes de consommateur peuvent interroger les données de la table dès que la table est ajoutée au partage.

Note

L’interface Web ne prend actuellement pas en charge l’ajout ou la suppression de tables externes, de vues matérialisées sécurisées ou d’UDFs sécurisées aux/des partages. La gestion de ces objets dans les partages doit être effectuée à l’aide de SQL.

Important

Si vous prévoyez de partager en toute sécurité des données avec des consommateurs de données dans différentes régions ou plateformes Cloud, notez qu’actuellement, la réplication d’une base de données principale est bloquée si la base de données contient des objets tels que des tables externes ou Iceberg. Pour une liste complète des objets qui provoquent l’échec des opérations d’actualisation, voir Limites actuelles de la réplication.

Pour contourner la limitation des tables externes et Iceberg, vous pouvez activer le 2024_02 bundle pour ignorer ces tables lors des opérations d’actualisation. Pour plus d’informations, voir Réplication : ignorer les tables externes et Iceberg pendant l’opération d’actualisation (en attente).

Utilisation de Snowsight

Pour modifier les données associées à un partage en utilisant Snowsight :

  1. Connectez-vous à Snowsight.

  2. Sélectionnez Data Products » Private Sharing.

  3. Sélectionnez l’onglet Shared by Your Account.

  4. Localisez et sélectionnez le partage que vous souhaitez modifier.

  5. Dans la section Data, sélectionnez Edit.

  6. Sélectionnez les données que vous souhaitez ajouter.

  7. Sélectionnez Done.

À l’aide de la console classique

Sur la page Shares Onglet Partages de Classic Console, sélectionnez l’onglet Outbound.

Utilisation de SQL

Utilisez la commande GRANT <privilège> … TO SHARE.

Note

  • Si le schéma de l’objet se trouve déjà dans le partage, il vous suffit d’ajouter l’objet.

  • Si le schéma de l’objet n’est pas déjà dans le partage, vous devez d’abord ajouter le schéma, puis l’objet.

L’exemple suivant ajoute une vue sécurisée nommée agg_secure dans le schéma aggregates_eula au partage sales_s :

SHOW GRANTS TO SHARE sales_s;

+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+
| created_on                    | privilege | granted_on | name                                 | granted_to | grantee_name   | grant_option | granted_by   |
|-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------|
| 2017-06-15 16:45:07.307 -0700 | USAGE     | DATABASE   | SALES_DB                             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:10.310 -0700 | USAGE     | SCHEMA     | SALES_DB.AGGREGATES_EULA             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:12.312 -0700 | SELECT    | TABLE      | SALES_DB.AGGREGATES_EULA.AGGREGATE_1 | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+

GRANT SELECT ON VIEW sales_db.aggregates_eula.agg_secure TO SHARE sales_s;

SHOW GRANTS TO SHARE sales_s;

+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+
| created_on                    | privilege | granted_on | name                                 | granted_to | grantee_name   | grant_option | granted_by   |
|-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------|
| 2017-06-15 16:45:07.307 -0700 | USAGE     | DATABASE   | SALES_DB                             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:10.310 -0700 | USAGE     | SCHEMA     | SALES_DB.AGGREGATES_EULA             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:12.312 -0700 | SELECT    | TABLE      | SALES_DB.AGGREGATES_EULA.AGGREGATE_1 | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-17 12:33:15.310 -0700 | SELECT    | TABLE      | SALES_DB.AGGREGATES_EULA.AGG_SECURE  | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+
Copy

Suppression d’objets d’un partage

Vous pouvez supprimer des objets d’un partage existant à tout moment. Tous les objets que vous supprimez d’un partage sont instantanément indisponibles pour les comptes de consommateur qui ont créé des bases de données à partir du partage.

Par exemple, si vous supprimez une table d’un partage, les utilisateurs des comptes de consommateur ne peuvent plus interroger les données de la table dès que la table est supprimée du partage.

Note

L’interface Web ne prend actuellement pas en charge l’ajout ou la suppression de tables externes, de vues matérialisées sécurisées ou d’UDFs sécurisées aux/des partages. La gestion de ces objets dans les partages doit être effectuée à l’aide de SQL.

Utilisation de Snowsight

Pour supprimer les données associées à un partage en utilisant Snowsight :

  1. Connectez-vous à Snowsight.

  2. Sélectionnez Data Products » Private Sharing.

  3. Sélectionnez l’onglet Shared by Your Account.

  4. Localisez et sélectionnez le partage que vous souhaitez modifier.

  5. Dans la section Data, sélectionnez Edit.

  6. Sélectionnez les données dans le partage et désélectionnez les cases à cocher des données que vous souhaitez supprimer du partage.

  7. Sélectionnez Done.

À l’aide de la console classique

Sur la page Shares Onglet Partages de Classic Console, sélectionnez l’onglet Outbound.

Utilisation de SQL

Supprimez des objets d’un partage existant à tout moment en utilisant la commande REVOKE <privilège> … FROM SHARE.

L’exemple suivant supprime la vue sécurisée nommée agg_secure dans le schéma aggregates_eula du partage sales_s :

SHOW GRANTS TO SHARE sales_s;

+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+
| created_on                    | privilege | granted_on | name                                 | granted_to | grantee_name   | grant_option | granted_by   |
|-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------|
| 2017-06-15 16:45:07.307 -0700 | USAGE     | DATABASE   | SALES_DB                             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:10.310 -0700 | USAGE     | SCHEMA     | SALES_DB.AGGREGATES_EULA             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:12.312 -0700 | SELECT    | TABLE      | SALES_DB.AGGREGATES_EULA.AGGREGATE_1 | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-17 12:33:15.310 -0700 | SELECT    | TABLE      | SALES_DB.AGGREGATES_EULA.AGG_SECURE  | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+

REVOKE SELECT ON VIEW sales_db.aggregates_eula.agg_secure FROM SHARE sales_s;

+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+
| created_on                    | privilege | granted_on | name                                 | granted_to | grantee_name   | grant_option | granted_by   |
|-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------|
| 2017-06-15 16:45:07.307 -0700 | USAGE     | DATABASE   | SALES_DB                             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:10.310 -0700 | USAGE     | SCHEMA     | SALES_DB.AGGREGATES_EULA             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:12.312 -0700 | SELECT    | TABLE      | SALES_DB.AGGREGATES_EULA.AGGREGATE_1 | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+
Copy

Ajout de comptes à un partage

Vous pouvez ajouter des comptes à un partage existant à tout moment. Après qu’un compte est ajouté au partage, le partage est immédiatement « visible » pour le compte, et le compte peut créer une base de données à partir du partage et commencer à interroger les objets Snowflake dans la base de données.

Utilisation de Snowsight

Pour ajouter des consommateurs à un partage existant en utilisant Snowsight :

  1. Connectez-vous à Snowsight.

  2. Sélectionnez Data Products » Private Sharing.

  3. Sélectionnez l’onglet Shared by Your Account.

  4. Localisez le partage que vous souhaitez modifier.

  5. Dans la section Shared With, sélectionnez Add Consumers.

  6. Pour Share With Snowflake Accounts, entrez un ou plusieurs noms de compte. La saisie d’une partie du nom d’un compte permet d’obtenir la liste de tous les comptes correspondant.

  7. Sélectionnez Add.

À l’aide de la console classique

Sur la page Shares Onglet Partages de Classic Console, sélectionnez l’onglet Outbound.

Lorsque vous ajoutez des comptes, vous pouvez choisir d’ajouter des comptes complets ou des comptes de lecteur. Vous pouvez également choisir de créer un compte de lecteur à cet instant et de l’ajouter au partage.

Utilisation de SQL

Pour ajouter des consommateurs à un partage existant à l’aide de SQL, utilisez la commande ALTER SHARE.

Suppression de comptes d’un partage

Vous pouvez supprimer des comptes d’un partage existant à tout moment. La suppression d’un compte d’un partage invalide instantanément la base de données qu’ils ont créée à partir de ce partage. Toutes les requêtes et autres opérations que les utilisateurs du compte effectuent sur la base de données ne fonctionneront plus.

Après avoir supprimé un compte d’un partage, vous pouvez l’ajouter à nouveau au partage. Cependant, cela ne restaure pas la base de données créée précédemment à partir du partage. Une nouvelle base de données doit être créée à partir du partage.

Note

Avant de retirer un compte d’un partage, prenez en compte les conséquences en aval que cela aura sur le compte. Comme la base de données est instantanément invalidée, toutes les requêtes et autres opérations que les utilisateurs (dans le compte) effectuent sur la base de données cesseront de fonctionner, ce qui pourrait avoir un impact significatif sur les opérations commerciales du compte.

Utilisation de Snowsight

Pour supprimer des consommateurs d’un partage existant à l’aide de Snowsight :

  1. Connectez-vous à Snowsight.

  2. Sélectionnez Data Products » Private Sharing.

  3. Sélectionnez l’onglet Shared by Your Account.

  4. Localisez et sélectionnez le partage que vous souhaitez modifier.

  5. Dans la section Shared With , sélectionnez » Remove.

  6. Dans la boîte de dialogue de confirmation, sélectionnez Remove.

À l’aide de la console classique

Sur la page Shares Onglet Partages de Classic Console, sélectionnez l’onglet Outbound.

Utilisation de SQL

Supprimez les comptes d’un partage existant à l’aide de la commande ALTER SHARE.

Vous supprimez un compte d’un partage en définissant une nouvelle liste de comptes pour le partage et en laissant le compte souhaité en dehors de la liste.

Suppression d’un partage à l’aide de SQL

Vous pouvez supprimer un partage à tout moment. Détruire un partage invalide instantanément toutes les bases de données créées par les comptes de consommateur à partir du partage. Toutes les requêtes et autres opérations effectuées sur ces bases de données ne fonctionnent plus.

Après avoir détruit un partage, vous pouvez le recréer avec le même nom. Cependant, cela ne restaure aucune des bases de données créées par les comptes de consommateur à partir du partage. Le partage recréé est traité comme un nouveau partage et tous les comptes de consommateur doivent créer une nouvelle base de données à partir du nouveau partage.

Note

Avant de détruire un partage, prenez en compte les conséquences en aval que cela aura sur les comptes de consommateur utilisant le partage.

À la place, vous pouvez envisager de supprimer des objets individuels du partage. Les objets supprimés peuvent être ajoutés de nouveau à un partage sans nécessiter de tâches supplémentaires de la part des comptes de consommateur.

Utilisation de Snowsight

Pour supprimer un partage à l’aide de Snowsight :

  1. Connectez-vous à Snowsight.

  2. Sélectionnez Data Products » Private Sharing.

  3. Sélectionnez l’onglet Shared by Your Account.

  4. Localisez et sélectionnez le partage que vous souhaitez supprimer.

  5. Sélectionnez » Drop.

  6. Dans la boîte de dialogue de confirmation, sélectionnez Drop.

À l’aide de la console classique

Sur la page Shares Onglet Partages de Classic Console, sélectionnez l’onglet Outbound.

Utilisation de SQL

Supprimez un partage à l’aide de la commande DROP SHARE.

Affichage des consommateurs qui ont créé des bases de données à partir de partages à l’aide de SQL

Pour voir les comptes qui ont créé des bases de données à partir d’un partage, utilisez la commande SHOW GRANTS OF SHARE . La sortie de cette commande est différente de la liste des comptes renvoyée par SHOW SHARES pour les raisons suivantes :

  • SHOW SHARES répertorie tous les partages disponibles pour les comptes, ainsi que les comptes qui peuvent accéder à chaque partage.

  • SHOW GRANTS OF SHARE répertorie tous les comptes qui ont créé une base de données à partir du partage. Si aucun compte n’a créé de base de données à partir du partage, les résultats sont vides.

Par exemple, l’exemple suivant montre :

  • Deux actions, sales_s et sales_s2 , ont été mises à disposition des comptes xy12345 et yz23456 par le compte du propriétaire SNOW.PRVDR1.

  • Le compte xy12345 a créé une base de données à partir du partage prvdr1.sales_s.

  • Aucun compte n’a créé de bases de données à partir du partage sales_s2.

SHOW SHARES;
Copy
+-------------------------------+----------+----------------------+---------------+-----------------------+------------------+--------------+----------------------------------------+---------------------+
| created_on                    | kind     | owner_account        | name          | database_name         | to               | owner        | comment                                | listing_global_name |
|-------------------------------+----------+----------------------+---------------+-----------------------+------------------+--------------+----------------------------------------|---------------------|
| 2017-06-15 17:02:29.625 -0700 | OUTBOUND | SNOW.PRVDR1          | SALES_S       | SALES_DB              | XY12345, YZ23456 | ACCOUNTADMIN |                                        |
| 2017-06-15 17:02:29.625 -0700 | OUTBOUND | SNOW.PRVDR1          | SALES_S2      | SALES_DB              | XY12345, YZ23456 | ACCOUNTADMIN |                                        |                     |
+-------------------------------+----------+----------------------+---------------+-----------------------+------------------+--------------+----------------------------------------+---------------------+
SHOW GRANTS OF SHARE sales_s;
Copy
+-------------------------------+----------------+------------+----------+
| created_on                    | share          | granted_to | account  |
|-------------------------------+----------------+------------+----------|
| 2017-06-15 18:00:03.803 -0700 | PRVDR1.SALES_S | ACCOUNT    | XY12345  |
+-------------------------------+----------------+------------+----------+
SHOW GRANTS OF SHARE sales_s2;
Copy
+------------+-------+------------+---------+
| created_on | share | granted_to | account |
|------------+-------+------------+---------|
+------------+-------+------------+---------+

Afficher et gérer les données que vous partagez

En utilisant Snowsight, vous pouvez voir les données qui ont été partagées par votre compte à l’aide d’une annonce, d’un partage direct ou dans le cadre d’un échange de données.

Pour voir les données partagées par votre compte, procédez comme suit :

  1. Connectez-vous à Snowsight.

  2. Sélectionnez Data Products » Private Sharing.

  3. Sélectionnez l’onglet Shared by Your Account.

Sur cette page, vous pouvez effectuer les opérations suivantes :

  • Affichez les partages que vous avez créés ou pour lesquels vous avez des privilèges d’accès. Il s’agit d’informations telles que la base de données du partage, les comptes consommateurs, le cas échéant, ajoutés au partage, la date de création du partage et les objets partagés.

  • Explorez les actions associées aux annonces proposées spécifiquement à certains consommateurs ou accessibles à tout consommateur sur Snowflake Marketplace.

  • Accédez aux partages partagés dans le cadre d’échanges de données privés.

Vous pouvez utiliser les filtres suivants pour trier les données partagées affichées :

  • Filtrez par type avec la liste déroulante All Types. Choisissez d’afficher uniquement les partages sécurisés ou les annonces partagées au sein d’un échange de données. Certains partages sécurisés sont des partages associés à des annonces.

  • Filtrez par compte consommateur ou échange de données avec la liste déroulante Shared With. Sélectionnez un ou plusieurs consommateurs ou échanges de données spécifiques pour voir tous les partages ou toutes les annonces associées à votre ou vos sélections.

Sélectionnez un partage pour gérer le partage, révoquer l’accès pour les comptes de consommateurs individuels, ou ajouter une description pour le partage. Pour gérer les partages sécurisés proposés en tant qu’annonces ou pour gérer vos annonces sur Snowflake Marketplace, utilisez Provider Studio. Pour plus d’informations, consultez Gestion des annonces en tant que fournisseur.