Panoramica controllo dell'accesso granulare

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 e DROP 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 e REVOKE per concedere e revocare privilegi a e dai ruoli del database. I privilegi includono SELECT, INSERT, UPDATE, DELETE e EXECUTE. I nomi dei privilegi corrispondono alle istruzioni SQL con nomi simili. Ad esempio, un ruolo con il privilegio INSERT può eseguire l'istruzione SQL INSERT nelle tabelle specificate nell'istruzione GRANT.

    Le seguenti istruzioni DDL concedono SELECT nella tabella employees al ruolo di database hr_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 e INSERT, ma non le operazioni UPDATE e DELETE.

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 e DELETE sulle tabelle. Per le tabelle con interleaving, un privilegio concesso nella tabella padre non si propaga alla tabella figlio.
Colonne
Puoi concedere SELECT, INSERT e UPDATE 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 valore SELECT. 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 privilegio SELECT per la vista e anche il privilegio SELECT 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 privilegio SELECT nella vista. Per maggiori informazioni, consulta Panoramica delle visualizzazioni.
Flussi di modifiche
Puoi concedere SELECT per le modifiche in tempo reale. Devi inoltre concedere EXECUTE 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 e UPDATE 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.

Eredità dei privilegi

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.

  1. Crea ruoli del database e concedi privilegi ai ruoli.
  2. (Facoltativo) Crea gerarchie di ruoli con ereditarietà concedendo i ruoli ad altri ruoli.
  3. Esegui questi passaggi per ogni entità che deve essere un utente del controllo dell'accesso granulare:
    1. 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à.
    2. Concedi all'entità le autorizzazioni IAM per uno o più ruoli del database.
    3. 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.

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 e DELETE richiedono SELECT su tutte le colonne chiave.

Passaggi successivi

Per ulteriori informazioni, consulta i seguenti argomenti: