Rôles personnalisés et rôles secondaires

Gestion, gouvernance et collaboration avec Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Problème des scénarios à rôles plats

Liste d’analystes pointant vers différents privilèges.

Gestion, gouvernance et collaboration avec Snowflake

Rôles d’accès vs rôles fonctionnels

Scission illustrant la différence entre rôles d’accès et rôles fonctionnels selon les rôles hérités

  • Les rôles d’accès détiennent des privilèges précis sur des objets précis
  • Les rôles fonctionnels sont au-dessus et héritent des rôles d’accès
1 [Snowflake: Aligning Object Access with Business Functions](https://docs.snowflake.com/en/user-guide/security-access-control-considerations#aligning-object-access-with-business-functions)
Gestion, gouvernance et collaboration avec Snowflake

Fonctionnement

Fonctionnement en pratique

  • Les rôles d’accès détiennent des privilèges précis
  • Les rôles fonctionnels héritent d’un ou plusieurs rôles d’accès
  • Les usagers reçoivent des rôles fonctionnels
Gestion, gouvernance et collaboration avec Snowflake

Construire la hiérarchie en SQL

Étape 1 : Créer un rôle d’accès et lui accorder des privilèges sur des objets

CREATE ROLE credit_read;
GRANT USAGE ON DATABASE claro_db 
TO ROLE credit_read;
GRANT USAGE ON SCHEMA claro_db.core 
TO ROLE credit_read;
GRANT SELECT ON TABLE core.credit_scores
  TO ROLE credit_read;

Étape 2 : Créer un rôle fonctionnel et hériter du rôle d’accès

CREATE ROLE analyst;
GRANT ROLE credit_read TO ROLE analyst;

Étape 3 : Attribuer le rôle fonctionnel à un usager

GRANT ROLE analyst TO USER ana;
Gestion, gouvernance et collaboration avec Snowflake

Rôles de compte vs rôles de base de données

Rôles de compte Rôles de base de données
Portée Couvrent toute BD ou tout schéma Limité à une seule base de données
Attribués aux usagers? Oui Non — accordés à un rôle de compte
SQL CREATE ROLE CREATE DATABASE ROLE
Cas d’usage Représenter des fonctions métier globales Regrouper l’accès aux objets d’une BD
Gestion, gouvernance et collaboration avec Snowflake

Rôles secondaires

  • Chaque session a un rôle principal défini par USE ROLE <Role Name>
  • Par défaut, les rôles secondaires sont sur ALL : tous vos rôles attribués sont actifs
  • Utilisez USE SECONDARY ROLES <role_name> pour activer un sous-ensemble précis

  • USE SECONDARY ROLES NONE pour restreindre au seul rôle principal

Gérer les rôles secondaires dans une session

USE SECONDARY ROLES ALL;
USE SECONDARY ROLES <role_name>;
USE SECONDARY ROLES NONE;
1 [Snowflake BCR-1692: Secondary Roles Default Change](https://docs.snowflake.com/en/release-notes/bcr-bundles/2024_08/bcr-1692)
Gestion, gouvernance et collaboration avec Snowflake

Octrois futurs

Octroie automatiquement SELECT sur toute nouvelle table ajoutée à ce schéma

GRANT SELECT ON FUTURE TABLES
  IN SCHEMA core
  TO ROLE credit_read;
Gestion, gouvernance et collaboration avec Snowflake

Passons à la pratique !

Gestion, gouvernance et collaboration avec Snowflake

Preparing Video For Download...