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 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 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 os 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 aos no 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 da instância para REST e RPC APIs de terceiros.
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 da instância
As permissões a seguir se aplicam à configuração da instância do Spanner as operações. 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.list |
Lista as operações de configuração da instância. |
spanner.instanceConfigOperations.get |
Recebe uma operação de configuração de instância específica. |
spanner.instanceConfigOperations.cancel |
Cancelar uma operação de configuração da instância. |
spanner.instanceConfigOperations.delete |
Exclui uma operação de configuração da instância. |
Instâncias
As permissões a seguir se aplicam às instâncias do Spanner. Para mais consulte as referências de instância para REST e RPC APIs de terceiros.
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 Spanner. Para mais informações, consulte as referências de instância para REST e RPC APIs de terceiros.
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. |
Partições
As permissões a seguir se aplicam às partições do Spanner. Para mais consulte as referências de partição para REST e RPC APIs de terceiros.
Nome da permissão de instância | Descrição |
---|---|
spanner.instancePartitions.create |
Criar uma partição. |
spanner.instancePartitions.get |
Recebe a configuração de uma partição específica. |
spanner.instancePartitions.list |
Lista partições. |
spanner.instancePartitions.update |
Atualizar uma partição. |
spanner.instancePartitions.delete |
Excluir uma partição. |
Operações de partição
As permissões a seguir se aplicam às operações de partição do Spanner. Para mais informações, consulte as referências de partição de instância para APIs REST e RPC.
Nome da permissão de operação de partição da instância | Descrição |
---|---|
spanner.instancePartitionOperations.list |
Listar operações de partição. |
spanner.instancePartitionOperations.get |
Recebe uma operação de partição específica. |
spanner.instancePartitionOperations.cancel |
Cancelar uma operação de partição. |
spanner.instancePartitionOperations.delete |
Excluir uma operação de partição. |
Bancos de dados
As permissões a seguir se aplicam aos bancos de dados do Spanner. Para mais consulte as referências do banco de dados para informações sobre REST e RPC APIs de terceiros.
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.createBackup |
Cria um backup a partir do banco de dados. Também requer spanner.backups.create para criar o recurso de backup. |
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 |
Comece uma transação somente leitura em um banco de dados do Spanner. |
spanner.databases.beginOrRollbackReadWriteTransaction |
Começa ou reverter uma transação de leitura e gravação em um banco de dados do 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. |
spanner.databases.useRoleBasedAccess |
Use controle de acesso refinado. |
spanner.databases.useDataBoost |
Use os recursos de computação do Spanner Data Boost para processar consultas particionadas. |
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 REST (link em inglês). e RPC APIs de terceiros.
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 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 REST (link em inglês). e RPC APIs de terceiros.
Nome da permissão de operação do banco de dados | Descrição |
---|---|
spanner.databaseOperations.list |
Lista banco de dados e restaura operações de 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. |
Backups
As permissões a seguir se aplicam aos backups do Spanner. Para mais consulte as referências de backup REST e RPC APIs de terceiros.
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.get |
Recebe um backup. |
spanner.backups.update |
Atualiza um backup. |
spanner.backups.delete |
Exclui um 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.getIamPolicy |
Recebe a política do IAM de backup. |
spanner.backups.setIamPolicy |
Define a política do IAM de 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.list |
Lista operações de backup. |
spanner.backupOperations.get |
Recebe uma operação de backup específica. |
spanner.backupOperations.cancel |
Cancela uma operação 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 de 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.get |
Receber uma programação de backup. |
spanner.backupSchedules.update |
Atualize uma programação de backup. |
spanner.backupSchedules.delete |
Excluir uma programação de backup. |
spanner.backupSchedules.list |
Listar programações de backup. |
Sessões
As permissões a seguir se aplicam às sessões do Spanner. Para mais consulte as referências do banco de dados para informações sobre REST e 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.databases.write
. Existem
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 lista das permissões associadas a cada papel:
Role | Permissions |
---|---|
Cloud Spanner Admin( Has complete access to all Spanner resources in a Google Cloud project. A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Backup Admin( A principal with this role can:
This role cannot restore a database from a backup. Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Backup Writer( 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:
|
|
Cloud Spanner Database Admin( A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Database Reader( A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Database Reader with DataBoost( 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:
|
|
Cloud Spanner Database Role User( 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:
|
|
Cloud Spanner Database User( A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Fine-grained Access User( 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:
|
|
Cloud Spanner Restore Admin( 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:
|
|
Cloud Spanner Viewer( A principal with this role can:
For example, you can combine this role with the 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:
|
|
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 recursos do Google Cloud. Por outro lado, os papéis predefinidos do Spanner incluem permissões refinadas que se aplicam somente ao Spanner.
Papel básico | 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/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. |
Papéis personalizados
Se os papéis predefinidos do Spanner não atenderem aos seus requisitos de negócios, é possível definir seus próprios papéis personalizados com permissões que você 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ê 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, 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
|
Inserir, atualizar ou excluir dados |
spanner.databases.beginOrRollbackReadWriteTransaction
|
Criar backup |
spanner.backups.create
|
Restaurar um banco de dados |
spanner.databases.create
|
Papéis personalizados para tarefas do Console do Google Cloud
Para identificar a lista de permissões necessárias para uma determinada tarefa no console do Google Cloud, determine o fluxo de trabalho dessa tarefa e compile as permissões dele. Por exemplo, para visualizar os dados em um 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 do Google Cloud.
Ação | Permissões |
---|---|
Ver a lista de instâncias na página "Instâncias" |
|
Ver a lista na guia "Permissões" da página "Instâncias" |
|
Adicionar membros na guia "Permissões" da página "Instâncias" |
|
Selecionar uma instância na lista correspondente para visualizar a página "Detalhes da instância" |
|
Criar uma instância |
|
Excluir uma instância |
|
Modificar uma instância |
|
Criar uma partição |
|
Excluir uma partição |
|
Modificar uma partição |
|
Ver os gráficos na guia "Monitor" da página "Detalhes da instância" ou na página "Detalhes do banco de dados" |
|
Ver a lista de bancos de dados na página "Detalhes da instância" |
|
Ver a lista na guia "Permissões" da página "Detalhes do banco de dados" |
|
Adicionar membros na guia "Permissões" da página "Detalhes do banco de dados" |
|
Selecionar um banco de dados na lista de bancos de dados e ver o esquema na página "Detalhes do banco de dados" |
|
Criar um banco de dados |
|
Excluir um banco de dados |
|
Criar uma tabela Atualizar um esquema de tabela |
|
Visualizar dados na guia "Dados" da página "Detalhes do banco de dados" Criar e executar uma consulta |
|
Modificar dados em uma tabela |
|
Acessar a página "Backup/restauração" |
|
Ver a lista de operações de backup |
|
Ver a lista de operações de restauração |
|
Criar backup |
|
Restaurar um banco de dados a partir de um backup |
|
Atualizar um backup |
|
Excluir um backup |
|
Criar uma programação de backup |
|
Atualizar uma programação de backup |
|
Excluir uma programação de backup |
|
Gerenciamento de políticas de IAM do Spanner
É possível receber, definir e testar políticas do IAM usando as APIs REST ou RPC em 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
- Saiba mais sobre o gerenciamento de identidade e acesso.
- Saiba como aplicar papéis do IAM a um banco de dados, uma instância ou um projeto do Google Cloud do Spanner.
- Saiba como controlar o acesso aos recursos do Google Cloud, incluindo o Spanner, pela Internet.