Snowflake Data Clean Rooms : tables externes et Iceberg

Lorsque des tables externes et des tables Iceberg sont liées dans une salle blanche, il existe des appels externes qui peuvent permettre à un collaborateur d’extraire des informations sensibles de la salle blanche. De ce fait, le fournisseur et le consommateur doivent tous deux donner leur consentement avant que l’autre partie puisse utiliser ces objets dans la salle blanche.

Pour connaître les limitations lors de l’inclusion de tables externes et de tables Iceberg dans une salle blanche, voir Limitations.

Salles blanches d’applications Web

Pour contrôler l’inclusion de tables externes et de tables Iceberg dans les salles blanches créées et installées dans l’application Web, les administrateurs fournisseurs et consommateurs configurent leur environnement de salle blanche pour autoriser explicitement ces objets.

  • Pour les salles blanches partagées avec un consommateur par un fournisseur, le consommateur ne peut pas inclure de tables externes et de tables Iceberg, sauf si le fournisseur les autorise explicitement pour l’environnement de salle blanche du fournisseur.

  • Pour les consommateurs, les utilisateurs de salles blanches ne peuvent pas installer une salle blanche dotée de tables externes ou de tables Iceberg, à moins que l’environnement de la salle blanche ne le permette. Même si l’environnement de salle blanche du consommateur autorise ces objets, les utilisateurs de la salle blanche sont avertis lorsque ces types de tables ont été liées afin qu’ils puissent décider de ne pas installer la salle blanche.

Pour configurer un environnement de salle blanche pour autoriser les tables externes et les tables Iceberg :

  1. Connectez-vous à l’application Web.

  2. Effectuez au choix :

    • Si vous utilisez un compte géré, sélectionnez Admin » My Account.

    • Si vous utilisez un compte Snowflake, sélectionnez Admin » Snowflake Admin et connectez-vous à Snowflake en tant qu’utilisateur avec le rôle ACCOUNTADMIN.

  3. Basculez sur External & Iceberg Tables.

Salles blanches des API du développeur

Autoriser les tables externes et les tables Iceberg dans une salle blanche créée et installée à l’aide des APIs du développeur est un processus en deux étapes :

  • Tout d’abord, un utilisateur avec le rôle ACCOUNTADMIN permet ces types de tables pour l’ensemble de l’environnement de salle blanche.

  • Ensuite, les utilisateurs de la salle blanche autorisent ces objets pour des salles blanches spécifiques au fur et à mesure de leur création ou de leur installation.

Autoriser les tables externes et les tables Iceberg dans un environnement de salle blanche

L’administrateur de compte du fournisseur et du consommateur doit autoriser explicitement les tables externes et les tables Iceberg dans l’environnement de salle blanche avant que les utilisateurs individuels puissent les autoriser dans une salle blanche.

Pour autoriser les tables externes et les tables Iceberg dans un environnement de salle blanche, l’administrateur du compte exécute :

USE ROLE ACCOUNTADMIN;

CALL samooha_by_snowflake_local_db.library.enable_external_tables_on_account();
Copy

Autoriser les tables externes et les tables Iceberg dans une salle blanche spécifique

Le fournisseur qui crée une salle blanche et le consommateur qui l’installe doivent autoriser la présence de tables externes et de tables Iceberg dans la salle blanche.

Fournisseur:

Avant de pouvoir lier une table externe ou une table Iceberg dans une salle blanche, le fournisseur doit appeler la commande providers.enable_external_tables_for_cleanroom. Par exemple, si le fournisseur souhaite ajouter une table Iceberg à la salle blanche insights_cleanroom, il doit exécuter :

CALL samooha_by_snowflake_local_db.provider.enable_external_tables_for_cleanroom(
    'insights_cleanroom');
Copy
Consommateur:

Une fois qu’un consommateur a installé une salle blanche, il peut approuver l’inclusion par le fournisseur de tables externes ou de tables Iceberg en exécutant la commande consumers.enable_external_tables_for_cleanroom. Par exemple, si le consommateur a installé une salle blanche overlap_cleanroom qui inclut une table Iceberg, ils doivent exécuter :

CALL samooha_by_snowflake_local_db.consumer.enable_external_tables_for_cleanroom(
    'overlap_cleanroom');
Copy

Enregistrer une table externe ou une table Iceberg

Comme pour les autres objets, les tables externes et les tables Iceberg doivent être enregistrées avant de pouvoir être liées. Utilisez le paramètre approprié de la commande library.register_table_or_view pour indiquer le type de table.

Table externe

Le quatrième paramètre de la commande library.register_table_or_view spécifie si un objet est une table externe. Par exemple, pour enregistrer une table externe my_ext_table dans le schéma samooha_sample_database.demo, exécutez :

CALL samooha_by_snowflake_local_db.library.register_table_or_view(
    ['SAMOOHA_SAMPLE_DATABASE.DEMO.MY_EXT_TABLE'],
    false,
    false,
    true,
    false);
Copy
Table Iceberg

Le troisième paramètre de la commande library.register_table_or_view spécifie si un objet est une table Iceberg. Par exemple, pour enregistrer la table Iceberg customers dans le schéma samooha_sample_database.demo, exécutez :

CALL samooha_by_snowflake_local_db.library.register_table_or_view(
    ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
    false,
    true,
    false,
    false);
Copy

Limitations

  • Étant donné que les comptes gérés utilisent toujours des tables externes, les fournisseurs doivent activer les tables externes et les tables Iceberg lorsqu’ils partagent une salle blanche avec un compte géré.

  • Les collaborateurs de différentes régions ne peuvent pas lier des tables externes et des tables Iceberg dans des salles blanches.

  • Vous ne pouvez pas exécuter une analyse avec le modèle de requête SQL si sa configuration applique une politique d’agrégation ou une politique de projection à la table externe ou à la table Iceberg.