Registres

Avant de pouvoir ajouter un modèle, une offre de données ou une autre ressource à une collaboration, vous devez enregistrer la ressource dans un registre. Un registre est un conteneur au niveau du compte qui stocke des ressources. Une fois qu’une ressource est enregistrée, elle peut être ajoutée à une collaboration par toute personne de votre compte pouvant accéder au registre. Les registres ne sont pas liés à une collaboration spécifique, mais les ressources du registre peuvent être liées à zéro ou plusieurs collaborations dans ce compte.

Chaque compte Snowflake prend en charge un registre par défaut. Vous pouvez créer d’autres registres personnalisés pour votre compte. Les registres personnalisés sont un bon moyen de regrouper et de gérer l’accès à vos ressources. Par exemple, vous pouvez créer un registre personnalisé pour les données de ventes et un autre pour les données de dépenses, puis accorder l’accès à ces registres aux utilisateurs concernés via des rôles RBAC.

Voici les principales règles relatives aux registres :

  • Chaque registre personnalisé prend en charge un seul type de ressource (modèle, offre de données, etc.). Le type de données est spécifié lorsque vous créez le registre. Le registre par défaut prend en charge tous les types de ressources.

  • Il n’existe pas de limite au nombre de registres personnalisés que vous pouvez créer dans un compte.

  • Lorsque vous enregistrez une ressource, vous pouvez utiliser le paramètre de nom de registre facultatif pour spécifier un registre personnalisé. Si vous ne spécifiez pas de registre personnalisé, la ressource sera enregistrée dans le registre par défaut du compte.

  • Tous les utilisateurs ont accès au registre par défaut dans un compte. Cependant, les registres personnalisés sont initialement privés pour le créateur et les utilisateurs supplémentaires doivent se voir accorder l’accès explicitement en appelant GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE.

  • Un compte peut avoir plusieurs registres qui stockent le même type de ressource.

  • Les registres n’ont pas un nombre maximum de ressources.

  • Une ressource doit avoir un nom unique dans tous les registres de ce compte pour les ressources de ce type. Par exemple, vous pouvez avoir un modèle nommé sales et une offre de données nommée sales dans le même compte, mais pas deux modèles nommés sales dans le même registre ou dans des registres différents du même compte. Le nom de la ressource est défini comme la valeur name ayant le plus niveau dans la spécification.

  • Lorsque vous liez une ressource à une collaboration, la ressource est visible pour tous ceux qui peuvent y accéder selon la spécification. L’accès au registre contenant les n’est pas nécessaire.

  • Si deux comptes différents enregistrent des ressources avec le même nom et le même type, cela est autorisé. La spécification de la collaboration affichera des ressources nommées de la même manière, mais le système saura quelle ressource est destinée. La ressource portant ce nom est utilisée à partir du compte qui a ajouté la ressource à la collaboration.

Exemple

Cet exemple crée un registre personnalisé, y enregistre une offre de données et accorde un accès en lecture à ce registre par le biais d’un nouveau rôle.

-- Create a custom registry that can hold data offerings.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.CREATE_REGISTRY(
  'SALES',
  'DATA_OFFERING'
);

-- Add a data offering to the custom registry.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.REGISTER_DATA_OFFERING(
  'SALES',
  $$
  api_version: 2.0.0
  spec_type: data_offering
  version: v1
  name: FL_SALES
  datasets:
   - alias: customers_1
     data_object_fqn: SALES_DB.PUBLIC.FL_DATA
     allowed_analyses: template_only
     schema_and_template_policies:
       company_name:
         category: passthrough
       total_sales:
         category: passthrough
  $$
);

-- Create a role and grant it access to the registry.
CREATE ROLE MARKETING_USERS;
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.ADMIN.GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE(
  'READ',
  'REGISTRY',
  $collaboration_name,
  'MARKETING_USERS'
);

-- Grant access to the registry for a user by assigning the role.
GRANT ROLE MARKETING_USERS to USER willy_loman;
Copy