Il controllo granulare degli accessi di Spanner combina i vantaggi Identity and Access Management (IAM) con Controllo dell'accesso basato su ruoli SQL. Con un controllo dell'accesso granulare, definisci ruoli database, concedere privilegi ai ruoli e creare Criteri IAM per concedere autorizzazioni sui ruoli del database a delle entità IAM.
In qualità di amministratore, devi abilitare un controllo dell'accesso granulare per singoli account IAM tra cui scegliere. Presidi per i quali il controllo dell'accesso granulare è abilitato ("utenti del controllo dell'accesso granulare") deve utilizzare un database per accedere alle risorse Spanner.
L'accesso alle risorse per gli utenti che non sono utenti del controllo dell'accesso granulare è regolato dai ruoli a livello di database IAM. Un controllo dell'accesso granulare è completamente compatibile e può coesistere con Controllo dell'accesso IAM a livello di database. Puoi utilizzarla per accedere come singoli oggetti di database. Per controllare l'accesso all'intero database, utilizza ruoli IAM.
Con un controllo dell'accesso granulare, puoi controllare l'accesso a tabelle, colonne, visualizzazioni le modifiche in tempo reale.
Per gestire un controllo dell'accesso granulare, utilizza il seguente DDL estratti conto:
- Istruzioni
CREATE
eDROP
per creare e rilasciare ruoli di 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 da ruoli nel database. I privilegi includonoSELECT
,INSERT
,UPDATE
,DELETE
eEXECUTE
. Nomi privilegi corrispondono alle istruzioni SQL con lo stesso nome. Ad esempio, un ruolo con Il privilegioINSERT
può eseguire l'istruzione SQLINSERT
sulle tabelle che sono specificate nell'istruzioneGRANT
.Le seguenti istruzioni DDL concedono
SELECT
per la 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 ulteriori informazioni sui privilegi, consulta Informazioni di riferimento sui privilegi di controllo dell'accesso granulare.
Istruzioni
GRANT
per la concessione di ruoli ad altri ruoli per 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 granulare:
- un sistema informatico per le risorse umane con ruoli di analista di retribuzioni per le vendite, gestione delle vendite e analista delle RU, ciascuno con diversi livelli di accesso ai dati. Ad esempio, gli analisti delle retribuzioni e la gestione delle vendite non dovrebbero vedere numeri di sicurezza.
- Un'applicazione di ride sharing con account di servizio e privilegi diversi per passeggeri e conducenti.
- Un registro che consente operazioni di
SELECT
eINSERT
, ma non diUPDATE
e Operazioni diDELETE
.
Risorse Spanner e relativi privilegi
Di seguito è riportato un elenco di risorse Spanner e il controllo dell'accesso granulare privilegiati che puoi concedere.
- Schemi
- Puoi concedere il privilegio
USAGE
sugli schemi a ruoli di database specifici. Per uno schema non predefinito, i ruoli del database devono avere il privilegioUSAGE
per accedere degli oggetti del database. Il controllo dei privilegi ha il seguente aspetto:
Hai USAGE
nello schema?
No: rifiuta l'accesso.
Sì: disponi anche dei diritti appropriati sulla tabella?
No: rifiuta l'accesso.
Sì: puoi accedere alla tabella.
- Tabelle
- Puoi concedere i privilegi
SELECT
,INSERT
,UPDATE
eDELETE
su ai ruoli del database. Per le tabelle con interleaving, un privilegio concesso la tabella padre non si propaga a quella secondaria. - Colonne
- Puoi concedere
SELECT
,INSERT
eUPDATE
su un sottoinsieme di colonne in un tabella. Il privilegio è quindi valido solo per queste colonne.DELETE
non è consentiti a livello di colonna. - Visualizzazioni
- Puoi concedere
SELECT
privilegio per una vista. È supportato soloSELECT
per visualizzazioni. Spanner supporta sia le visualizzazioni dei diritti dell'invocatore che quelle del definitore delle visualizzazioni dei diritti umani. Se crei una vista con i diritti dell'autore della chiamata, per eseguire query sulla vista, il ruolo o l'utente del database deve disporre del privilegioSELECT
per la vista e anche del privilegioSELECT
per gli oggetti sottostanti a cui viene fatto riferimento nella vista. Se creare una vista con i diritti del definitore, per eseguire query sulla vista, sul ruolo del database o l'utente deve avere solo il privilegioSELECT
per la vista. Per ulteriori informazioni, vedi Panoramica delle visualizzazioni. - Flussi di modifiche
- Puoi concedere
SELECT
per le modifiche in tempo reale. Devi anche concedereEXECUTE
nella di lettura associata a un flusso di modifiche. Per informazioni, consulta Controllo granulare dell'controllo dell'accesso per le modifiche in tempo reale. - Sequenze
- Puoi concedere
SELECT
eUPDATE
per le sequenze. Per informazioni, consulta Controllo dell'accesso granulare per le sequenze. - Modelli
- Puoi concedere
EXECUTE
ai modelli. Per informazioni, consulta Controllo granulare dell'controllo dell'accesso per i modelli.
Ruoli di sistema di controllo dell'accesso granulari
Un controllo dell'accesso granulare include ruoli di sistema predefiniti per ciascun database. Come per i ruoli dei database definiti dall'utente, i ruoli di sistema possono controllare l'accesso Risorse Spanner.
Ad esempio, a un utente con controllo dell'accesso granulare deve essere concesso il spanner_sys_reader
ruolo di sistema per accedere a Key Visualizer e richiede il sistema spanner_info_reader
di poter vedere risultati senza filtri quando esegui una query sul
INFORMATION_SCHEMA
tabelle.
Per ulteriori informazioni, consulta Ruoli di sistema di controllo dell'accesso granulare degli accessi.
Gerarchie ed ereditarietà dei ruoli del database
Puoi creare gerarchie di ruoli database, in cui i ruoli secondari ereditano i privilegi dei ruoli principali. 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
ed ereditano
Privilegio SELECT
per la tabella employees
.
Anche hr_manager
e hr_director
possono avere membri e questi ultimi dovrebbero
ereditare il privilegio SELECT
su employees
.
Non ci sono limiti alla profondità delle gerarchie di ruoli, ma le prestazioni delle query con strutture gerarchiche dei ruoli profonde e ampie.
Backup e ripristino
I backups di Spanner includono il ruolo di database le tue definizioni. Quando un database viene ripristinato dal backup, i ruoli del database vengono ricreati con i privilegi concessi. Tuttavia, i criteri IAM non fanno parte dei backup del database, quindi devi concedere di nuovo l'accesso ai ruoli del database alle entità nel database ripristinato.
Panoramica della configurazione di un controllo dell'accesso granulare
Di seguito sono riportati i passaggi generali da seguire per iniziare proteggere i dati con un controllo dell'accesso granulare. Per maggiori dettagli, consulta Configurare il controllo dell'accesso granulare.
Devi ottenere l'autorizzazione roles/spanner.admin
o
roles/spanner.databaseAdmin
ruoli IAM per eseguire queste attività.
- Crea i ruoli di database e concedi i privilegi ai ruoli.
- (Facoltativo) Crea gerarchie di ruoli con ereditarietà concedendo ruoli a altri ruoli.
- Esegui questi passaggi per ogni entità che dovrà essere un utente di controllo dell'accesso granulare:
- Attiva il controllo dell'accesso granulare per l'entità.
All'entità viene quindi concesso automaticamente il ruolo database
public
, che non ha privilegi per impostazione predefinita. Si tratta di un'operazione una tantum per ogni principale. - Concedi autorizzazioni IAM su uno o più ruoli database all'entità.
- Una volta concessi all'entità tutti i ruoli di database richiesti, se l'entità ha 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 con un solo metodo.
- Attiva il controllo dell'accesso granulare per l'entità.
All'entità viene quindi concesso automaticamente il ruolo database
Limitazioni
- Le operazioni di esportazione non esportano ruoli e privilegi del database e importano non è possibile importarle. Devi configurare manualmente i ruoli e i privilegi al termine dell'importazione.
- La scheda Dati nella pagina TABELLA della console Google Cloud non è disponibile per per gli utenti con controllo dell'accessoo granulare.
Passaggi successivi
Per ulteriori informazioni, consulta i seguenti argomenti:
- Accedere a un database con un controllo dell'accesso granulare
- Controllo dell'accesso granulare per le modifiche in tempo reale
- Configurare un controllo dell'accesso granulare
- Riferimento ai privilegi di controllo dell'accesso granulare degli accessi
- Ruoli di sistema per il controllo dell'accesso granulare
- Istruzioni
GRANT
eREVOKE
di GoogleSQL - Comandi
GRANT
eREVOKE
di PostgreSQL - Controllo dell'accesso granulare per le sequenze
- Controllo dell'accesso granulare per i modelli