Como restringir o acesso com o controle de acesso no nível da coluna
Nesta página, explicamos como usar o controle de acesso no nível da coluna do BigQuery para restringir o acesso aos dados do BigQuery no nível da coluna. Para informações gerais sobre o controle de acesso no nível da coluna, consulte Introdução ao controle de acesso no nível da coluna do BigQuery.
As instruções nesta página usam o BigQuery e o Data Catalog.
Você precisa atualizar o esquema da tabela para definir uma tag de política em uma coluna. É possível usar o console do Google Cloud, a ferramenta de linha de comando bq e a API BigQuery para definir uma tag de política em uma coluna. Além disso, é possível criar uma tabela, especificar o esquema e tags de política em uma operação, usando as seguintes técnicas:
- os comandos
bq mk
ebq load
da ferramenta de linha de comando bq. - O método da API
tables.insert
. - Página Criar tabela no console do Google Cloud Se você usa o console do Google Cloud, selecione Editar como texto ao adicionar ou editar o esquema.
Para melhorar o controle de acesso no nível da coluna, é possível usar o mascaramento de dados dinâmicos. O mascaramento de dados permite mascarar dados confidenciais substituindo o conteúdo nulo, padrão ou com hash no lugar do valor real da coluna.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Enable the Data Catalog and BigQuery Data Policy APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Enable the Data Catalog and BigQuery Data Policy APIs.
- O BigQuery é ativado automaticamente nos novos projetos, mas talvez seja
necessário ativá-lo em um projeto preexistente.
Enable the BigQuery API.
Papéis e permissões
Há vários papéis relacionados a tags de política para usuários e contas de serviço.
- Os usuários ou as contas de serviço que administram as tags de política precisam ter o papel Administrador das tags de política do Data Catalog. O papel de administrador de tags de política pode gerenciar taxonomias e tags de política, além de conceder ou remover papéis do IAM associados a tags de política.
- Usuários ou contas de serviço que aplicam o controle de acesso para controle de acesso no nível da coluna precisam ter o papel de administrador do BigQuery ou o papel de proprietário de dados do BigQuery. Os papéis do BigQuery podem gerenciar políticas de dados, que são usadas para aplicar o controle de acesso em uma taxonomia.
- Para visualizar as taxonomias e as tags de política de todos os projetos em uma organização no Console do Google Cloud, os usuários precisam do papel Leitor da organização. Caso contrário, o console exibe apenas taxonomias e tags de política associados ao projeto selecionado.
- Os usuários ou contas de serviço que consultam dados protegidos pelo controle de acesso no nível da coluna precisam ter o papel Leitor refinado do Data Catalog para acessar esses dados.
Para mais informações sobre todos os papéis relacionados a tags de política, consulte Papéis usados com controle de acesso no nível da coluna.
O papel Administrador de tags de política do Data Catalog
O papel Administrador de tags de política do Data Catalog pode criar e gerenciar tags de política de dados.
Para conceder o papel de administrador de tag de política, você precisa
ter a permissão resourcemanager.projects.setIamPolicy
no projeto para
o qual você quer conceder o papel. Se você não tiver a permissão resourcemanager.projects.setIamPolicy
, peça para um proprietário do projeto conceder a você a permissão ou execute as etapas a seguir.
No console do Google Cloud, abra a página IAM.
Se o endereço de e-mail do usuário a quem o papel será concedido estiver na lista, selecione o endereço de e-mail e clique em Editar (o ícone de lápis). Em seguida, clique em Adicionar outro papel.
Se o endereço de e-mail do usuário não estiver na lista, clique em
Adicionar e digite o endereço de e-mail na caixa Novos principais.Clique na lista suspensa Selecionar um papel.
Clique em Data Catalog e em Administrador de tags de política.
Clique em Salvar.
Os papéis "Administrador" e "Proprietário de dados" do BigQuery
Os papéis Administrador do BigQuery e Proprietário de dados podem gerenciar políticas de dados.
Para conceder qualquer um desses papéis, você precisa
ter a permissão resourcemanager.projects.setIamPolicy
no projeto em que
pretende conceder o papel. Se você não tiver a permissão resourcemanager.projects.setIamPolicy
, peça para um proprietário do projeto conceder a você a permissão ou execute as etapas a seguir.
No console do Google Cloud, abra a página IAM.
Se o endereço de e-mail do usuário a quem o papel será concedido estiver na lista, selecione o endereço de e-mail e clique em Editar (o ícone de lápis). Em seguida, clique em Adicionar outro papel.
Se o endereço de e-mail do usuário não estiver na lista, clique em
Adicionar e digite o endereço de e-mail na caixa Novos principais.Clique na lista suspensa Selecionar um papel.
Clique em BigQuery e depois em BigQuery ou BigQuery.
Clique em Salvar.
O papel Leitor da organização
O papel Leitor da organização permite que os usuários vejam detalhes sobre o recurso
da organização. Para conceder esse papel, é preciso ter a
permissão resourcemanager.organizations.setIamPolicy
na organização.
O papel Leitor refinado do Data Catalog
Os usuários que precisem de acesso aos dados protegidos com controle de acesso em nível de coluna precisam do papel Leitor refinado do Data Catalog. Esse papel é atribuído aos principais como parte da configuração de uma tag de política.
Para conceder a um usuário o papel Leitor refinado em uma tag de política, é necessário ter a
permissão datacatalog.taxonomies.setIamPolicy
no projeto que contém a taxonomia dessa tag. Se você não tiver a permissão datacatalog.taxonomies.setIamPolicy
, peça ao proprietário do projeto que conceda a você a permissão ou execute a ação por você.
Para mais instruções, consulte Definir permissões nas tags de política.
Configurar o controle de acesso no nível da coluna
Configure o controle de acesso no nível da coluna concluindo estas tarefas:
- Crie uma taxonomia de tags de política.
- Associe os principais às tags de política e conceda a eles o papel Leitor refinado do Data Catalog.
- Associe as tags de política às colunas da tabela do BigQuery.
- Aplique o controle de acesso à taxonomia que contém as tags de política.
Criar taxonomias
A conta de usuário ou de serviço que cria uma taxonomia precisa receber o papel de administrador de tags de política do Data Catalog.
Console
- Abra a página Taxonomia de tag de política no console do Google Cloud.
- Clique em Criar taxonomia.
Na página Nova taxonomia:
- Em Nome da taxonomia, insira o nome da taxonomia que você quer criar.
- Em Descrição, insira uma descrição.
- Se necessário, altere o projeto listado em Projeto.
- Se necessário, altere o local listado em Local.
- Em Tags de política, insira o nome e a descrição da tag de política.
- Para adicionar uma tag de política filha a uma tag de política, clique em Adicionar subtag.
- Para adicionar uma nova tag de política no mesmo nível de outra tag de política, clique em + Adicionar tag de política.
- Continue adicionando tags de política e tags de política filha conforme necessário para sua taxonomia.
- Quando terminar de criar tags de política para sua hierarquia, clique em Criar.
API
Para usar as taxonomias atuais, chame
taxonomies.import
no lugar das duas primeiras etapas do procedimento a seguir.
- Chame
taxonomies.create
para criar uma taxonomia. - Chame
taxonomies.policytag.create
para criar uma tag de política.
Definir permissões para tags de política
A conta de usuário ou de serviço que cria uma taxonomia precisa receber o papel de administrador de tags de política do Data Catalog.
Console
Abra a página Taxonomia de tag de política no console do Google Cloud.
Clique no nome da taxonomia que contém as tags de política relevantes.
Selecione uma ou mais tags de política.
Se o Painel de informações estiver oculto, clique em Mostrar painel de informações.
No Painel de informações, é possível ver os papéis e principais das tags de política selecionadas. Adicione o papel Administrador de tags de política a contas que criarão e gerenciarão tags de política. Adicione o papel Leitor refinado às contas que se destinam a ter acesso aos dados protegidos pelo controle de acesso no nível da coluna. Você também pode usar esse painel para remover papéis de contas ou modificar outras permissões.
Clique em Salvar.
API
Chame
taxonomies.policytag.setIamPolicy
para conceder acesso a uma tag de política atribuindo principais aos papéis
apropriados.
Definir tags de política nas colunas
A conta de usuário ou serviço que define uma tag de política precisa das
permissões datacatalog.taxonomies.get
e bigquery.tables.setCategory
.
datacatalog.taxonomies.get
está incluído nos
papéis de administrador de tags de política do Data Catalog e de visualizador do projeto.
bigquery.tables.setCategory
está incluído nos papéis Administrador do BigQuery (roles/bigquery.admin
) e de Proprietário de dados do BigQuery (roles/bigquery.dataOwner
).
Para visualizar taxonomias e tags de política em todos os projetos de uma organização no
Console do Google Cloud, os usuários precisam da permissão resourcemanager.organizations.get
, incluída no papel Leitor da organização.
Console
Defina a tag de política modificando um esquema usando o console do Google Cloud.
Abra a página do BigQuery no console do Google Cloud.
No BigQuery Explorer, localize e selecione a tabela que você quer atualizar. O esquema da tabela será aberto.
Clique em Editar esquema.
Na tela Esquema atual, selecione a coluna de destino e clique em Adicionar tag de política.
Na tela Adicionar tag de política, localize e selecione a tag de política que você quer aplicar à coluna.
Clique em Selecionar. A tela deve ser semelhante a esta:
Clique em Salvar.
bq
Salve o esquema para um arquivo local.
bq show --schema --format=prettyjson \ project-id:dataset.table > schema.json
em que:
- project-id é o ID do projeto;
- dataset é o nome do conjunto de dados que contém a tabela que você está atualizando;
- table é o nome da tabela que você está atualizando.
Modifique o schema.json para definir uma tag de política em uma coluna. Para o valor do campo
names
depolicyTags
, use o nome do recurso da tag de política.[ ... { "name": "ssn", "type": "STRING", "mode": "REQUIRED", "policyTags": { "names": ["projects/project-id/locations/location/taxonomies/taxonomy-id/policyTags/policytag-id"] } }, ... ]
Atualize o esquema.
bq update \ project-id:dataset.table schema.json
API
Para tabelas existentes, chame tables.patch
. Para novas tabelas, chame
tables.insert
. Use a
propriedade schema
do objeto Table
que você transmite
para definir uma tag de política na definição do esquema. Consulte o esquema de exemplo
de linha de comando para conferir como definir uma tag de política.
Ao trabalhar com uma tabela atual, o método tables.patch
é preferível,
porque o método tables.update
substitui todo o recurso da tabela.
Outras maneiras de definir tags de política em colunas
Você também pode definir tags de política quando:
- Use
bq mk
para criar uma tabela. Passe um esquema para usar na criação da tabela. - Use
bq load
para carregar dados em uma tabela. Passe um esquema para usar ao carregar a tabela.
Para informações gerais sobre o esquema, consulte Como especificar um esquema.
Aplicar controle de acesso
Use estas instruções para ativar ou desativar a aplicação do controle de acesso.
Para aplicar o controle de acesso, é preciso criar uma política de dados. Isso será feito se você aplicar o controle de acesso usando o console do Google Cloud. Se você quer aplicar o controle de acesso usando a API BigQuery Data Policy, é preciso criar essa política explicitamente.
A conta de usuário ou de serviço que aplica o controle de acesso precisa ter o papel de administrador ou o de proprietário de dados do BigQuery. Eles também precisam ter o papel de Administrador ou o de Visualizador do Data Catalog.
Console
Para aplicar o controle de acesso, siga as etapas a seguir:
Abra a página Taxonomia de tag de política no console do Google Cloud.
Clique na taxonomia com o controle de acesso no nível da coluna que você quer aplicar:
Se a opção Aplicar controle de acesso ainda não estiver ativada, clique em Aplicar controle de acesso para ativá-la.
Para desativar a aplicação do controle de acesso, se ele estiver ativado, clique em Aplicar controle de acesso para ativar o controle.
Se você tiver políticas de dados associadas a qualquer uma das tags de política na
taxonomia, precisará excluir todas as políticas de dados na taxonomia antes de
interromper a aplicação do controle de acesso. Se você excluir as políticas de dados
usando a API BigQuery Data Policy, será necessário excluir todas as políticas de dados com um
dataPolicyType
de DATA_MASKING_POLICY
. Para mais informações, consulte
Excluir políticas de dados.
API
Para aplicar o controle de acesso, chame
create
e passe para um
recurso DataPolicy
,
em que o campo dataPolicyType
é definido como
COLUMN_LEVEL_SECURITY_POLICY
.
Para interromper a aplicação do controle de acesso, se ele estiver ativado, exclua a política de dados
associada à taxonomia. Para fazer isso, chame o método
delete
para essa política de dados.
Se você tiver políticas de dados associadas a qualquer uma das tags de política na taxonomia, não poderá interromper a aplicação do controle de acesso sem primeiro excluir todas as políticas de dados na taxonomia. Para mais informações, consulte Excluir políticas de dados.
Trabalhar com tags de política
Nesta seção, você aprenderá a visualizar, modificar e excluir tags de política.
Visualizar tags de política
Para visualizar as tags de política criadas para uma taxonomia:
Abra a página Taxonomia de tag de política no console do Google Cloud.
Clique na taxonomia com as tags de política que você quer visualizar. A página Taxonomia mostra as tags de política na taxonomia.
Visualizar tags de política no esquema
É possível visualizar as tags de política aplicadas a uma tabela ao examinar o esquema da tabela. É possível ver o esquema usando o console do Google Cloud, a ferramenta de linha de comando bq, a API BigQuery e as bibliotecas de cliente. Para detalhes sobre como visualizar o esquema, consulte Como conseguir informações da tabela.
Visualizar permissões em tags de política
Abra a página Taxonomia de tag de política no console do Google Cloud.
Clique no nome da taxonomia que contém as tags de política relevantes.
Selecione uma ou mais tags de política.
Se o Painel de informações estiver oculto, clique em Mostrar painel de informações.
No Painel de informações, é possível ver os papéis e principais das tags de política selecionadas.
Atualizar permissões em tags de política
A conta de usuário ou de serviço que cria uma taxonomia precisa receber o papel de administrador de tags de política do Data Catalog.
Console
Abra a página Taxonomia de tag de política no console do Google Cloud.
Clique no nome da taxonomia que contém as tags de política relevantes.
Selecione uma ou mais tags de política.
Se o Painel de informações estiver oculto, clique em Mostrar painel de informações.
No Painel de informações, é possível ver os papéis e principais das tags de política selecionadas. Adicione o papel Administrador de tags de política a contas que criarão e gerenciarão tags de política. Adicione o papel Leitor refinado às contas que se destinam a ter acesso aos dados protegidos pelo controle de acesso no nível da coluna. Você também pode usar esse painel para remover papéis de contas ou modificar outras permissões.
Clique em Salvar.
API
Chame
taxonomies.policytag.setIamPolicy
para conceder acesso a uma tag de política atribuindo principais aos papéis
apropriados.
Recuperar nomes de recursos da tag de política
Você precisa do nome do recurso da tag de política ao aplicá-la a uma coluna.
Para recuperar o nome do recurso da tag de política:
Veja as tags de política da taxonomia que contém a tag de política.
Encontre a tag de política com o nome de recurso você quer copiar.
Clique no ícone Copiar nome da fonte da tag de política.
Limpar tags de política
Atualize o esquema da tabela para limpar uma tag de política de uma coluna. Use o console do Google Cloud, a ferramenta de linha de comando bq e o método da API BigQuery para limpar uma tag de política de uma coluna.
Console
Na página Esquema atual, em Tags de política, clique em X.
bq
Recupere o esquema e salve-o em um arquivo local.
bq show --schema --format=prettyjson \ project-id:dataset.table > schema.json
onde:
- project-id é o ID do projeto;
- dataset é o nome do conjunto de dados que contém a tabela que você está atualizando;
- table é o nome da tabela que você está atualizando.
Modifique o schema.json para limpar uma tag de política de uma coluna.
[ ... { "name": "ssn", "type": "STRING", "mode": "REQUIRED", "policyTags": { "names": [] } }, ... ]
Atualize o esquema.
bq update \ project-id:dataset.table schema.json
API
Chame tables.patch
e use a propriedade schema
para limpar uma tag
de política na definição do esquema. Consulte o esquema de exemplo de linha de comando para ver como
limpar uma tag de política.
Como o método tables.update
substitui todo o recurso da tabela, é melhor
usar o método tables.patch
.
Excluir tags de políticas
Você pode excluir uma ou mais tags de política em uma taxonomia, ou pode excluir a taxonomia e todas as tags de política nela. A exclusão de uma tag de política remove automaticamente a associação entre ela e as colunas em que ela foi aplicada.
Quando você exclui uma tag de política que tem uma política de dados associada a ela, pode levar até 30 minutos para que a política de dados também seja excluída. É possível excluir a política de dados diretamente se você quiser que ela seja excluída imediatamente.
Para excluir uma ou mais tags de política em uma taxonomia, siga estas etapas:
- Abra a página Taxonomia de tag de política no console do Google Cloud.
- Clique no nome da taxonomia que contém as tags a serem excluídas.
- Clique em Editar.
- Clique em ao lado das tags de política que você quer excluir.
- Clique em Salvar.
- Clique em Confirmar.
Para excluir uma taxonomia inteira, siga estas etapas:
- Abra a página Taxonomia de tag de política no console do Google Cloud.
- Clique no nome da taxonomia que contém as tags a serem excluídas.
- Clique em Excluir taxonomia da tag de política.
- Digite o nome da taxonomia e clique em Excluir.
Consultar dados com controle de acesso no nível da coluna
Se um usuário tiver acesso ao conjunto de dados e tiver o papel "Leitor refinado" do Data Catalog, os dados da coluna estarão disponíveis para o usuário. O usuário executa uma consulta normalmente.
Se um usuário tiver acesso ao conjunto de dados, mas não tiver o papel "Leitor refinado" do Data Catalog, os dados da coluna não estarão disponíveis para o usuário. Se esse usuário executar SELECT *
, ele receberá um erro que lista as colunas que o usuário não pode acessar. Para resolver o erro, é possível:
Modifique a consulta para excluir as colunas que o usuário não pode acessar. Por exemplo, se o usuário não tiver acesso à coluna
ssn
, mas tiver acesso às colunas restantes, ele poderá executar a seguinte consulta:SELECT * EXCEPT (ssn) FROM ...
No exemplo anterior, a cláusula
EXCEPT
exclui a colunassn
.Peça ao administrador do Data Catalog para adicionar o usuário no papel de "Leitor refinado" do Data Catalog para a classe de dados relevante. A mensagem de erro fornece o nome completo da tag de política à qual o usuário precisa de acesso.
Perguntas frequentes
A segurança no nível da coluna do BigQuery funciona para visualizações?
Sim. As visualizações são derivadas de uma tabela subjacente. O mesmo controle de acesso no nível da coluna na tabela é aplicado quando as colunas protegidas são acessadas em uma visualização.
Há dois tipos de visualizações no BigQuery: visualizações lógicas e autorizadas. Os dois tipos de visualizações são derivados de uma tabela de origem e são consistentes com o controle de acesso no nível da coluna da tabela.
O controle de acesso no nível da coluna funciona nas colunas STRUCT
ou RECORD
?
Sim. Só é possível aplicar tags de política aos campos de folha, e somente esses campos estão protegidos.
Posso usar o SQL legado e o GoogleSQL?
É possível usar o GoogleSQL para consultar tabelas protegidas pelo controle de acesso no nível da coluna.
Todas as consultas do SQL legado serão rejeitadas se houver alguma tag de política nas tabelas de destino.
As consultas são registradas no Cloud Logging?
A verificação de tags de política é registrada no Logging. Para saber mais, consulte Geração de registros de auditoria para controle de acesso no nível da coluna.
A cópia de uma tabela é afetada pelo controle de acesso no nível da coluna?
Sim. Não é possível copiar colunas se você não tiver acesso a elas.
As operações a seguir verificam as permissões no nível da coluna.
SELECT
consultas com tabelas de destino- Jobs de cópia de tabela
- Jobs de exportação de dados (por exemplo, para o Cloud Storage)
Quando copio dados para uma nova tabela, as tags de política são propagadas automaticamente?
Na maioria dos casos, não. Se você copiar os resultados de uma consulta em uma nova tabela, as tags de política não serão atribuídas automaticamente. Portanto, a nova tabela não tem controle de acesso no nível da coluna. O mesmo acontece se você exportar dados para o Cloud Storage.
A exceção é se você usar um job de cópia de tabela. Como os jobs de cópia de tabela não aplicam nenhuma transformação de dados, as tags de política são propagadas automaticamente para as tabelas de destino.
O controle de acesso no nível da coluna é compatível com a nuvem privada virtual?
Sim, o controle de acesso no nível da coluna e a VPC são compatíveis e complementares.
A VPC aproveita o IAM para controlar o acesso a serviços, como o BigQuery e o Cloud Storage. O controle de acesso no nível da coluna fornece segurança granular de colunas individuais no próprio BigQuery.
Para aplicar a VPC em tags de política e políticas de dados para controle de acesso no nível da coluna e mascaramento de dados dinâmicos, é preciso restringir as seguintes APIs no perímetro:
Resolver problemas
Não consigo ver os papéis do Data Catalog
Se não for possível ver papéis como Leitor refinado do Data Catalog, é possível que você não tenha ativado a API Data Catalog em seu projeto. Para saber como ativar a API Data Catalog, consulte Antes de começar. As funções do Data Catalog devem aparecer alguns minutos depois de você ativar a API Data Catalog.
Não consigo visualizar a página Taxonomias
Você precisa de permissões adicionais para visualizar a página Taxonomia. Por exemplo, o papel Administrador das tags de política do Data Catalog tem acesso à página Taxonomias.
Apliquei tags de política, mas elas não funcionam
Se você ainda estiver recebendo resultados de consulta para uma conta que não deveria ter acesso, é possível que a conta esteja recebendo resultados armazenados em cache. Especificamente, se você executou a consulta com sucesso e aplicou tags de política, poderá receber resultados do cache de resultados da consulta. Por padrão, os resultados da consulta são armazenados em cache por 24 horas. A consulta deve falhar imediatamente se você desativar o cache de resultados. Para mais detalhes sobre o armazenamento em cache, consulte Impacto do controle de acesso no nível da coluna.
Em geral, as atualizações do IAM levam cerca de 30 segundos para serem propagadas. As alterações na hierarquia de tags de política podem levar até 30 minutos para serem propagadas.
Não tenho permissão para ler uma tabela com segurança no nível da coluna
Você precisa do papel de Leitor de controle refinado ou de leitor mascarado em diferentes níveis, como organização, pasta, projeto e tag de política. O papel Leitor de controle refinado concede acesso a dados brutos, enquanto o papel Leitor mascarado concede acesso a dados mascarados. Use o Solucionador de problemas do IAM para verificar essa permissão no nível do projeto.