Controllo dell'accesso granulare di Spanner combina i vantaggi di Identity and Access Management (IAM) con il tradizionale controllo dell'accesso SQL basato sui ruoli. Con controllo dell'accesso granulare, puoi definire i ruoli del database, concedere privilegi ai ruoli e creare criteri IAM per concedere autorizzazioni sui ruoli del database alle entità IAM.
In qualità di amministratore, devi abilitare il controllo dell'accesso granulare per le singole entità IAM. Le entità per le quali è abilitato un controllo dell'accesso granulare ("utenti con controllo dell'accesso dell'accesso granulare") devono assumere un ruolo di database per accedere alle risorse Spanner.
L'accesso alle risorse per gli utenti che non dispongono di un controllo dell'accesso granulare è regolato dai ruoli IAM a livello di database. Un controllo dell'accesso granulare è completamente compatibile e può coesistere con controllo dell'accesso esistente a livello di database IAM.
Grazie a controllo dell'accesso granulare, puoi controllare l'accesso a tabelle, colonne, visualizzazioni e modifiche in tempo reale.
Per gestire controllo dell'accesso granulare, utilizza le seguenti istruzioni DDL:
- Istruzioni
CREATE
eDROP
per creare e eliminare i ruoli del database. I ruoli del database sono raccolte di privilegi. Puoi creare fino a 100 ruoli per un database. Istruzioni
GRANT
eREVOKE
per concedere e revocare privilegi a e dai ruoli del database. I privilegi includonoSELECT
,INSERT
,UPDATE
,DELETE
eEXECUTE
. I nomi dei privilegi corrispondono alle istruzioni SQL con nomi simili. Ad esempio, un ruolo con il privilegioINSERT
può eseguire l'istruzione SQLINSERT
nelle tabelle specificate nell'istruzioneGRANT
.Le seguenti istruzioni DDL concedono
SELECT
nella tabellaemployees
al ruolo di databasehr_rep
.GoogleSQL
CREATE ROLE hr_rep; GRANT SELECT ON TABLE employees TO ROLE hr_rep;
PostgreSQL
CREATE ROLE hr_rep; GRANT SELECT ON TABLE employees TO hr_rep;
Per maggiori informazioni sui privilegi, consulta Riferimento ai privilegi per controllo dell'accesso dell'accesso granulare.
Istruzioni
GRANT
per concedere i ruoli ad altri ruoli al fine di creare gerarchie di ruoli, con ereditarietà dei privilegi.
Casi d'uso
Di seguito sono riportati alcuni casi d'uso di esempio per un controllo dell'accesso dell'accesso granulare:
- Un sistema informatico per le risorse umane con ruoli per analista della retribuzione delle vendite, gestione delle vendite e analista delle RU, ciascuno con livelli di accesso diversi ai dati. Ad esempio, gli analisti di compensi e la gestione delle vendite non dovrebbero vedere i dati relativi alla previdenza sociale.
- Un'applicazione di ride sharing con diversi account di servizio e privilegi per passeggeri e conducenti.
- Un libro mastro che consenta le operazioni
SELECT
eINSERT
, ma non le operazioniUPDATE
eDELETE
.
Risorse Spanner e relativi privilegi
Di seguito è riportato un elenco di risorse Spanner e dei privilegi di controllo dell'accesso granulari che puoi concedere per loro.
- Tabelle
- Puoi concedere ai ruoli database i privilegi
SELECT
,INSERT
,UPDATE
eDELETE
sulle tabelle. Per le tabelle con interleaving, un privilegio concesso nella tabella padre non si propaga alla tabella figlio. - Colonne
- Puoi concedere
SELECT
,INSERT
eUPDATE
per un sottoinsieme di colonne in una tabella. Il privilegio è quindi valido solo per quelle colonne.DELETE
non è consentito a livello di colonna. - Viste
- Puoi concedere il privilegio
SELECT
su una vista. Per le visualizzazioni è supportato solo il valoreSELECT
. Spanner supporta sia le viste dei diritti dell'utente che la definizione dei diritti. Se crei una vista con diritti di chi chiama, per eseguire una query sulla vista, l'utente o il ruolo del database richiede il privilegioSELECT
per la vista e anche il privilegioSELECT
per gli oggetti sottostanti a cui viene fatto riferimento nella vista. Se crei una vista con i diritti del definitore, per eseguire una query sulla vista, l'utente o il ruolo del database richiede solo il privilegioSELECT
nella vista. Per maggiori informazioni, consulta Panoramica delle visualizzazioni. - Flussi di modifiche
- Puoi concedere
SELECT
per le modifiche in tempo reale. Devi inoltre concedereEXECUTE
per la funzione di lettura associata a una modifica in tempo reale. Per informazioni, consulta Controllo dell'controllo dell'accesso granulare per le modifiche in tempo reale. - Sequenze
- Puoi concedere
SELECT
eUPDATE
per le sequenze. Per informazioni, consulta Controllo dell'controllo dell'accesso granulare per le sequenze. - ottimizzabili
- Puoi concedere
EXECUTE
sui modelli. Per informazioni, consulta Controllo dell'controllo dell'accesso granulare per i modelli.
Ruoli di sistema di controllo dell'accesso granulari
Controllo dell'accesso granulare include ruoli di sistema predefiniti per ogni database. Come i ruoli dei database definiti dall'utente, i ruoli di sistema possono controllare l'accesso alle risorse di Spanner.
Ad esempio, a un utente con controllo dell'accesso granulare deve essere concesso il ruolo di sistema spanner_sys_reader
per accedere a Key Visualizer e il ruolo di sistema spanner_info_reader
per poter vedere i risultati senza filtri durante l'esecuzione di query sulle tabelle INFORMATION_SCHEMA
.
Per saperne di più, consulta Ruoli di sistema di controllo dell'accesso granulari.
Gerarchie ed ereditarietà dei ruoli del database
Puoi creare gerarchie di ruoli di database, in cui i ruoli figlio ereditano i privilegi dei ruoli padre. I ruoli secondari sono noti come membri del ruolo principale.
Ad esempio, considera le seguenti istruzioni GRANT
:
GoogleSQL
GRANT SELECT ON TABLE employees TO ROLE pii_access;
GRANT ROLE pii_access TO ROLE hr_manager, hr_director;
PostgreSQL
GRANT SELECT ON TABLE employees TO pii_access;
GRANT pii_access TO hr_manager, hr_director;
hr_manager
e hr_director
sono membri del ruolo pii_access
e ereditano il privilegio SELECT
nella tabella employees
.
Anche hr_manager
e hr_director
possono avere membri, i quali erediteranno il privilegio SELECT
su employees
.
Non ci sono limiti alla profondità delle gerarchie di ruoli, ma le prestazioni delle query potrebbero peggiorare con strutture di gerarchia dei ruoli ampie e profonde.
Backup e ripristino
I backup di Spanner includono definizioni dei ruoli di database. Quando un database viene ripristinato dal backup, i ruoli del database vengono creati nuovamente con i privilegi concessi. Tuttavia, i criteri IAM non fanno parte dei backup dei database, quindi devi concedere di nuovo l'accesso ai ruoli del database alle entità nel database ripristinato.
Panoramica della configurazione di controllo dell'accesso granulare
Di seguito sono riportati i passaggi generali da eseguire per iniziare a proteggere i dati con controllo dell'accesso granulare. Per maggiori dettagli, consulta Configurare il controllo dell'accesso granulare.
Per eseguire queste attività devi disporre dei ruoli IAM roles/spanner.admin
o roles/spanner.databaseAdmin
.
- Crea ruoli del database e concedi privilegi ai ruoli.
- (Facoltativo) Crea gerarchie di ruoli con ereditarietà concedendo i ruoli ad altri ruoli.
- Esegui questi passaggi per ogni entità che deve essere un utente del controllo dell'accesso granulare:
- Abilita il controllo dell'accesso granulare per l'entità.
All'entità viene quindi concesso automaticamente il ruolo di database
public
, che per impostazione predefinita non ha privilegi. Questa operazione deve essere eseguita una sola volta per ogni entità. - Concedi all'entità le autorizzazioni IAM per uno o più ruoli del database.
- Dopo che all'entità sono stati concessi tutti i ruoli di database richiesti, se l'entità dispone di ruoli IAM a livello di database, valuta la possibilità di revocare i ruoli a livello di database in modo che il controllo dell'accesso dell'entità sia gestito da un solo metodo.
- Abilita il controllo dell'accesso granulare per l'entità.
All'entità viene quindi concesso automaticamente il ruolo di database
Limitazioni
- Le operazioni di esportazione non esportano i ruoli e i privilegi del database e le operazioni di importazione non possono importarli. Devi configurare manualmente ruoli e privilegi al termine dell'importazione.
- La scheda Dati nella pagina TABELLA della console Google Cloud non è disponibile per gli utenti con controllo dell'accesso granulare.
- Le operazioni
UPDATE
eDELETE
richiedonoSELECT
su tutte le colonne chiave.
Passaggi successivi
Per ulteriori informazioni, consulta i seguenti argomenti:
- Controllo dell'controllo dell'accesso granulare per le modifiche in tempo reale
- Configurare un controllo dell'accesso granulare
- Riferimento per i privilegi di controllo dell'accesso granulare
- Ruoli di sistema di controllo dell'accesso granulari
- Istruzioni
GRANT
eREVOKE
di GoogleSQL - Istruzioni
GRANT
eREVOKE
di PostgreSQL - Controllo dell'controllo dell'accesso granulare per le sequenze
- Controllo dell'controllo dell'accesso granulare per i modelli