Visão geral do IAM

O gerenciamento de identidade e acesso (IAM) permite controlar o acesso de usuários e grupos aos recursos do Spanner no projeto, na instância do Spanner e no nível do banco de dados do Spanner. Por exemplo, você pode especificar que um usuário tem controle total de um banco de dados específico em uma instância específica do seu projeto, mas não pode criar, modificar ou excluir instâncias no projeto. O uso do controle de acesso com o IAM permite conceder uma permissão a um usuário ou grupo sem ter que modificar cada instância do Spanner ou permissão de banco de dados individualmente.

Este documento se concentra nas permissões do IAM relevantes para o Spanner e nos papéis do IAM que concedem essas permissões. Para uma descrição detalhada do IAM e dos recursos dele, consulte o guia do desenvolvedor do Identity and Access Management. Consulte especificamente a seção Como gerenciar políticas do IAM.

Permissões

Com as permissões, os usuários podem realizar ações específicas nos recursos do Spanner. Por exemplo, com a permissão spanner.databases.read, um usuário pode ler um banco de dados usando a API de leitura do Spanner. Já spanner.databases.select permite que um usuário execute uma instrução de seleção do SQL em um banco de dados. Não é possível dar permissões diretamente a usuários. Em vez disso, concede a eles papéis predefinidos ou personalizados, com uma ou mais permissões agrupadas.

As tabelas a seguir listam as permissões do IAM associadas ao Spanner.

Configurações da instância

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

Nome da permissão de configuração da instância Descrição
spanner.instanceConfigs.create Crie uma configuração de instância personalizada.
spanner.instanceConfigs.delete Exclua uma configuração de instância personalizada.
spanner.instanceConfigs.get Recebe uma configuração de instância.
spanner.instanceConfigs.list Lista o conjunto de configurações de instância.
spanner.instanceConfigs.update Atualize uma configuração de instância personalizada.

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

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

Nome da permissão de operação de configuração da instância Descrição
spanner.instanceConfigOperations.cancel Cancelar uma operação de configuração de instância.
spanner.instanceConfigOperations.delete Excluir uma operação de configuração de instância.
spanner.instanceConfigOperations.get Recebe uma operação de configuração de instância.
spanner.instanceConfigOperations.list Listar operações de configuração de instâncias.

Instâncias

As permissões a seguir se aplicam às instâncias do Spanner. Para mais informações, consulte as referências de instância das APIs REST e RPC.

Nome da permissão de instância Descrição
spanner.instances.create Criar uma instância.
spanner.instances.delete Exclua uma instância.
spanner.instances.get Recebe a configuração de uma instância específica.
spanner.instances.getIamPolicy Recebe uma política do IAM da instância.
spanner.instances.list Lista instâncias.
spanner.instances.setIamPolicy Define a política do IAM de uma instância.
spanner.instances.update Atualiza uma instância.

Operações de instância

As permissões a seguir se aplicam às operações de instância do Spanner. Para mais informações, consulte as referências de instância das APIs REST e RPC.

Nome da permissão da operação da instância Descrição
spanner.instanceOperations.cancel Cancela uma operação de instância.
spanner.instanceOperations.delete Exclui uma operação de instância.
spanner.instanceOperations.get Recebe uma operação de instância específica.
spanner.instanceOperations.list Lista operações de instâncias.

Partições de instância

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

Nome da permissão de instância Descrição
spanner.instancePartitions.create Crie uma partição de instância.
spanner.instancePartitions.delete Exclua uma partição de instância.
spanner.instancePartitions.get Recebe a configuração de uma partição de instância específica.
spanner.instancePartitions.list Lista partições de instâncias.
spanner.instancePartitions.update Atualize uma partição de instância.

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

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

Nome da permissão da operação de partição da instância Descrição
spanner.instancePartitionOperations.cancel Cancela uma operação de partição de instância.
spanner.instancePartitionOperations.delete Exclua uma operação de partição de instância.
spanner.instancePartitionOperations.get Recebe uma operação de partição de instância específica.
spanner.instancePartitionOperations.list Listar operações de partição de instância.

Bancos de dados

As permissões a seguir se aplicam aos bancos de dados do Spanner. Para mais informações, consulte as referências do banco de dados para as APIs REST e RPC.

Nome da permissão do banco de dados Descrição
spanner.databases.adapt Permite que a API Adapter do Spanner interaja diretamente com o Spanner.
spanner.databases.beginOrRollbackReadWriteTransaction Comece ou reverter uma transação de leitura e gravação em um banco de dados do Spanner.
spanner.databases.beginPartitionedDmlTransaction Executar uma instrução de linguagem de manipulação de dados (DML) particionada de instância. Para mais informações sobre consultas particionadas por instância, consulte Ler dados em paralelo.
spanner.databases.beginReadOnlyTransaction Comece uma transação somente leitura em um banco de dados do Spanner.
spanner.databases.create Cria um banco de dados.
spanner.databases.createBackup Cria um backup a partir do banco de dados. Também requer spanner.backups.create para criar o recurso de backup.
spanner.databases.drop Remove um banco de dados.
spanner.databases.get Recebe os metadados de um banco de dados.
spanner.databases.getDdl Recebe o esquema de um banco de dados.
spanner.databases.getIamPolicy Recebe a política do IAM de um banco de dados.
spanner.databases.list Lista bancos de dados
spanner.databases.read Lê de um banco de dados usando a API de leitura.
spanner.databases.select Executa uma instrução de seleção do SQL em um banco de dados.
spanner.databases.setIamPolicy Defina a política do IAM de um banco de dados.
spanner.databases.update Atualiza os metadados de um banco de dados.
spanner.databases.updateDdl Atualiza o esquema de um banco de dados.
spanner.databases.useDataBoost Use os recursos de computação do Spanner Data Boost para processar consultas particionadas de instância.
spanner.databases.useRoleBasedAccess Use o controle de acesso granular.
spanner.databases.write Grava em um banco de dados.

Papéis de banco de dados

As permissões a seguir se aplicam aos papéis de banco de dados do Spanner. Para mais informações, consulte as referências do banco de dados para as APIs REST e RPC.

Nome da permissão do papel do banco de dados Descrição
spanner.databaseRoles.list Lista papéis de banco de dados.
spanner.databaseRoles.use Use uma função de banco de dados especificada.

Operações de banco de dados

As permissões a seguir se aplicam às operações do banco de dados do Spanner. Para mais informações, consulte as referências do banco de dados para as APIs REST e RPC.

Nome da permissão de operação do banco de dados Descrição
spanner.databaseOperations.cancel Cancela uma operação do banco de dados.
spanner.databaseOperations.get Recebe uma operação de banco de dados específica.
spanner.databaseOperations.list Lista banco de dados e restaura operações de banco de dados.

Backups

As permissões a seguir se aplicam aos backups do Spanner. Para mais informações, consulte as referências de backups das APIs REST e RPC.

Nome da permissão de backup Descrição
spanner.backups.create Criar um backup. Também requer spanner.databases.createBackup no banco de dados de origem.
spanner.backups.delete Exclui um backup
spanner.backups.get Recebe um backup.
spanner.backups.getIamPolicy Recebe a política do IAM de backup.
spanner.backups.list Lista backups
spanner.backups.restoreDatabase Restaura um banco de dados a partir de um backup. Também requer spanner.databases.create para criar o banco de dados restaurado na instância de destino.
spanner.backups.setIamPolicy Define a política do IAM de backup.
spanner.backups.update Atualiza um backup.

Operações de backup

As permissões a seguir se aplicam às operações de backup do Spanner. Para mais informações, consulte as referências do banco de dados para as APIs REST e RPC.

Nome da permissão da operação de backup Descrição
spanner.backupOperations.cancel Cancela uma operação de backup.
spanner.backupOperations.get Recebe uma operação de backup específica.
spanner.backupOperations.list Lista operações de backup.

Programações de backup

As permissões a seguir se aplicam às programações de backup do Spanner. Para mais informações, consulte as referências do banco de dados para as APIs REST e RPC.

Nome da permissão da programação de backup Descrição
spanner.backupSchedules.create Crie uma programação de backup. Também requer spanner.databases.createBackup no banco de dados de origem.
spanner.backupSchedules.delete Excluir uma programação de backup.
spanner.backupSchedules.get Acessar uma programação de backup.
spanner.backupSchedules.list Listar programações de backup.
spanner.backupSchedules.update Atualize uma programação de backup.

Sessões

As permissões a seguir se aplicam às sessões do Spanner. Para mais informações, consulte as referências do banco de dados para as APIs REST e RPC.

Nome da permissão da sessão Descrição
spanner.sessions.create Cria uma sessão.
spanner.sessions.delete Exclui uma sessão.
spanner.sessions.get Recebe uma sessão.
spanner.sessions.list Lista sessões.

Papéis predefinidos

Papel predefinido é um pacote de uma ou mais permissões. Por exemplo, o papel predefinido roles/spanner.databaseUser contém as permissões spanner.databases.read e spanner.databases.write. Há dois tipos de papéis predefinidos para o Spanner:

  • Papéis de pessoa: concedidos a usuários ou grupos, permitem que eles realizem ações nos recursos do projeto.
  • Papéis de máquina: concedidos a contas de serviço, permitem que as máquinas executadas como aquelas contas de serviço realizem ações nos recursos do projeto.

A tabela a seguir lista o controle de acesso com papéis predefinidos do IAM, incluindo uma lista de permissões associadas a cada papel:

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.runGraphAlgorithms
  • 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.editor)

Editor role for Cloud Spanner

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

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

spanner.backups.update

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

spanner.databases.select

spanner.databases.update

spanner.databases.updateDdl

spanner.databases.useDataBoost

spanner.databases.useRoleBasedAccess

spanner.databases.write

spanner.instanceConfigOperations.*

  • spanner.instanceConfigOperations.cancel
  • spanner.instanceConfigOperations.delete
  • spanner.instanceConfigOperations.get
  • spanner.instanceConfigOperations.list

spanner.instanceConfigs.*

  • spanner.instanceConfigs.create
  • spanner.instanceConfigs.delete
  • spanner.instanceConfigs.get
  • spanner.instanceConfigs.list
  • spanner.instanceConfigs.update

spanner.instanceOperations.*

  • spanner.instanceOperations.cancel
  • spanner.instanceOperations.delete
  • spanner.instanceOperations.get
  • spanner.instanceOperations.list

spanner.instancePartitionOperations.*

  • spanner.instancePartitionOperations.cancel
  • spanner.instancePartitionOperations.delete
  • spanner.instancePartitionOperations.get
  • spanner.instancePartitionOperations.list

spanner.instancePartitions.*

  • spanner.instancePartitions.create
  • spanner.instancePartitions.delete
  • spanner.instancePartitions.get
  • spanner.instancePartitions.list
  • spanner.instancePartitions.update

spanner.instances.create

spanner.instances.delete

spanner.instances.get

spanner.instances.getIamPolicy

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

spanner.instances.update

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.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