Panoramica granulare 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 con un controllo dell'accesso granulare è regolato per ruoli IAM a livello di database. 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 del 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, vedi Riferimento ai privilegi di controllo dell'accesso granulare degli accessi.

  • 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?

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 . In questo modo il privilegio sarà valido solo per quelle 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'invocatore, per eseguire query sulla vista, il ruolo del database o l'utente deve avere il privilegio SELECT per la vista, oltre al 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 sui 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 di database, in cui i ruoli figlio ereditare i privilegi dei ruoli principali. I ruoli secondari sono noti come membri di il 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 backup 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, IAM i criteri non fanno parte dei backup del database, quindi devi concedere nuovamente l'accesso ruoli di 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, vedi Configura un controllo dell'accesso granulare.

Devi avere ricevuto l'autorizzazione roles/spanner.admin o roles/spanner.databaseAdmin ruoli IAM per eseguire queste attività.

  1. Creare ruoli del database e concedere 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. Abilita il controllo dell'accesso granulare per l'entità. All'entità viene quindi concesso automaticamente il ruolo di 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 impostare manualmente ruoli e 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.
  • Le operazioni UPDATE e DELETE richiedono SELECT su tutte le colonne chiave.

Passaggi successivi

Per ulteriori informazioni, consulta i seguenti argomenti: