
RBAC dans Snowflake

Introduction
À mesure que les entreprises migrent de plus en plus de leurs données et analyses vers le cloud, la sécurité des données et le contrôle d’accès deviennent des préoccupations critiques. Snowflake, une plateforme de données cloud populaire, offre des fonctionnalités de sécurité robustes, y compris le contrôle d’accès basé sur les rôles (RBAC). Le RBAC vous permet de contrôler l’accès aux objets et aux capacités de Snowflake en fonction des rôles attribués aux utilisateurs.
Cet article traite du RBAC dans Snowflake. Il explique comment fonctionne le RBAC et propose des exemples pour vous familiariser avec le RBAC de Snowflake.
Qu’est-ce que le contrôle d’accès basé sur les rôles ?
Le contrôle d’accès basé sur les rôles détermine qui peut accéder à un ordinateur ou à une ressource en fonction des rôles des utilisateurs dans une entreprise. Le RBAC est une méthode de contrôle de l’accès à l’information.
Ce système attribue des permissions aux utilisateurs en fonction de leurs rôles au sein de l’organisation. Il aide à s’assurer que seules les personnes autorisées peuvent accéder à certaines données ou ressources.
Dans le RBAC, vous associez des rôles à des permissions et assignez les utilisateurs aux rôles appropriés. Cela simplifie la gestion des accès. Au lieu d’attribuer des permissions individuellement à chaque utilisateur, vous pouvez attribuer des permissions aux rôles. Les utilisateurs de la base de données Snowflake appartiennent à ces rôles selon les besoins.
Le RBAC offre plusieurs avantages :
- Gestion des accès simplifiée : les administrateurs peuvent attribuer des permissions aux rôles plutôt qu’aux utilisateurs individuels
- Sécurité améliorée : les utilisateurs n’ont accès qu’aux ressources spécifiques autorisées par leur rôle
- Réduction de la charge administrative : avec moins d’attributions directes, le RBAC réduit le fardeau de la gestion
- Conformité réglementaire : le RBAC facilite la mise en œuvre et la démonstration des contrôles d’accès pour répondre aux exigences réglementaires
Comment fonctionne le RBAC dans Snowflake
Snowflake gère tous les contrôles d’accès via des rôles et des privilèges. Un rôle attribue une collection nommée de privilèges aux utilisateurs. Les privilèges confèrent la capacité d’effectuer certaines actions sur des objets sécurisés comme les bases de données, les schémas, les tables, etc.
Voici les concepts clés du modèle RBAC de Snowflake :
- Rôles : Un rôle est une collection de privilèges. Les utilisateurs ou d’autres rôles peuvent attribuer des rôles.
- Privilèges : Un privilège confère la capacité d’effectuer une certaine action, comme créer une base de données ou interroger une table. Les rôles attribuent un ensemble de privilèges aux utilisateurs.
- Objets sécurisés : Une entité comme une base de données, un schéma, une table ou une vue qui a un accès contrôlé. Nous donnons des privilèges pour sécuriser les objets.
- Contrôle d’accès : Les rôles sont des groupes qui contrôlent l’accès en donnant des permissions et en les assignant aux utilisateurs. Les utilisateurs administrateurs attribuent des permissions de rôles et assignent des rôles aux utilisateurs.
- Hiérarchie des rôles : Un administrateur de base de données peut attribuer des rôles à d’autres rôles, créant une hiérarchie. Les rôles enfants héritent des privilèges de leurs rôles parents.
Configuration du RBAC dans Snowflake
Pour mettre en œuvre le RBAC dans Snowflake, vous suivrez ces étapes générales :
- Créer des rôles
- Attribuer des privilèges aux rôles
- Assigner des rôles aux utilisateurs
Parcourons un exemple. Supposons que nous ayons une base de données simple avec des données de vente auxquelles différents utilisateurs doivent accéder. Nous allons créer une configuration RBAC pour contrôler l’accès.
Tout d’abord, créons la base de données et la table :
CREATE DATABASE sales_db; CREATE TABLE sales_db.public.orders ( order_id INT, amount DECIMAL(10,2) );
Ensuite, nous créerons quelques rôles :
CREATE ROLE admin; CREATE ROLE analyst; CREATE ROLE reporter;
Maintenant, nous pouvons attribuer des privilèges aux rôles :
-- les admins peuvent gérer la base de données GRANT CREATE DATABASE ON ACCOUNT TO ROLE admin; GRANT CREATE SCHEMA ON DATABASE sales_db TO ROLE admin; GRANT CREATE TABLE ON ALL SCHEMAS IN DATABASE sales_db TO ROLE admin; -- les analystes peuvent interroger les données GRANT USAGE ON DATABASE sales_db TO ROLE analyst; GRANT USAGE ON SCHEMA sales_db.public TO ROLE analyst; GRANT SELECT ON ALL TABLES IN SCHEMA sales_db.public TO ROLE analyst; -- les reporters peuvent exécuter des requêtes SELECT GRANT USAGE ON DATABASE sales_db TO ROLE reporter; GRANT USAGE ON SCHEMA sales_db.public TO ROLE reporter; GRANT SELECT ON ALL TABLES IN SCHEMA sales_db.public TO ROLE reporter;
Enfin, nous assignons des rôles aux utilisateurs :
CREATE USER michelle PASSWORD = 'strong_password'; CREATE USER frank PASSWORD = 'another_strong_password'; CREATE USER lisa PASSWORD = 'yet_another_strong_password'; GRANT ROLE admin TO USER michelle; GRANT ROLE analyst TO USER frank; GRANT ROLE reporter TO USER lisa;
Michelle a des privilèges d’administratrice, Frank a des privilèges d’analyste, et Lisa a des privilèges de journaliste en fonction de leurs rôles assignés.
Nous pouvons tester cela :
-- se connecter en tant que michelle USE ROLE ADMIN; CREATE TABLE sales_db.public.customers (customer_id INT); -- succès -- se connecter en tant que frank USE ROLE ANALYST; SELECT * FROM sales_db.public.orders; -- succès CREATE TABLE sales_db.public.customers (customer_id INT); -- échec, les analystes ne peuvent que consulter -- se connecter en tant que lisa USE ROLE REPORTER; SELECT * FROM sales_db.public.orders; -- succès CREATE TABLE sales_db.public.customers (customer_id INT); -- échec, les reporters ne peuvent que consulter Chaque utilisateur ne peut faire que ce que son rôle lui permet de faire, en suivant le principe du moindre privilège."
Hiérarchie des rôles
Les organisations peuvent organiser les rôles Snowflake en hiérarchies, où un rôle enfant hérite des privilèges de son rôle parent. Cela vous permet de définir un accès large à des niveaux supérieurs, puis de préciser l’accès en créant des rôles enfants plus spécifiques.
Par exemple, supposons que nous voulions créer un rôle “read-only” qui peut accéder à plusieurs bases de données. Nous pouvons créer un rôle parent avec des privilèges SELECT étendus, puis créer des rôles enfants pour un accès plus spécifique :
CREATE ROLE read_only; GRANT USAGE ON DATABASE sales_db TO ROLE read_only; GRANT USAGE ON SCHEMA sales_db.public TO ROLE read_only; GRANT SELECT ON ALL TABLES IN SCHEMA sales_db.public TO ROLE read_only; GRANT USAGE ON DATABASE marketing_db TO ROLE read_only; GRANT USAGE ON SCHEMA marketing_db.public TO ROLE read_only; GRANT SELECT ON ALL TABLES IN SCHEMA marketing_db.public TO ROLE read_only; CREATE ROLE sales_reader; GRANT ROLE read_only TO ROLE sales_reader; CREATE ROLE marketing_reader; GRANT ROLE read_only TO ROLE marketing_reader; Maintenant, les rôles sales_reader et marketing_reader héritent des privilèges SELECT du rôle parent read_only. Nous pouvons les attribuer aux utilisateurs selon les besoins : GRANT ROLE sales_reader TO USER frank; GRANT ROLE marketing_reader TO USER lisa;
Frank peut accéder à la base de données des ventes pour obtenir des informations. Lisa peut accéder à la base de données marketing pour obtenir des informations. Ils ont tous deux le rôle parent en lecture seule.
Utiliser judicieusement les hiérarchies de rôles peut rendre les configurations RBAC plus faciles à gérer et à comprendre. Construisez votre hiérarchie en commençant par des rôles larges, puis créez des rôles enfants pour un accès plus granulaire et spécifique.
Centralisation et simplification de la gestion du RBAC
Snowflake dispose d’un bon système pour gérer les rôles et les privilèges. Cependant, il peut être difficile de les gérer dans une grande organisation avec de nombreux utilisateurs et bases de données. C’est là que des outils tiers comme DataSunrise peuvent aider.
DataSunrise propose une suite d’outils pour améliorer et simplifier la sécurité des données et la conformité dans Snowflake. Leur interface web intuitive facilite la gestion des configurations RBAC sur toutes vos bases de données et entrepôts Snowflake. Vous pouvez gérer les utilisateurs, les rôles et les privilèges depuis une console unique.
En plus de la gestion du RBAC, DataSunrise offre d’autres fonctionnalités de sécurité essentielles pour Snowflake, y compris :
- Cryptage et tokenisation des données
- Masquage dynamique des données
- Pare-feu SQL pour la surveillance en temps réel et l’application des politiques
- Audit des données et reporting pour répondre aux exigences de conformité
Si vous recherchez des moyens d’améliorer la sécurité et la conformité dans votre environnement Snowflake, envisagez d’explorer des outils comme DataSunrise. Nous proposons une démo gratuite afin que vous puissiez voir les capacités de DataSunrise en action.
Conclusion
Le contrôle d’accès basé sur les rôles est un outil puissant pour gérer l’accès aux données dans Snowflake. Le RBAC vous permet de contrôler l’accès en détail en attribuant des privilèges aux rôles.
Ensuite, l’administrateur de base de données attribue ces rôles aux utilisateurs, suivant le principe du moindre privilège. La mise en œuvre de RBAC par Snowflake est flexible et robuste, supportant les hiérarchies de rôles pour un contrôle encore plus granulaire.
Bien que le RBAC dans Snowflake soit nativement robuste, les déploiements à l’échelle de l’entreprise peuvent encore devenir complexes à gérer. Des outils tiers comme DataSunrise peuvent aider à simplifier et centraliser la gestion du RBAC sur toutes vos instances Snowflake.
Nous espérons que cet article a été une introduction utile au RBAC dans Snowflake. Pour en savoir plus, consultez la documentation Snowflake.