Identity and Access Management (IAM)
Gerenciar o acesso aos seus recursos com o Identity and Access Management (IAM). Com o IAM, você tem acesso mais granular a recursos específicos do Google Cloud e impede 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.getdatastore.entities.list | 
|
Aggregate | 
datastore.entities.getdatastore.entities.list | 
|
GetMore | 
As mesmas permissões exigidas pela chamada que criou o cursor.  | 
|
ListCollections | 
datastore.entities.list | 
|
Count | 
datastore.entities.list | 
|
Distinct | 
datastore.entities.getdatastore.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.getdatastore.entities.listdatastore.entities.updatedatastore.entities.create (somente para atualizar/inserir) | 
|
FindAndModify | 
datastore.entities.getdatastore.entities.listdatastore.entities.update (somente para substituir ou atualizar)datastore.entities.create (somente para atualizar/inserir)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 | 
|
| restaurar | datastore.backups.restoreDatabase | 
|
clone | 
datastore.databases.clone | 
Clonar um banco de dados.
 Se a solicitação  
 Se você quiser verificar se as vinculações de tag foram definidas com sucesso listando as vinculações, as seguintes permissões adicionais serão necessárias: 
  | 
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.getdatastore.*resourcemanager.projects.getresourcemanager.projects.list | 
Acesso total ao Firestore. | 
roles/datastore.user | 
  appengine.applications.getdatastore.databases.getdatastore.databases.getMetadatadatastore.databases.listdatastore.entities.*datastore.indexes.listdatastore.namespaces.getdatastore.namespaces.listdatastore.statistics.getdatastore.statistics.listresourcemanager.projects.getresourcemanager.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.getdatastore.databases.getdatastore.databases.getMetadatadatastore.databases.listdatastore.entities.getdatastore.entities.listdatastore.indexes.getdatastore.indexes.listdatastore.namespaces.getdatastore.namespaces.listdatastore.statistics.getdatastore.statistics.listresourcemanager.projects.getresourcemanager.projects.list | 
Acesso de leitura a todos os recursos do Firestore. | 
roles/datastore.indexAdmin | 
appengine.applications.getdatastore.databases.getMetadatadatastore.indexes.*datastore.operations.listdatastore.operations.getresourcemanager.projects.getresourcemanager.projects.list | 
Acesso total para gerenciar definições de índice. | 
roles/datastore.backupSchedulesViewer | 
  datastore.backupSchedules.getdatastore.backupSchedules.list | 
Acesso de leitura a programações de backup em um banco de dados do Firestore. | 
roles/datastore.backupSchedulesAdmin | 
  datastore.backupSchedules.getdatastore.backupSchedules.listdatastore.backupSchedules.createdatastore.backupSchedules.updatedatastore.backupSchedules.deletedatastore.databases.listdatastore.databases.getMetadata | 
Acesso total às programações de backup em um banco de dados do Firestore. | 
roles/datastore.backupsViewer | 
  datastore.backups.getdatastore.backups.list | 
Acesso de leitura a informações de backup em um local do Firestore. | 
roles/datastore.backupsAdmin | 
  datastore.backups.getdatastore.backups.listdatastore.backups.delete | 
Acesso total a backups em um local do Firestore. | 
roles/datastore.restoreAdmin | 
  datastore.backups.getdatastore.backups.listdatastore.backups.restoreDatabasedatastore.databases.listdatastore.databases.createdatastore.databases.getMetadatadatastore.operations.listdatastore.operations.get | 
Capacidade de restaurar um backup do Firestore em um novo banco de dados. Essa função também permite criar novos bancos de dados sem precisar restaurar um backup. | 
roles/datastore.cloneAdmin | 
  datastore.databases.clonedatastore.databases.listdatastore.databases.createdatastore.databases.getMetadatadatastore.operations.listdatastore.operations.get | 
Capacidade de clonar um banco de dados do Firestore em um novo banco de dados. Essa função também permite criar novos bancos de dados sem precisar clonar. | 
roles/datastore.statisticsViewer | 
  resourcemanager.projects.getresourcemanager.projects.listdatastore.databases.getMetadatadatastore.insights.getdatastore.keyVisualizerScans.getdatastore.keyVisualizerScans.listdatastore.statistics.listdatastore.statistics.get | 
Acesso de leitura a verificações do Visualizador de chaves, insights e estatísticas. | 
roles/datastore.userCredsViewer | 
  datastore.userCreds.getdatastore.userCreds.list | 
Acesso de leitura às credenciais de usuários em um banco de dados do Firestore. | 
roles/datastore.userCredsAdmin | 
  datastore.userCreds.getdatastore.userCreds.listdatastore.userCreds.createdatastore.userCreds.updatedatastore.userCreds.deletedatastore.databases.listdatastore.databases.getMetadata | 
Acesso total às credenciais de usuários 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.
Papéis necessários para criar e gerenciar tags
Se alguma tag for representada em ações de criação ou restauração, alguns papéis serão necessários. Consulte Como criar e gerenciar tags para mais detalhes sobre a criação de pares de chave-valor de tag antes de associá-los aos recursos do banco de dados.
As seguintes permissões são obrigatórias:
Ver tags
datastore.databases.listTagBindingsdatastore.databases.listEffectiveTags
Gerenciar tags em recursos
A permissão a seguir é necessária para o recurso de banco de dados ao qual você está anexando o valor da tag.
datastore.databases.createTagBinding
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 | 
Crie um banco de dados. | |
datastore.databases.update | 
Atualizar um banco de dados. | |
datastore.databases.delete | 
Excluir um banco de dados. | |
datastore.databases.clone | 
Clonar um banco de dados. | |
datastore.databases.createTagBinding | 
Criar uma vinculação de tag para um banco de dados. | |
datastore.databases.deleteTagBinding | 
Excluir uma vinculação de tag de 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 efetivas 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 | 
Obter detalhes sobre as verificações do Key Visualizer. | |
datastore.keyVisualizerScans.list | 
Listar as verificações do Key Visualizer disponíveis. | |
| Nome da permissão da programação de backup | Descrição | |
datastore.backupSchedules.get | 
Obter detalhes sobre uma programação de backup. | |
datastore.backupSchedules.list | 
Listar as programações de backup disponíveis. | |
datastore.backupSchedules.create | 
Criar uma programação de backup. | |
datastore.backupSchedules.update | 
Atualizar 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 | 
Obter 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 | 
Obter insights de um recurso | |
| Nome da permissão de credenciais de usuários | Descrição | |
datastore.userCreds.get | 
Obter detalhes sobre as credenciais de usuários. | |
datastore.userCreds.list | 
Listar as credenciais de usuários disponíveis. | |
datastore.userCreds.create | 
Criar credenciais de usuários. | |
datastore.userCreds.update | 
Ativar ou desativar credenciais de usuários ou redefinir uma senha de usuário. | |
datastore.userCreds.delete | 
Excluir credenciais de usuários. | 
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. Para mais detalhes, consulte 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: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 do IAM para acesso temporário, consulte Configurar 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 ao banco de dados.
A seguir
- Saiba mais sobre IAM.
 - Conceda papéis do IAM.
 - Saiba mais sobre autenticação.