Controle de acesso do Bigtable com o IAM
Nesta página, descrevemos as opções de controle de acesso no Bigtable.
Visão geral
O Bigtable usa o gerenciamento de identidade e acesso (IAM) para fazer o controle de acesso. Você define políticas do IAM em recursos para controlar quem tem qual acesso a quais recursos.
Os recursos do Bigtable são organizados em uma hierarquia. Um projeto do Google Cloud é o pai de uma instância do Bigtable, que é o pai dos clusters e das tabelas. Uma tabela é o pai das visualizações autorizadas dele, enquanto um cluster é o pai de seus backups. Você pode configurar o controle de acesso em cada nível.
Se você tiver permissões em um nível, também terá permissões abaixo desse nível. Por exemplo, se você tiver acesso no nível do projeto, terá acesso às instâncias, clusters, tabelas e visualizações autorizadas nesse projeto. Se você tiver acesso a uma visualização autorizada, não terá acesso automático a recursos de nível mais alto que são pais da visualização autorizada, como a tabela e a instância. Esse comportamento é chamado de herança de políticas.
Para mais informações sobre a hierarquia do IAM, consulte Herança de políticas do IAM.
Confira 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.
Os exemplos de uso do controle de acesso no nível da instância incluem:
- 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.
Confira abaixo alguns exemplos de como usar o controle de acesso no nível do backup:
- Impedir que um usuário exclua um backup.
- Impeça que um usuário restaure o backup.
Exemplos de como usar o controle de acesso no nível da visualização autorizada:
- Permitir que um usuário leia uma visualização autorizada, mas não a modifique.
- Permitir que um usuário acesse dados de apenas uma das várias visualizações autorizadas de uma tabela.
Para ver uma descrição detalhada do IAM e dos recursos dele, consulte este Guia do desenvolvedor. Consulte, especificamente, Como conceder, alterar e revogar acesso.
No Bigtable, não é possível conceder acesso aos seguintes tipos de principais:
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 vai conseguir acessar os papéis do Bigtable no console do Google Cloud até ativar 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 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.delete |
Exclua um backup do Bigtable. |
bigtable.backups.get |
Conseguir informações sobre um backup do Bigtable. |
bigtable.backups.getIamPolicy |
Ler as listas de controle de acesso (ACL) de um backup. Retorno como políticas do IAM. |
bigtable.backups.list |
Listar backups do Bigtable. |
bigtable.backups.restore |
Restaurar de um backup do Bigtable. |
bigtable.backups.testIamPermissions |
Receber as permissões do autor da chamada em um backup especificado. |
bigtable.backups.read |
Ler de um backup do Bigtable. |
bigtable.backups.setIamPolicy |
Atualizar ACLs de backup. |
bigtable.backups.update |
Modificar a expiração de 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 para blocos quentes | Descrição |
---|---|
bigtable.hotTablets.list |
Listar os blocos quentes de um cluster. |
Nome da permissão de instância | Descrição |
---|---|
bigtable.instances.create |
Criar uma instância do Bigtable. |
bigtable.instances.createTagBinding |
Criar uma tag. |
bigtable.instances.delete |
Exclua uma instância do Bigtable. |
bigtable.instances.deleteTagBinding |
Excluir uma tag |
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.listEffectiveTagBindings |
Listar todas as tags em vigor para uma instância. |
bigtable.instances.listTagBindings |
Listar as tags de uma instância. |
bigtable.instances.ping |
Enviar solicitações de preparação do canal. |
bigtable.instances.setIamPolicy |
Atualizar ACLs. |
bigtable.instances.update |
Atualizar as configurações de uma instância do Bigtable. |
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. |
Nome da permissão do local | Descrição |
---|---|
bigtable.locations.list |
Lista locais 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. Isso inclui informações sobre a tabela, como grupos de colunas e configurações individuais. |
bigtable.tables.sampleRowKeys |
Conseguir uma amostra das chaves de linha usadas em uma tabela. |
bigtable.tables.setIamPolicy |
Atualizar as ACLs de tabela. |
bigtable.tables.undelete |
Recuperar uma tabela excluída. |
bigtable.tables.update |
Atualizar as configurações de uma tabela, incluindo grupos de colunas e configurações individuais. |
Nome da permissão do local | Descrição |
---|---|
bigtable.locations.list |
Lista locais do Bigtable. |
nome da permissão de visualização autorizada | Descrição |
---|---|
bigtable.authorizedViews.create |
Crie uma visualização autorizada. |
bigtable.authorizedViews.delete |
Excluir uma visualização autorizada. |
bigtable.authorizedViews.get |
Receba informações sobre uma visualização autorizada. |
bigtable.authorizedViews.getIamPolicy |
Ver o controle de acesso de uma visualização autorizada. Retorno como políticas do IAM. |
bigtable.authorizedViews.list |
Listar visualizações autorizadas em uma tabela. |
bigtable.authorizedViews.mutateRows |
Modificar linhas em uma visualização autorizada. |
bigtable.authorizedViews.readRows |
Leia linhas de uma visualização autorizada. |
bigtable.authorizedViews.sampleRowKeys |
Receba uma amostra das chaves de linha usadas em uma visualização autorizada. |
bigtable.authorizedViews.setIamPolicy |
Atualizar políticas de controle de acesso para uma visualização autorizada. |
bigtable.authorizedViews.update |
Atualize as configurações de uma visualização autorizada. |
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 | Permissions |
---|---|
Bigtable Administrator( Administers all Bigtable instances within a project, including the data stored within tables. Can create new instances. Intended for project administrators. Lowest-level resources where you can grant this role:
|
|
Bigtable Reader( Provides read-only access to the data stored within Bigtable tables. Intended for data scientists, dashboard generators, and other data-analysis scenarios. Lowest-level resources where you can grant this role:
|
|
Bigtable User( Provides read-write access to the data stored within Bigtable tables. Intended for application developers or service accounts. Lowest-level resources where you can grant this role:
|
|
Bigtable Viewer( Provides no data access. Intended as a minimal set of permissions to access the Google Cloud console for Bigtable. Lowest-level resources where you can grant this role:
|
|
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.
Caso seu papel personalizado precise oferecer acesso ao console do Google Cloud, precisa identificar as tarefas que os usuários vão realizar e garantir que os recursos tem as permissões necessárias para cada tarefa, conforme mostrado na tabela a seguir. Se um papel personalizado não tiver todas as permissões necessárias para uma tarefa e uma o usuário tentar realizar essa tarefa, o console do Google Cloud não vai funcionar corretamente.
Tarefa do Console do Google Cloud | Permissões necessárias |
---|---|
Acesso básico ao Console do Google Cloud |
|
Criação de uma instância ou cluster |
Permissões de acesso básico mais:
|
Modificação de uma instância ou cluster |
Permissões de acesso básico mais:
|
Gerenciamento da configuração de replicação |
Permissões de acesso básico mais:
|
Exclusão de uma instância ou cluster |
Permissões de acesso básico mais:
|
Monitoramento de uma instância ou cluster |
Permissões de acesso básico mais:
|
Criar e atualizar uma tabela |
Permissões de acesso básico mais:
|
Restaurar um backup |
Permissões de acesso básico mais:
|
Gerenciamento do IAM
Nesta seção, explicamos como gerenciar os papéis do IAM e as permissões relacionadas no nível do projeto, da instância, da tabela e do backup.
Gerenciamento do IAM no nível do projeto
No nível do projeto, é possível conceder, alterar e revogar papéis do IAM usando o console do Google Cloud, API IAM ou Google Cloud CLI. Para mais instruções, consulte Como conceder, alterar e revogar acesso a recursos.
Depois de criar um projeto, é possível conceder os papéis do IAM no nível do projeto a usuários com base nos níveis de acesso específicos.
Funções exigidas
Antes de definir papéis do IAM no nível da instância, da tabela, do backup ou da visualização autorizada para um usuário, verifique se ele tem pelo menos um dos seguintes nível do projeto: Papéis do IAM:
- 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 necessidades em todas as instâncias, tabelas, backups ou visualizações autorizadas no projeto. Por isso, é preciso conceder o papel Leitor 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, ele não vão ter acesso ao Bigtable pela console do Google Cloud. O console do Google Cloud requer um desses papéis no nível do projeto para recuperar informações sobre instâncias, clusters, tabelas ou backups 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
Acesse a página "Instâncias do Bigtable" no console do Google Cloud.
Marque as caixas ao lado das instâncias dos papéis que você quer gerenciar. Será exibido um painel de informações.
No painel de informações, clique em Permissões.
Em Adicionar principais, 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.
Clique na lista suspensa Selecionar papel e selecione Bigtable para selecionar um papel predefinido ou Personalizado para e selecionar um papel personalizado.
Clique no nome de cada papel que você quer atribuir.
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
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
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.
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
Acesse a página "Instâncias do Bigtable" no console do Google Cloud.
Clique no nome da instância que contém a tabela que terá o IAM definindo.
Selecione Tabelas no painel de navegação esquerdo.
Marque as caixas ao lado das tabelas com os papéis que você quer gerenciar. Será exibido um painel de informações.
No painel de informações, clique em Permissões.
Em Adicionar principais, 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.
Clique na lista suspensa Selecionar papel e selecione Bigtable para selecionar um papel predefinido ou Personalizado para e selecionar um papel personalizado.
Clique no nome de cada papel que você quer atribuir.
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
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
Se você não souber os IDs de cluster da instância, use o comando
bigtable instances tables list
para ver uma lista de clusters na instância:gcloud bigtable instances tables list --instances=INSTANCE_ID
Preencha o seguinte:
- INSTANCE_ID: identificador permanente da instância
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:
- TABLE_ID: identificador permanente da tabela.
- 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.
Como conceder papéis do IAM no nível de backup
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 instância, faça o seguinte:
gcloud
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
Se você não souber os IDs de backup em uma instância, use o comando
bigtable instances backups list
para ver uma lista de backups na instância.gcloud bigtable backups list --instances=INSTANCE_ID
Preencha o seguinte:
- INSTANCE_ID: identificador permanente da instância
Use o comando
gcloud bigtable backups set-iam-policy
:gcloud bigtable backups set-iam-policy BACKUP_ID \ --instance=INSTANCE_ID \ --cluster=CLUSTER_ID \ POLICY_FILE
Preencha o seguinte:
- BACKUP_ID: o identificador permanente do backup.
- INSTANCE_ID: identificador permanente da instância
TABLE_ID
: o identificador permanente da tabela.POLICY_FILE
: caminho para um arquivo JSON ou YAML local que contenha uma política de IAM válida.
Como conceder papéis do IAM autorizados no nível da visualização
No nível da visualização autorizada, é possível conceder qualquer um Papéis predefinidos do Bigtable para uma conta de serviço ou usuário. 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 de usuário no nível da visualização autorizada, execute o seguinte:
gcloud
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
Se você não souber os IDs de cluster da instância, use o comando
bigtable instances tables list
para ver uma lista de clusters na instância:gcloud bigtable instances tables list --instances=INSTANCE_ID
Se você não souber o ID da visualização, use o comando
bigtable authorized-views list
para conferir uma lista de todas as visualizações autorizadas da tabela.gcloud bigtable instances tables authorized-views list \ --instance=INSTANCE_ID \ --table=TABLE_ID
Use o comando
bigtable authorized-views set-iam-policy
:gcloud bigtable authorized-views set-iam-policy TABLE_ID \ AUTHORIZED_VIEW_ID --instance=INSTANCE_ID POLICY_FILE
Preencha o seguinte:
INSTANCE_ID
: identificador permanente da instânciaTABLE_ID
: identificador permanente da tabela.AUTHORIZED_VIEW_ID
: o identificador permanente da visualizaçãoPOLICY_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, tabelas, backups e visualizações autorizadas para configurar o acesso condicional. Por exemplo, você pode permitir que um usuário gerencie somente em tabelas que começam com um prefixo específico, ou você pode permitir que o usuário acesse apenas uma tabela específica.
Para mais informações sobre as condições do IAM, consulte a Visão geral das condições.
A seguir
Saiba mais sobre IAM.