Panoramica di IAM

Identity and Access Management (IAM) ti consente di controllare l'accesso di utenti e gruppi alle risorse 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 progetto, ma non può creare, modificare o eliminare istanze nel 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 o autorizzazione di database 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.cancel Annullare un'operazione di configurazione dell'istanza.
spanner.instanceConfigOperations.delete Elimina un'operazione di configurazione dell'istanza.
spanner.instanceConfigOperations.get Recupera un'operazione di configurazione dell'istanza.
spanner.instanceConfigOperations.list Elenca le operazioni 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 Creazione di un'istanza.
spanner.instances.delete Elimina un'istanza.
spanner.instances.get Recupera la configurazione di un'istanza specifica.
spanner.instances.getIamPolicy Recupera il criterio IAM di un'istanza.
spanner.instances.list Elenca le istanze.
spanner.instances.setIamPolicy Imposta il criterio IAM di un'istanza.
spanner.instances.update Aggiorna 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.cancel Annullare un'operazione dell'istanza.
spanner.instanceOperations.delete Elimina un'operazione di istanza.
spanner.instanceOperations.get Recupera un'operazione di istanza specifica.
spanner.instanceOperations.list Elenca le operazioni delle istanze.

Partizioni istanza

Le seguenti autorizzazioni si applicano alle partizioni di istanze Spanner. Per ulteriori informazioni, consulta i riferimenti alla partizione delle istanze per le API REST e RPC.

Nome autorizzazione istanza Descrizione
spanner.instancePartitions.create Crea una partizione di istanze.
spanner.instancePartitions.delete Elimina una partizione dell'istanza.
spanner.instancePartitions.get Recupera la configurazione di una partizione dell'istanza specifica.
spanner.instancePartitions.list Elenca le partizioni delle istanze.
spanner.instancePartitions.update Aggiorna una partizione dell'istanza.

Operazioni di partizione dell'istanza

Le seguenti autorizzazioni si applicano alle operazioni di partizione delle istanze Spanner. Per ulteriori informazioni, consulta i riferimenti alla partizione delle istanze per le API REST e RPC.

Nome dell'autorizzazione per l'operazione di partizione dell'istanza Descrizione
spanner.instancePartitionOperations.cancel Annullamento di un'operazione di partizione dell'istanza.
spanner.instancePartitionOperations.delete Elimina un'operazione di partizione dell'istanza.
spanner.instancePartitionOperations.get Recupera un'operazione di partizione dell'istanza specifica.
spanner.instancePartitionOperations.list Elenca le operazioni di partizione dell'istanza.

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.adapt Consente all'API Spanner Adapter di interagire direttamente con Spanner.
spanner.databases.beginOrRollbackReadWriteTransaction Avvia o esegui il rollback di una transazione di lettura-scrittura su un database Spanner.
spanner.databases.beginPartitionedDmlTransaction Esegui un'istruzione DML (Data Manipulation Language) con partizione dell'istanza. Per ulteriori informazioni sulle query con partizione di istanze, consulta Leggere i dati in parallelo.
spanner.databases.beginReadOnlyTransaction Avvia una transazione di sola lettura su un database Spanner.
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.drop Elimina 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.list Elenca i database.
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.setIamPolicy Imposta il criterio IAM di un database.
spanner.databases.update Aggiorna i metadati di un database.
spanner.databases.updateDdl Aggiorna lo schema di un database.
spanner.databases.useDataBoost Utilizza le risorse di calcolo di Spanner Data Boost per elaborare le query con partizione dell'istanza.
spanner.databases.useRoleBasedAccess Utilizza il controllo dell'accesso granulare.
spanner.databases.write Scrivere in un database.

Ruoli database

Le seguenti autorizzazioni si applicano ai ruoli del database Spanner. Per maggiori 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.cancel Annullamento di un'operazione di database.
spanner.databaseOperations.get Recupera un'operazione di database specifica.
spanner.databaseOperations.list Elenca le operazioni di database e di ripristino del 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.delete Eliminare un backup.
spanner.backups.get Ricevi un backup.
spanner.backups.getIamPolicy Recupera il criterio IAM di 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.setIamPolicy Imposta il criterio IAM di un backup.
spanner.backups.update Aggiorna 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.cancel Annullare un'operazione di backup.
spanner.backupOperations.get Recupera un'operazione di backup specifica.
spanner.backupOperations.list Elenca le operazioni 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.delete Elimina una pianificazione del backup.
spanner.backupSchedules.get Ottieni una pianificazione del backup.
spanner.backupSchedules.list Elenca le pianificazioni di backup.
spanner.backupSchedules.update Aggiornare una pianificazione del 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.delete Eliminare una sessione.
spanner.sessions.get Recupera 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 di 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

(roles/spanner.admin)

Has complete access to all Spanner resources in a Google Cloud project. A principal with this role can:

  • Grant and revoke permissions to other principals for all Spanner resources in the project.
  • Allocate and delete chargeable Spanner resources.
  • Issue get/list/modify operations on Cloud Spanner resources.
  • Read from and write to all Cloud Spanner databases in the project.
  • Fetch project metadata.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

cloudkms.keyHandles.*

  • cloudkms.keyHandles.create
  • cloudkms.keyHandles.get
  • cloudkms.keyHandles.list

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

monitoring.timeSeries.*

  • monitoring.timeSeries.create
  • monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.*

  • spanner.backupOperations.cancel
  • spanner.backupOperations.get
  • spanner.backupOperations.list
  • spanner.backupSchedules.create
  • spanner.backupSchedules.delete
  • spanner.backupSchedules.get
  • spanner.backupSchedules.getIamPolicy
  • spanner.backupSchedules.list
  • spanner.backupSchedules.setIamPolicy
  • spanner.backupSchedules.update
  • spanner.backups.copy
  • spanner.backups.create
  • spanner.backups.delete
  • spanner.backups.get
  • spanner.backups.getIamPolicy
  • spanner.backups.list
  • spanner.backups.restoreDatabase
  • spanner.backups.setIamPolicy
  • spanner.backups.update
  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list
  • spanner.databaseRoles.list
  • spanner.databases.adapt
  • spanner.databases.addSplitPoints
  • spanner.databases.beginOrRollbackReadWriteTransaction
  • spanner.databases.beginPartitionedDmlTransaction
  • spanner.databases.beginReadOnlyTransaction
  • spanner.databases.changequorum
  • spanner.databases.create
  • spanner.databases.createBackup
  • 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.useDataBoost
  • spanner.databases.useRoleBasedAccess
  • spanner.databases.write
  • spanner.instanceConfigOperations.cancel
  • spanner.instanceConfigOperations.delete
  • spanner.instanceConfigOperations.get
  • spanner.instanceConfigOperations.list
  • spanner.instanceConfigs.create
  • spanner.instanceConfigs.delete
  • spanner.instanceConfigs.get
  • spanner.instanceConfigs.list
  • spanner.instanceConfigs.update
  • spanner.instanceOperations.cancel
  • spanner.instanceOperations.delete
  • spanner.instanceOperations.get
  • spanner.instanceOperations.list
  • spanner.instancePartitionOperations.cancel
  • spanner.instancePartitionOperations.delete
  • spanner.instancePartitionOperations.get
  • spanner.instancePartitionOperations.list
  • spanner.instancePartitions.create
  • spanner.instancePartitions.delete
  • spanner.instancePartitions.get
  • spanner.instancePartitions.list
  • spanner.instancePartitions.update
  • spanner.instances.create
  • spanner.instances.createTagBinding
  • spanner.instances.delete
  • spanner.instances.deleteTagBinding
  • spanner.instances.get
  • spanner.instances.getIamPolicy
  • spanner.instances.list
  • spanner.instances.listEffectiveTags
  • spanner.instances.listTagBindings
  • spanner.instances.setIamPolicy
  • spanner.instances.update
  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.backupAdmin)

A principal with this role can:

  • Create, view, update, and delete backups.
  • View and manage a backup's allow policy.

This role cannot restore a database from a backup.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.backupOperations.*

  • spanner.backupOperations.cancel
  • spanner.backupOperations.get
  • spanner.backupOperations.list

spanner.backupSchedules.create

spanner.backupSchedules.delete

spanner.backupSchedules.get

spanner.backupSchedules.list

spanner.backupSchedules.update

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.instancePartitions.get

spanner.instancePartitions.list

spanner.instances.createTagBinding

spanner.instances.deleteTagBinding

spanner.instances.get

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

(roles/spanner.backupWriter)

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:

  • Instance
  • Database

spanner.backupOperations.get

spanner.backupOperations.list

spanner.backupSchedules.create

spanner.backupSchedules.get

spanner.backupSchedules.list

spanner.backups.copy

spanner.backups.create

spanner.backups.get

spanner.backups.list

spanner.databases.createBackup

spanner.databases.get

spanner.databases.list

spanner.instancePartitions.get

spanner.instances.get

(roles/spanner.databaseAdmin)

A principal with this role can:

  • Get/list all Spanner instances in the project.
  • Create/list/drop databases in an instance.
  • Grant/revoke access to databases in the project.
  • Read from and write to all Cloud Spanner databases in the project.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

cloudkms.keyHandles.*

  • cloudkms.keyHandles.create
  • cloudkms.keyHandles.get
  • cloudkms.keyHandles.list

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

monitoring.timeSeries.*

  • monitoring.timeSeries.create
  • monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.databaseOperations.*

  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list

spanner.databaseRoles.list

spanner.databases.adapt

spanner.databases.addSplitPoints

spanner.databases.beginOrRollbackReadWriteTransaction

spanner.databases.beginPartitionedDmlTransaction

spanner.databases.beginReadOnlyTransaction

spanner.databases.changequorum

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

spanner.databases.useRoleBasedAccess

spanner.databases.write

spanner.instancePartitions.get

spanner.instancePartitions.list

spanner.instances.createTagBinding

spanner.instances.deleteTagBinding

spanner.instances.get

spanner.instances.getIamPolicy

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.databaseReader)

A principal with this role can:

  • Read from the Spanner database.
  • Execute SQL queries on the database.
  • View schema for the database.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.create

spanner.databases.beginReadOnlyTransaction

spanner.databases.getDdl

spanner.databases.partitionQuery

spanner.databases.partitionRead

spanner.databases.read

spanner.databases.select

spanner.instancePartitions.get

spanner.instances.get

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.databaseReaderWithDataBoost)

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:

  • Instance
  • Database

monitoring.timeSeries.create

spanner.databases.beginReadOnlyTransaction

spanner.databases.getDdl

spanner.databases.partitionQuery

spanner.databases.partitionRead

spanner.databases.read

spanner.databases.select

spanner.databases.useDataBoost

spanner.instancePartitions.get

spanner.instances.get

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.databaseRoleUser)

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:

  • Instance
  • Database

(roles/spanner.databaseUser)

A principal with this role can:

  • Read from and write to the Spanner database.
  • Execute SQL queries on the database, including DML and Partitioned DML.
  • View and update schema for the database.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.create

spanner.databaseOperations.*

  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list

spanner.databases.adapt

spanner.databases.beginOrRollbackReadWriteTransaction

spanner.databases.beginPartitionedDmlTransaction

spanner.databases.beginReadOnlyTransaction

spanner.databases.changequorum

spanner.databases.getDdl

spanner.databases.partitionQuery

spanner.databases.partitionRead

spanner.databases.read

spanner.databases.select

spanner.databases.updateDdl

spanner.databases.write

spanner.instancePartitions.get

spanner.instances.get

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.fineGrainedAccessUser)

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:

  • Instance
  • Database

spanner.databaseRoles.list

spanner.databases.useRoleBasedAccess

(roles/spanner.restoreAdmin)

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:

  • Instance
  • Database

monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.backups.get

spanner.backups.list

spanner.backups.restoreDatabase

spanner.databaseOperations.*

  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list

spanner.databases.create

spanner.databases.get

spanner.databases.list

spanner.instancePartitions.get

spanner.instancePartitions.list

spanner.instances.createTagBinding

spanner.instances.deleteTagBinding

spanner.instances.get

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

(roles/spanner.serviceAgent)

Cloud Spanner API Service Agent

aiplatform.endpoints.get

aiplatform.endpoints.list

aiplatform.endpoints.predict

aiplatform.models.get

aiplatform.models.list

(roles/spanner.viewer)

A principal with this role can:

  • View all Spanner instances (but cannot modify instances).
  • View all Spanner databases (but cannot modify or read from databases).

For example, you can combine this role with the roles/spanner.databaseUser role to grant a user with access to a specific database, but only view access to other instances and databases.

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:

  • Instance
  • Database

monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.databases.list

spanner.instanceConfigs.get

spanner.instanceConfigs.list

spanner.instancePartitions.get

spanner.instancePartitions.list

spanner.instances.get

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

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/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.
roles/viewer Può elencare e recuperare i metadati di schemi e istanze. Può anche leggere ed eseguire query utilizzando SQL su un database.

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
Crea backup spanner.backups.create
spanner.databases.createBackup
Lettura di dati spanner.databases.select
spanner.sessions.create
spanner.sessions.delete
Ripristinare un database spanner.backups.restoreDatabase
spanner.databases.create
Inserire, aggiornare o eliminare dati spanner.databases.beginOrRollbackReadWriteTransaction
spanner.sessions.create
spanner.sessions.delete
spanner.databases.write

Ruoli personalizzati per le Google Cloud attività della console

Per identificare l'elenco delle autorizzazioni necessarie per una determinata attività nella consoleGoogle 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 in una tabella, segui questi passaggi nella Google Cloud console:

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 consoleGoogle Cloud .

Autorizzazioni Azione
spanner.databases.setIamPolicy Aggiungi i principali nella scheda Autorizzazioni della pagina dei dettagli del database
spanner.instances.setIamPolicy Aggiungi entità nella scheda Autorizzazioni della pagina Istanza
spanner.backups.create
spanner.databases.createBackup
spanner.databases.list1
spanner.backupOperations.list1
Crea backup
spanner.backupSchedules.create
spanner.databases.createBackup
Crea una pianificazione dei backup
spanner.databases.create Crea un database
spanner.instancePartitions.list
spanner.instancePartitionOperations.get
spanner.instancePartitions.create
Crea una partizione di istanze
spanner.databaseOperations.get
spanner.databaseOperations.list
spanner.databases.updateDdl
Crea una tabella
Aggiorna lo schema di una tabella
spanner.instanceConfigs.list
spanner.instanceOperations.get
spanner.instances.create
Crea un'istanza
spanner.backups.delete Eliminare un backup
spanner.backupSchedules.delete Eliminare una pianificazione del backup
spanner.databases.drop Eliminare un database
spanner.instancePartitions.delete Eliminare una partizione dell'istanza
spanner.instances.delete Elimina un'istanza
spanner.instancePartitionOperations.get
spanner.instancePartitions.update
Modificare una partizione dell'istanza
spanner.instanceOperations.get
spanner.instances.update
Modifica un'istanza
spanner.databases.beginOrRollbackReadWriteTransaction
spanner.databases.select
spanner.databases.write
spanner.sessions.create
spanner.sessions.delete
Modificare i dati in una tabella
spanner.instanceConfigs.list
spanner.instances.get
spanner.backups.get
spanner.backups.restoreDatabase
spanner.instances.list
spanner.databases.create
Ripristinare un database da un backup
spanner.databases.get
spanner.databases.getDdl
Seleziona un database dall'elenco dei database e visualizza lo schema nella pagina Dettagli database
spanner.instances.get Seleziona un'istanza dall'elenco per visualizzare la pagina Dettagli istanza
spanner.backups.update Aggiornare un backup
spanner.backupSchedules.update Aggiornare una pianificazione del backup
spanner.databases.select
spanner.sessions.create
spanner.sessions.delete
Visualizza i dati nella scheda Dati della pagina dei dettagli del database
Crea ed esegui una query
spanner.backups.list
spanner.backups.get
Visualizza la pagina Backup/Ripristino
monitoring.metricDescriptors.get
monitoring.metricDescriptors.list
monitoring.timeSeries.list
spanner.instances.get
Visualizza i grafici nella scheda Monitor della pagina dei dettagli dell'istanza o della pagina dei dettagli del database
spanner.backupOperations.list Visualizza l'elenco delle operazioni di backup
spanner.databases.list Visualizza l'elenco dei database nella pagina Dettagli istanza
resourcemanager.projects.get
spanner.instances.list
Visualizza l'elenco delle istanze nella pagina Istanze
spanner.databaseOperations.list Visualizza l'elenco delle operazioni di ripristino
spanner.databases.getIamPolicy Visualizza l'elenco nella scheda Autorizzazioni della pagina Dettagli database
spanner.instances.getIamPolicy Visualizza l'elenco nella scheda Autorizzazioni della pagina Instanza
1 Obbligatorio se crei un backup dalla pagina Backup/Ripristino a livello di istanza anziché a livello di database.

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