Identity and Access Management (IAM) ti consente di controllare l'accesso degli utenti e dei gruppi alle risorse Spanner a livello di progetto, istanza Spanner e database Spanner. Ad esempio, puoi specificare che un utente abbia il controllo completo di un database specifico in un'istanza specifica del progetto, ma non possa creare, modificare o eliminare istanze nel progetto. L'utilizzo del controllo dell'accesso con IAM ti consente di concedere un'autorizzazione a un utente o a un gruppo senza dover modificare singolarmente ogni autorizzazione di database o istanza Spanner.
Questo documento si concentra sulle autorizzazioni IAM pertinenti per Spanner e sui ruoli IAM che concedono queste autorizzazioni. Per una descrizione dettagliata di IAM e delle sue funzionalità, consulta la Guida per gli sviluppatori di Identity and Access Management. in particolare la sezione sulla gestione dei 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 di selezione SQL su un database. Non concedi direttamente le autorizzazioni agli utenti, ma li doti di ruoli predefiniti o ruoli personalizzati che includono una o più autorizzazioni.
Le tabelle riportate di seguito elencano le autorizzazioni IAM associate a Spanner.
Configurazioni delle istanze
Le seguenti autorizzazioni si applicano alle configurazioni delle istanze Spanner. Per ulteriori informazioni, consulta i riferimenti alla configurazione dell'istanza per le API REST e RPC.
Nome dell'autorizzazione di configurazione dell'istanza | Descrizione |
---|---|
spanner.instanceConfigs.create |
Crea una configurazione dell'istanza personalizzata. |
spanner.instanceConfigs.delete |
Elimina una configurazione dell'istanza personalizzata. |
spanner.instanceConfigs.get |
Ottieni una configurazione dell'istanza. |
spanner.instanceConfigs.list |
Elenca l'insieme di configurazioni dell'istanza. |
spanner.instanceConfigs.update |
Aggiorna una configurazione dell'istanza personalizzata. |
Operazioni di configurazione delle istanze
Le seguenti autorizzazioni si applicano alle operazioni di configurazione delle istanze Spanner. Per ulteriori informazioni, consulta i riferimenti delle istanze per le API REST e RPC.
Nome dell'autorizzazione per l'operazione di configurazione dell'istanza | Descrizione |
---|---|
spanner.instanceConfigOperations.list |
Elenca le operazioni di configurazione dell'istanza. |
spanner.instanceConfigOperations.get |
Recupera un'operazione di configurazione dell'istanza specifica. |
spanner.instanceConfigOperations.cancel |
Annullare un'operazione di configurazione dell'istanza. |
spanner.instanceConfigOperations.delete |
Elimina un'operazione di configurazione dell'istanza. |
Istanze
Alle istanze Spanner si applicano le seguenti autorizzazioni. Per ulteriori informazioni, consulta i riferimenti delle istanze per le API REST e RPC.
Nome autorizzazione istanza | Descrizione |
---|---|
spanner.instances.create |
Crea 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 il criterio IAM di un'istanza. |
spanner.instances.delete |
Elimina un'istanza. |
Operazioni istanza
Le seguenti autorizzazioni si applicano alle operazioni delle istanze Spanner. Per ulteriori informazioni, consulta i riferimenti delle istanze per le API REST e RPC.
Nome dell'autorizzazione di operazione dell'istanza | Descrizione |
---|---|
spanner.instanceOperations.list |
Elenca le operazioni delle istanze. |
spanner.instanceOperations.get |
Recupera un'operazione di istanza specifica. |
spanner.instanceOperations.cancel |
Annullare un'operazione dell'istanza. |
spanner.instanceOperations.delete |
Elimina un'operazione di istanza. |
Partizioni
Le seguenti autorizzazioni si applicano alle partizioni Spanner. Per ulteriori informazioni, consulta i riferimenti alle partizioni per le API REST e RPC.
Nome autorizzazione istanza | Descrizione |
---|---|
spanner.instancePartitions.create |
Crea una partizione. |
spanner.instancePartitions.get |
Recupera la configurazione di una partizione specifica. |
spanner.instancePartitions.list |
Elenca le partizioni. |
spanner.instancePartitions.update |
Aggiorna una partizione. |
spanner.instancePartitions.delete |
Eliminare una partizione. |
Operazioni di partizione
Le seguenti autorizzazioni si applicano alle operazioni di partizione di Spanner. Per ulteriori informazioni, consulta i riferimenti alla partizione dell'istanza per le API REST ed RPC.
Nome dell'autorizzazione per l'operazione di partizione dell'istanza | Descrizione |
---|---|
spanner.instancePartitionOperations.list |
Elenca le operazioni di partizione. |
spanner.instancePartitionOperations.get |
Recupera un'operazione di partizione specifica. |
spanner.instancePartitionOperations.cancel |
Annullare un'operazione di partizione. |
spanner.instancePartitionOperations.delete |
Elimina un'operazione di partizione. |
Database
Le seguenti autorizzazioni si applicano ai database Spanner. Per ulteriori informazioni, consulta i riferimenti del database per le API REST e RPC.
Nome dell'autorizzazione del database | Descrizione |
---|---|
spanner.databases.beginPartitionedDmlTransaction |
Esegui un'istruzione DML (Data Manipulation Language) partizionata. Per ulteriori informazioni sulle query partizionate, consulta Leggere i dati in parallelo. |
spanner.databases.create |
Crea un database. |
spanner.databases.createBackup |
Crea un backup dal database. Richiede inoltre a spanner.backups.create di creare la risorsa di backup. |
spanner.databases.list |
Elenca i 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 lo schema di un database. |
spanner.databases.getIamPolicy |
Recupera 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 |
Legge da un database utilizzando l'API di lettura. |
spanner.databases.select |
Esegui un'istruzione di selezione SQL su un database. |
spanner.databases.write |
Scrivere in un database. |
spanner.databases.drop |
Elimina un database. |
spanner.databases.useRoleBasedAccess |
Utilizza il controllo dell'accesso granulare. |
spanner.databases.useDataBoost |
Utilizza le risorse di calcolo di Spanner Data Boost per elaborare query partizionate. |
Ruoli database
Le seguenti autorizzazioni si applicano ai ruoli del database Spanner. Per ulteriori informazioni, consulta i riferimenti del database per le API REST e RPC.
Nome dell'autorizzazione del ruolo del database | Descrizione |
---|---|
spanner.databaseRoles.list |
Elenca i ruoli del database. |
spanner.databaseRoles.use |
Utilizza un ruolo database specificato. |
Operazioni del database
Le seguenti autorizzazioni si applicano alle operazioni di database di Spanner. Per ulteriori informazioni, consulta i riferimenti del database per le API REST e RPC.
Nome dell'autorizzazione per le operazioni del database | Descrizione |
---|---|
spanner.databaseOperations.list |
Elenca le operazioni di database e di ripristino del database. |
spanner.databaseOperations.get |
Recupera un'operazione di database specifica. |
spanner.databaseOperations.cancel |
Annullare 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 di backup | Descrizione |
---|---|
spanner.backups.create |
Creazione backup Richiede anche spanner.databases.createBackup nel database di origine. |
spanner.backups.get |
Ricevi un backup. |
spanner.backups.update |
Aggiorna un backup. |
spanner.backups.delete |
Eliminare un backup. |
spanner.backups.list |
Elenca i backup. |
spanner.backups.restoreDatabase |
Ripristina il 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 |
Imposta il criterio IAM di un backup. |
Operazioni di backup
Le seguenti autorizzazioni si applicano alle operazioni di backup di Spanner. Per maggiori informazioni, consulta i riferimenti del database per le API REST e RPC.
Nome dell'autorizzazione per l'operazione di backup | Descrizione |
---|---|
spanner.backupOperations.list |
Elenca le operazioni di backup. |
spanner.backupOperations.get |
Recupera un'operazione di backup specifica. |
spanner.backupOperations.cancel |
Annullare un'operazione di backup. |
Pianificazioni di backup
Le seguenti autorizzazioni si applicano alle pianificazioni dei backup di Spanner. Per maggiori informazioni, consulta i riferimenti del database per le API REST e RPC.
Nome autorizzazione pianificazione backup | Descrizione |
---|---|
spanner.backupSchedules.create |
Crea una pianificazione dei backup. Richiede anche spanner.databases.createBackup nel database di origine. |
spanner.backupSchedules.get |
Ricevi una pianificazione del backup. |
spanner.backupSchedules.update |
Aggiornare una pianificazione del backup. |
spanner.backupSchedules.delete |
Elimina una pianificazione del backup. |
spanner.backupSchedules.list |
Elenca le pianificazioni dei backup. |
Sessioni
Alle sessioni Spanner si applicano le seguenti autorizzazioni. Per ulteriori informazioni, consulta i riferimenti del database per le API REST e RPC.
Nome dell'autorizzazione della sessione | Descrizione |
---|---|
spanner.sessions.create |
Crea una sessione. |
spanner.sessions.get |
Recupera una sessione. |
spanner.sessions.delete |
Eliminare una sessione. |
spanner.sessions.list |
Elenca le sessioni. |
Ruoli predefiniti
Un ruolo predefinito è un insieme 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 persona: concessi a utenti o gruppi, che consentono di eseguire azioni sulle risorse del progetto.
- Ruoli macchina: concessi agli account di servizio, che consentono alle macchine in esecuzione come questi account di servizio di eseguire azioni sulle risorse del progetto.
La tabella riportata di seguito elenca il controllo dell'accesso con i ruoli IAM predefiniti, incluso 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 Reader with DataBoost( Includes all permissions in the spanner.databaseReader role enabling access to read and/or query a Cloud Spanner database using instance resources, as well as the permission to access the database with Data Boost, a fully managed serverless service that provides independent compute resources. 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`. Lowest-level resources where you can grant this 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. Lowest-level resources where you can grant this role:
|
|
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 precedenti a IAM. Per ulteriori dettagli, consulta la sezione 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 generali che si applicano a tutte le risorse. I ruoli predefiniti di Spanner, invece, includono autorizzazioni granulari che si applicano solo a Spanner. Google Cloud
Ruolo di base | Descrizione |
---|---|
roles/viewer |
Può elencare e recuperare 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ò eseguire tutte le operazioni consentite da 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à che devi svolgere. Puoi quindi identificare le autorizzazioni richieste per ogni attività e aggiungerle al ruolo personalizzato.
Ruoli personalizzati per le attività degli account di servizio
Per la maggior parte delle attività, è evidente quali autorizzazioni devi 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 Spanner, devi aggiungere diverse autorizzazioni al tuo ruolo personalizzato. La tabella seguente mostra le autorizzazioni necessarie per leggere e scrivere dati.
Attività dell'account di servizio | Autorizzazioni obbligatorie |
---|---|
Lettura di dati |
spanner.databases.select
|
Inserire, aggiornare o eliminare dati |
spanner.databases.beginOrRollbackReadWriteTransaction
|
Crea backup |
spanner.backups.create
|
Ripristinare un database |
spanner.databases.create
|
Ruoli personalizzati per le Google Cloud attività della console
Per identificare l'elenco delle autorizzazioni necessarie per una determinata attività nella console Google Cloud, devi determinare il flusso di lavoro per l'attività e compilare le autorizzazioni per quel flusso di lavoro. Ad esempio, per visualizzare i dati di una tabella, segui questi passaggi nella console Google Cloud:
Passaggio | Autorizzazioni |
---|---|
1. Accedere 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 richieste 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 Instanza |
|
Aggiungi entità nella scheda Autorizzazioni della pagina Istanza |
|
Seleziona un'istanza dall'elenco per visualizzare la pagina Dettagli istanza |
|
Crea un'istanza |
|
Elimina un'istanza |
|
Modifica un'istanza |
|
Creare una partizione |
|
Eliminare una partizione |
|
Modificare una partizione |
|
Visualizza i grafici nella scheda Monitor della pagina dei dettagli dell'istanza o della pagina dei dettagli del database |
|
Visualizza l'elenco dei database nella pagina Dettagli istanza |
|
Visualizza l'elenco nella scheda Autorizzazioni della pagina Dettagli database |
|
Aggiungi i principali nella scheda Autorizzazioni della pagina dei dettagli del database |
|
Seleziona un database dall'elenco dei database e visualizza lo schema nella pagina Dettagli database |
|
Crea un database |
|
Eliminare un database |
|
Creare una tabella Aggiornare lo schema di una tabella |
|
Visualizzare i dati nella scheda Dati della pagina Dettagli database Creare ed eseguire 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 |
|
Ripristinare un database da un backup |
|
Aggiornare un backup |
|
Eliminare un backup |
|
Crea una pianificazione dei backup |
|
Aggiornare una pianificazione del backup |
|
Eliminare una pianificazione del backup |
|
Gestione dei criteri IAM di Spanner
Puoi ottenere, impostare e testare i criteri IAM utilizzando le API REST o RPC sulle risorse di backup, database e istanze 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 per un database, un'istanza o un progetto Google Cloud Spanner.
- Scopri come controllare l'accesso alle Google Cloud risorse, tra cui Spanner, da internet.