Identity and Access Management (IAM)

Gerencie o acesso aos seus recursos com o Identity and Access Management (IAM). Com o IAM, conceda acesso mais granular a recursos Google Cloudespecíficos e impeça o acesso indesejado a outros recursos. Nesta página, descrevemos as permissões e os papéis do IAM para o Firestore. Para uma descrição detalhada do IAM, leia a documentação do IAM.

Com o IAM, é possível adotar o princípio de segurança de privilégio mínimo para conceder apenas o acesso necessário aos recursos.

O IAM permite controlar quem (usuários) tem qual (papéis) permissão para quais recursos. Basta definir as políticas. As políticas do IAM concedem uma ou mais funções a um usuário, oferecendo a ele certas permissões. Por exemplo, é possível conceder o papel datastore.indexAdmin a um usuário, que então terá permissão para criar, modificar, excluir, listar ou visualizar índices.

Permissões e papéis

Esta seção resume as permissões e os papéis compatíveis com o Firestore.

Permissões necessárias para métodos de API

A tabela a seguir lista as permissões que o autor da chamada precisa ter para executar cada ação:

Método Permissõ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 permissões que foram exigidas pela 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 (somente para inserção e atualização)
FindAndModify datastore.entities.get
datastore.entities.list
datastore.entities.update (somente para substituir ou atualizar)
datastore.entities.create (somente para fazer upsert)
datastore.entities.delete (somente para excluir)
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
restore datastore.backups.restoreDatabase
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

Papéis predefinidos

Com o IAM, todo método de API no Firestore requer que a conta autora da solicitação de API tenha as permissões apropriadas para usar o recurso. Defina as políticas que atribuem papéis a um usuário, grupo ou conta de serviço para conceder permissões. Além dos papéis primários de proprietário, editor e visualizador, é possível conceder papéis do Firestore aos usuários do projeto.

A tabela a seguir lista os papéis do IAM do Firestore. É possível atribuir vários papéis a um usuário, grupo ou conta de serviço.

Papel Permissõ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/gravação a dados em um banco de dados do Firestore. Destinado a desenvolvedores de apps 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.*

resourcemanager.projects.get
resourcemanager.projects.list
Acesso total para gerenciar definições de índice.
roles/datastore.backupSchedulesViewer datastore.backupSchedules.get
datastore.backupSchedules.list
Acesso de leitura a programações de backup em um banco 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 programações de backup em um banco de dados do Firestore.
roles/datastore.backupsViewer datastore.backups.get
datastore.backups.list
Acesso de leitura a informações de backup em um local do Firestore.
roles/datastore.backupsAdmin datastore.backups.get
datastore.backups.list
datastore.backups.delete
Acesso total aos backups em um local 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 um backup do Firestore em um novo banco de dados. Esse papel também permite criar novos bancos de dados, não necessariamente restaurando um backup.
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 verificações do Key Visualizer, insights e estatísticas.
roles/datastore.userCredsViewer datastore.userCreds.get
datastore.userCreds.list
Acesso de leitura a credenciais do usuário em um banco 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 usuário em um banco de dados do Firestore.

Papéis personalizados

Se os papéis predefinidos não atenderem aos seus requisitos de negócios, defina seus próprios papéis personalizados com as permissões que você especificar.

Permissões

A tabela a seguir lista as permissões compatíveis com o Firestore.

Nome da permissão do banco de dados Descrição
datastore.databases.get Iniciar ou fazer rollback de uma transação.
datastore.databases.getMetadata Ler metadados de um banco de dados.
datastore.databases.list Listar bancos de dados em um projeto.
datastore.databases.create Cria um banco de dados.
datastore.databases.update Atualizar um banco de dados.
datastore.databases.delete Excluir um banco de dados.
datastore.databases.createTagBinding Crie uma vinculação de tag para um banco de dados.
datastore.databases.deleteTagBinding Excluir uma vinculação de tag para um banco de dados.
datastore.databases.listTagBindings Listar todas as vinculações de tags de um banco de dados.
datastore.databases.listEffectiveTagBindings Listar as vinculações de tags eficazes de um banco de dados.
Nome da permissão de entidade Descrição
datastore.entities.create Criar um documento.
datastore.entities.delete Excluir um documento.
datastore.entities.get Ler um documento.
datastore.entities.list Liste os nomes dos documentos em um projeto.
O comando datastore.entities.get é necessário para acessar os dados do documento.
datastore.entities.update Atualizar um documento.
Nome da permissão de índice Descrição
datastore.indexes.create Criar um índice.
datastore.indexes.delete Excluir um índice.
datastore.indexes.get Ler metadados de um índice.
datastore.indexes.list Listar os índices de um projeto.
datastore.indexes.update Atualizar um índice.
Nome da permissão de operação Descrição
datastore.operations.cancel Cancelar uma operação de longa duração.
datastore.operations.delete Excluir uma operação de longa duração.
datastore.operations.get Receber o estado mais recente de uma operação de longa duração.
datastore.operations.list Listar operações de longa duração.
Nome da permissão de projeto Descrição
resourcemanager.projects.get Procurar recursos no projeto.
resourcemanager.projects.list Listar projetos próprios.
Nome da permissão do local Descrição
datastore.locations.get Receber detalhes sobre um local do banco de dados. Obrigatório para criar um novo banco de dados.
datastore.locations.list Listar os locais de banco de dados disponíveis. Obrigatório para criar um novo banco de dados.
Nome da permissão do Key Visualizer Descrição
datastore.keyVisualizerScans.get Receber detalhes sobre as verificações do Key Visualizer.
datastore.keyVisualizerScans.list Lista as verificações disponíveis do Key Visualizer.
Nome da permissão da programação de backup Descrição
datastore.backupSchedules.get Receber detalhes sobre uma programação de backup.
datastore.backupSchedules.list Lista as programações de backup disponíveis.
datastore.backupSchedules.create Crie uma programação de backup.
datastore.backupSchedules.update Atualize uma programação de backup.
datastore.backupSchedules.delete Excluir uma programação de backup.
Nome da permissão de backup Descrição
datastore.backups.get Receber detalhes sobre um backup.
datastore.backups.list Listar os backups disponíveis.
datastore.backups.delete Exclui um backup
datastore.backups.restoreDatabase Restaurar um banco de dados a partir de um backup.
Nome da permissão de insights Descrição
datastore.insights.get Receber insights de um recurso
Nome da permissão de credenciais do usuário Descrição
datastore.userCreds.get Receber detalhes sobre as credenciais do usuário.
datastore.userCreds.list Listar as credenciais de usuário disponíveis.
datastore.userCreds.create Crie credenciais de usuário.
datastore.userCreds.update Ativar ou desativar credenciais de usuário ou redefinir a senha de um usuário.
datastore.userCreds.delete Excluir credenciais do usuário.

Latência na mudança de papel

O Firestore armazena em cache as permissões de IAM durante cinco minutos. Portanto, é necessário esperar até cinco minutos para que um papel entre em vigor.

Como gerenciar o IAM do Firestore

É possível receber e definir políticas do IAM usando o console Google Cloud , a API IAM ou a ferramenta de linha de comando gcloud. Saiba mais em Como conceder, alterar e revogar o acesso a membros do projeto.

Configurar permissões de acesso condicional

Use as condições do IAM para definir e aplicar o controle de acesso condicional.

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

{
  "role": "roles/datastore.user",
  "members": [
    "user:[email protected]"
  ],
  "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 as Condições do IAM para acesso temporário, consulte Configurar o acesso temporário.

Para saber como configurar as Condições do IAM para acesso a um ou mais bancos de dados, consulte Configurar condições de acesso a bancos de dados.

A seguir