Controle de acesso para o Cloud Spanner

Visão geral

O Gerenciamento de identidade e acesso do Google Cloud (IAM, na sigla em inglês) permite que você controle o acesso dos usuários e grupos aos recursos do Cloud Spanner nos projetos, nas instâncias e nos bancos de dados desse serviço. Por exemplo, você pode especificar que um usuário tenha controle total de um banco de dados específico em uma instância do seu projeto, mas não possa criar, modificar ou excluir instâncias no projeto. O uso do IAM do Cloud Spanner permite conceder uma permissão a um usuário ou grupo sem ter que modificar cada instância do Cloud Spanner ou permissão de banco de dados individualmente.

Este documento se concentra nas permissões do IAM relevantes ao Cloud 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 Gerenciamento de identidade e acesso do Google Cloud. Consulte especificamente a seção Como gerenciar políticas do IAM.

Permissões

As permissões permitem que os usuários desempenhem ações específicas nos recursos do Google Spanner. Por exemplo, a permissão spanner.databases.read autoriza um usuário a ler em um banco de dados usando a API de leitura do Cloud Spanner, enquanto spanner.databases.select permite que um usuário execute uma instrução de seleção do SQL em um banco de dados. Você não dá 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 Cloud Spanner:

Configurações da instância

As permissões a seguir se aplicam às configurações de instância do Cloud Spanner. Consulte a referência de configuração da instância: REST, RPC.

Nome da permissão de configuração da instância Descrição
spanner.instanceConfigs.list Lista o conjunto de configurações de instância.
spanner.instanceConfigs.get Recebe uma configuração de instância.

Instâncias

As permissões a seguir se aplicam às instâncias do Cloud Spanner. Consulte a referência da instância: REST, RPC.

Nome da permissão de instância Descrição
spanner.instances.create Cria uma instância.
spanner.instances.list Lista instâncias.
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.update Atualiza uma instância.
spanner.instances.setIamPolicy Define a política do IAM de uma instância.
spanner.instances.delete Exclui uma instância.

Operações de instância

As permissões a seguir se aplicam às operações da instância do Cloud Spanner. Consulte a referência da instância: REST, RPC.

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

Bancos de dados

As permissões a seguir se aplicam aos bancos de dados do Cloud Spanner. Consulte a referência do banco de dados: REST, RPC.

Nome da permissão do banco de dados Descrição
spanner.databases.beginPartitionedDmlTransaction Executa uma declaração de linguagem de manipulação de dados (DML, na sigla em inglês) particionada.
spanner.databases.create Cria um banco de dados.
spanner.databases.list Lista bancos 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.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.setIamPolicy Define a política do IAM de um banco de dados.
spanner.databases.beginReadOnlyTransaction Começa uma transação somente leitura em um banco de dados do Cloud Spanner.
spanner.databases.beginOrRollbackReadWriteTransaction Começa ou reverte uma transação de leitura e gravação em um banco de dados do Cloud Spanner.
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.write Grava em um banco de dados.
spanner.databases.drop Remove um banco de dados.

Operações de banco de dados

As permissões a seguir se aplicam às operações do banco de dados do Cloud Spanner. Consulte a referência do banco de dados: REST, RPC.

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

Sessões

As permissões a seguir se aplicam às sessões do Cloud Spanner. Consulte a referência do banco de dados: REST, RPC.

Nome da permissão da sessão Descrição
spanner.sessions.create Cria uma sessão.
spanner.sessions.get Recebe uma sessão.
spanner.sessions.delete Exclui 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.database.write. Existem dois tipos de papéis predefinidos do Cloud 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 seguinte tabela lista os papéis predefinidos do IAM no Cloud Spanner, inclusive uma lista das permissões associadas a cada papel:

Papel Permissões Descrição
roles/spanner.admin

(Papel de pessoa)
resourcemanager.projects.get
spanner.databases.*
spanner.databaseOperations.*
spanner.instances.*
spanner.instanceConfigs.*
spanner.instanceOperations.*
spanner.sessions.*
Recomendado para conceder em nível de projeto do Google Cloud. Tem acesso completo a todos os recursos do Cloud Spanner em um projeto do Google Cloud. Um administrador com este papel pode:
  • conceder e revogar as permissões a outros administradores para todos os recursos do Cloud Spanner no projeto;
  • alocar e excluir recursos que podem ser cobrados do Cloud Spanner;
  • emitir operações get/list/modify em recursos do Cloud Spanner;
  • realizar operações de leitura e gravação em todos os bancos de dados do Cloud Spanner no projeto;
  • pesquisar metadados do projeto.
roles/spanner.databaseAdmin

(Papel de pessoa)
resourcemanager.projects.get
spanner.databases.*
spanner.databaseOperations.*
spanner.instances.list
spanner.instances.get
spanner.instances.getIamPolicy
spanner.sessions.*
Recomendado para conceder em nível de projeto do Google Cloud. Um administrador com este papel pode:
  • receber/listar todas as instâncias do Cloud Spanner no projeto;
  • criar/listar/remover os bancos de dados na instância em que é concedido;
  • conceder/revogar o acesso a bancos de dados no projeto;
  • realizar operações de leitura e gravação em todos os bancos de dados do Cloud Spanner no projeto;
roles/spanner.databaseReader

(Papel de máquina)
spanner.databases.beginReadOnlyTransaction
spanner.databases.getDdl
spanner.databases.read
spanner.databases.select
spanner.sessions.create
spanner.sessions.delete
spanner.sessions.get
Recomendado para conceder em nível de banco de dados. Um administrador com este papel pode:
  • ler do banco de dados do Cloud Spanner;
  • executar consultas SQL no banco de dados;
  • ver o esquema do banco de dados.
roles/spanner.databaseUser

(Papel de máquina)
spanner.databases.beginOrRollbackReadWriteTransaction
spanner.databases.beginPartitionedDmlTransaction
spanner.databases.beginReadOnlyTransaction
spanner.databases.getDdl
spanner.databases.read
spanner.databases.select
spanner.databases.updateDdl
spanner.databases.write
spanner.sessions.create
spanner.sessions.delete
spanner.sessions.get
Recomendado para conceder em nível de banco de dados. Um administrador com este papel pode:
  • realizar operações de leitura e gravação no banco de dados do Cloud Spanner;
  • executar consultas SQL no banco de dados, incluindo DML (particionada ou não);
  • ver e atualizar o esquema do banco de dados.
roles/spanner.viewer

(Papel de pessoa)
resourcemanager.projects.get
spanner.databases.list
spanner.instances.get
spanner.instances.list
Recomendado para conceder em nível de projeto do Google Cloud. Um administrador com este papel pode:
  • ver (mas não modificar) todas as instâncias do Cloud Spanner;
  • ver (mas não modificar nem ler) todos os bancos de dados do Cloud Spanner.
Por exemplo, você pode combinar esse papel com o papel roles/spanner.databaseUser para conceder a um usuário o acesso a um banco de dados específico, mas permitir que ele apenas veja outras instâncias e bancos de dados.
Esse papel é necessário no nível de projeto do Google Cloud para usuários que interagem com os recursos do Cloud Spanner no Console do Google Cloud Platform.

Papéis primários

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

O Cloud Spanner aceita os papéis primários a seguir, mas você precisa usar um dos papéis predefinidos mostrados acima sempre que possível. Os papéis primários incluem permissões amplas que se aplicam a todos os recursos do Google Cloud Platform. Por outro lado, os papéis predefinidos do Cloud Spanner incluem permissões refinadas que se aplicam apenas ao Cloud Spanner.

Papel primário Descrição
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.
roles/writer Pode fazer tudo o que um roles/viewer pode fazer. Também pode criar instâncias e bancos de dados e gravar informações em um banco de dados.
roles/owner Pode fazer tudo o que um roles/writer pode fazer. Também pode modificar o acesso a bancos de dados e instâncias.

Papéis personalizados

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

Antes de criar um papel personalizado, identifique as tarefas que precisam ser executadas. Em seguida, identifique as permissões necessárias para cada tarefa e adicione-as ao papel personalizado.

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ê quiser que a conta de serviço possa criar 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 Cloud Spanner, você precisa adicionar várias permissões diferentes ao papel personalizado. 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 obrigatórias
Ler dados
  • spanner.databases.select
  • spanner.sessions.create
  • spanner.sessions.delete
Inserir, atualizar ou excluir dados
  • spanner.databases.beginOrRollbackReadWriteTransaction
  • spanner.databases.write
  • spanner.sessions.create
  • spanner.sessions.delete

Papéis personalizados para tarefas do Console do GCP

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

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.get, spanner.databases.getDdl
6. Ver dados em uma tabela spanner.databases.select, spanner.sessions.create, spanner.sessions.delete

Neste exemplo, você precisa destas permissões:

  • resourcemanager.projects.get
  • spanner.databases.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 do GCP.

Ação Permissões
Ver a lista de instâncias na página "Instâncias"
  • resourcemanager.projects.get
  • spanner.instances.list
Ver a lista na guia "Permissões" da página "Instâncias"

spanner.instances.getIamPolicy

Adicionar membros na guia "Permissões" da página "Instâncias"

spanner.instances.setIamPolicy

Selecionar uma instância na lista correspondente para visualizar a página "Detalhes da instância"

spanner.instances.get

Criar uma instância
  • spanner.instanceConfigs.list
  • spanner.instanceOperations.get
  • spanner.instances.create
Excluir uma instância

spanner.instances.delete

Modificar uma instância
  • spanner.instanceOperations.get
  • spanner.instances.update
Ver os gráficos na guia "Monitor" da página "Detalhes da instância" ou na página "Detalhes do banco de dados"
  • monitoring.metricDescriptors.get
  • monitoring.metricDescriptors.list
  • monitoring.timeSeries.list
  • spanner.instances.get
Ver a lista de bancos de dados na página "Detalhes da instância"
  • spanner.databases.list
Ver a lista na guia "Permissões" da página "Detalhes do banco de dados"

spanner.databases.getIamPolicy

Adicionar membros na guia "Permissões" da página "Detalhes do banco de dados"

spanner.databases.setIamPolicy

Selecionar um banco de dados na lista de bancos de dados e ver o esquema na página "Detalhes do banco de dados"
  • spanner.databases.get
  • spanner.databases.getDdl
Criar um banco de dados

spanner.databases.create

Excluir um banco de dados

spanner.databases.drop

Criar uma tabela

Atualizar um esquema de tabela

  • spanner.databaseOperations.get
  • spanner.databaseOperations.list
  • spanner.databases.updateDdl

Visualizar dados na guia "Dados" da página "Detalhes do banco de dados"

Criar e executar uma consulta

  • spanner.databases.select
  • spanner.sessions.create
  • spanner.sessions.delete
Modificar dados em uma tabela
  • spanner.databases.beginOrRollbackReadWriteTransaction
  • spanner.databases.select
  • spanner.databases.write
  • spanner.sessions.create
  • spanner.sessions.delete

Gerenciamento de políticas do IAM no Cloud Spanner

Você pode receber, definir e testar as políticas do IAM usando a API REST ou RPC em recursos de banco de dados e instância do Cloud 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

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Cloud Spanner