Identity and Access Management (IAM) consente di controllare l'accesso di utenti e gruppi alle risorse di Spanner a livello di progetto, istanza Spanner e database Spanner. Ad esempio, puoi specificare che un utente ha il controllo completo di un database specifico in un'istanza specifica del tuo progetto, ma non può creare, modificare o eliminare alcuna istanza nel tuo progetto. L'utilizzo controllo dell'accesso con IAM ti consente di concedere un'autorizzazione a un utente o a un gruppo senza dover modificare singolarmente ogni istanza Spanner o autorizzazione database.
Questo documento è incentrato sulle autorizzazioni IAM pertinenti per 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 Gestire i criteri IAM.
Autorizzazioni
Le autorizzazioni consentono agli utenti di eseguire azioni specifiche
sulle risorse Spanner. Ad esempio, l'autorizzazione spanner.databases.read
consente a un utente di leggere da un database utilizzando l'API di lettura di Spanner, mentre spanner.databases.select
consente a un utente di eseguire un'istruzione SQL select su un database. Non concedi direttamente le autorizzazioni agli utenti, ma concedi loro ruoli predefiniti o ruoli personalizzati che contengono una o più autorizzazioni raggruppate al loro interno.
Le seguenti tabelle elencano le autorizzazioni IAM associate a Spanner.
Configurazioni delle istanze
Le seguenti autorizzazioni si applicano alle configurazioni di istanze Spanner. Per ulteriori informazioni, consulta i riferimenti alla configurazione delle istanze per le API REST e RPC.
Nome autorizzazione di configurazione dell'istanza | Descrizione |
---|---|
spanner.instanceConfigs.create |
Creare una configurazione dell'istanza personalizzata. |
spanner.instanceConfigs.delete |
Elimina una configurazione di istanza personalizzata. |
spanner.instanceConfigs.get |
Recupera una configurazione di istanza. |
spanner.instanceConfigs.list |
Elenca l'insieme di configurazioni delle istanze. |
spanner.instanceConfigs.update |
Aggiorna una configurazione di istanza personalizzata. |
Operazioni di configurazione dell'istanza
Le seguenti autorizzazioni si applicano alle operazioni di configurazione dell'istanza Spanner. Per ulteriori informazioni, consulta i riferimenti alle istanze per le API REST e RPC.
Nome autorizzazione operazione di configurazione dell'istanza | Descrizione |
---|---|
spanner.instanceConfigOperations.list |
Elenca le operazioni di configurazione dell'istanza. |
spanner.instanceConfigOperations.get |
Ottieni un'operazione di configurazione dell'istanza specifica. |
spanner.instanceConfigOperations.cancel |
Annulla un'operazione di configurazione dell'istanza. |
spanner.instanceConfigOperations.delete |
Elimina un'operazione di configurazione dell'istanza. |
Istanze
Le seguenti autorizzazioni si applicano alle istanze Spanner. Per ulteriori informazioni, consulta i riferimenti alle istanze per le API REST e RPC.
Nome autorizzazione istanza | Descrizione |
---|---|
spanner.instances.create |
Creazione di un'istanza. |
spanner.instances.list |
Elenca istanze. |
spanner.instances.get |
Ottieni 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 il criterio IAM di un'istanza. |
spanner.instances.delete |
Eliminare un'istanza. |
Operazioni dell'istanza
Le seguenti autorizzazioni si applicano alle operazioni dell'istanza Spanner. Per ulteriori informazioni, consulta i riferimenti alle istanze per le API REST e RPC.
Nome autorizzazione operazione istanza | Descrizione |
---|---|
spanner.instanceOperations.list |
Elenca le operazioni dell'istanza. |
spanner.instanceOperations.get |
Ottieni un'operazione di istanza specifica. |
spanner.instanceOperations.cancel |
Annulla un'operazione di istanza. |
spanner.instanceOperations.delete |
Eliminare un'operazione di istanza. |
Database
Le seguenti autorizzazioni si applicano ai database Spanner. Per ulteriori informazioni, consulta i riferimenti al database per le API REST e RPC.
Nome autorizzazione database | Descrizione |
---|---|
spanner.databases.beginPartitionedDmlTransaction |
Eseguire un'istruzione DML (Parttioned Data Manipulation Language). |
spanner.databases.create |
Creare un database. |
spanner.databases.createBackup |
Crea un backup dal database. Richiede anche spanner.backups.create per creare la risorsa di backup. |
spanner.databases.list |
Elencare i database. |
spanner.databases.update |
Aggiornare i metadati di un database. |
spanner.databases.updateDdl |
Aggiorna lo schema di un database. |
spanner.databases.get |
Recupero dei metadati di un database. |
spanner.databases.getDdl |
Recupera lo schema di un database. |
spanner.databases.getIamPolicy |
Ottieni il criterio IAM di un database. |
spanner.databases.setIamPolicy |
Imposta il criterio IAM di un database. |
spanner.databases.beginReadOnlyTransaction |
Avvia una transazione di sola lettura su un database Spanner. |
spanner.databases.beginOrRollbackReadWriteTransaction |
Avvia o esegui il rollback di una transazione di lettura-scrittura su un database Spanner. |
spanner.databases.read |
Lettura da un database utilizzando l'API di lettura. |
spanner.databases.select |
Esegui un'istruzione SQL select su un database. |
spanner.databases.write |
Scrivi in un database. |
spanner.databases.drop |
Elimina un database. |
spanner.databases.useRoleBasedAccess |
Utilizza un controllo dell'accesso granulare. |
spanner.databases.useDataBoost |
Utilizza le risorse di calcolo di Spanner Data Boost per elaborare le query partizionate. |
Ruoli database
Le seguenti autorizzazioni si applicano ai ruoli database di Spanner. Per ulteriori informazioni, consulta i riferimenti al database per le API REST e RPC.
Nome autorizzazione ruolo del database | Descrizione |
---|---|
spanner.databaseRoles.list |
Elenca i ruoli del database. |
spanner.databaseRoles.use |
Utilizza un ruolo del database specificato. |
Operazioni del database
Le seguenti autorizzazioni si applicano alle operazioni di database di Spanner. Per ulteriori informazioni, consulta i riferimenti al database per le API REST e RPC.
Nome autorizzazione operazione database | Descrizione |
---|---|
spanner.databaseOperations.list |
Elenca le operazioni di database e ripristina. |
spanner.databaseOperations.get |
Ottieni un'operazione di database specifica. |
spanner.databaseOperations.cancel |
Annulla un'operazione di database. |
Backup
Le seguenti autorizzazioni si applicano ai backup di Spanner. Per ulteriori informazioni, consulta i riferimenti ai backup per le API REST e RPC.
Nome autorizzazione backup | Descrizione |
---|---|
spanner.backups.create |
Creazione backup Richiede anche spanner.databases.createBackup nel database di origine. |
spanner.backups.get |
Ottieni un backup. |
spanner.backups.update |
Aggiorna un backup. |
spanner.backups.delete |
Eliminare un backup. |
spanner.backups.list |
Elenca i backup. |
spanner.backups.restoreDatabase |
Ripristina database da un backup. Richiede inoltre spanner.databases.create per creare il database ripristinato nell'istanza di destinazione. |
spanner.backups.getIamPolicy |
Recupera il criterio IAM di un backup. |
spanner.backups.setIamPolicy |
Impostare il criterio IAM di un backup. |
Operazioni di backup
Le seguenti autorizzazioni si applicano alle operazioni di backup di Spanner. Per ulteriori informazioni, consulta i riferimenti ai database per le API REST e RPC.
Nome autorizzazione operazione di backup | Descrizione |
---|---|
spanner.backupOperations.list |
Elencare le operazioni di backup. |
spanner.backupOperations.get |
Esegui un'operazione di backup specifica. |
spanner.backupOperations.cancel |
Annulla un'operazione di backup. |
Sessioni
Le seguenti autorizzazioni si applicano alle sessioni Spanner. Per ulteriori informazioni, consulta i riferimenti ai database per le API REST e RPC.
Nome autorizzazione sessione | Descrizione |
---|---|
spanner.sessions.create |
Creare una sessione. |
spanner.sessions.get |
Ottieni una sessione. |
spanner.sessions.delete |
Eliminare una sessione. |
spanner.sessions.list |
Elenca sessioni. |
Ruoli predefiniti
Un ruolo predefinito è un pacchetto di una o più autorizzazioni. Ad esempio, il ruolo predefinito roles/spanner.databaseUser
contiene le autorizzazioni spanner.databases.read
e spanner.databases.write
. Esistono due tipi di ruoli predefiniti per Spanner:
- Ruoli personali: concessi a utenti o gruppi, che consentono loro di eseguire azioni sulle risorse del progetto.
- Ruoli macchina: concessi agli account di servizio, che consentono alle macchine eseguite come account di servizio di eseguire azioni sulle risorse del progetto.
La seguente tabella elenca il controllo dell'accesso con i ruoli IAM predefiniti, compreso un elenco delle autorizzazioni associate a ciascun ruolo:
Role | Permissions |
---|---|
Cloud Spanner Admin( Has complete access to all Spanner resources in a Google Cloud project. A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Backup Admin( A principal with this role can:
This role cannot restore a database from a backup. Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Backup Writer( This role is intended to be used by scripts that automate backup creation. A principal with this role can create backups, but cannot update or delete them. Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Database Admin( A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Database Reader( A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Database Role User( In conjunction with the IAM role Cloud Spanner Fine-grained Access User, grants permissions to individual Spanner database roles. Add a condition for each desired Spanner database role that includes the resource type of `spanner.googleapis.com/DatabaseRole` and the resource name ending with `/YOUR_SPANNER_DATABASE_ROLE`. |
|
Cloud Spanner Database User( A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Fine-grained Access User( Grants permissions to use Spanner's fine-grained access control framework. To grant access to specific database roles, also add the `roles/spanner.databaseRoleUser` IAM role and its necessary conditions. |
|
Cloud Spanner Restore Admin( A principal with this role can restore databases from backups. If you need to restore a backup to a different instance, apply this role at the project level or to both instances. This role cannot create backups. Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Viewer( A principal with this role can:
For example, you can combine this role with the This role is recommended at the Google Cloud project level for users interacting with Cloud Spanner resources in the Google Cloud console. Lowest-level resources where you can grant this role:
|
|
Ruoli di base
I ruoli di base sono ruoli a livello di progetto antecedenti a IAM. Per ulteriori dettagli, consulta Ruoli di base.
Sebbene Spanner supporti i seguenti ruoli di base, ti consigliamo di utilizzare uno dei ruoli predefiniti mostrati in precedenza, se possibile. I ruoli di base includono autorizzazioni ampie applicabili a tutte le risorse Google Cloud. Al contrario, i ruoli predefiniti di Spanner includono autorizzazioni granulari applicabili solo a 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 . Può anche creare istanze e database e scrivere dati in un database. |
roles/owner |
Può fare tutto ciò che può fare un roles/editor . Può anche modificare l'accesso a database e istanze. |
Ruoli personalizzati
Se i ruoli predefiniti per Spanner non soddisfano i tuoi requisiti aziendali, puoi definire ruoli personalizzati con le autorizzazioni da te specificate.
Prima di creare un ruolo personalizzato, devi identificare le attività da eseguire. Puoi quindi identificare le autorizzazioni necessarie per ciascuna attività e aggiungerle al ruolo personalizzato.
Ruoli personalizzati per le attività degli account di servizio
Per la maggior parte delle attività, è ovvio 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 ruolo personalizzato.
Tuttavia, quando leggi o scrivi dati in una tabella Spanner, devi aggiungere diverse autorizzazioni al ruolo personalizzato. La seguente tabella mostra le autorizzazioni necessarie per la lettura e la scrittura di dati.
Attività account di servizio | Autorizzazioni obbligatorie |
---|---|
Lettura di dati |
spanner.databases.select
|
Inserisci, aggiorna o elimina dati |
spanner.databases.beginOrRollbackReadWriteTransaction
|
Crea backup |
spanner.backups.create
|
Ripristina un database |
spanner.databases.create
|
Ruoli personalizzati per le attività della console Google Cloud
Per identificare l'elenco delle autorizzazioni necessarie per una determinata attività nella console Google Cloud, devi determinare il flusso di lavoro per quell'attività e compilare le relative autorizzazioni. Ad esempio, per visualizzare i dati in una tabella, segui questi passaggi nella console Google Cloud:
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.getDdl |
6. Visualizzare i dati in una tabella | spanner.databases.select , spanner.sessions.create , spanner.sessions.delete |
In questo esempio, sono necessarie le seguenti autorizzazioni:
resourcemanager.projects.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 elenca le autorizzazioni necessarie per le azioni nella console Google Cloud.
Azione | Autorizzazioni |
---|---|
Visualizza l'elenco delle istanze nella pagina Istanze |
|
Visualizza l'elenco nella scheda Autorizzazioni della pagina Istanza |
|
Aggiungi entità alla scheda Autorizzazioni della pagina Istanza |
|
Seleziona un'istanza dall'elenco per visualizzare la pagina Dettagli istanza |
|
Creazione di un'istanza |
|
Elimina un'istanza |
|
Modifica di un'istanza |
|
Visualizza i grafici nella scheda Monitoraggio nella pagina Dettagli istanza o nella pagina Dettagli database |
|
Visualizza l'elenco dei database nella pagina Dettagli istanza |
|
Visualizza l'elenco nella scheda Autorizzazioni della pagina Dettagli database |
|
Aggiungi entità nella scheda Autorizzazioni della pagina Dettagli database |
|
Seleziona un database dall'elenco e visualizza lo schema nella pagina Dettagli database |
|
Crea un database |
|
Elimina un database |
|
Creare una tabella Aggiorna uno schema della tabella |
|
Visualizza i dati nella scheda Dati della pagina Dettagli database Crea ed esegui una query |
|
Modificare i dati in una tabella |
|
Visualizza la pagina Backup/Ripristino |
|
Visualizza l'elenco delle operazioni di backup |
|
Visualizza l'elenco delle operazioni di ripristino |
|
Crea backup |
|
Ripristina un database da un backup |
|
Aggiorna un backup |
|
Eliminare un backup |
|
Gestione dei criteri IAM di Spanner
Puoi ottenere, impostare e testare i criteri IAM utilizzando le API REST o RPC su istanze, database e risorse di backup di Spanner.
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
- Scopri di più su Identity and Access Management.
- Scopri come applicare i ruoli IAM a un database, a un'istanza o a un progetto Google Cloud Spanner.
- Scopri come controllare l'accesso alle risorse Google Cloud, incluso Spanner, da internet.