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 |
---|---|
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 API Service Agent( Cloud Spanner API Service Agent |
|
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:
|
|
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.list 1spanner.backupOperations.list 1 |
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 |
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?
- Saiba mais acerca da gestão de identidades e acessos.
- Saiba como aplicar funções de IAM a uma base de dados, uma instância ou um Google Cloud projeto do Spanner.
- Saiba como controlar o acesso aos Google Cloud recursos, incluindo o Spanner, a partir da Internet.