Visão geral do IAM

O Identity and Access Management (IAM) permite controlar o acesso de usuários e grupos aos recursos do Spanner nos níveis do projeto, da instância e do banco de dados do Spanner. Por exemplo, é possível especificar que um usuário tenha controle total de um banco de dados específico em uma instância específica no projeto, mas não possa 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 precisar modificar cada permissão de instância ou banco de dados do Spanner 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 ver uma descrição detalhada do IAM e dos recursos dele, consulte este Guia do desenvolvedor. Consulte especificamente a seção Como gerenciar políticas do IAM.

Permissões

Com elas, os usuários executam ações específicas nos recursos do Spanner. Por exemplo, a permissão spanner.databases.read permite que um usuário leia um banco de dados usando a API de leitura do Spanner, enquanto spanner.databases.select permite que um usuário execute uma instrução SQL select 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 Criar uma configuração de instância personalizada.
spanner.instanceConfigs.delete Excluir 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 Atualizar uma configuração de instância personalizada.

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

As permissões a seguir se aplicam às operações de configuração 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 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 Receber uma operação de configuração de instância.
spanner.instanceConfigOperations.list Listar operações de configuração de instância.

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 Excluir 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 Criar uma partição de instância.
spanner.instancePartitions.delete Excluir uma partição de instância.
spanner.instancePartitions.get Receber a configuração de uma partição de instância específica.
spanner.instancePartitions.list Listar partições de instância.
spanner.instancePartitions.update Atualizar 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â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 operação da partição da instância Descrição
spanner.instancePartitionOperations.cancel Cancelar uma operação de partição de instância.
spanner.instancePartitionOperations.delete Excluir uma operação de partição de instância.
spanner.instancePartitionOperations.get Receber 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 de 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 Spanner Adapter interaja diretamente com o Spanner.
spanner.databases.beginOrRollbackReadWriteTransaction Inicie 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 de instância, consulte Ler dados em paralelo.
spanner.databases.beginReadOnlyTransaction Inicie 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 Receber 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 de 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 Data Boost do Spanner para processar consultas particionadas de instâncias.
spanner.databases.useRoleBasedAccess Use o controle de acesso refinado.
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 de banco de dados para as APIs REST e RPC.

Nome da permissão do papel do banco de dados Descrição
spanner.databaseRoles.list Listar papéis de banco de dados.
spanner.databaseRoles.use Use um papel de banco de dados especificado.

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 de 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 para as 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 de 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 de banco de dados das APIs REST e RPC.

Nome da permissão da programação de backup Descrição
spanner.backupSchedules.create Criar 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 Receber uma programação de backup.
spanner.backupSchedules.list Listar programações de backup.
spanner.backupSchedules.update Atualizar 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 de banco de dados para as APIs REST e RPC.

Nome da permissão da sessão Descrição
spanner.sessions.create Criar 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, permitindo 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

resourcemanager.projects.get

resourcemanager.projects.list

spanner.backupOperations.get

spanner.backupOperations.list

spanner.backupSchedules.get

spanner.backupSchedules.getIamPolicy

spanner.backupSchedules.list

spanner.backups.get

spanner.backups.getIamPolicy

spanner.backups.list

spanner.databaseOperations.get

spanner.databaseOperations.list

spanner.databaseRoles.list

spanner.databases.beginReadOnlyTransaction

spanner.databases.get

spanner.databases.getDdl

spanner.databases.getIamPolicy

spanner.databases.list

spanner.databases.useDataBoost

spanner.instanceConfigOperations.get

spanner.instanceConfigOperations.list

spanner.instanceConfigs.get

spanner.instanceConfigs.list

spanner.instanceOperations.get

spanner.instanceOperations.list

spanner.instancePartitionOperations.get

spanner.instancePartitionOperations.list

spanner.instancePartitions.get

spanner.instancePartitions.list

spanner.instances.get

spanner.instances.getIamPolicy

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

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

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

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

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

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.graphIntelligenceUser)

Access to Graph Intelligence features.

monitoring.timeSeries.create

spanner.databases.beginReadOnlyTransaction

spanner.databases.get

spanner.databases.getDdl

spanner.databases.partitionQuery

spanner.databases.partitionRead

spanner.databases.read

spanner.databases.runGraphAlgorithms

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

Service agent roles

Service agent roles should only be granted to service agents.

Role Permissions

(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

discoveryengine.rankingConfigs.rank

logging.logEntries.create

run.jobs.run

run.routes.invoke

spanner.databases.beginOrRollbackReadWriteTransaction

spanner.databases.beginReadOnlyTransaction

spanner.databases.partitionQuery

spanner.databases.select

spanner.databases.useDataBoost

spanner.databases.write

spanner.sessions.create

storage.buckets.create

storage.buckets.get

storage.buckets.list

storage.objects.create

storage.objects.delete

storage.objects.get

storage.objects.list

Papéis básicos

Papéis básicos são aqueles no nível do projeto que antecedem o IAM. Consulte Papéis básicos para mais detalhes.

Embora o Spanner seja compatível com os papéis básicos a seguir, use um dos papéis predefinidos mostrados anteriormente sempre que possível. Os papéis básicos incluem permissões amplas que se aplicam a todos os seus recursos do Google Cloud . Por outro lado, os papéis predefinidos do Spanner incluem permissões detalhadas que se aplicam apenas ao Spanner.

Papel básico Descrição
roles/editor Pode fazer tudo que um roles/viewer faz. Também pode criar instâncias e bancos de dados e gravar dados em um banco de dados.
roles/owner Pode fazer tudo que um roles/editor faz. Também pode modificar o acesso a bancos de dados e instâncias.
roles/viewer Pode listar e receber os metadados de esquemas e instâncias. Também pode ler e consultar usando SQL em um banco de dados.

Papéis personalizados

Se os papéis predefinidos do Spanner não atenderem aos requisitos de negócios, você poderá definir as próprias funções personalizadas com as permissões que especificar.

Antes de criar uma função personalizada, identifique as tarefas que você precisa realizar. Em seguida, identifique as permissões necessárias para cada tarefa e adicione-as à função personalizada.

Papéis personalizados para tarefas da conta de serviço

Para a maioria das tarefas, é evidente quais permissões você precisa adicionar ao papel personalizado. Por exemplo, se você quer que sua conta de serviço crie um banco de dados, adicione a permissão spanner.databases.create ao papel personalizado.

No entanto, ao ler ou gravar dados em uma tabela do Spanner, é necessário adicionar várias permissões diferentes à sua função personalizada. A tabela a seguir mostra quais permissões são obrigatórias para ler e gravar dados.

Tarefa da conta de serviço Permissões necessárias
Criar backup spanner.backups.create
spanner.databases.createBackup
Ler dados spanner.databases.select
spanner.sessions.create
spanner.sessions.delete
Restaurar um banco de dados spanner.backups.restoreDatabase
spanner.databases.create
Inserir, atualizar ou excluir dados spanner.databases.beginOrRollbackReadWriteTransaction
spanner.sessions.create
spanner.sessions.delete
spanner.databases.write

Funções personalizadas para tarefas do console do Google Cloud

Para identificar a lista de permissões necessárias para uma determinada tarefa no console doGoogle Cloud , determine o fluxo de trabalho dessa tarefa e compile as permissões para esse fluxo de trabalho. Por exemplo, para visualizar os dados em uma tabela, siga estas etapas no console do Google Cloud :

Etapa Permissões
1. Acessar o projeto resourcemanager.projects.get
2. Ver a lista de instâncias spanner.instances.list
3. Selecionar uma instância spanner.instances.get
4. Ver a lista de bancos de dados spanner.databases.list
5. Selecionar um banco de dados e uma tabela spanner.databases.getDdl
6. Ver dados em uma tabela spanner.databases.select, spanner.sessions.create, spanner.sessions.delete

Neste exemplo, são necessárias estas permissõ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 a seguir lista as permissões necessárias para ações no console doGoogle Cloud .

Permissões Ação
spanner.databases.setIamPolicy Adicionar membros na guia "Permissões" da página "Detalhes do banco de dados"
spanner.instances.setIamPolicy Adicionar membros na guia "Permissões" da página "Instâncias"
spanner.backups.create
spanner.databases.createBackup
spanner.databases.list1
spanner.backupOperations.list1
Criar backup
spanner.backupSchedules.create
spanner.databases.createBackup
Criar uma programação de backup
spanner.databases.create Criar um banco de dados
spanner.instancePartitions.list
spanner.instancePartitionOperations.get
spanner.instancePartitions.create
Criar uma partição de instância
spanner.databaseOperations.get
spanner.databaseOperations.list
spanner.databases.updateDdl
Criar uma tabela
Atualizar um esquema de tabela
spanner.instanceConfigs.list
spanner.instanceOperations.get
spanner.instances.create
Criar uma instância
spanner.backups.delete Excluir um backup
spanner.backupSchedules.delete Excluir uma programação de backup
spanner.databases.drop Excluir um banco de dados
spanner.instancePartitions.delete Excluir uma partição de instância
spanner.instances.delete Excluir uma instância
spanner.instancePartitionOperations.get
spanner.instancePartitions.update
Modificar uma partição de instância
spanner.instanceOperations.get
spanner.instances.update
Modificar uma instância
spanner.databases.beginOrRollbackReadWriteTransaction
spanner.databases.select
spanner.databases.write
spanner.sessions.create
spanner.sessions.delete
Modificar dados em uma tabela
spanner.instanceConfigs.list
spanner.instances.get
spanner.backups.get
spanner.backups.restoreDatabase
spanner.instances.list
spanner.databases.create
Restaurar um banco de dados a partir de um backup
spanner.databases.get
spanner.databases.getDdl
Selecionar um banco de dados na lista de bancos de dados e ver o esquema na página "Detalhes do banco de dados"
spanner.instances.get Selecionar uma instância na lista correspondente para visualizar a página "Detalhes da instância"
spanner.backups.update Atualizar um backup
spanner.backupSchedules.update Atualizar uma programação de backup
spanner.databases.select
spanner.sessions.create
spanner.sessions.delete
Visualizar dados na guia "Dados" da página de detalhes do banco de dados
Criar e executar uma consulta
spanner.backups.list
spanner.backups.get
Acessar a página de backup/restauração
monitoring.metricDescriptors.get
monitoring.metricDescriptors.list
monitoring.timeSeries.list
spanner.instances.get
Ver os gráficos na guia "Monitor" da página "Detalhes da instância" ou na página "Detalhes do banco de dados"
spanner.backupOperations.list Ver a lista de operações de backup
spanner.databases.list Ver a lista de bancos de dados na página "Detalhes da instância"
resourcemanager.projects.get
spanner.instances.list
Ver a lista de instâncias na página "Instâncias"
spanner.databaseOperations.list Ver a lista de operações de restauração
spanner.databases.getIamPolicy Ver a lista na guia "Permissões" da página "Detalhes do banco de dados"
spanner.instances.getIamPolicy Ver a lista na guia "Permissões" da página "Instâncias"
1 Obrigatório se você estiver criando um backup na página Backup/Restaurar no nível da instância, em vez do nível do banco de dados.

Gerenciamento de políticas do IAM do Spanner

É possível receber, definir e testar políticas do IAM usando as APIs REST ou RPC nos recursos de instância, banco de dados e backup do Spanner.

Instâncias

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

Bancos de dados

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

Backups

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

A seguir