Ocultar dados da coluna
Neste documento, mostramos como implementar o mascaramento de dados para ocultar dados sensíveis e confidenciais seletivamente. Ao implementar o mascaramento de dados, você pode oferecer diferentes níveis de visibilidade para diferentes grupos de usuários. Para informações gerais, consulte Introdução ao mascaramento de dados.
Para implementar o mascaramento de dados, adicione uma política de dados a uma coluna. Para adicionar uma política de mascaramento de dados a uma coluna, siga estas etapas:
- Crie uma taxonomia com pelo menos uma tag de política.
- Opcional: conceda o papel Leitor de controle refinado do Data Catalog a um ou mais principais em uma ou mais tags de política criadas.
- Crie até três políticas de dados para a tag de política mapear regras de mascaramento e principais (que representam usuários ou grupos) para essa tag.
- Defina a tag de política em uma coluna. Isso mapeia as políticas de dados associadas à tag de política para a coluna selecionada.
- Atribua usuários que precisam ter acesso a dados mascarados ao papel Leitor mascarado do BigQuery. Como prática recomendada, atribua o papel de leitor mascarado do BigQuery no nível da política de dados. Atribuir o papel no nível do projeto ou em níveis superiores concede aos usuários permissões para todas as políticas de dados no projeto, o que pode levar a problemas causados por permissões em excesso.
É possível usar o console Trusted Cloud ou a API BigQuery Data Policy para trabalhar com políticas de dados.
Quando você conclui essas etapas, os usuários que executam consultas na coluna recebem dados não mascarados, dados mascarados ou um erro de acesso negado, dependendo dos grupos a que eles pertencem e dos papéis que receberam. Para mais informações, consulte Como os papéis de leitor mascarado e leitor de controle refinado interagem.
Como alternativa, é possível aplicar políticas de dados diretamente em uma coluna (Prévia). Para mais informações, consulte Mascarar dados com políticas de dados diretamente em uma coluna.
Mascarar dados com tags de política
Use tags de política para ocultar seletivamente dados sensíveis.
Antes de começar
-
In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.
-
Verify that billing is enabled for your Trusted Cloud project.
-
Enable the Data Catalog and BigQuery Data Policy APIs.
- O BigQuery é ativado de forma automática nos novos projetos, mas talvez seja necessário ativá-lo em um projeto preexistente.
-
Enable the BigQuery API.
- Se você estiver criando uma política de dados que se refira a uma rotina de mascaramento personalizada, crie a UDF de mascaramento associada para que ela esteja disponível nas etapas a seguir.
- Abra a página Taxonomia de tag de política no console doTrusted 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.
- Chame
taxonomies.create
para criar uma taxonomia. - Chame
taxonomies.policytag.create
para criar uma tag de política. - Abra a página Taxonomia de tag de política no console doTrusted Cloud .
- Clique no nome da taxonomia para abrir.
- Selecione uma tag de política.
- Clique em Gerenciar políticas de dados.
- Em Nome da política de dados, digite um nome para a política de dados. O nome da política de dados precisa ser exclusivo no projeto em que a política de dados reside.
- Em Regra de mascaramento, escolha uma regra de mascaramento predefinida ou uma rotina
personalizada. Se você estiver selecionando uma rotina de mascaramento personalizada, verifique
se tem as permissões
bigquery.routines.get
ebigquery.routines.list
no nível do projeto. - Em Principal, digite o nome de um ou mais usuários ou grupos a que você quer conceder acesso mascarado à coluna. Todos os usuários e grupos inseridos aqui recebem o papel Leitor mascarado do BigQuery.
- Clique em Enviar.
Chame o método
create
. Transmita um recursoDataPolicy
que atenda aos seguintes requisitos:- O campo
dataPolicyType
está definido comoDATA_MASKING_POLICY
. - O campo
dataMaskingPolicy
identifica a regra ou rotina de mascaramento de dados a ser usada. - O campo
dataPolicyId
fornece um nome para a política de dados que é exclusiva no projeto em que a política de dados reside.
- O campo
Chame o método
setIamPolicy
e transmita umPolicy
.Policy
precisa identificar os principais que receberam acesso aos dados mascarados e especificarroles/bigquerydatapolicy.maskedReader
para o camporole
.Abra a página do BigQuery no console do Trusted 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.
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
- Abra a página Taxonomia de tag de política no console doTrusted Cloud .
- Clique no nome da taxonomia para abrir.
- Selecione uma tag de política.
- Clique em Gerenciar políticas de dados.
- Também é possível alterar a regra de mascaramento.
- Opcional: adicionar ou remover principais.
- Clique em Enviar.
- Abra a página Taxonomia de tag de política no console doTrusted Cloud .
- Clique no nome da taxonomia para abrir.
- Selecione uma tag de política.
- Clique em Gerenciar políticas de dados.
- Clique em ao lado da política de dados a ser excluída.
- Clique em Enviar.
- Clique em Confirmar.
- O campo
dataPolicyType
está definido comoDATA_MASKING_POLICY
ouRAW_DATA_ACCESS_POLICY
. - O campo
dataMaskingPolicy
identifica a regra ou rotina de mascaramento de dados a ser usada. - O campo
dataPolicyId
fornece um nome para a política de dados que é exclusiva no projeto em que a política de dados reside. -
bigquery.tables.update
-
bigquery.tables.setColumnDataPolicy
-
bigquery.dataPolicies.get
- Use o recurso
v2.projects.locations.datapolicies
. - Não é possível aplicar tags de política e políticas de dados à mesma coluna.
- É possível anexar no máximo oito políticas de dados a uma coluna.
- Uma tabela pode referenciar no máximo 1.000 políticas de dados exclusivas pelas colunas.
- Não é possível aplicar tags de política e políticas de dados à mesma coluna.
- Uma consulta pode referenciar no máximo 2.000 políticas de dados.
- Só é possível excluir uma política de dados se nenhuma coluna de tabela a referenciar.
- Se um usuário tiver apenas a função
maskedAccess
, a chamada de APItabledata.list
vai falhar. - As operações de cópia de tabela falham em tabelas protegidas por políticas de dados de coluna se o usuário não tiver acesso aos dados brutos.
- As operações de cópia de tabelas entre regiões não são compatíveis com tabelas protegidas por políticas de dados de coluna.
- As políticas de dados de coluna não estão disponíveis nas regiões do BigQuery Omni.
- O SQL legado falha se a tabela de destino tiver políticas de dados de coluna.
- Os jobs de carregamento não são compatíveis com esquemas especificados pelo usuário com políticas de dados de coluna.
- Se você substituir uma tabela de destino, o sistema vai remover todas as tags de política atuais da tabela, a menos que use a flag
--destination_schema
para especificar um esquema com políticas de dados de coluna. - Por padrão, o mascaramento de dados não é compatível com colunas particionadas ou em cluster. Essa é uma limitação geral do mascaramento de dados, não específica das políticas de dados de coluna. O mascaramento de dados em colunas particionadas ou em cluster pode aumentar significativamente os custos de consulta.
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
API
Para usar as taxonomias atuais, chame
taxonomies.import
no lugar das duas primeiras etapas do procedimento a seguir.
Trabalhar com tags de política
Para conferir mais informações sobre como trabalhar com tags de política, como vê-las ou atualizá-las, consulte Trabalhar com tags de política. Para práticas recomendadas, consulte Práticas recomendadas para uso de tags de política no BigQuery.
Criar políticas de dados
A conta de usuário ou de serviço que cria uma política de dados precisa ter as permissões
bigquery.dataPolicies.create
, bigquery.dataPolicies.setIamPolicy
e
datacatalog.taxonomies.get
.
As permissões bigquery.dataPolicies.create
e bigquery.dataPolicies.setIamPolicy
estão incluídas nos papéis de administrador de políticas de dados, administrador e proprietário de dados do BigQuery.
A permissão datacatalog.taxonomies.get
está incluída nos papéis de Administrador do Data Catalog e Leitor do Data Catalog.
Se você estiver criando uma política de dados que se refira a uma rotina de mascaramento personalizada, também será preciso ter permissões de rotina.
No caso de mascaramento personalizado, conceda aos usuários as funções de administrador do BigQuery ou proprietário de dados do BigQuery para garantir que eles tenham as permissões necessárias para rotinas e políticas de dados.
Você pode criar até nove políticas de dados para uma tag de política. Uma dessas políticas é reservada para configurações de controle de acesso no nível da coluna.
Console
API
Definir tags de política nas colunas
Defina uma política de dados em uma coluna anexando a tag de política associada à política de dados à coluna.
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 doTrusted 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 Trusted Cloud console.
bq
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.
Aplicar controle de acesso
Ao criar uma política de dados para uma tag de política, o controle de acesso é aplicado automaticamente. Todas as colunas com essa tag de política aplicada retornam dados mascarados em resposta a consultas de usuários que têm o papel Leitor mascarado.
Para interromper a aplicação do controle de acesso, primeiro é necessário excluir todas as políticas de dados associadas às tags de política na taxonomia. Para mais informações, consulte Aplicar controle de acesso.
Verificar as permissões do IAM em uma política de dados
Para conferir quais permissões você tem em uma política de dados, chame o método
testIamPermissions
.
Atualizar políticas de dados
A conta de usuário ou de serviço que atualiza uma política de dados precisa ter a permissão bigquery.dataPolicies.update
.
Se você estiver atualizando a tag de política a que a política de dados está associada, também precisará da permissão datacatalog.taxonomies.get
.
Se você estiver atualizando os principais associados à política de dados, precisará da permissão bigquery.dataPolicies.setIamPolicy
.
As permissões bigquery.dataPolicies.update
e bigquery.dataPolicies.setIamPolicy
estão incluídas nos papéis de administrador de políticas de dados, administrador e proprietário de dados do BigQuery.
A permissão datacatalog.taxonomies.get
está incluída nos papéis de Administrador do Data Catalog e Leitor do Data Catalog.
Console
API
Para alterar a regra de mascaramento de dados, chame o método
patch
e transmita um recurso
DataPolicy
com um campo dataMaskingPolicy
atualizado.
Para alterar os principais associados a uma política de dados, chame o método
setIamPolicy
e transmita um
Policy
que atualize
os principais que recebem acesso aos dados mascarados.
Excluir políticas de dados
A conta de usuário ou de serviço que cria uma política de dados precisa ter a permissão bigquery.dataPolicies.delete
. Essa permissão está incluída nos papéis de administrador de políticas de dados do BigQuery, administrador do BigQuery e proprietário de dados do BigQuery.
Console
API
Para excluir uma política de dados, chame o
método
delete
.
Mascarar dados aplicando políticas de dados a uma coluna
Como alternativa à criação de tags de política, você pode criar políticas de dados e aplicá-las diretamente em uma coluna.
Trabalhar com políticas de dados
É possível criar, atualizar e excluir políticas de dados usando a API BigQuery Data Policy. Para aplicar uma política de dados diretamente em uma coluna, não é possível usar a página Taxonomias de tag de política no console do Trusted Cloud .
Para trabalhar com políticas de dados, use o recurso
v2.projects.locations.datapolicies
.
Criar políticas de dados
A conta de usuário ou de serviço que cria uma política de dados precisa ter a permissão bigquery.dataPolicies.create
.
A permissão bigquery.dataPolicies.create
está incluída nos papéis de administrador de políticas de dados, administrador e proprietário de dados do BigQuery.
A permissão datacatalog.taxonomies.get
está incluída nos papéis de Administrador do Data Catalog e Leitor do Data Catalog.
Se você estiver criando uma política de dados que se refira a uma rotina de mascaramento personalizada, também será preciso ter permissões de rotina.
Se você usa mascaramento personalizado, conceda aos usuários a função de proprietário de dados do BigQuery para garantir que eles tenham as permissões necessárias para rotinas e políticas de dados.
Para criar uma política de dados, chame o
método
create
. Transmita um recurso
DataPolicy
que atenda aos seguintes requisitos:
Atualizar políticas de dados
A conta de usuário ou de serviço que atualiza uma política de dados precisa ter a permissão bigquery.dataPolicies.update
.
A permissão bigquery.dataPolicies.update
está incluída nos papéis de administrador de políticas de dados, administrador e proprietário de dados do BigQuery.
Para alterar a regra de mascaramento de dados, chame o método
patch
e transmita um recurso
DataPolicy
com um campo dataMaskingPolicy
atualizado.
Também é possível conceder acesso refinado de controle de acesso a políticas de dados.
As permissões para conceder controle de acesso granular a políticas de dados e gerenciar políticas de dados são diferentes. Para controlar as permissões de controle de acesso refinado, atualize
o campo grantees
da política de dados. Para controlar o acesso às políticas de dados, defina os papéis do IAM usando o método
setIamPolicy
.
Para definir beneficiários em uma política de dados, use o método v2 patch
. Para gerenciar as permissões da política de dados, use o método v1
setIamPolicy
.
Para conceder controle de acesso granular às políticas de dados, chame o método
patch
e transmita um recurso
DataPolicy
com um campo grantees
atualizado.
Excluir políticas de dados
A conta de usuário ou de serviço que cria uma política de dados precisa ter a permissão bigquery.dataPolicies.delete
. Essa permissão está incluída nos papéis de administrador de políticas de dados do BigQuery, administrador do BigQuery e proprietário de dados do BigQuery.
Para excluir uma política de dados, chame o
método
delete
.
Atribuir uma política de dados diretamente a uma coluna
É possível atribuir uma política de dados diretamente a uma coluna sem usar tags de política.
Antes de começar
Para receber as permissões necessárias para atribuir uma política de dados diretamente a uma coluna, peça ao administrador para conceder a você o papel do IAM de Administrador de políticas de dados do BigQuery (roles/bigquerydatapolicy.admin
) na sua tabela.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém as permissões necessárias para atribuir uma política de dados diretamente a uma coluna. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As permissões a seguir são necessárias para atribuir uma política de dados diretamente a uma coluna:
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Atribuir uma política de dados
Para atribuir uma política de dados diretamente a uma coluna, faça o seguinte:
SQL
Para anexar uma política de dados a uma coluna, use as instruções DDL CREATE
TABLE
, ALTER TABLE ADD
COLUMN
ou ALTER COLUMN SET
OPTIONS
.
O exemplo a seguir usa a instrução CREATE TABLE
e define políticas de dados
em uma coluna:
CREATE TABLE myproject.table1 ( name INT64 OPTIONS (data_policies=["{'name':'myproject.region-us.data_policy_name1'}", "{'name':'myproject.region-us.data_policy_name2'}"]) );
O exemplo a seguir usa o ALTER COLUMN SET OPTIONS
para adicionar uma política de dados
a uma coluna existente em uma tabela:
ALTER TABLE myproject.table1 ALTER COLUMN column_name SET OPTIONS ( data_policies += ["{'name':'myproject.region-us.data_policy_name1'}", "{'name':'myproject.region-us.data_policy_name2'}"]);
API
Para atribuir uma política de dados a uma coluna, chame o método
patch
na tabela
e atualize o esquema da tabela com as políticas de dados aplicáveis.
Limitações
A atribuição de uma política de dados diretamente a uma coluna está sujeita às seguintes limitações: