RBAC dans Snowflake

Introduction
Au fur et à mesure que les organisations déplacent de plus en plus leurs données et leurs analyses vers le cloud, la sécurité des données et le contrôle d’accès deviennent des enjeux cruciaux. 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 fonctionnalités de Snowflake en fonction des rôles attribués aux utilisateurs.
Cet article traite du RBAC dans Snowflake. Il explique le fonctionnement du RBAC et fournit 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 autorisations aux utilisateurs en fonction de leurs rôles au sein de l’organisation. Il permet de s’assurer que seules les personnes autorisées puissent accéder à certaines données ou ressources.
Avec le RBAC, vous associez des rôles à des autorisations et assignez aux utilisateurs des rôles appropriés. Cela simplifie la gestion des accès. Plutôt que d’attribuer des autorisations à chaque utilisateur individuellement, vous pouvez les attribuer aux rôles. Les utilisateurs de la base de données Snowflake appartiennent aux rôles correspondants selon leurs besoins.
Le RBAC offre plusieurs avantages :
- Gestion simplifiée des accès : Les administrateurs peuvent attribuer des autorisations à des rôles plutôt qu’à des utilisateurs individuels
- Sécurité renforcé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 allège 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 à un ensemble nommé d’autorisations aux utilisateurs. Les privilèges confèrent 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 du modèle RBAC de Snowflake :
- Rôles : Un rôle est un ensemble d’autorisations. Les utilisateurs ou d’autres rôles peuvent attribuer des rôles.
- Privilèges : Un privilège confère la capacité d’effectuer une action particulière, 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é telle qu’une base de données, un schéma, une table ou une vue qui est protégée par un accès contrôlé. Nous attribuons des privilèges aux objets sécurisés.
- Contrôle d’accès : Les rôles sont des groupes qui contrôlent l’accès en attribuant des autorisations et en les assignant aux utilisateurs. Les administrateurs attribuent des autorisations aux rôles et assignent ces 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 ainsi 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 de haut niveau :
- Créer des rôles
- Attribuer des privilèges aux rôles
- Assigner des rôles aux utilisateurs
Passons par un exemple. Supposons que nous ayons une base de données simple contenant des données de ventes 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, créons quelques rôles :
CREATE ROLE admin; CREATE ROLE analyst; CREATE ROLE reporter; -- les administrateurs 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 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 dispose de privilèges d’administratrice, Frank dispose de privilèges d’analyste, et Lisa dispose de privilèges de reporter en fonction des rôles qui leur ont été attribués.
Nous pouvons le tester :
-- 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); -- échoue, les analystes ne peuvent que consulter -- 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); -- échoue, les reporters ne peuvent que consulter Chaque utilisateur ne peut faire que ce que son rôle lui permet, conformément au principe du moindre privilège.
Fonctionnalités avancées du RBAC dans Snowflake
Depuis les récentes versions de Snowflake, le RBAC ne se limite plus aux assignations traditionnelles de rôles et de privilèges. Vous pouvez désormais appliquer des politiques d’accès en utilisant des contrôles avancés tels que les politiques d’accès aux lignes et le masquage dynamique basé sur les étiquettes pour protéger les informations sensibles de manière plus fine.
Les politiques d’accès aux lignes permettent de restreindre l’accès aux lignes d’une table en fonction du contexte de session, comme le rôle actuel de l’utilisateur ou son identifiant de connexion. Ces politiques sont appliquées aux tables ou aux vues et sont évaluées automatiquement lors de l’exécution des requêtes.
CREATE OR REPLACE ROW ACCESS POLICY region_filter
AS (user_region STRING)
RETURNS BOOLEAN ->
CURRENT_REGION() = user_region;
ALTER TABLE sales_db.public.orders
ADD ROW ACCESS POLICY region_filter ON (region);
De plus, vous pouvez appliquer un masquage dynamique des données en utilisant les étiquettes de classification de Snowflake. En étiquetant des colonnes telles que email ou ssn et en les associant à des politiques de masquage, vous vous assurez que seuls les utilisateurs possédant des rôles spécifiques voient les données non masquées.
CREATE MASKING POLICY mask_email
AS (val STRING) RETURNS STRING ->
CASE
WHEN CURRENT_ROLE() IN ('admin', 'auditor') THEN val
ELSE '********@****.com'
END;
ALTER TABLE sales_db.public.customers
MODIFY COLUMN email
SET MASKING POLICY mask_email;
Ces fonctionnalités avancées aident les organisations à répondre aux exigences de conformité telles que le RGPD et la HIPAA en automatisant l’application des politiques basées sur la classification des données et les rôles des utilisateurs.
Hiérarchie des rôles
Les organisations peuvent structurer les rôles de 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 d’affiner cet accès en créant des rôles enfants plus spécifiques sous ces rôles.
Par exemple, supposons que nous voulions créer un rôle « en lecture seule » qui peut accéder à plusieurs bases de données. Nous pouvons créer un rôle parent avec des privilèges SELECT généraux, puis créer des rôles enfants pour un accès 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; 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 possèdent tous deux le rôle parent « en lecture seule ».
L’utilisation judicieuse des hiérarchies de rôles peut faciliter la gestion et la compréhension des configurations RBAC. Construisez votre hiérarchie en commençant par des rôles généraux, 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 de gestion des rôles et des privilèges. Cependant, il peut être difficile de les gérer dans une grande organisation comptant 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 renforcer et simplifier la sécurité et la conformité des données dans Snowflake. Leur interface web intuitive facilite la gestion des configurations RBAC sur l’ensemble de vos bases de données et entrepôts Snowflake. Vous pouvez gérer les utilisateurs, les rôles et les privilèges à partir d’une console unique.
En plus de la gestion du RBAC, DataSunrise offre d’autres fonctionnalités de sécurité essentielles pour Snowflake, notamment :
- 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 des données et reporting pour répondre aux exigences de conformité
Si vous recherchez des moyens de renforcer 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 la base de données attribue ces rôles aux utilisateurs. Cela suit le principe du moindre privilège. L’implémentation du RBAC par Snowflake est flexible et robuste, prenant en charge des 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 devenir complexes à gérer. Des outils tiers comme DataSunrise peuvent aider à simplifier et centraliser la gestion du RBAC sur l’ensemble de vos instances Snowflake.
Nous espérons que cet article vous aura fourni une introduction utile au RBAC dans Snowflake. Pour en savoir plus, consultez la documentation de Snowflake.
