Controllo dell'accesso con IAM

Panoramica

Identity and Access Management (IAM) consente di controllare l'accesso di utenti e gruppi alle risorse di Cloud Spanner a livello di progetto, di istanza di Cloud Spanner e di database Cloud Spanner. Ad esempio, puoi specificare che un utente ha il controllo completo di un database specifico in un'istanza specifica del progetto, ma non può creare, modificare o eliminare alcuna istanza nel progetto. Il controllo dell'accesso con IAM consente di concedere un'autorizzazione a un utente o a un gruppo senza dover modificare ogni istanza di Cloud Spanner o autorizzazione di database singolarmente.

Questo documento è incentrato sulle autorizzazioni IAM pertinenti per Cloud Spanner e sui ruoli IAM che le concedono. Per una descrizione dettagliata di IAM e delle sue funzionalità, consulta la guida per gli sviluppatori di Identity and Access Management. In particolare, consulta la sezione relativa alla gestione dei criteri IAM.

Autorizzazioni

Le autorizzazioni consentono agli utenti di eseguire azioni specifiche sulle risorse Cloud Spanner. Ad esempio, l'autorizzazione spanner.databases.read consente a un utente di leggere da un database utilizzando l'API Read ##99;Cloud Spanner, mentre spanner.databases.select consente a un utente di eseguire un'istruzione di selezione SQL su un database. Non devi concedere direttamente agli utenti le autorizzazioni, ma puoi concedere loro ruoli predefiniti o ruoli personalizzati, che dispongono di una o più autorizzazioni raggruppate al loro interno.

Le seguenti tabelle elencano le autorizzazioni IAM associate a Cloud Spanner.

Configurazioni istanza

Le seguenti autorizzazioni si applicano alle configurazioni delle istanze Cloud Spanner (consulta il riferimento di configurazione delle istanze: REST, RPC).

Nome autorizzazione configurazione istanza Descrizione
spanner.instanceConfigs.list Elenca l'insieme di configurazioni delle istanze.
spanner.instanceConfigs.get Ottenere una configurazione istanza.

Istanze

Le seguenti autorizzazioni si applicano alle istanze Cloud Spanner (vedi il riferimento dell'istanza: REST, RPC).

Nome autorizzazione istanza Descrizione
spanner.instances.create Creazione di un'istanza.
spanner.instances.list Elenca le istanze.
spanner.instances.get Recupera la configurazione di un'istanza specifica.
spanner.instances.getIamPolicy Recupera il criterio IAM di un'istanza.
spanner.instances.update Aggiorna un'istanza.
spanner.instances.setIamPolicy Imposta un criterio IAM per l'istanza.
spanner.instances.delete Elimina un'istanza.

Operazioni istanza

Le seguenti autorizzazioni si applicano alle operazioni delle istanze di Cloud Spanner (vedi il riferimento all'istanza: REST, RPC).

Nome autorizzazione operazione istanza Descrizione
spanner.instanceOperations.list Elenca le operazioni dell'istanza.
spanner.instanceOperations.get Esegui un'operazione specifica dell'istanza.
spanner.instanceOperations.cancel Annullamento di un'operazione istanza.
spanner.instanceOperations.delete Elimina un'operazione istanza.

Database

Le seguenti autorizzazioni si applicano ai database Cloud Spanner (vedi il riferimento del database: REST, RPC).

Nome autorizzazione database Descrizione
spanner.databases.beginPartitionedDmlTransaction

Eseguire un'istruzione DML (Partitioned Data Manipulation Language).

spanner.databases.create Crea un database.
spanner.databases.createBackup Crea un backup dal database. Richiede inoltre spanner.backups.create per creare la risorsa di backup.
spanner.databases.list Elenca database.
spanner.databases.update

Aggiorna i metadati di un database.

spanner.databases.updateDdl Aggiorna lo schema di un database.
spanner.databases.get Recupera i metadati di un database.
spanner.databases.getDdl Recupera uno schema di database.
spanner.databases.getIamPolicy Recupera un criterio IAM di un database.
spanner.databases.setIamPolicy Imposta un criterio IAM per il database.
spanner.databases.beginReadOnlyTransaction Avvia una transazione di sola lettura su un database Cloud Spanner.
spanner.databases.beginOrRollbackReadWriteTransaction Avvia o esegui il rollback di una transazione di lettura-scrittura su un database Cloud Spanner.
spanner.databases.read Lettura da un database con l'API Read.
spanner.databases.select Esecuzione di un'istruzione di selezione SQL in un database.
spanner.databases.write Scrivi in un database.
spanner.databases.drop Trascina un database.

Operazioni del database

Le seguenti autorizzazioni si applicano alle operazioni del database Cloud Spanner (vedi il riferimento del database: REST, RPC).

Nome autorizzazione operazione database Descrizione
spanner.databaseOperations.list Elenca le operazioni di database e ripristino.
spanner.databaseOperations.get Esegui una specifica operazione di database.
spanner.databaseOperations.cancel Annullamento di un'operazione di database.
spanner.databaseOperations.delete

Eliminazione di un'operazione di database.

Backup

Le seguenti autorizzazioni si applicano ai backup di Cloud Spanner (consulta il riferimento per i backup: REST, RPC).

Nome autorizzazione backup Descrizione
spanner.backups.create Creazione backup Richiede anche spanner.databases.createBackup sul database di origine.
spanner.backups.get Richiedi un backup.
spanner.backups.update Aggiorna un backup.
spanner.backups.delete Eliminare un backup.
spanner.backups.list Elenca backup.
spanner.backups.restoreDatabase Ripristina il database da un backup. Richiede inoltre spanner.databases.create per creare il database ripristinato sull'istanza di destinazione.
spanner.backups.getIamPolicy Ottieni un criterio IAM di backup.
spanner.backups.setIamPolicy Imposta un criterio IAM di backup.

Operazioni di backup

Le seguenti autorizzazioni si applicano alle operazioni di backup di Cloud Spanner (vedi il riferimento del database: REST, RPC).

Nome autorizzazione operazione backup Descrizione
spanner.backupOperations.list Elenca le operazioni di backup.
spanner.backupOperations.get Esegui un'operazione di backup specifica.
spanner.backupOperations.cancel Annullamento di un'operazione di backup.

Sessioni

Le seguenti autorizzazioni si applicano alle sessioni di Cloud Spanner (vedi il riferimento del database: REST, RPC).

Nome autorizzazione sessione Descrizione
spanner.sessions.create Crea una sessione.
spanner.sessions.get Avvia una sessione.
spanner.sessions.delete Eliminare una sessione.
spanner.sessions.list Elenca sessioni.

Ruoli predefiniti

Un ruolo predefinito è un gruppo di una o più autorizzazioni. Ad esempio, il ruolo predefinito roles/spanner.databaseUser contiene le autorizzazioni spanner.databases.read e spanner.database.write. Esistono due tipi di ruoli predefiniti per Cloud Spanner:

  • Ruoli persona: concessi a utenti o gruppi, che consente loro di eseguire azioni sulle risorse nel progetto.
  • Ruoli macchina: concesso agli account di servizio, che consente alle macchine in esecuzione come account di servizio di eseguire azioni sulle risorse nel progetto.

La tabella seguente elenca il controllo dell'accesso con i ruoli predefiniti IAM, incluso un elenco delle autorizzazioni associate a ogni ruolo:

Ruolo Autorizzazioni

Amministratore di Cloud Spanner
(roles/spanner.admin)

Ha accesso completo a tutte le risorse Cloud Spanner in un progetto Google Cloud. Un'entità con questo ruolo può:

  • Concedi e revoca le autorizzazioni per altre entità per tutte le risorse Cloud Spanner nel progetto.
  • Alloca ed elimina le risorse Cloud Spanner addebitabili.
  • Esecuzione di operazioni get/list/Modify sulle risorse Cloud Spanner.
  • Lettura e scrittura in tutti i database Cloud Spanner del progetto.
  • Recupera i metadati di progetto.

Risorse di livello inferiore in cui puoi concedere questo ruolo:

  • Progetto
  • monitoring.timeSeries.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • a chiave.*

Amministratore backup di Cloud Spanner
(roles/spanner.backupAdmin)

Un'entità con questo ruolo può:

  • Creare, visualizzare, aggiornare ed eliminare i backup.
  • Visualizza e gestisci un criterio di autorizzazione di backup.

Questo ruolo non può ripristinare un database da un backup.

Risorse di livello inferiore in cui puoi concedere questo ruolo:

  • Istanza
  • monitoring.timeSeries.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • spanner.backupOperations.*
  • spanner.backups.copy
  • spanner.backups.create
  • spanner.backups.delete
  • spanner.backups.get
  • spanner.backups.getIamPolicy
  • spanner.backups.list
  • spanner.backups.setIamPolicy
  • spanner.backups.update
  • spanner.databases.createBackup
  • spanner.databases.get
  • spanner.databases.list
  • spanner.instances.get
  • spanner.instances.list

Writer backup Cloud Spanner
(roles/spanner.backupWriter)

Questo ruolo deve essere utilizzato dagli script che automatizzano la creazione del backup. Un'entità con questo ruolo può creare backup, ma non può aggiornarli o eliminarli.

Risorse di livello inferiore in cui puoi concedere questo ruolo:

  • Istanza
  • spanner.backupOperations.get
  • spanner.backupOperations.list
  • spanner.backups.copy
  • spanner.backups.create
  • spanner.backups.get
  • spanner.backups.list
  • spanner.databases.createBackup
  • spanner.databases.get
  • spanner.databases.list
  • spanner.instances.get

Amministratore database di Cloud Spanner
(roles/spanner.databaseAdmin)

Un'entità con questo ruolo può:

  • Recupera/elenca tutte le istanze Cloud Spanner nel progetto.
  • Crea, elenca o rilascia database in un'istanza.
  • Concedi/revoca l'accesso ai database nel progetto.
  • Lettura e scrittura in tutti i database Cloud Spanner del progetto.

Risorse di livello inferiore in cui puoi concedere questo ruolo:

  • Istanza
  • monitoring.timeSeries.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • spanner.databaseOperations.*
  • spanner.databases.beginOrRollbackReadWriteTransaction
  • spanner.databases.beginPartitionedDmlTransaction
  • spanner.databases.beginReadOnlyTransaction
  • spanner.databases.create
  • spanner.databases.drop
  • spanner.databases.get
  • spanner.databases.getDdl
  • spanner.databases.getIamPolicy
  • spanner.databases.list
  • spanner.databases.partitionQuery
  • spanner.databases.partitionRead
  • spanner.databases.read
  • spanner.databases.select
  • spanner.databases.setIamPolicy
  • spanner.databases.update
  • spanner.databases.updateDdl
  • spanner.databases.write
  • spanner.instances.get
  • spanner.instances.getIamPolicy
  • spanner.instances.list
  • spanner.sessions.*

Lettore del database Cloud Spanner
(roles/spanner.databaseReader)

Un'entità con questo ruolo può:

  • Lettura dal database Cloud Spanner.
  • Eseguire le query SQL sul database.
  • Visualizza lo schema per il database.

Risorse di livello inferiore in cui puoi concedere questo ruolo:

  • Database
  • spanner.databases.beginReadOnlyTransaction
  • spanner.databases.getDdl
  • spanner.databases.partitionQuery
  • spanner.databases.partitionRead
  • spanner.databases.read
  • spanner.databases.select
  • spanner.instances.get
  • spanner.sessions.*

Utente database Cloud Spanner
(roles/spanner.databaseUser)

Un'entità con questo ruolo può:

  • Lettura e scrittura nel database Cloud Spanner.
  • Eseguire query SQL sul database, inclusi DML e DML partizionati.
  • Visualizza e aggiorna lo schema del database.

Risorse di livello inferiore in cui puoi concedere questo ruolo:

  • Database
  • spanner.databaseOperations.*
  • spanner.databases.beginOrRollbackReadWriteTransaction
  • spanner.databases.beginPartitionedDmlTransaction
  • spanner.databases.beginReadOnlyTransaction
  • spanner.databases.getDdl
  • spanner.databases.partitionQuery
  • spanner.databases.partitionRead
  • spanner.databases.read
  • spanner.databases.select
  • spanner.databases.updateDdl
  • spanner.databases.write
  • spanner.instances.get
  • spanner.sessions.*

Amministratore ripristino Cloud Spanner
(roles/spanner.restoreAdmin)

Un'entità con questo ruolo può ripristinare i database dai backup.

Se devi ripristinare un backup in un'altra istanza, applica questo ruolo a livello di progetto o a entrambe le istanze. Questo ruolo non può creare backup.

Risorse di livello inferiore in cui puoi concedere questo ruolo:

  • Istanza
  • monitoring.timeSeries.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • spanner.backups.get
  • spanner.backups.list
  • spanner.backups.restoreDatabase
  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list
  • spanner.databases.create
  • spanner.databases.get
  • spanner.databases.list
  • spanner.instances.get
  • spanner.instances.list

Visualizzatore Cloud Spanner
(roles/spanner.viewer)

Un'entità con questo ruolo può:

  • Visualizza tutte le istanze di Cloud Spanner, ma non puoi modificarle.
  • Consente di visualizzare tutti i database Cloud Spanner, ma non di modificarli o leggerli.

Ad esempio, puoi combinare questo ruolo con il ruolo roles/spanner.databaseUser per concedere a un utente l'accesso a un database specifico, ma visualizzare solo l'accesso ad altre istanze e database.

Questo ruolo è consigliato a livello di progetto Google Cloud per gli utenti che interagiscono con le risorse Cloud Spanner in Google Cloud Console.

Risorse di livello inferiore in cui puoi concedere questo ruolo:

  • Progetto
  • monitoring.timeSeries.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • spanner.databases.list
  • spanner.instanceConfigs.*
  • spanner.instances.get
  • spanner.instances.list

Ruoli di base

I ruoli di base sono ruoli a livello di progetto che precedono IAM. Per ulteriori dettagli, consulta Ruoli di base.

Cloud Spanner supporta i seguenti ruoli di base, ma se possibile devi utilizzare uno dei ruoli predefiniti mostrati in precedenza. I ruoli di base includono le autorizzazioni generali applicabili a tutte le risorse Google Cloud. Al contrario, i ruoli predefiniti di Cloud Spanner includono autorizzazioni granulari che si applicano solo a Cloud Spanner.

Ruolo di base Descrizione
roles/viewer Può elencare e ottenere i metadati di schemi e istanze. Può anche leggere ed eseguire query utilizzando SQL su un database.
roles/editor Può fare tutto ciò che può fare un roles/viewer, oltre a creare istanze e database e scrivere dati in un database.
roles/owner Può fare tutto ciò che può fare un roles/editor, oltre a modificare l'accesso a database e istanze.

Ruoli personalizzati

Se i ruoli predefiniti per Cloud Spanner non soddisfano i tuoi requisiti aziendali, puoi definire ruoli personalizzati con autorizzazioni da te specificate.

Prima di creare un ruolo personalizzato, devi identificare le attività che devono essere eseguite. Puoi quindi identificare le autorizzazioni necessarie per ogni attività e aggiungerle al ruolo personalizzato.

Ruoli personalizzati per le attività dell'account di servizio

Per la maggior parte delle attività è evidente quali autorizzazioni aggiungere al ruolo personalizzato. Ad esempio, se vuoi che il tuo account di servizio possa creare un database, aggiungi l'autorizzazione spanner.databases.create al tuo ruolo personalizzato.

Tuttavia, quando leggi o scrivi dati in una tabella Cloud Spanner, devi aggiungere diverse autorizzazioni al tuo ruolo personalizzato. La tabella riportata di seguito mostra quali autorizzazioni sono necessarie per la lettura e la scrittura di dati.

Attività dell'account di servizio Autorizzazioni obbligatorie
Lettura di dati spanner.databases.select
spanner.sessions.create
spanner.sessions.delete
Inserire, aggiornare o eliminare dati spanner.databases.beginOrRollbackReadWriteTransaction
spanner.databases.write
spanner.sessions.create
spanner.sessions.delete
Crea backup spanner.backups.create
spanner.databases.createBackup
Ripristinare un database spanner.databases.create
spanner.backups.restoreDatabase

Ruoli personalizzati per le attività di Google Cloud Console

Per identificare l'elenco delle autorizzazioni necessarie per una determinata attività in Cloud Console, determina il flusso di lavoro relativo a tale attività e compila le relative autorizzazioni. Ad esempio, per visualizzare i dati in una tabella, segui questi passaggi in Cloud Console:

Passaggio Autorizzazioni
1. Accedi al progetto resourcemanager.projects.get
2. Visualizza l'elenco delle istanze spanner.instances.list
3. Seleziona un'istanza spanner.instances.get
4. Visualizza l'elenco dei database spanner.databases.list
5. Seleziona un database e una tabella spanner.databases.get, spanner.databases.getDdl
6. Visualizzare i dati in una tabella spanner.databases.select, spanner.sessions.create, spanner.sessions.delete

In questo esempio, hai bisogno di queste autorizzazioni:

  • resourcemanager.projects.get
  • spanner.databases.get
  • spanner.databases.getDdl
  • spanner.databases.list
  • spanner.databases.select
  • spanner.instances.get
  • spanner.instances.list
  • spanner.sessions.create
  • spanner.sessions.delete

La tabella seguente contiene le autorizzazioni richieste per le azioni in Cloud Console.

Azione Autorizzazioni
Visualizza l'elenco delle istanze nella pagina Istanze

resourcemanager.projects.get
spanner.instances.list

Visualizza l'elenco nella scheda Autorizzazioni della pagina Istanza

spanner.instances.getIamPolicy

Aggiungi entità nella scheda Autorizzazioni della pagina Istanza

spanner.instances.setIamPolicy

Seleziona un'istanza dall'elenco per visualizzare la pagina Dettagli istanza.

spanner.instances.get

Crea un'istanza

spanner.instanceConfigs.list
spanner.instanceOperations.get
spanner.instances.create

Elimina un'istanza

spanner.instances.delete

Modifica di un'istanza

spanner.instanceOperations.get
spanner.instances.update

Visualizza i grafici nella scheda Monitora sulla pagina dei dettagli dell'istanza o nella pagina dei dettagli del database

monitoring.metricDescriptors.get
monitoring.metricDescriptors.list
monitoring.timeSeries.list
spanner.instances.get

Visualizza l'elenco dei database nella pagina Dettagli istanza

spanner.databases.list

Visualizza l'elenco nella scheda Autorizzazioni della pagina Dettagli database

spanner.databases.getIamPolicy

Aggiungi entità nella scheda Autorizzazioni della pagina Dettagli database

spanner.databases.setIamPolicy

Seleziona un database dall'elenco dei database e visualizza lo schema nella pagina Dettagli database

spanner.databases.get
spanner.databases.getDdl

Crea un database

spanner.databases.create

Eliminare un database

spanner.databases.drop

Creare una tabella

Aggiorna uno schema della tabella

spanner.databaseOperations.get
spanner.databaseOperations.list
spanner.databases.updateDdl

Visualizza i dati nella scheda Dati della pagina Dettagli database

Creare ed eseguire una query

spanner.databases.select
spanner.sessions.create
spanner.sessions.delete

Modificare i dati in una tabella

spanner.databases.beginOrRollbackReadWriteTransaction
spanner.databases.select
spanner.databases.write
spanner.sessions.create
spanner.sessions.delete

Visualizza la scheda Backup/Ripristino

spanner.backups.list
spanner.backups.get

Visualizza l'elenco delle operazioni di backup

spanner.backupOperations.list

Visualizza l'elenco delle operazioni di ripristino

spanner.databaseOperations.list

Crea backup

spanner.backups.create
spanner.databases.createBackup
spanner.databases.list1
spanner.backupOperations.list1

Ripristinare un database da un backup

spanner.instanceConfigs.list
spanner.instances.get
spanner.backups.get
spanner.backups.restoreDatabase
spanner.instances.list
spanner.databases.create

Aggiornare un backup

spanner.backups.update

Eliminare un backup

spanner.backups.delete

1 Obbligatorio se stai creando un backup dalla scheda Backup/Ripristino a livello di istanza anziché a livello di database.

Gestione dei criteri IAM di Cloud Spanner

Puoi ottenere, impostare e testare i criteri IAM utilizzando le API REST o RPC sull'istanza Cloud Spanner, sul database e sulle risorse di backup.

Istanze

API REST API RPC
projects.instances.getIamPolicy GetIamPolicy
projects.instances.setIamPolicy SetIamPolicy
projects.instances.testIamPermissions TestIamPermissions

Database

API REST API RPC
projects.instances.databases.getIamPolicy GetIamPolicy
projects.instances.databases.setIamPolicy SetIamPolicy
projects.instances.databases.testIamPermissions TestIamPermissions

Backup

API REST API RPC
projects.instances.backups.getIamPolicy GetIamPolicy
projects.instances.backups.setIamPolicy SetIamPolicy
projects.instances.backups.testIamPermissions TestIamPermissions

Passaggi successivi