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
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.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.
- Para a Google Cloud consola, consulte o artigo Controlo de acesso através da Google Cloud consola.
- Para os métodos da IAM, consulte o artigo Controlo de acesso através da API.
- Para a CLI gcloud, consulte o artigo Controlo de acesso através da ferramenta gcloud.
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?
- Saiba mais sobre a IAM.
- Conceda funções de IAM.