RBAC dans Snowflake
Introduction
Alors que les organisations déplacent de plus en plus 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 plate-forme de données cloud populaire, fournit 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 dans Snowflake en fonction des rôles accordés aux utilisateurs.
Cet article traite du RBAC dans Snowflake. Il explique comment fonctionne le RBAC et fournit des exemples pour vous aider à 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. RBAC est une méthode de contrôle d’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 à garantir 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. Plutôt que d’attribuer des permissions à chaque utilisateur individuellement, vous pouvez attribuer des permissions aux rôles. Les utilisateurs de la base de données Snowflake appartiennent à ces rôles au besoin.
Le RBAC offre plusieurs avantages :
- Gestion simplifiée des accès : les administrateurs peuvent attribuer des permissions aux rôles plutôt qu’aux utilisateurs individuels
- Sécurité améliorée : les utilisateurs ont uniquement accès aux ressources spécifiques que leur rôle permet
- Réduction de la charge administrative : avec moins d’attributions directes, le RBAC réduit la charge de 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 tout le contrôle 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 accordent la capacité d’effectuer certaines actions sur des objets sécurisables tels que des bases de données, des schémas, des tables, etc.
Voici les concepts clés dans le 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 accorde la capacité d’effectuer une certaine action, comme créer une base de données ou interroger une table. Les rôles associent un ensemble de privilèges aux utilisateurs.
- Objets sécurisables : une entité comme une base de données, un schéma, une table ou une vue dont l’accès est contrôlé. Nous accordons 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 attribuant aux utilisateurs. Les utilisateurs admin attribuent des permissions aux rôles et attribuent des rôles aux utilisateurs.
- Hiérarchie des rôles : l’administrateur de la 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.
Configurer le RBAC dans Snowflake
Pour implémenter 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
Passons à un exemple. Supposons que nous ayons une simple base de données avec des données de ventes que 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 allons créer 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, assignons les 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’admin, Frank a des privilèges d’analyste, et Lisa a des privilèges de reporter 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); -- réussite -- se connecter en tant que frank USE ROLE ANALYST; SELECT * FROM sales_db.public.orders; -- réussite CREATE TABLE sales_db.public.customers (customer_id INT); -- échec, les analystes peuvent uniquement interroger -- se connecter en tant que lisa USE ROLE REPORTER; SELECT * FROM sales_db.public.orders; -- réussite CREATE TABLE sales_db.public.customers (customer_id INT); -- échec, les reporters peuvent uniquement interroger Chaque utilisateur ne peut faire que ce que son rôle lui permet de faire, en suivant la règle 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 des accès globaux à des niveaux supérieurs, puis d’ajuster finement l’accès en créant des rôles enfants plus spécifiques sous ceux-ci.
Par exemple, supposons que nous voulions créer un rôle “lecture seule” 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 des accès spécifiques :
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 les deux le rôle parent read_only.
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 globaux, puis créez des rôles enfants pour un accès plus granulaire et spécifique.
Centraliser et simplifier la gestion du RBAC
Snowflake dispose d’un bon système de gestion des rôles et des privilèges. Cependant, cela peut être difficile à 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 offre une suite d’outils pour améliorer et simplifier la sécurité et la conformité des données dans Snowflake. Leur interface web intuitive facilite la gestion des configurations RBAC dans 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 seule console.
En plus de la gestion RBAC, DataSunrise fournit d’autres fonctionnalités de sécurité essentielles pour Snowflake, y compris :
- Chiffrement 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 et reporting des données pour répondre aux exigences de conformité
Si vous cherchez 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 pour vous permettre de 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.
Par la suite, l’administrateur de la base de données attribue ces rôles aux utilisateurs. Cela suit le principe du moindre privilège. La mise en œuvre du RBAC dans Snowflake est flexible et robuste, prenant en charge les hiérarchies de rôles pour un contrôle encore plus granulaire.
Bien que le RBAC dans Snowflake soit intrinsèquement robuste, les déploiements à l’échelle de l’entreprise peuvent encore devenir complexes à gérer. Les outils tiers comme DataSunrise peuvent aider à simplifier et à centraliser la gestion du RBAC dans toutes vos instances de Snowflake.
Nous espérons que cet article a été une introduction utile au RBAC dans Snowflake. Pour en savoir plus, consultez la documentation Snowflake.