Controle de acesso

Nesta página, descrevemos as opções de controle de acesso disponíveis no Cloud Bigtable.

Visão geral

O Bigtable usa o gerenciamento de identidade e acesso (IAM) para fazer o controle de acesso.

Para o Bigtable, é possível configurar o controle de acesso nos níveis de projeto, instância e tabela. Veja a seguir alguns exemplos de como usar o controle de acesso no nível do projeto:

  • Permitir que um usuário leia qualquer tabela do projeto, sem poder alterá-la.
  • Permitir que um usuário leia e edite qualquer tabela do projeto, sem poder gerenciar instâncias.
  • Permitir que um usuário leia e edite qualquer tabela do projeto e gerencie instâncias.

Aqui estão alguns exemplos de como usar o controle de acesso no nível da instância:

  • Permitir que um usuário leia qualquer tabela em apenas uma instância em um projeto que tenha várias instâncias.
  • Permitir que um usuário gerencie apenas uma instância em um projeto que tenha várias instâncias.

Exemplos de como usar o controle de acesso no nível da tabela:

  • Permitir que um usuário grave em uma tabela, mas não leia dela.
  • Permitir que um usuário leia de uma tabela, mas não grave nela.

Para ver uma descrição detalhada do IAM e dos recursos dele, consulte este Guia do desenvolvedor. Especificamente, confira Como conceder, alterar e revogar acesso a recursos.

No Bigtable, não é possível conceder acesso aos seguintes tipos de membros:

Para ver listas das permissões e dos papéis com os quais o Bigtable é compatível, consulte as seções a seguir.

Como ativar a API Bigtable

Para visualizar e atribuir papéis do IAM do Bigtable, é necessário ativar a API Bigtable para o projeto. Você não verá os papéis do Bigtable no Console do Cloud até ativar a API.

Ative a API

Permissões

Nesta seção, resumimos as permissões compatíveis com o Bigtable.

As permissões permitem que os usuários executem ações específicas em recursos do Bigtable. Por exemplo, com as permissões bigtable.instances.list, os usuários podem listar todas as instâncias do Bigtable em um projeto. Não é possível conceder permissões aos usuários diretamente. Em vez disso, é preciso atribuir a cada um deles um papel predefinido ou personalizado, que concederá uma ou mais permissões.

As tabelas a seguir listam as permissões do IAM associadas ao Bigtable:

Nome da permissão do local Descrição
bigtable.locations.list Lista locais do Bigtable.
Nome da permissão de instância Descrição
bigtable.instances.create Criar uma instância do Bigtable.
bigtable.instances.delete Exclua uma instância do Bigtable.
bigtable.instances.get Receber informações sobre uma instância do Bigtable.
bigtable.instances.getIamPolicy Ler listas de controle de acesso (ACLs) da instância. Retorno como políticas do IAM.
bigtable.instances.list Listar as instâncias do Bigtable de um projeto.
bigtable.instances.setIamPolicy Atualizar ACLs.
bigtable.instances.update Atualizar as configurações de uma instância do Bigtable.
Nome da permissão do perfil de aplicativo Descrição
bigtable.appProfiles.create Crie um perfil de aplicativo do Bigtable.
bigtable.appProfiles.delete Excluir um perfil de aplicativo do Bigtable.
bigtable.appProfiles.get Conseguir informações sobre um perfil de aplicativo do Bigtable.
bigtable.appProfiles.list Listar os perfis de aplicativos do Bigtable de uma instância.
bigtable.appProfiles.update Atualizar as configurações de um perfil de aplicativo do Bigtable.
Nome da permissão de backups Descrição
bigtable.backups.create Crie um backup no Bigtable.
bigtable.backups.get Conseguir um backup do Bigtable.
bigtable.backups.list Listar backups do Bigtable.
bigtable.backups.delete Exclua um backup do Bigtable.
bigtable.backups.update Modificar a expiração de um backup do Bigtable.
bigtable.backups.restore Restaure um backup do Bigtable.
Nome da permissão de cluster Descrição
bigtable.clusters.create Crie um cluster do Bigtable.
bigtable.clusters.delete Exclua um cluster do Bigtable.
bigtable.clusters.get Receba informações sobre um cluster do Bigtable.
bigtable.clusters.list Listar os clusters do Bigtable de uma instância.
bigtable.clusters.update Atualizar as configurações de um cluster do Bigtable.
Nome da permissão de tabela Descrição
bigtable.tables.checkConsistency Verificar se uma tabela replicada está atualizada.
bigtable.tables.create Criar uma tabela.
bigtable.tables.delete Excluir uma tabela.
bigtable.tables.generateConsistencyToken Gerar o token para verificar se uma tabela replicada está atualizada.
bigtable.tables.get Conseguir informações sobre uma tabela, incluindo grupos de colunas e configurações individuais.
bigtable.tables.getIamPolicy Ler ACLs da tabela. Retorno como políticas do Cloud IAM.
bigtable.tables.list Listar tabelas em uma instância.
bigtable.tables.mutateRows Modificar linhas em uma tabela ou truncar a tabela.
bigtable.tables.readRows Ler linhas de uma tabela.
bigtable.tables.sampleRowKeys Conseguir uma amostra das chaves de linha usadas em uma tabela.
bigtable.tables.setIamPolicy Atualizar as ACLs de tabela.
bigtable.tables.update Atualizar as configurações de uma tabela, incluindo grupos de colunas e configurações individuais.

A tabela a seguir lista as permissões do IAM associadas ao Key Visualizer:

Nome da permissão do Key Visualizer Descrição
bigtable.keyvisualizer.get Receba informações do Key Visualizer sobre uma tabela, incluindo metadados sobre padrões de acesso e distribuições de chave de linha.
bigtable.keyvisualizer.list Lista as informações do Key Visualizer disponíveis para uma tabela.

Papéis predefinidos

Cada papel predefinido é um grupo de uma ou mais permissões. Por exemplo, roles/bigtable.reader fornece acesso somente leitura a informações sobre instâncias, clusters, tabelas e grupos de colunas do Bigtable, bem como os dados contidos em suas tabelas. Você atribui papéis a usuários ou grupos, o que permite que eles realizem ações nos recursos do seu projeto.

A tabela a seguir lista os papéis predefinidos do Bigtable, incluindo uma lista de permissões associadas a cada um:

Role Permissões Descrição
roles/bigtable.admin

Acesso a todos os recursos do Bigtable:

bigtable.*.*

Veja o acesso aos gráficos de monitoramento no Console do Cloud:

  • monitoring.metricDescriptors.get
  • monitoring.metricDescriptors.list
  • monitoring.timeSeries.list

Acesso a metadados no nível do projeto:

resourcemanager.projects.get

Administra todas as instâncias de um projeto, incluindo os dados armazenados nas tabelas. Pode criar novas instâncias. Destinado a administradores de projeto. Isso inclui o acesso ao Key Visualizer.
roles/bigtable.user

Acesso somente leitura a metadados de instâncias, clusters, tabelas e grupos de colunas:

  • bigtable.*.get
  • bigtable.*.list
  • bigtable.tables.checkConsistency
  • bigtable.tables.generateConsistencyToken

Acesso de leitura e gravação a tabelas:

  • bigtable.tables.mutateRows
  • bigtable.tables.readRows
  • bigtable.tables.sampleRowKeys

Veja o acesso aos gráficos de monitoramento no Console do Cloud:

  • monitoring.metricDescriptors.get
  • monitoring.metricDescriptors.list
  • monitoring.timeSeries.list

Acesso a metadados no nível do projeto:

resourcemanager.projects.get

Dá acesso de leitura e gravação aos dados armazenados nas tabelas. Destinado a contas de serviço ou desenvolvedores de aplicativos. Isso inclui o acesso ao Key Visualizer.
roles/bigtable.reader

Acesso somente leitura a metadados de instâncias, clusters, tabelas e grupos de colunas:

  • bigtable.*.get
  • bigtable.*.list
  • bigtable.tables.checkConsistency
  • bigtable.tables.generateConsistencyToken

Acesso somente leitura a tabelas:

  • bigtable.tables.readRows
  • bigtable.tables.sampleRowKeys

Veja o acesso aos gráficos de monitoramento no Console do Cloud:

  • monitoring.metricDescriptors.get
  • monitoring.metricDescriptors.list
  • monitoring.timeSeries.list

Acesso a metadados no nível do projeto:

resourcemanager.projects.get

Dá acesso somente leitura aos dados armazenados nas tabelas. Destinado a analistas de dados, geradores de painéis e outros cenários de análise de dados. Isso inclui o acesso ao Key Visualizer.
roles/bigtable.viewer

Acesso somente leitura a metadados de instâncias, clusters, tabelas e grupos de colunas:

  • bigtable.appProfiles.get
  • bigtable.appProfiles.list
  • bigtable.clusters.get
  • bigtable.clusters.list
  • bigtable.instances.get
  • bigtable.instances.list
  • bigtable.locations.list
  • bigtable.tables.checkConsistency
  • bigtable.tables.generateConsistencyToken
  • bigtable.tables.get
  • bigtable.tables.list

Veja o acesso aos gráficos de monitoramento no Console do Cloud:

  • monitoring.metricDescriptors.get
  • monitoring.metricDescriptors.list
  • monitoring.timeSeries.list

Acesso a metadados no nível do projeto:

resourcemanager.projects.get

Não fornece acesso a dados. Serve como um conjunto mínimo de permissões para acessar o Console do Cloud para Bigtable. Isso não inclui o acesso ao Key Visualizer.

Papéis personalizados

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

Se o papel personalizado precisar de acesso ao Console do Cloud, identifique as tarefas que os usuários realizarão e certifique-se de que o papel personalizado tenha as permissões necessárias para cada tarefa, como mostrado na tabela abaixo. Se um papel personalizado não tiver todas as permissões necessárias para uma tarefa e um usuário tentar executar essa tarefa, o Console do Cloud não funcionará corretamente.

Tarefa do Console do Cloud Permissões exigidas
Acesso básico ao Console do Cloud
  • bigtable.appProfiles.get
  • bigtable.appProfiles.list
  • bigtable.clusters.get
  • bigtable.clusters.list
  • bigtable.instances.get
  • bigtable.instances.list
  • bigtable.locations.list
  • resourcemanager.projects.get
Criação de uma instância ou cluster

Permissões de acesso básico mais:

  • bigtable.clusters.create
  • bigtable.instances.create
Modificação de uma instância ou cluster

Permissões de acesso básico mais:

  • bigtable.clusters.update
  • bigtable.instances.update
Gerenciamento da configuração de replicação

Permissões de acesso básico mais:

  • bigtable.appProfiles.create
  • bigtable.appProfiles.delete
  • bigtable.appProfiles.update
Exclusão de uma instância ou cluster

Permissões de acesso básico mais:

  • bigtable.clusters.delete
  • bigtable.instances.delete
Monitoramento de uma instância ou cluster

Permissões de acesso básico mais:

  • monitoring.metricDescriptors.get
  • monitoring.metricDescriptors.list
  • monitoring.timeSeries.list

Gerenciamento do IAM no nível do projeto

No nível do projeto, é possível conceder, alterar e revogar papéis de IAM usando o Console do Google Cloud, a API IAM ou a ferramenta de linha de comando gcloud. Para instruções detalhadas consulte Como conceder, alterar e revogar acesso aos membros do projeto.

Gerenciamento do IAM no nível da instância

Veja nesta seção como gerenciar os papéis do IAM no Bigtable no nível da instância.

Antes de começar

Antes de definir os papéis de IAM no nível da instância, verifique se o usuário tem pelo menos um dos seguintes papéis no projeto:

  • Visualizador do Bigtable (recomendado)
  • Leitor do Bigtable
  • Usuário do Bigtable
  • Administrador do Bigtable

Selecione um papel no nível do projeto que não tenha mais permissões do que as necessárias a um usuário em todas as instâncias do projeto. Por isso, conceda o papel Visualizador do Bigtable em quase todos os casos.

Se o usuário não tiver pelo menos um desses papéis no nível do projeto, não terá acesso ao Bigtable por meio do Console do Cloud. O Console do Cloud requer um desses papéis no nível do projeto para que ele possa recuperar informações sobre instâncias e clusters em nome do usuário.

Como conceder papéis de IAM no nível da instância

Você pode conceder qualquer um dos papéis predefinidos do Bigtable às contas de serviço ou usuários no nível da instância. Também é possível conceder qualquer papel personalizado que você tenha definido.

Para conceder um papel predefinido ou personalizado a uma conta de serviço ou um usuário no nível da instância, faça o seguinte:

Console

  1. Acesse a página de instâncias do Bigtable no Console do Cloud.

    Acesse a página "Instâncias".

  2. Marque as caixas ao lado das instâncias dos papéis que você quer gerenciar. Será exibido um painel de informações.

  3. No painel de informações, clique em Permissões.

  4. Em Adicionar membros, digite o endereço de e-mail do usuário ou da conta de serviço que você quer adicionar e clique no endereço de e-mail do usuário ou da conta de serviço.

  5. Clique na lista suspensa Selecionar um papel e clique em Bigtable para selecionar um papel predefinido ou em Personalizado para selecionar um papel personalizado.

  6. Clique no nome de cada papel que você quer atribuir.

  7. Clique em Adicionar. O usuário ou a conta de serviço receberá os papéis que você especificou no nível da instância.

gcloud

  1. Se você não souber o ID da instância, use o comando bigtable instances list para ver uma lista das instâncias do projeto:

    gcloud bigtable instances list
    
  2. Use o comando bigtable instances set-iam-policy:

    gcloud bigtable instances set-iam-policy INSTANCE_ID POLICY_FILE
    

    Preencha o seguinte:

    • INSTANCE_ID: identificador permanente da instância.
    • POLICY_FILE: caminho para um arquivo JSON ou YAML local que contenha uma política de IAM válida.

Gerenciamento de IAM no nível da tabela

Esta seção explica como gerenciar os papéis de IAM do Bigtable no nível da tabela.

Antes de começar

Antes de definir papéis de IAM no nível da tabela para um usuário, verifique se o usuário tem pelo menos um destes papéis de IAM no nível do projeto:

  • Visualizador do Bigtable (recomendado)
  • Leitor do Bigtable
  • Usuário do Bigtable
  • Administrador do Bigtable

Escolha um papel no nível do projeto que não tenha mais permissões do que o usuário realmente precisa. Por isso, conceda o papel Visualizador do Bigtable em quase todos os casos.

Se o usuário não tiver pelo menos um desses papéis no nível do projeto, não terá acesso ao Bigtable por meio do Console do Cloud. O Console do Cloud requer uma desses papéis no nível do projeto para que ele possa recuperar informações sobre instâncias, clusters e tabelas.

Como conceder papéis de IAM no nível da tabela

No nível da tabela, é possível conceder qualquer papel predefinido do Bigtable a um usuário ou uma conta de serviço. Também é possível conceder qualquer papel personalizado que você tenha definido.

Para conceder um papel predefinido ou personalizado a uma conta de serviço ou um usuário no nível da tabela, faça o seguinte:

Console

  1. Acesse a página de instâncias do Bigtable no Console do Cloud.

    Acesse a página "Instâncias".

  2. Clique no nome da instância que contém a tabela que terá o IAM definindo.

  3. Selecione Tabelas no painel de navegação esquerdo.

  4. Marque as caixas ao lado das tabelas com os papéis que você quer gerenciar. Será exibido um painel de informações.

  5. No painel de informações, clique em Permissões.

  6. Em Adicionar membros, digite o endereço de e-mail do usuário ou da conta de serviço que você quer adicionar e clique no endereço de e-mail do usuário ou da conta de serviço.

  7. Clique na lista suspensa Selecionar um papel e clique em Bigtable para selecionar um papel predefinido ou em Personalizado para selecionar um papel personalizado.

  8. Clique no nome de cada papel que você quer atribuir.

  9. Clique em Adicionar. O usuário ou a conta de serviço receberá os papéis que você especificou no nível da tabela.

gcloud

  1. Se você não souber o ID da instância, use o comando bigtable instances list para ver uma lista das instâncias do projeto:

    gcloud bigtable instances list
    
  2. Se você não souber os IDs dos clusters da instância, use o comando bigtable clusters list para ver uma lista de clusters da instância:

    gcloud bigtable clusters list --instances=INSTANCE_ID
    
  3. Use o comando bigtable instances tables set-iam-policy:

    gcloud bigtable instances tables set-iam-policy TABLE_ID \
        --instance=INSTANCE_ID POLICY_FILE
    

    Preencha o seguinte:

    • INSTANCE_ID: identificador permanente da instância.
    • POLICY_FILE: caminho para um arquivo JSON ou YAML local que contenha uma política de IAM válida.

Condições do IAM

As condições do IAM permitem definir e aplicar o controle de acesso condicional baseado em atributos para alguns recursos do Google Cloud, incluindo recursos do Bigtable.

No Bigtable, é possível aplicar o acesso condicional com base nos seguintes atributos:

  • Atributos de data/hora: use para definir o acesso temporário (com validade), programado ou de duração limitada aos recursos do Bigtable. Por exemplo, é possível permitir que um usuário acesse uma tabela até uma data específica.
  • Atributos de recurso: use para configurar o acesso condicional com base em nome, tipo de recurso ou atributos de serviço de recurso. No Bigtable, é possível usar atributos de instâncias, clusters e tabelas para configurar o acesso condicional. Por exemplo, é possível permitir que um usuário gerencie tabelas somente em tabelas que começam com um prefixo específico ou que o usuário acesse apenas uma determinada tabela.

Para mais informações sobre as condições do IAM, consulte a Visão geral das condições.

A seguir

Saiba mais sobre IAM.