Gestão de identidade e de acesso (IAM)

O Google Cloud oferece a gestão de identidade e de acesso (IAM), que permite conceder um acesso mais detalhado a recursos Google Cloud específicos e impede o acesso indesejado a outros recursos. Esta página descreve as funções do IAM do Firestore no modo Datastore. Para uma descrição detalhada do IAM, leia a documentação do IAM.

O IAM permite-lhe adotar o princípio de segurança do menor privilégio, pelo que concede apenas o acesso necessário aos seus recursos.

O IAM permite-lhe controlar quem (utilizadores) tem que (funções) autorização para que recursos através da definição de políticas de IAM. As políticas de IAM concedem funções específicas a um utilizador, o que lhe dá determinadas autorizações. Por exemplo, pode conceder a função datastore.indexAdmin a um utilizador, e este pode criar, modificar, eliminar, listar ou ver índices.

Autorizações e funções

Esta secção resume as autorizações e as funções suportadas pelo Firestore no modo Datastore.

Autorizações

A tabela seguinte apresenta as autorizações suportadas pelo Firestore no modo Datastore.

Nome da autorização da base de dados Descrição
datastore.databases.export Exporte entidades de uma base de dados.
datastore.databases.bulkDelete Elimine entidades em massa de uma base de dados.
datastore.databases.get Inicie ou reverta uma transação.
Confirme com mutações vazias.
datastore.databases.import Importar entidades para uma base de dados.
datastore.databases.getMetadata Ler metadados de uma base de dados.
datastore.databases.list Apresenta bases de dados num projeto.
datastore.databases.create Crie uma base de dados.
datastore.databases.update Atualize uma base de dados.
datastore.databases.delete Eliminar uma base de dados.
datastore.databases.clone Clone uma base de dados.

Se o seu pedido clone contiver um valor tags, são necessárias as seguintes autorizações adicionais:

  • datastore.databases.createTagBinding

Se quiser verificar se as associações de etiquetas estão definidas com êxito listando as associações, são necessárias as seguintes autorizações adicionais:

  • datastore.databases.listTagBindings
  • datastore.databases.listEffectiveTags
datastore.databases.createTagBinding Crie uma associação de etiquetas para uma base de dados.
datastore.databases.deleteTagBinding Elimine uma vinculação de etiqueta para uma base de dados.
datastore.databases.listTagBindings Apresenta todas as associações de etiquetas de uma base de dados.
datastore.databases.listEffectiveTagBindings Liste as associações de etiquetas eficazes para uma base de dados.
Nome da autorização da entidade Descrição
datastore.entities.allocateIds Atribua IDs a chaves com um caminho de chave incompleto.
datastore.entities.create Crie uma entidade.
datastore.entities.delete Elimine uma entidade.
datastore.entities.get Ler uma entidade.
datastore.entities.list Liste as chaves das entidades num projeto.
(datastore.entities.get é necessário para aceder aos dados das entidades.)
datastore.entities.update Atualize uma entidade.
Nome da autorização de índice Descrição
datastore.indexes.create Crie um índice.
datastore.indexes.delete Elimine um índice.
datastore.indexes.get Ler metadados de um índice.
datastore.indexes.list Apresenta os índices num projeto.
datastore.indexes.update Atualize um índice.
Nome da autorização do espaço de nomes Descrição
datastore.namespaces.get Obtenha metadados de um espaço de nomes.
datastore.namespaces.list Apresenta os espaços de nomes num projeto.
Nome da autorização de operação Descrição
datastore.operations.cancel Cancele uma operação de longa duração.
datastore.operations.delete Elimine uma operação de longa duração.
datastore.operations.get Obtém o estado mais recente de uma operação de execução longa.
datastore.operations.list Apresentar operações de longa duração.
Nome da autorização do projeto Descrição
resourcemanager.projects.get Procurar recursos no projeto.
resourcemanager.projects.list Apresentar projetos detidos.
Nome da autorização de estatísticas Descrição
datastore.statistics.get Obter entidades de estatísticas.
datastore.statistics.list Indique as chaves das entidades de estatísticas.
(datastore.statistics.get é necessário para aceder aos dados da entidade de estatísticas.)
Nome da autorização do App Engine Descrição
appengine.applications.get Acesso só de leitura a todas as definições e configurações da aplicação do App Engine.
Nome da autorização de acesso à localização Descrição
datastore.locations.get Obter detalhes sobre a localização de uma base de dados. Necessário para criar uma nova base de dados.
datastore.locations.list Indicar as localizações de bases de dados disponíveis. Necessário para criar uma nova base de dados.
Nome da autorização do Key Visualizer Descrição
datastore.keyVisualizerScans.get Obtenha detalhes sobre as análises do visualizador de chaves.
datastore.keyVisualizerScans.list Indicar as análises do visualizador de chaves disponíveis.
Nome da autorização do agendamento de cópias de segurança Descrição
datastore.backupSchedules.get Obter detalhes sobre uma programação de cópias de segurança.
datastore.backupSchedules.list Listar agendamentos de cópias de segurança disponíveis.
datastore.backupSchedules.create Crie um agendamento de cópias de segurança.
datastore.backupSchedules.update Atualize uma agenda de cópias de segurança.
datastore.backupSchedules.delete Elimine um agendamento de cópia de segurança.
Nome da autorização de cópia de segurança Descrição
datastore.backups.get Veja detalhes sobre uma cópia de segurança.
datastore.backups.list Listar as cópias de segurança disponíveis.
datastore.backups.delete Elimine uma cópia de segurança.
datastore.backups.restoreDatabase Restaure uma base de dados a partir de uma cópia de segurança.
Nome da autorização de estatísticas Descrição
datastore.insights.get Aceda a estatísticas de um recurso

Funções predefinidas

Com o IAM, todos os métodos da API Datastore requerem que a conta que faz o pedido à API tenha as autorizações adequadas para usar o recurso. As autorizações são concedidas através da definição de políticas que concedem funções a um utilizador, um grupo ou uma conta de serviço. Além das funções básicas, Proprietário, Editor e Leitor, pode conceder funções do Firestore no modo Datastore aos utilizadores do seu projeto.

A tabela seguinte apresenta as funções IAM do Firestore no modo Datastore. Pode conceder várias funções a um utilizador, um grupo ou uma conta de serviço.

Função Autorizações Descrição
roles/datastore.owner appengine.applications.get
datastore.*
resourcemanager.projects.get
resourcemanager.projects.list
Acesso total à instância da base de dados.
Para acesso de administrador do Datastore, conceda a função appengine.appAdmin ao principal.
roles/datastore.user appengine.applications.get
datastore.databases.get
datastore.databases.getMetadata
datastore.databases.list
datastore.entities.*
datastore.indexes.list
datastore.namespaces.get
datastore.namespaces.list
datastore.statistics.get
datastore.statistics.list
resourcemanager.projects.get
resourcemanager.projects.list
Acesso de leitura/escrita aos dados numa base de dados do modo Datastore. Destinado a programadores de aplicações e contas de serviço.
roles/datastore.viewer appengine.applications.get
datastore.databases.get
datastore.databases.getMetadata
datastore.databases.list
datastore.entities.get
datastore.entities.list
datastore.indexes.get
datastore.indexes.list
datastore.namespaces.get
datastore.namespaces.list
datastore.statistics.get
datastore.statistics.list
resourcemanager.projects.get
resourcemanager.projects.list
datastore.insights.get
Acesso de leitura a todos os recursos da base de dados do modo Datastore.
roles/datastore.importExportAdmin appengine.applications.get
datastore.databases.export
datastore.databases.getMetadata
datastore.databases.import
datastore.operations.cancel
datastore.operations.get
datastore.operations.list
resourcemanager.projects.get
resourcemanager.projects.list
Acesso total para gerir importações e exportações.
roles/datastore.bulkAdmin resourcemanager.projects.get
resourcemanager.projects.list
datastore.databases.getMetadata
datastore.databases.bulkDelete
datastore.operations.cancel
datastore.operations.get
datastore.operations.list
Acesso total para gerir operações em massa.
roles/datastore.indexAdmin appengine.applications.get
datastore.databases.getMetadata
datastore.indexes.*
resourcemanager.projects.get
resourcemanager.projects.list
Acesso total para gerir definições de índice.
roles/datastore.keyVisualizerViewer datastore.databases.getMetadata
datastore.keyVisualizerScans.get
datastore.keyVisualizerScans.list
resourcemanager.projects.get
resourcemanager.projects.list
Acesso total às análises do visualizador de chaves.
roles/datastore.backupSchedulesViewer datastore.backupSchedules.get
datastore.backupSchedules.list
Acesso de leitura a agendamentos de cópias de segurança numa base de dados do modo Datastore.
roles/datastore.backupSchedulesAdmin datastore.backupSchedules.get
datastore.backupSchedules.list
datastore.backupSchedules.create
datastore.backupSchedules.update
datastore.backupSchedules.delete
datastore.databases.list
datastore.databases.getMetadata
Acesso total a programações de cópias de segurança numa base de dados do modo Datastore.
roles/datastore.backupsViewer datastore.backups.get
datastore.backups.list
Acesso de leitura a informações de cópias de segurança numa localização do modo Datastore.
roles/datastore.backupsAdmin datastore.backups.get
datastore.backups.list
datastore.backups.delete
Acesso total às cópias de segurança numa localização do modo Datastore.
roles/datastore.restoreAdmin datastore.backups.get
datastore.backups.list
datastore.backups.restoreDatabase
datastore.databases.list
datastore.databases.create
datastore.databases.getMetadata
datastore.operations.list
datastore.operations.get
Capacidade de restaurar uma cópia de segurança do modo Datastore numa nova base de dados. Esta função também permite criar novas bases de dados, não necessariamente através do restauro a partir de uma cópia de segurança.
roles/datastore.cloneAdmin datastore.databases.clone
datastore.databases.list
datastore.databases.create
datastore.databases.getMetadata
datastore.operations.list
datastore.operations.get
Capacidade de clonar uma base de dados do modo Datastore numa nova base de dados. Esta função também permite criar novas bases de dados, não necessariamente através da clonagem.
roles/datastore.statisticsViewer resourcemanager.projects.get
resourcemanager.projects.list
datastore.databases.getMetadata
datastore.insights.get
datastore.keyVisualizerScans.get
datastore.keyVisualizerScans.list
datastore.statistics.list
datastore.statistics.get
Acesso de leitura a estatísticas, informações e análises do visualizador de chaves.

Funções personalizadas

Se as funções predefinidas não satisfizerem os requisitos da sua empresa, pode definir as suas próprias funções personalizadas com as autorizações que especificar:

Funções necessárias para criar e gerir etiquetas

Se alguma etiqueta estiver representada em ações de criação ou restauro, são necessárias algumas funções. Consulte o artigo Criar e gerir etiquetas para ver mais detalhes sobre a criação de pares chave-valor de etiquetas antes de os associar aos recursos da base de dados.

As autorizações indicadas abaixo são necessárias.

Ver etiquetas
  • datastore.databases.listTagBindings
  • datastore.databases.listEffectiveTags
Faça a gestão de etiquetas em recursos

É necessária a seguinte autorização para o recurso de base de dados ao qual está a anexar o valor da etiqueta.

  • datastore.databases.createTagBinding

Autorizações necessárias para métodos de API

A tabela seguinte lista as autorizações que o autor da chamada tem de ter para chamar cada método:

Método Autorizações necessárias
allocateIds datastore.entities.allocateIds
beginTransaction datastore.databases.get
commit com mutações vazias datastore.databases.get
commit para uma inserção datastore.entities.create
commit para uma inserção/atualização datastore.entities.create
datastore.entities.update
commit para uma atualização datastore.entities.update
commit para uma eliminação datastore.entities.delete
commit para uma pesquisa datastore.entities.get

Para uma pesquisa relacionada com metadados ou estatísticas, consulte o artigo Autorizações necessárias para metadados e estatísticas.
commit para uma consulta datastore.entities.list
datastore.entities.get (se a consulta não for uma consulta apenas de chaves)

Para uma consulta relacionada com metadados ou estatísticas, consulte o artigo Autorizações necessárias para metadados e estatísticas.
lookup datastore.entities.get

Para uma pesquisa relacionada com metadados ou estatísticas, consulte o artigo Autorizações necessárias para metadados e estatísticas.
rollback datastore.databases.get
runQuery datastore.entities.list
datastore.entities.get (se a consulta não for uma consulta apenas de chaves)

Para uma consulta relacionada com metadados ou estatísticas, consulte o artigo Autorizações necessárias para metadados e estatísticas.
runQuery com uma consulta sem tipo datastore.entities.get
datastore.entities.list
datastore.statistics.get
datastore.statistics.list

Autorizações necessárias para metadados e estatísticas

A tabela seguinte lista as autorizações que o autor da chamada tem de ter para chamar métodos em Metadata e Statistics.

Método Autorizações necessárias
lookup de entidades com nomes de tipos correspondentes a __Stat_*__ datastore.statistics.get
runQuery usando tipos com nomes que correspondem a __Stat_*__ datastore.statistics.get
datastore.statistics.list
runQuery usando o tipo __namespace__ datastore.namespaces.get
datastore.namespaces.list

Funções necessárias para criar uma instância da base de dados do modo Datastore

Para criar uma nova instância da base de dados do modo Datastore, precisa da função de proprietário ou da função de proprietário do Datastore.

As bases de dados do modo Datastore requerem uma aplicação do App Engine ativa. Se o projeto não tiver uma aplicação, o Firestore no modo Datastore cria uma para si. Nesse caso, precisa da autorização appengine.applications.create da função de proprietário ou de uma função personalizada do IAM que contenha a autorização.

Latência da alteração de função

O Firestore no modo Datastore armazena em cache as autorizações da IAM durante 5 minutos, pelo que uma alteração de função pode demorar até 5 minutos a entrar em vigor.

Gerir o IAM

Pode obter e definir políticas de IAM através da Google Cloud consola, dos métodos de IAM ou da CLI Google Cloud.

Configure autorizações de acesso condicional

Pode usar as condições do IAM para definir e aplicar o controlo de acesso condicional.

Por exemplo, a seguinte condição atribui a um principal a função datastore.user até uma data especificada:

{
  "role": "roles/datastore.user",
  "members": [
    "user:travis@example.com"
  ],
  "condition": {
    "title": "Expires_December_1_2023",
    "description": "Expires on December 1, 2023",
    "expression":
      "request.time < timestamp('2023-12-01T00:00:00.000Z')"
  }
}

Para saber como definir condições da IAM para acesso temporário, consulte o artigo Configure o acesso temporário.

Para saber como configurar as condições da IAM para o acesso a uma ou mais bases de dados, consulte o artigo Configure condições de acesso à base de dados.

O que se segue?