Panoramica granulare del controllo dell'accesso

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 e DROP 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 e REVOKE per concedere e revocare privilegi a e da ruoli nel database. I privilegi includono SELECT, INSERT, UPDATE, DELETE e EXECUTE. Nomi 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 che sono specificate nell'istruzione GRANT.

    Le seguenti istruzioni DDL concedono SELECT per la 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 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 e INSERT, ma non di UPDATE e Operazioni di DELETE.

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 privilegio USAGE 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 e DELETE 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 e UPDATE 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 solo SELECT 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 privilegio SELECT per la vista e anche del privilegio SELECT 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 privilegio SELECT per la vista. Per ulteriori informazioni, vedi Panoramica delle visualizzazioni.
Flussi di modifiche
Puoi concedere SELECT per le modifiche in tempo reale. Devi anche concedere EXECUTE 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 e UPDATE 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.

Eredità dei privilegi

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à.

  1. Crea i ruoli di database e concedi i privilegi ai ruoli.
  2. (Facoltativo) Crea gerarchie di ruoli con ereditarietà concedendo ruoli a altri ruoli.
  3. Esegui questi passaggi per ogni entità che dovrà essere un utente di 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 ha privilegi per impostazione predefinita. Si tratta di un'operazione una tantum per ogni principale.
    2. Concedi autorizzazioni IAM su uno o più ruoli database all'entità.
    3. 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.

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: