Gestão de identidade e de acesso (IAM)
Faça a gestão do acesso aos seus recursos com a gestão de identidade e de acesso (IAM). O IAM permite-lhe conceder acesso mais detalhado a recursos Google Cloud específicos e impede o acesso indesejado a outros recursos. Esta página descreve as autorizações e as funções do IAM para o Firestore. 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 (utilizador) tem autorização para quê (função)
em que recursos através da definição de políticas de IAM.
As políticas de IAM concedem uma ou mais funções a um utilizador, o que lhe dá determinadas autorizações. Por exemplo, pode conceder a função datastore.indexAdmin
a um utilizador, o que lhe permite 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.
Autorizações necessárias para métodos da API
A tabela seguinte lista as autorizações que o autor da chamada tem de ter para realizar cada ação:
Método | Autorizações necessárias | |
---|---|---|
projects.databases.MongoDBCompatible |
||
ListDatabases |
datastore.databases.getMetadata |
|
ListIndexes |
datastore.indexes.list |
|
Find |
datastore.entities.get datastore.entities.list |
|
Aggregate |
datastore.entities.get datastore.entities.list |
|
GetMore |
As mesmas autorizações que foram necessárias para a chamada que criou o cursor. |
|
ListCollections |
datastore.entities.list |
|
Count |
datastore.entities.list |
|
Distinct |
datastore.entities.get datastore.entities.list |
|
CommitTransaction |
datastore.databases.get |
|
AbortTransaction |
datastore.databases.get |
|
EndSessions |
datastore.databases.get |
|
KillCursors |
datastore.databases.get |
|
Insert |
datastore.entities.create |
|
Update |
datastore.entities.get datastore.entities.list datastore.entities.update datastore.entities.create (apenas para inserção/atualização) |
|
FindAndModify |
datastore.entities.get datastore.entities.list datastore.entities.update (apenas para substituir ou atualizar)datastore.entities.create (apenas para inserir/atualizar)datastore.entities.delete (apenas para eliminar) |
|
CreateCollection |
datastore.entities.create |
|
projects.databases.indexes |
||
create |
datastore.indexes.create |
|
delete |
datastore.indexes.delete |
|
get |
datastore.indexes.get |
|
list |
datastore.indexes.list |
|
projects.databases |
||
create |
datastore.databases.create |
|
delete |
datastore.databases.delete |
|
get |
datastore.databases.getMetadata |
|
list |
datastore.databases.list |
|
patch |
datastore.databases.update |
|
restaurar | datastore.backups.restoreDatabase |
|
clone |
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:
|
projects.locations |
||
get |
datastore.locations.get |
|
list |
datastore.locations.list |
|
projects.databases.backupschedules |
||
get |
datastore.backupSchedules.get |
|
list |
datastore.backupSchedules.list |
|
create |
datastore.backupSchedules.create |
|
update |
datastore.backupSchedules.update |
|
delete |
datastore.backupSchedules.delete |
|
projects.locations.backups |
||
get |
datastore.backups.get |
|
list |
datastore.backups.list |
|
delete |
datastore.backups.delete |
|
projects.databases.usercreds |
||
get |
datastore.userCreds.get |
|
list |
datastore.userCreds.list |
|
create |
datastore.userCreds.create |
|
enable |
datastore.userCreds.update |
|
disable |
datastore.userCreds.update |
|
resetPassword |
datastore.userCreds.update |
|
delete |
datastore.userCreds.delete |
Funções predefinidas
Com o IAM, todos os métodos da API no Firestore requerem que a conta que faz o pedido da 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 primitivas, proprietário, editor e leitor, pode conceder funções do Firestore aos utilizadores do seu projeto.
A tabela seguinte lista as funções da IAM do Firestore. 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 ao Firestore. |
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 Firestore. 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 |
Acesso de leitura a todos os recursos do Firestore. |
roles/datastore.indexAdmin |
appengine.applications.get datastore.databases.getMetadata datastore.indexes.* datastore.operations.list datastore.operations.get resourcemanager.projects.get resourcemanager.projects.list |
Acesso total para gerir definições de índice. |
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 Firestore. |
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 agendamentos de cópias de segurança numa base de dados do Firestore. |
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 Firestore. |
roles/datastore.backupsAdmin |
datastore.backups.get datastore.backups.list datastore.backups.delete |
Acesso total às cópias de segurança numa localização do Firestore. |
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 Firestore 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 Firestore 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. |
roles/datastore.userCredsViewer |
datastore.userCreds.get datastore.userCreds.list |
Acesso de leitura às credenciais do utilizador numa base de dados do Firestore. |
roles/datastore.userCredsAdmin |
datastore.userCreds.get datastore.userCreds.list datastore.userCreds.create datastore.userCreds.update datastore.userCreds.delete datastore.databases.list datastore.databases.getMetadata |
Acesso total às credenciais do utilizador numa base de dados do Firestore. |
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
A tabela seguinte indica as autorizações suportadas pelo Firestore.
Nome da autorização da base de dados | Descrição | |
---|---|---|
datastore.databases.get |
Iniciar ou reverter uma transação. | |
datastore.databases.getMetadata |
Ler metadados de uma base de dados. | |
datastore.databases.list |
Apresenta as 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. | |
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.create |
Crie um documento. | |
datastore.entities.delete |
Elimine um documento. | |
datastore.entities.get |
Ler um documento. | |
datastore.entities.list |
Listar os nomes dos documentos num projeto. (É necessário datastore.entities.get para aceder aos dados do documento.) |
|
datastore.entities.update |
Atualize um documento. | |
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 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 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 um agendamento 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 | |
Nome da autorização das credenciais do utilizador | Descrição | |
datastore.userCreds.get |
Obtenha detalhes sobre as credenciais do utilizador. | |
datastore.userCreds.list |
Liste as credenciais de utilizador disponíveis. | |
datastore.userCreds.create |
Crie credenciais de utilizador. | |
datastore.userCreds.update |
Ativar ou desativar credenciais de utilizador, ou repor a palavra-passe de um utilizador. | |
datastore.userCreds.delete |
Elimine as credenciais do utilizador. |
Latência da alteração de função
O Firestore armazena em cache as autorizações de IAM durante 5 minutos, pelo que uma alteração de função demora até 5 minutos a entrar em vigor.
Gerir o IAM do Firestore
Pode obter e definir políticas de IAM através da Google Cloud consola,
da API IAM ou da ferramenta de linha de comandos
gcloud
. Consulte o artigo
Conceder, alterar e revogar o acesso de membros do projeto
para ver detalhes.
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 as condições de acesso à base de dados.
O que se segue?
- Saiba mais sobre a IAM.
- Conceda funções de IAM.
- Saiba mais acerca da autenticação.