O Google Cloud oferece o Gerenciamento de acesso e identidade (IAM Identity and Access Management), que permite a concessão de acesso mais granular a recursos específicos do Google Cloud e impede o acesso indesejado a outros recursos. Nesta página, descrevemos os papéis do IAM referentes ao Firestore no modo Datastore. Para uma descrição detalhada do IAM, leia a documentação do IAM.
Com o IAM, você pode adotar o princípio de segurança do menor privilégio 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 de IAM concedem
papéis específicos a um usuário, que recebe determinadas
permissões. Por exemplo, é possível conceder o papel datastore.indexAdmin
a um
usuário, que poderá criar, modificar, excluir, listar ou visualizar índices.
Permissões e papéis
Nesta seção, resumimos as permissões e os papéis compatíveis com o Firestore no modo Datastore.
Permissões
Na tabela a seguir, veja as permissões compatíveis com o Firestore no modo Datastore.
Nome da permissão do banco de dados | Descrição | |
---|---|---|
datastore.databases.export |
Exportar entidades de um banco de dados. | |
datastore.databases.get |
Iniciar ou fazer rollback de uma transação. | |
datastore.databases.import |
Importar entidades para um banco de dados. | |
datastore.databases.getMetadata |
Ler metadados de um banco de dados. | |
datastore.databases.list |
Lista bancos de dados em um projeto. | |
datastore.databases.create |
Cria um banco de dados. | |
datastore.databases.update |
Atualizar um banco de dados. | |
Nome da permissão de entidade | Descrição | |
datastore.entities.allocateIds |
Alocar códigos para chaves com caminho de chave incompleto. | |
datastore.entities.create |
Criar uma entidade. | |
datastore.entities.delete |
Excluir uma entidade. | |
datastore.entities.get |
Ler uma entidade. | |
datastore.entities.list |
Listar as chaves das entidades de um projeto.datastore.entities.get é necessária para acessar os dados da entidade. |
|
datastore.entities.update |
Atualizar uma entidade. | |
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 namespace | Descrição | |
datastore.namespaces.get |
Recuperar metadados de um namespace. | |
datastore.namespaces.list |
Listar os namespaces de um projeto. | |
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 de estatística | Descrição | |
datastore.statistics.get |
Recuperar entidades de estatística. | |
datastore.statistics.list |
Listar as chaves de entidades de estatística.datastore.statistics.get é necessária para acessar os dados da entidade de estatística. |
|
Nome da permissão do App Engine | Descrição | |
appengine.applications.get |
Acesso somente leitura a todas as definições e configurações dos aplicativos no App Engine. | |
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. |
Papéis predefinidos
Com o IAM, cada método de API Datastore exige que a conta responsável pela 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 básicos, proprietário, editor e leitor, é possível conceder papéis do Firestore no modo Datastore aos usuários do projeto.
Na tabela a seguir, veja os papéis de IAM no Firestore no Datastore. É possível atribuir vários papéis a um usuário, grupo ou conta de serviço.
InstanceAdmin | Permissões | Descrição |
---|---|---|
roles/datastore.owner com roles/appengine.appAdmin |
appengine.applications.get datastore.databases.* datastore.entities.* datastore.indexes.* datastore.namespaces.* datastore.operations.* datastore.statistics.* resourcemanager.projects.get resourcemanager.projects.list |
Acesso total à instância do banco de dados. |
roles/datastore.owner sem roles/appengine.appAdmin |
appengine.applications.get datastore.databases.* datastore.entities.* datastore.indexes.* datastore.namespaces.* datastore.operations.* datastore.statistics.* resourcemanager.projects.get resourcemanager.projects.list |
O usuário, grupo ou conta de serviço tem acesso total à instância do banco de dados, com a exceção das ações a seguir:
|
roles/datastore.user |
appengine.applications.get datastore.databases.get 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 modo Datastore. Destinado a desenvolvedores de apps e contas de serviço. |
roles/datastore.viewer |
appengine.applications.get datastore.databases.get 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 banco de dados do modo Datastore. |
roles/datastore.importExportAdmin |
appengine.applications.get datastore.databases.export datastore.databases.import datastore.operations.cancel datastore.operations.get datastore.operations.list resourcemanager.projects.get resourcemanager.projects.list |
Acesso total para gerenciar importações e exportações. |
roles/datastore.indexAdmin |
appengine.applications.get datastore.indexes.* resourcemanager.projects.get resourcemanager.projects.list |
Acesso total para gerenciar definições de índice. |
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 necessárias para métodos de API
A tabela a seguir lista as permissões que o solicitante precisa ter para chamar cada método:
Método | Permissão exigida |
---|---|
allocateIds |
datastore.entities.allocateIds |
beginTransaction |
datastore.databases.get |
commit para um comando insert |
datastore.entities.create |
commit para um comando upsert |
datastore.entities.create datastore.entities.update |
commit para um comando update |
datastore.entities.update |
commit para um comando delete |
datastore.entities.delete |
commit para um comando lookup |
datastore.entities.get Em caso de busca relacionada a metadados ou estatísticas, consulte Permissões necessárias para metadados e estatísticas. |
commit para um comando query |
datastore.entities.list datastore.entities.get (caso não seja uma consulta apenas de chave)Em caso de consulta relacionada a metadados ou estatísticas, consulte Permissões necessárias para metadados e estatísticas. |
lookup |
datastore.entities.get Em caso de busca relacionada a metadados ou estatísticas, consulte Permissões necessárias para metadados e estatísticas. |
rollback |
datastore.databases.get |
runQuery |
datastore.entities.list datastore.entities.get (caso não seja uma consulta apenas de chave)Em caso de consulta relacionada a metadados ou estatísticas, consulte Permissões necessárias para metadados e estatísticas. |
runQuery por uma consulta sem tipo |
datastore.entities.get datastore.entities.list datastore.statistics.get datastore.statistics.list |
Permissões necessárias para metadados e estatísticas
A tabela a seguir mostra uma lista de permissões que o autor da chamada precisa ter para chamar métodos em Metadados e Estatísticas.
Método | Permissão exigida |
---|---|
lookup de entidades com nomes de tipo correspondentes a __Stat_*__ |
datastore.statistics.get |
runQuery usando tipos com nomes correspondentes a __Stat_*__ |
datastore.statistics.get datastore.statistics.list |
runQuery usando o tipo __namespace__ |
datastore.namespaces.get datastore.namespaces.list |
Papéis necessários para criar uma instância de banco de dados do modo Datastore
Para criar uma nova instância de banco de dados do modo Datastore, é necessário ter o papel Proprietário ou Proprietário do Datastore.
Os bancos de dados do modo Datastore exigem um aplicativo ativo do App Engine.
Se o projeto não tiver um aplicativo, o Firestore no modo Datastore criará um
para você. Nesse caso, é necessária a permissão
appengine.applications.create
do papel Proprietário
ou de um
papel personalizado de IAM que contenha
a permissão.
Latência na mudança de papel
O Firestore no modo Datastore armazena em cache as permissões de IAM por cinco minutos, ou seja, levará até cinco minutos para que uma alteração de papel seja efetivada.
Como gerenciar o IAM
É possível receber e definir políticas do IAM usando o Console do Google Cloud, os métodos do IAM ou a CLI do Google Cloud.
- Para o Console do Google Cloud, consulte Controle de acesso por meio do Console do Google Cloud.
- Para os métodos de IAM, consulte Controle de acesso por meio da API.
- Para a CLI
gcloud
, consulte Controle de acesso por meio da ferramenta gcloud.
A seguir
- Saiba mais sobre IAM.
- Conceda papéis do IAM.