Vista geral da IAM

A gestão de identidade e de acesso (IAM) permite-lhe controlar o acesso de utilizadores e grupos aos recursos do Spanner ao nível do projeto, da instância do Spanner e da base de dados do Spanner. Por exemplo, pode especificar que um utilizador tem controlo total de uma base de dados específica numa instância específica no seu projeto, mas não pode criar, modificar nem eliminar instâncias no seu projeto. A utilização do controlo de acesso com o IAM permite-lhe conceder uma autorização a um utilizador ou a um grupo sem ter de modificar individualmente cada autorização da base de dados ou da instância do Spanner.

Este documento centra-se nas autorizações do IAM relevantes para o Spanner e nas funções do IAM que concedem essas autorizações. Para uma descrição detalhada do IAM e das respetivas funcionalidades, consulte o guia do programador Identity and Access Management. Em particular, consulte a secção Gerir políticas de IAM.

Autorizações

As autorizações permitem que os utilizadores realizem ações específicas em recursos do Spanner. Por exemplo, a autorização spanner.databases.read permite que um utilizador leia a partir de uma base de dados através da API de leitura do Spanner, enquanto a autorização spanner.databases.select permite que um utilizador execute uma declaração SQL select numa base de dados. Não concede autorizações diretamente aos utilizadores. Em alternativa, atribui-lhes funções predefinidas ou funções personalizadas, que têm uma ou mais autorizações incluídas.

As tabelas seguintes indicam as autorizações de IAM associadas ao Spanner.

Configurações da instância

As seguintes autorizações aplicam-se às configurações da instância do Spanner. Para mais informações, consulte as referências de configuração de instâncias das APIs REST e RPC.

Nome da autorização de configuração da instância Descrição
spanner.instanceConfigs.create Crie uma configuração de instância personalizada.
spanner.instanceConfigs.delete Elimine uma configuração de instância personalizada.
spanner.instanceConfigs.get Obtenha uma configuração de instância.
spanner.instanceConfigs.list Apresente a lista do conjunto de configurações de instâncias.
spanner.instanceConfigs.update Atualize uma configuração de instância personalizada.

Operações de configuração da instância

As seguintes autorizações aplicam-se às operações de configuração da instância do Spanner. Para mais informações, consulte as referências de instâncias para as APIs REST e RPC.

Nome da autorização da operação de configuração da instância Descrição
spanner.instanceConfigOperations.cancel Cancele uma operação de configuração de instância.
spanner.instanceConfigOperations.delete Elimine uma operação de configuração de instância.
spanner.instanceConfigOperations.get Obtenha uma operação de configuração de instância.
spanner.instanceConfigOperations.list Apresentar operações de configuração de instâncias.

Instâncias

As seguintes autorizações aplicam-se a instâncias do Spanner. Para mais informações, consulte as referências de instâncias para as APIs REST e RPC.

Nome da autorização da instância Descrição
spanner.instances.create Crie uma instância.
spanner.instances.delete Elimine uma instância.
spanner.instances.get Obter a configuração de uma instância específica.
spanner.instances.getIamPolicy Obtenha a Política IAM de uma instância.
spanner.instances.list Apresentar instâncias.
spanner.instances.setIamPolicy Definir a Política IAM de uma instância.
spanner.instances.update Atualize uma instância.

Operações da instância

As seguintes autorizações aplicam-se às operações de instâncias do Spanner. Para mais informações, consulte as referências de instâncias para as APIs REST e RPC.

Nome da autorização de operação da instância Descrição
spanner.instanceOperations.cancel Cancele uma operação de instância.
spanner.instanceOperations.delete Eliminar uma operação de instância.
spanner.instanceOperations.get Obtenha uma operação de instância específica.
spanner.instanceOperations.list Apresentar operações de instâncias.

Partições de instâncias

As seguintes autorizações aplicam-se às partições de instâncias do Spanner. Para mais informações, consulte as referências de partição de instâncias para as APIs REST e RPC.

Nome da autorização da instância Descrição
spanner.instancePartitions.create Crie uma partição de instância.
spanner.instancePartitions.delete Elimine uma partição de instância.
spanner.instancePartitions.get Obtenha a configuração de uma partição de instância específica.
spanner.instancePartitions.list Apresentar partições de instâncias.
spanner.instancePartitions.update Atualize uma partição de instância.

Operações de partição de instâncias

As seguintes autorizações aplicam-se às operações de partição de instâncias do Spanner. Para mais informações, consulte as referências de partição de instâncias para as APIs REST e RPC.

Nome da autorização da operação de partição da instância Descrição
spanner.instancePartitionOperations.cancel Cancele uma operação de partição de instância.
spanner.instancePartitionOperations.delete Elimine uma operação de partição de instância.
spanner.instancePartitionOperations.get Obtenha uma operação de partição de instância específica.
spanner.instancePartitionOperations.list Apresente as operações de partição de instâncias.

Bases de dados

As seguintes autorizações aplicam-se às bases de dados do Spanner. Para mais informações, consulte as referências da base de dados para as APIs REST e RPC.

Nome da autorização da base de dados Descrição
spanner.databases.adapt Permite que a API Spanner Adapter interaja diretamente com o Spanner.
spanner.databases.beginOrRollbackReadWriteTransaction Inicie ou reverta uma transação de leitura/escrita numa base de dados do Spanner.
spanner.databases.beginPartitionedDmlTransaction Executar uma instrução de linguagem de manipulação de dados (DML) particionada por instância. Para mais informações sobre consultas particionadas por instâncias, consulte o artigo Leia dados em paralelo.
spanner.databases.beginReadOnlyTransaction Começar uma transação só de leitura numa base de dados do Spanner.
spanner.databases.create Crie uma base de dados.
spanner.databases.createBackup Crie uma cópia de segurança a partir da base de dados. Também requer que spanner.backups.create crie o recurso de cópia de segurança.
spanner.databases.drop Eliminar uma base de dados.
spanner.databases.get Obtenha os metadados de uma base de dados.
spanner.databases.getDdl Obtenha o esquema de uma base de dados.
spanner.databases.getIamPolicy Obtenha a Política IAM de uma base de dados.
spanner.databases.list Listar bases de dados.
spanner.databases.read Ler a partir de uma base de dados através da API de leitura.
spanner.databases.select Executar uma declaração SQL select numa base de dados.
spanner.databases.setIamPolicy Definir a Política IAM de uma base de dados.
spanner.databases.update Atualize os metadados de uma base de dados.
spanner.databases.updateDdl Atualizar o esquema de uma base de dados.
spanner.databases.useDataBoost Use os recursos de computação do Spanner Data Boost para processar consultas particionadas por instâncias.
spanner.databases.useRoleBasedAccess Use o controlo de acesso detalhado.
spanner.databases.write Escrever numa base de dados.

Funções da base de dados

As seguintes autorizações aplicam-se às funções da base de dados do Spanner. Para mais informações, consulte as referências da base de dados para as APIs REST e RPC.

Nome da autorização da função da base de dados Descrição
spanner.databaseRoles.list Apresentar funções da base de dados.
spanner.databaseRoles.use Usar uma função de base de dados especificada.

Operações de base de dados

As seguintes autorizações aplicam-se às operações da base de dados do Spanner. Para mais informações, consulte as referências da base de dados para as APIs REST e RPC.

Nome da autorização da operação da base de dados Descrição
spanner.databaseOperations.cancel Cancelar uma operação de base de dados.
spanner.databaseOperations.get Obtenha uma operação de base de dados específica.
spanner.databaseOperations.list Apresentar operações de base de dados e restaurar base de dados.

Cópias de segurança

As seguintes autorizações aplicam-se às cópias de segurança do Spanner. Para mais informações, consulte as referências de cópias de segurança para as APIs REST e RPC.

Nome da autorização de cópia de segurança Descrição
spanner.backups.create Crie uma cópia de segurança. Também requer spanner.databases.createBackup na base de dados de origem.
spanner.backups.delete Elimine uma cópia de segurança.
spanner.backups.get Faça uma cópia de segurança.
spanner.backups.getIamPolicy Obtenha a Política IAM de uma cópia de segurança.
spanner.backups.list Listar cópias de segurança.
spanner.backups.restoreDatabase Restaure a base de dados a partir de uma cópia de segurança. Também requer spanner.databases.create para criar a base de dados restaurada na instância de destino.
spanner.backups.setIamPolicy Defina a Política IAM de uma cópia de segurança.
spanner.backups.update Atualize uma cópia de segurança.

Operações de cópia de segurança

As seguintes autorizações aplicam-se às operações de cópia de segurança do Spanner. Para mais informações, consulte as referências da base de dados para as APIs REST e RPC.

Nome da autorização da operação de cópia de segurança Descrição
spanner.backupOperations.cancel Cancele uma operação de cópia de segurança.
spanner.backupOperations.get Obtenha uma operação de cópia de segurança específica.
spanner.backupOperations.list Apresente as operações de cópia de segurança.

Agendamentos de cópias de segurança

As seguintes autorizações aplicam-se às agendas de cópias de segurança do Spanner. Para mais informações, consulte as referências da base de dados para as APIs REST e RPC.

Nome da autorização do horário de cópia de segurança Descrição
spanner.backupSchedules.create Crie um agendamento de cópias de segurança. Também requer spanner.databases.createBackup na base de dados de origem.
spanner.backupSchedules.delete Elimine um agendamento de cópia de segurança.
spanner.backupSchedules.get Obter um horário de cópia de segurança.
spanner.backupSchedules.list Listar agendamentos de cópias de segurança.
spanner.backupSchedules.update Atualize um agendamento de cópias de segurança.

Sessões

As seguintes autorizações aplicam-se às sessões do Spanner. Para mais informações, consulte as referências da base de dados para as APIs REST e RPC.

Nome da autorização da sessão Descrição
spanner.sessions.create Crie uma sessão.
spanner.sessions.delete Elimine uma sessão.
spanner.sessions.get Receba uma sessão.
spanner.sessions.list Listar sessões.

Funções predefinidas

Uma função predefinida é um conjunto de uma ou mais autorizações. Por exemplo, a função predefinida roles/spanner.databaseUser contém as autorizações spanner.databases.read e spanner.databases.write. Existem dois tipos de funções predefinidas para o Spanner:

  • Funções de pessoa: concedidas a utilizadores ou grupos, o que lhes permite realizar ações nos recursos do seu projeto.
  • Funções de máquinas: concedidas a contas de serviço, o que permite que as máquinas executadas como essas contas de serviço realizem ações nos recursos do seu projeto.

A tabela seguinte apresenta o controlo de acesso com funções predefinidas da IAM, incluindo uma lista das autorizações associadas a cada função:

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

compute.disks.create

compute.disks.createTagBinding

compute.disks.use

compute.instances.create

compute.instances.createTagBinding

compute.instances.delete

compute.instances.get

compute.instances.setLabels

compute.instances.setMetadata

compute.instances.setServiceAccount

compute.networks.create

compute.networks.use

compute.networks.useExternalIp

compute.subnetworks.create

compute.subnetworks.use

compute.subnetworks.useExternalIp

logging.logEntries.create

spanner.databases.beginReadOnlyTransaction

spanner.databases.partitionQuery

spanner.databases.select

spanner.databases.useDataBoost

spanner.sessions.create

storage.buckets.create

storage.buckets.get

storage.buckets.list

storage.objects.create

storage.objects.delete

storage.objects.get

storage.objects.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

Funções básicas

As funções básicas são funções ao nível do projeto anteriores à IAM. Consulte os papéis básicos para ver detalhes adicionais.

Embora o Spanner suporte as seguintes funções básicas, deve usar uma das funções predefinidas apresentadas anteriormente sempre que possível. As funções básicas incluem autorizações amplas que se aplicam a todos os seus recursos. Em contrapartida, as funções predefinidas do Spanner incluem autorizações detalhadas que se aplicam apenas ao Spanner. Google Cloud

Função básica Descrição
roles/editor Pode fazer tudo o que um roles/viewer pode fazer. Também pode criar instâncias e bases de dados, e escrever dados numa base de dados.
roles/owner Pode fazer tudo o que um roles/editor pode fazer. Também pode modificar o acesso a bases de dados e instâncias.
roles/viewer Pode apresentar uma lista e obter os metadados de esquemas e instâncias. Também pode ler e consultar através de SQL numa base de dados.

Funções personalizadas

Se as funções predefinidas para o Spanner não satisfizerem os seus requisitos empresariais, pode definir as suas próprias funções personalizadas com as autorizações que especificar.

Antes de criar uma função personalizada, tem de identificar as tarefas que tem de realizar. Em seguida, pode identificar as autorizações necessárias para cada tarefa e adicionar estas autorizações à função personalizada.

Funções personalizadas para tarefas de contas de serviço

Para a maioria das tarefas, é óbvio que autorizações tem de adicionar à sua função personalizada. Por exemplo, se quiser que a sua conta de serviço possa criar uma base de dados, adicione a autorização spanner.databases.create à sua função personalizada.

No entanto, quando está a ler ou escrever dados numa tabela do Spanner, tem de adicionar várias autorizações diferentes à sua função personalizada. A tabela seguinte mostra as autorizações necessárias para ler e escrever dados.

Tarefa da conta de serviço Autorizações necessárias
Criar uma cópia de segurança spanner.backups.create
spanner.databases.createBackup
Ler dados spanner.databases.select
spanner.sessions.create
spanner.sessions.delete
Restaure uma base de dados spanner.backups.restoreDatabase
spanner.databases.create
Inserir, atualizar ou eliminar dados spanner.databases.beginOrRollbackReadWriteTransaction
spanner.sessions.create
spanner.sessions.delete
spanner.databases.write

Funções personalizadas para Google Cloud tarefas da consola

Para identificar a lista de autorizações de que precisa para uma determinada tarefa na Google Cloud consola, determine o fluxo de trabalho dessa tarefa e compile as autorizações para esse fluxo de trabalho. Por exemplo, para ver os dados numa tabela, siga estes passos na Google Cloud consola:

Passo Autorizações
1. Aceda ao projeto resourcemanager.projects.get
2. Ver a lista de instâncias spanner.instances.list
3. Selecione uma instância spanner.instances.get
4. Veja a lista de bases de dados spanner.databases.list
5. Selecione uma base de dados e uma tabela spanner.databases.getDdl
6. Veja os dados numa tabela spanner.databases.select, spanner.sessions.create, spanner.sessions.delete

Neste exemplo, precisa destas autorizações:

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

A tabela seguinte lista as autorizações necessárias para ações na Google Cloud consola.

Autorizações Ação
spanner.databases.setIamPolicy Adicione responsáveis no separador Autorizações da página de detalhes da base de dados
spanner.instances.setIamPolicy Adicione responsáveis no separador Autorizações da página Instância
spanner.backups.create
spanner.databases.createBackup
spanner.databases.list1
spanner.backupOperations.list1
Criar uma cópia de segurança
spanner.backupSchedules.create
spanner.databases.createBackup
Crie um horário de cópia de segurança
spanner.databases.create Crie uma base de dados
spanner.instancePartitions.list
spanner.instancePartitionOperations.get
spanner.instancePartitions.create
Crie uma partição de instância
spanner.databaseOperations.get
spanner.databaseOperations.list
spanner.databases.updateDdl
Crie uma tabela
Atualize um esquema de tabela
spanner.instanceConfigs.list
spanner.instanceOperations.get
spanner.instances.create
Crie uma instância
spanner.backups.delete Elimine uma cópia de segurança
spanner.backupSchedules.delete Elimine um agendamento de cópia de segurança
spanner.databases.drop Elimine uma base de dados
spanner.instancePartitions.delete Elimine uma partição de instância
spanner.instances.delete Elimine uma instância
spanner.instancePartitionOperations.get
spanner.instancePartitions.update
Modifique uma partição de instância
spanner.instanceOperations.get
spanner.instances.update
Modifique uma instância
spanner.databases.beginOrRollbackReadWriteTransaction
spanner.databases.select
spanner.databases.write
spanner.sessions.create
spanner.sessions.delete
Modifique dados numa tabela
spanner.instanceConfigs.list
spanner.instances.get
spanner.backups.get
spanner.backups.restoreDatabase
spanner.instances.list
spanner.databases.create
Restaure uma base de dados a partir de uma cópia de segurança
spanner.databases.get
spanner.databases.getDdl
Selecione uma base de dados na lista de bases de dados e veja o esquema na página Detalhes da base de dados
spanner.instances.get Selecione uma instância na lista de instâncias para ver a página Detalhes da instância
spanner.backups.update Atualize uma cópia de segurança
spanner.backupSchedules.update Atualize uma programação de cópias de segurança
spanner.databases.select
spanner.sessions.create
spanner.sessions.delete
Veja os dados no separador Dados da página de detalhes da base de dados
Crie e execute uma consulta
spanner.backups.list
spanner.backups.get
Veja a página Cópia de segurança/restauro
monitoring.metricDescriptors.get
monitoring.metricDescriptors.list
monitoring.timeSeries.list
spanner.instances.get
Veja os gráficos no separador Monitorizar na página de detalhes da instância ou na página de detalhes da base de dados
spanner.backupOperations.list Veja a lista de operações de cópia de segurança
spanner.databases.list Veja a lista de bases de dados na página Detalhes da instância
resourcemanager.projects.get
spanner.instances.list
Veja a lista de instâncias na página Instâncias
spanner.databaseOperations.list Veja a lista de operações de restauro
spanner.databases.getIamPolicy Veja a lista no separador Autorizações da página de detalhes da base de dados
spanner.instances.getIamPolicy Veja a lista no separador Autorizações da página Instância
1 Obrigatório se estiver a criar uma cópia de segurança a partir da página Cópia de segurança/restauro ao nível da instância em vez do nível da base de dados.

Gestão de políticas IAM do Spanner

Pode obter, definir e testar políticas IAM através das APIs REST ou RPC em recursos de instâncias, bases de dados e cópias de segurança do Spanner.

Instâncias

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

Bases de dados

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

Cópias de segurança

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

O que se segue?