Panoramica controllo dell'accesso granulare

Controllo dell'accesso granulare di Spanner combina i vantaggi di Identity and Access Management (IAM) concontrollo dell'accessoso basato sui ruoli SQL. Con controllo dell'accesso granulare, definisci i ruoli del database, concedi privilegi ai ruoli e crea policy IAM per concedere autorizzazioni sui ruoli del database ai principal IAM. Questa pagina descrive come utilizzare controllo dell'accesso granulare con Spanner per i database con dialetto GoogleSQL e PostgreSQL.

In qualità di amministratore, devi attivare il controllo dell'accesso granulare per le singole entità IAM. Le entità per le quali è attivato il controllo dell'accesso dell'accesso granulare ("utenti del controllo dell'accesso dell'accesso granulare") devono assumere un ruolo del database per accedere alle risorse Spanner.

L'accesso alle risorse per gli utenti che non utilizzano il controllo dell'accesso granulare è regolato dai ruoli IAM a livello di database. Il controllo dell'accesso granulare è completamente compatibile e può coesistere con controllo dell'accesso a livello di database IAM esistente. Puoi utilizzarlo per accedere a singoli oggetti di database. Per controllare l'accesso all'intero database, utilizza i ruoli IAM.

Con controllo dell'accesso granulare, puoi controllare l'accesso a tabelle, colonne, viste e flussi di modifiche in tempo reale.

Per gestire controllo dell'accesso granulare, utilizza le seguenti istruzioni DDL:

  • Istruzioni CREATE e DROP per la creazione e l'eliminazione dei ruoli del database. I ruoli database sono raccolte di privilegi. Puoi creare fino a 100 ruoli per un database.
  • GRANT e REVOKE per concedere e revocare i privilegi ai ruoli del database. I privilegi includono SELECT, INSERT, UPDATE, DELETE e EXECUTE. I nomi dei privilegi corrispondono alle istruzioni SQL con lo stesso nome. Ad esempio, un ruolo con il privilegio INSERT può eseguire l'istruzione SQL INSERT sulle tabelle specificate nell'istruzione GRANT.

    Le seguenti istruzioni DDL concedono SELECT sulla 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 ulteriori informazioni sui privilegi, consulta Informazioni di riferimento sui privilegi di controllo dell'accesso 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 esempi di casi d'uso per il controllo dell'accesso granulare:

  • Un sistema informativo HR con ruoli per analista della retribuzione delle vendite, gestione delle vendite e analista RU, ciascuno con diversi livelli di accesso ai dati. Ad esempio, gli analisti delle retribuzioni e la direzione delle vendite non devono visualizzare i codici fiscali.
  • Un'applicazione di ride sharing con diversi service account e privilegi per passeggeri e autisti.
  • Un ledger che consente le operazioni SELECT e INSERT, ma non le operazioni UPDATE e DELETE.

Risorse Spanner e relativi privilegi

Di seguito è riportato un elenco delle risorse Spanner e dei privilegi di controllo dell'accesso granulare che puoi concedere per queste risorse.

Schemi
Puoi concedere il privilegio USAGE sugli schemi a ruoli di database specifici. Per uno schema non predefinito, i ruoli del database devono disporre del privilegio USAGE per accedere agli oggetti del database. Il controllo dei privilegi è simile al seguente:

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 e DELETE sulle tabelle ai ruoli del database. Per le tabelle con interleaving, un privilegio concesso alla tabella principale non viene propagato alla tabella secondaria.
Colonne
Puoi concedere SELECT, INSERT e UPDATE su un sottoinsieme di colonne di una tabella. Il privilegio è quindi valido solo per queste colonne. DELETE non è consentito a livello di colonna.
Visualizzazioni
Puoi concedere il privilegio SELECT su una vista. Per le visualizzazioni è supportato solo SELECT. Spanner supporta sia le viste con diritti dell'invocatore sia quelle con diritti del definer. Se crei una vista con i diritti del chiamante, per eseguire query sulla vista, il ruolo o l'utente del database deve disporre del privilegio SELECT sulla vista e del privilegio SELECT sugli oggetti sottostanti a cui viene fatto riferimento nella vista. Se crei una vista con diritti del definer, per eseguire query sulla vista, il ruolo o l'utente del database ha bisogno solo del privilegio SELECT sulla vista. Per saperne di più, consulta la panoramica delle visualizzazioni.
Modifiche in tempo reale
Puoi concedere SELECT sulle modifiche in tempo reale. Devi anche concedere EXECUTE alla funzione di lettura associata a uno stream di modifiche. Per informazioni, consulta Controllo dell'controllo dell'accesso granulare per le modifiche in tempo reale.
Sequenze
Puoi concedere SELECT e UPDATE alle sequenze. Per informazioni, consulta Controllo dell'controllo dell'accesso granulare per le sequenze.
Modelli
Puoi concedere EXECUTE sui modelli. Per informazioni, consulta Controllo dell'controllo dell'accesso granulare per i modelli.

Ruoli del sistema di controllo dell'accesso granulare

Controllo dell'accesso granulare dispone di ruoli di sistema predefiniti per ogni database. Come i ruoli di database definiti dall'utente, i ruoli di sistema possono controllare l'accesso alle risorse Spanner.

Ad esempio, a un utente 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 visualizzare i risultati non filtrati quando esegue query sulle tabelle INFORMATION_SCHEMA.

Per saperne di più, consulta Ruoli di sistema per il controllo dell'accesso granulare.

Gerarchie e 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 affermazioni 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.

Ereditarietà dei privilegi

hr_manager e hr_director possono anche avere membri e questi membri erediterebbero il privilegio SELECT su employees.

Non esistono limiti alla profondità delle gerarchie dei ruoli, ma le prestazioni delle query potrebbero peggiorare con strutture gerarchiche dei ruoli profonde e ampie.

Backup e ripristino

I backup di Spanner includono le definizioni dei ruoli database. 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 nuovamente l'accesso ai ruoli database alle entità nel database ripristinato.

Panoramica della configurazione del controllo dell'accesso granulare

Di seguito sono riportati i passaggi di alto livello da seguire per iniziare a proteggere i dati con controllo dell'accesso granulare. Per maggiori dettagli, vedi 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 di database e concedi privilegi ai ruoli.
  2. (Facoltativo) Crea gerarchie di ruoli con ereditarietà concedendo ruoli ad altri ruoli.
  3. Esegui questi passaggi per ogni entità che deve essere un utente del controllo dell'accesso granulare:
    1. Attiva il controllo dell'accesso granulare per l'entità. All'entità viene quindi concesso automaticamente il ruolo database public, che non dispone di privilegi per impostazione predefinita. Questa operazione deve essere eseguita una sola volta per ogni entità.
    2. Concedi le autorizzazioni IAM per uno o più ruoli del database all'entità.
    3. Dopo aver concesso all'entità tutti i ruoli 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 ruoli e privilegi del database e le operazioni di importazione non possono importarli. Devi configurare manualmente ruoli e privilegi dopo aver completato l'importazione.
  • La scheda Dati nella pagina TABELLA della console Google Cloud non è disponibile per gli utenti controllo dell'accesso granulare.

Passaggi successivi