Controllo degli Accessi Basato sui Ruoli in Snowflake

Introduzione
Man mano che le organizzazioni spostano sempre più i loro dati e le analisi sul Cloud, la sicurezza dei dati e il controllo degli accessi diventano questioni critiche. Snowflake, una popolare piattaforma di dati nel Cloud, fornisce funzionalità di sicurezza robuste, incluso il Controllo degli Accessi Basato sui Ruoli (RBAC). Il RBAC consente di controllare l’accesso agli oggetti e alle funzionalità in Snowflake in base ai ruoli assegnati agli utenti.
Questo articolo discute il RBAC in Snowflake. Spiega come funziona il RBAC e fornisce esempi utili per familiarizzarsi con il suo utilizzo in Snowflake.
Che Cos’è il Controllo degli Accessi Basato sui Ruoli?
Il Controllo degli Accessi Basato sui Ruoli determina chi può accedere a un computer o a una risorsa in base ai ruoli degli utenti all’interno di un’azienda. Il RBAC è un metodo per controllare l’accesso alle informazioni.
Questo sistema assegna permessi agli utenti in base ai loro ruoli all’interno dell’organizzazione. Esso garantisce che solamente individui autorizzati possano accedere a dati o risorse specifici.
Nel RBAC, si associano ruoli ai permessi e si assegnano agli utenti i ruoli più appropriati. Questo semplifica la gestione degli accessi. Invece di assegnare permessi a ciascun utente singolarmente, Lei può assegnare permessi ai ruoli. Gli utenti del database Snowflake appartengono a tali ruoli a seconda delle necessità.
Il RBAC offre diversi vantaggi:
- Gestione semplificata degli accessi: gli amministratori possono assegnare permessi ai ruoli anziché a ciascun utente individualmente
- Sicurezza migliorata: gli utenti hanno accesso solamente alle risorse specifiche consentite dal loro ruolo
- Riduzione del carico amministrativo: con meno assegnazioni dirette, il RBAC riduce l’onere della gestione
- Conformità normativa: il RBAC facilita l’implementazione e la dimostrazione dei controlli degli accessi per soddisfare i requisiti regolatori
Come Funziona il RBAC in Snowflake
Snowflake gestisce tutti i controlli degli accessi attraverso ruoli e privilegi. Un ruolo assegna una raccolta nominata di privilegi agli utenti. I privilegi consentono di effettuare determinate azioni su oggetti protetti come database, schemi, tabelle e altri elementi.
Ecco i concetti chiave del modello RBAC di Snowflake:
- Ruoli: un ruolo è una raccolta di privilegi. Gli utenti o altri ruoli possono assegnare ruoli.
- Privilegi: un privilegio concede la possibilità di eseguire una determinata azione, come creare un database o interrogare una tabella. I ruoli associano un insieme di privilegi agli utenti.
- Oggetti protetti: un’entità, quali un database, schema, tabella o vista, a cui si applica un controllo d’accesso. I privilegi vengono assegnati per proteggerne l’accesso.
- Controllo degli accessi: i ruoli sono gruppi che controllano l’accesso assegnando permessi agli utenti. Gli amministratori assegnano permessi ai ruoli e successivamente questi ruoli vengono assegnati agli utenti.
- Gerarchia dei ruoli: l’amministratore del database può assegnare ruoli ad altri ruoli, creando una gerarchia. I ruoli figli ereditano i privilegi dei ruoli genitori.
Configurazione del RBAC in Snowflake
Per implementare il RBAC in Snowflake, Lei seguirà questi passaggi fondamentali:
- Creare ruoli
- Concedere privilegi ai ruoli
- Assegnare ruoli agli utenti
Vediamo un esempio. Supponiamo di avere un semplice database contenente dati di vendite a cui diversi utenti devono accedere. Creeremo una configurazione RBAC per controllare gli accessi.
Per prima cosa, creiamo il database e la tabella:
CREATE DATABASE sales_db; CREATE TABLE sales_db.public.orders ( order_id INT, amount DECIMAL(10,2) );
Successivamente, creeremo alcuni ruoli:
CREATE ROLE admin; CREATE ROLE analyst; CREATE ROLE reporter;
Ora possiamo assegnare privilegi ai ruoli:
-- Gli amministratori possono gestire il database 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; -- Gli analisti possono interrogare i dati 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; -- I reporter possono eseguire query 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;
Infine, assegniamo i ruoli agli utenti:
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 ha privilegi da amministratrice, Frank ha privilegi da analista e Lisa ha privilegi da reporter in base ai ruoli assegnati.
Possiamo testare la configurazione:
-- Connettersi come michelle USE ROLE ADMIN; CREATE TABLE sales_db.public.customers (customer_id INT); -- successo -- Connettersi come frank USE ROLE ANALYST; SELECT * FROM sales_db.public.orders; -- successo CREATE TABLE sales_db.public.customers (customer_id INT); -- fallisce, gli analisti possono solo interrogare -- Connettersi come lisa USE ROLE REPORTER; SELECT * FROM sales_db.public.orders; -- successo CREATE TABLE sales_db.public.customers (customer_id INT); -- fallisce, i reporter possono solo interrogare Ogni utente può eseguire solamente le azioni consentite dal proprio ruolo, nel rispetto del principio del minimo privilegio.
Funzionalità Avanzate del RBAC in Snowflake
A partire dalle recenti versioni di Snowflake, il RBAC non è limitato alle tradizionali assegnazioni di ruoli e privilegi. Ora Lei può imporre politiche di accesso utilizzando controlli avanzati come le Row Access Policies e il Mascheramento Dinamico dei Dati Basato su Tag per proteggere le informazioni sensibili a un livello più dettagliato.
Le Row Access Policies consentono di limitare l’accesso alle righe di una tabella in base al contesto della sessione, come il ruolo corrente dell’utente o l’identificatore di accesso. Queste politiche sono associate a tabelle o viste e vengono valutate automaticamente durante l’esecuzione delle query.
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);
Inoltre, è possibile applicare il mascheramento dinamico dei dati utilizzando i tag di classificazione di Snowflake. Etichettando colonne come email o ssn e associandole a politiche di mascheramento, Lei garantisce che solamente utenti con ruoli specifici possano visualizzare i dati non mascherati.
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;
Queste funzionalità avanzate aiutano le organizzazioni a soddisfare i requisiti di conformità, come il GDPR e l’HIPAA, automatizzando l’applicazione delle politiche in base alla classificazione dei dati e ai ruoli degli utenti.
Gerarchia dei Ruoli
Le organizzazioni possono organizzare i ruoli di Snowflake in gerarchie, dove un ruolo figlio eredita i privilegi del ruolo genitore. Ciò consente di definire un accesso ampio a livelli superiori per poi affinare l’accesso creando ruoli figli più specifici.
Ad esempio, supponiamo di voler creare un ruolo “sola lettura” che possa accedere a più database. Possiamo creare un ruolo genitore con privilegi SELECT ampi, e successivamente creare ruoli figli per accessi specifici:
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; -- Ora i ruoli sales_reader e marketing_reader ereditano i privilegi SELECT dal ruolo genitore read_only. Possiamo assegnarli agli utenti secondo necessità: GRANT ROLE sales_reader TO USER frank; GRANT ROLE marketing_reader TO USER lisa;
Frank potrà accedere al database delle vendite per ottenere le informazioni, mentre Lisa potrà accedere al database di marketing. Entrambi beneficiano dei privilegi del ruolo “read_only” genitore.
Centralizzare e Semplificare la Gestione del RBAC
Snowflake dispone di un buon sistema per gestire ruoli e privilegi. Tuttavia, in una grande organizzazione con numerosi utenti e database, la loro gestione può risultare complessa. È in questi casi che strumenti di terze parti come DataSunrise possono essere di grande aiuto.
DataSunrise offre una suite di strumenti per migliorare e semplificare la sicurezza dei dati e la conformità in Snowflake. La sua interfaccia web intuitiva rende facile gestire le configurazioni del RBAC in tutti i database e data warehouse Snowflake. È possibile gestire utenti, ruoli e privilegi da un’unica console.
Oltre alla gestione del RBAC, DataSunrise fornisce altre funzionalità critiche per la sicurezza in Snowflake, tra cui:
- Crittografia dei dati e tokenizzazione
- Mascheramento Dinamico dei Dati
- SQL firewall per il monitoraggio in tempo reale e l’applicazione delle politiche
- Audit dei dati e reporting per soddisfare i requisiti di conformità
Se sta cercando modi per migliorare la sicurezza e la conformità nel suo ambiente Snowflake, consideri l’esplorazione di strumenti come DataSunrise. Offriamo una demo gratuita per poter vedere in azione le capacità di DataSunrise.
Conclusione
Il Controllo degli Accessi Basato sui Ruoli è uno strumento potente per gestire l’accesso ai dati in Snowflake. Il RBAC consente di controllare l’accesso in maniera dettagliata assegnando privilegi ai ruoli.
Successivamente, l’amministratore del database assegna questi ruoli agli utenti, seguendo il principio del minimo privilegio. L’implementazione del RBAC in Snowflake è flessibile e robusta, supportando gerarchie di ruoli per un controllo ancora più granulare.
Sebbene il RBAC in Snowflake sia intrinsecamente robusto, le implementazioni su scala enterprise possono comunque diventare complesse da gestire. Strumenti di terze parti come DataSunrise possono aiutare a semplificare e centralizzare la gestione del RBAC in tutte le sue istanze Snowflake.
Ci auguriamo che questo articolo sia stato un’introduzione utile al RBAC in Snowflake. Per ulteriori informazioni, consulti la documentazione di Snowflake.
