Mascare dados de colunas
Este documento mostra como implementar a ocultação de dados para ocultar seletivamente dados confidenciais. Ao implementar a ocultação de dados, pode fornecer diferentes níveis de visibilidade a diferentes grupos de utilizadores. Para obter informações gerais, consulte o artigo Introdução à ocultação de dados.
Implementa a ocultação de dados adicionando uma política de dados a uma coluna. Para adicionar uma política de ocultação de dados a uma coluna, tem de concluir os seguintes passos :
- Crie uma taxonomia com, pelo menos, uma etiqueta de política.
- Opcional: conceda a função Leitor detalhado do catálogo de dados a um ou mais responsáveis em uma ou mais das etiquetas de políticas que criou.
- Crie até três políticas de dados para a etiqueta de política, de modo a mapear regras de ocultação e responsáveis (que representam utilizadores ou grupos) para essa etiqueta.
- Defina a etiqueta de política numa coluna. Que mapeia as políticas de dados associadas à etiqueta de política para a coluna selecionada.
- Atribua aos utilizadores que devem ter acesso aos dados ocultados a função de leitor ocultado do BigQuery. Como prática recomendada, atribua a função de leitor com máscara do BigQuery ao nível da política de dados. A atribuição da função ao nível do projeto ou superior concede aos utilizadores autorizações para todas as políticas de dados no âmbito do projeto, o que pode originar problemas causados por autorizações excessivas.
Pode usar a Google Cloud consola ou a API BigQuery Data Policy para trabalhar com políticas de dados.
Quando concluir estes passos, os utilizadores que executam consultas na coluna recebem dados não ocultados, dados ocultados ou um erro de acesso negado, consoante os grupos aos quais pertencem e as funções que lhes foram concedidas. Para mais informações, consulte o artigo Como as funções de leitor oculto e leitor detalhado interagem.
Em alternativa, pode aplicar políticas de dados diretamente numa coluna (Pré-visualização). Para mais informações, consulte o artigo Mascare dados com políticas de dados diretamente numa coluna.
Mascare dados com etiquetas de políticas
Use etiquetas de políticas para ocultar seletivamente dados confidenciais.
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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Data Catalog and BigQuery Data Policy APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Data Catalog and BigQuery Data Policy APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. - O BigQuery é ativado automaticamente em novos projetos, mas
pode ter de o ativar num projeto pré-existente.
Enable the BigQuery API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. - Se estiver a criar uma política de dados que faça referência a uma rotina de ocultação personalizada, crie a UDF de ocultação associada para que esteja disponível nos seguintes passos.
- Abra a página Taxonomias de etiquetas de políticas na Google Cloud consola.
- Clique em Criar taxonomia.
Na página Nova taxonomia:
- Em Nome da taxonomia, introduza o nome da taxonomia que quer criar.
- Em Descrição, introduza uma descrição.
- Se necessário, altere o projeto apresentado em Projeto.
- Se necessário, altere a localização apresentada em Localização.
- Em Etiquetas de políticas, introduza um nome e uma descrição para a etiqueta de política.
- Para adicionar uma etiqueta de política secundária a uma etiqueta de política, clique em Adicionar subetiqueta.
- Para adicionar uma nova etiqueta de política ao mesmo nível que outra etiqueta de política, clique em + Adicionar etiqueta de política.
- Continue a adicionar etiquetas de políticas e etiquetas de políticas para crianças conforme necessário para a sua taxonomia.
- Quando terminar de criar etiquetas de políticas para a sua hierarquia, clique em Criar.
- Ligue
taxonomies.create
para criar uma taxonomia. - Chame
taxonomies.policytag.create
para criar uma etiqueta de política. - Abra a página Taxonomias de etiquetas de políticas na Google Cloud consola.
- Clique no nome da taxonomia para a abrir.
- Selecione uma etiqueta de política.
- Clique em Gerir políticas de dados.
- Em Nome da política de dados, introduza um nome para a política de dados. O nome da política de dados tem de ser exclusivo no projeto em que a política de dados reside.
- Para Regra de ocultação, escolha uma regra de ocultação predefinida ou uma rotina de ocultação personalizada. Se estiver a selecionar uma rotina de ocultação personalizada, certifique-se de que tem as autorizações
bigquery.routines.get
ebigquery.routines.list
ao nível do projeto. - Para Principal, escreva o nome de um ou mais utilizadores ou grupos aos quais quer conceder acesso oculto à coluna. Tenha em atenção que todos os utilizadores e grupos que introduzir aqui recebem a função de leitor com dados ocultados do BigQuery.
- Clique em Enviar.
Chame o método
create
. Transmita um recurso que cumpra os seguintes requisitos:DataPolicy
- O campo
dataPolicyType
está definido comoDATA_MASKING_POLICY
. - O campo
dataMaskingPolicy
identifica a regra de ocultação de dados ou a rotina a usar. - O campo
dataPolicyId
fornece um nome para a política de dados que é exclusivo no projeto em que a política de dados reside.
- O campo
Chame o método
setIamPolicy
e transmita umPolicy
. OPolicy
tem de identificar os principais a quem é concedido acesso aos dados ocultados e especificarroles/bigquerydatapolicy.maskedReader
para o camporole
.Abra a página do BigQuery na Google Cloud consola.
No explorador do BigQuery, localize e selecione a tabela que quer atualizar. É apresentado o esquema da tabela.
Clique em Editar esquema.
No ecrã Esquema atual, selecione a coluna de destino e clique em Adicionar etiqueta de política.
No ecrã Adicione uma etiqueta de política, localize e selecione a etiqueta de política que quer aplicar à coluna.
Clique em Selecionar. O seu ecrã deve ser semelhante ao seguinte:
Clique em Guardar.
Escreva o esquema num ficheiro local.
bq show --schema --format=prettyjson \ project-id:dataset.table > schema.json
where:
- project-id é o ID do seu projeto.
- dataset é o nome do conjunto de dados que contém a tabela que está a atualizar.
- table é o nome da tabela que está a atualizar.
Modifique o ficheiro schema.json para definir uma etiqueta de política numa coluna. Para o valor do campo
names
depolicyTags
, use o nome do recurso da etiqueta 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 Taxonomias de etiquetas de políticas na Google Cloud consola.
- Clique no nome da taxonomia para a abrir.
- Selecione uma etiqueta de política.
- Clique em Gerir políticas de dados.
- Opcionalmente, altere a regra de ocultação.
- Opcional: adicione ou remova diretores.
- Clique em Enviar.
- Abra a página Taxonomias de etiquetas de políticas na Google Cloud consola.
- Clique no nome da taxonomia para a abrir.
- Selecione uma etiqueta de política.
- Clique em Gerir políticas de dados.
- Clique em junto à política de dados que quer eliminar.
- Clique em Enviar.
- Clique em Confirm.
- O campo
dataPolicyType
está definido comoDATA_MASKING_POLICY
ouRAW_DATA_ACCESS_POLICY
. - O campo
dataMaskingPolicy
identifica a regra de ocultação de dados ou a rotina a usar. - O campo
dataPolicyId
fornece um nome para a política de dados que é exclusivo no projeto em que a política de dados reside. -
bigquery.tables.update
-
bigquery.tables.setColumnDataPolicy
-
bigquery.dataPolicies.get
- Tem de usar o recurso
v2.projects.locations.datapolicies
. - Não pode aplicar etiquetas de políticas e políticas de dados à mesma coluna.
- Pode anexar um máximo de oito políticas de dados a uma coluna.
- Uma tabela pode fazer referência a um máximo de 1000 políticas de dados únicas através das respetivas colunas.
- Não pode aplicar etiquetas de políticas e políticas de dados à mesma coluna.
- Uma consulta pode referenciar um máximo de 2000 políticas de dados.
- Só pode eliminar uma política de dados se nenhuma coluna da tabela a referenciar.
- Se um utilizador tiver apenas a função
maskedAccess
, a chamada da APItabledata.list
falha. - As operações de cópia de tabelas falham em tabelas protegidas por políticas de dados de colunas se o utilizador não tiver acesso aos dados não processados.
- As operações de cópia de tabelas entre regiões não suportam tabelas protegidas por políticas de dados ao nível da coluna.
- As políticas de dados ao nível da coluna não estão disponíveis nas regiões do BigQuery Omni.
- O SQL antigo falha se a tabela de destino tiver políticas de dados de colunas.
- Os trabalhos de carregamento não suportam esquemas especificados pelo utilizador com políticas de dados de colunas.
- Se substituir uma tabela de destino, o sistema remove todas as etiquetas de políticas existentes da tabela, a menos que use a flag
--destination_schema
para especificar um esquema com políticas de dados de colunas. - Por predefinição, a ocultação de dados não suporta colunas particionadas ou agrupadas. Esta é uma limitação geral da ocultação de dados e não é específica das políticas de dados de colunas. A ocultação de dados em colunas particionadas ou agrupadas pode aumentar significativamente os custos das consultas.
Crie taxonomias
O utilizador ou a conta de serviço que cria uma taxonomia tem de receber a função de administrador da etiqueta de política do Data Catalog.
Consola
API
Para usar taxonomias existentes, chame
taxonomies.import
em vez dos dois primeiros passos do procedimento seguinte.
Trabalhe com etiquetas de políticas
Para mais informações sobre como trabalhar com etiquetas de políticas, como visualizá-las ou atualizá-las, consulte o artigo Trabalhe com etiquetas de políticas. Para ver as práticas recomendadas, consulte o artigo Práticas recomendadas para usar etiquetas de políticas no BigQuery.
Crie políticas de dados
A conta de utilizador ou de serviço que cria uma política de dados tem de ter as autorizações
bigquery.dataPolicies.create
, bigquery.dataPolicies.setIamPolicy
e
datacatalog.taxonomies.get
.
As autorizações bigquery.dataPolicies.create
e bigquery.dataPolicies.setIamPolicy
estão incluídas nas funções de administrador da política de dados do BigQuery, administrador do BigQuery e proprietário de dados do BigQuery.
A autorização datacatalog.taxonomies.get
está incluída nas funções de administrador e leitor do Data Catalog.
Se estiver a criar uma política de dados que faça referência a uma rotina de ocultação personalizada, também precisa de autorizações de rotina.
No caso da ocultação personalizada, conceda aos utilizadores as funções de administrador do BigQuery ou proprietário de dados do BigQuery para garantir que têm as autorizações necessárias para as rotinas e as políticas de dados.
Pode criar até nove políticas de dados para uma etiqueta de política. Uma destas políticas está reservada para definições de controlo de acesso ao nível da coluna.
Consola
API
Defina etiquetas de políticas nas colunas
Defina uma política de dados numa coluna anexando a etiqueta de política associada à política de dados à coluna.
O utilizador ou a conta de serviço que define uma etiqueta de política precisa das autorizações datacatalog.taxonomies.get
e bigquery.tables.setCategory
.
datacatalog.taxonomies.get
está incluída nas funções de administrador de etiquetas de políticas do Data Catalog e visualizador de projetos.
bigquery.tables.setCategory
está incluída nas funções de
administrador do BigQuery (roles/bigquery.admin
) e
proprietário de dados do BigQuery (roles/bigquery.dataOwner
).
Para ver taxonomias e etiquetas de políticas em todos os projetos de uma organização na
Google Cloud consola, os utilizadores precisam da autorização resourcemanager.organizations.get
, que está incluída na função Visualizador da organização.
Consola
Defina a etiqueta de política modificando um esquema através daGoogle Cloud consola.
bq
API
Para tabelas existentes, ligue para tables.patch
ou, para novas tabelas, ligue para tables.insert
. Use a propriedade
schema
do objeto Table
que transmite
para definir uma etiqueta de política na definição do esquema. Consulte o esquema do exemplo de linha de comandos
para ver como definir uma etiqueta de política.
Quando trabalha com uma tabela existente, o método tables.patch
é preferível, porque o método tables.update
substitui todo o recurso da tabela.
Aplique o controlo de acesso
Quando cria uma política de dados para uma etiqueta de política, o controlo de acesso é aplicado automaticamente. Todas as colunas às quais essa etiqueta de política é aplicada devolvem dados ocultados em resposta a consultas de utilizadores que têm a função de leitor ocultado.
Para parar a aplicação do controlo de acesso, tem de eliminar primeiro todas as políticas de dados associadas às etiquetas de políticas na taxonomia. Para mais informações, consulte o artigo Aplique o controlo de acesso.
Verifique as autorizações da IAM numa política de dados
Para ver as autorizações que tem numa política de dados, chame o método
testIamPermissions
.
Atualize as políticas de dados
O utilizador ou a conta de serviço que atualiza uma política de dados tem de ter a autorização bigquery.dataPolicies.update
.
Se estiver a atualizar a etiqueta de política à qual a política de dados está associada, também precisa da autorização datacatalog.taxonomies.get
.
Se estiver a atualizar os principais associados à política de dados, precisa da autorização bigquery.dataPolicies.setIamPolicy
.
As autorizações bigquery.dataPolicies.update
e bigquery.dataPolicies.setIamPolicy
estão incluídas nas funções de administrador da política de dados do BigQuery, administrador do BigQuery e proprietário de dados do BigQuery.
A autorização datacatalog.taxonomies.get
está incluída nas funções de administrador e leitor do Data Catalog.
Consola
API
Para alterar a regra de ocultação de dados, chame o método
patch
e transmita um recurso
DataPolicy
com um campo dataMaskingPolicy
atualizado.
Para alterar os responsáveis associados a uma política de dados, chame o método
setIamPolicy
e transmita um
Policy
que atualize
os responsáveis aos quais é concedido acesso a dados ocultados.
Elimine políticas de dados
O utilizador ou a conta de serviço que cria uma política de dados tem de ter a autorização bigquery.dataPolicies.delete
. Esta autorização está incluída nas funções de administrador da política de dados do BigQuery, administrador do BigQuery e proprietário de dados do BigQuery.
Consola
API
Para eliminar uma política de dados, chame o método
delete
.
Aplique políticas de dados a uma coluna para mascarar dados
Em alternativa à criação de etiquetas de políticas, pode criar políticas de dados e aplicá-las diretamente numa coluna.
Trabalhe com políticas de dados
Pode criar, atualizar e eliminar políticas de dados através da API BigQuery Data Policy. Para aplicar uma política de dados diretamente numa coluna, não pode usar a página Taxonomias de etiquetas de políticas na Google Cloud consola.
Para trabalhar com políticas de dados, use o recurso
v2.projects.locations.datapolicies
.
Crie políticas de dados
O utilizador ou a conta de serviço que cria uma política de dados tem de ter a autorização bigquery.dataPolicies.create
.
A autorização bigquery.dataPolicies.create
está incluída nas funções de administrador da política de dados do BigQuery, administrador do BigQuery e proprietário de dados do BigQuery.
A autorização datacatalog.taxonomies.get
está incluída nas funções de administrador e leitor do Data Catalog.
Se estiver a criar uma política de dados que faça referência a uma rotina de ocultação personalizada, também precisa de autorizações de rotina.
Se usar a ocultação personalizada, conceda aos utilizadores a função de proprietário de dados do BigQuery para garantir que têm as autorizaçõ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 cumpra os seguintes requisitos:
Atualize as políticas de dados
O utilizador ou a conta de serviço que atualiza uma política de dados tem de ter a autorização bigquery.dataPolicies.update
.
A autorização bigquery.dataPolicies.update
está incluída nas funções de administrador da política de dados do BigQuery, administrador do BigQuery e proprietário de dados do BigQuery.
Para alterar a regra de ocultação de dados, chame o método
patch
e transmita um recurso
DataPolicy
com um campo dataMaskingPolicy
atualizado.
Também pode conceder acesso de controlo de acesso detalhado a políticas de dados.
As autorizações para conceder acesso de controlo detalhado às políticas de dados e gerir políticas de dados são diferentes. Para controlar as autorizações de controlo de acesso detalhado, tem de atualizar o campo grantees
da política de dados. Para controlar o acesso às políticas de dados,
defina as funções do IAM através do método
setIamPolicy
.
Para definir beneficiários numa política de dados, use o método v2 patch
. Para gerir as autorizações da política de dados, use o método v1
setIamPolicy
.
Para conceder acesso de controlo de acesso detalhado às políticas de dados, chame o método
patch
e transmita um recurso
DataPolicy
com um campo grantees
atualizado.
Elimine políticas de dados
O utilizador ou a conta de serviço que cria uma política de dados tem de ter a autorização bigquery.dataPolicies.delete
. Esta autorização está incluída nas funções de administrador da política de dados do BigQuery, administrador do BigQuery e proprietário de dados do BigQuery.
Para eliminar uma política de dados, chame o método
delete
.
Atribua uma política de dados diretamente a uma coluna
Pode atribuir uma política de dados diretamente a uma coluna sem usar etiquetas de políticas.
Antes de começar
Para receber as autorizações de que
precisa para atribuir uma política de dados diretamente a uma coluna,
peça ao seu administrador para lhe conceder a função do IAM
administrador de políticas de dados do BigQuery (roles/bigquerydatapolicy.admin
)
na sua tabela.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Esta função predefinida contém as autorizações necessárias para atribuir uma política de dados diretamente a uma coluna. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
São necessárias as seguintes autorizações para atribuir uma política de dados diretamente a uma coluna:
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Atribua uma política de dados
Para atribuir uma política de dados diretamente a uma coluna, faça uma das seguintes ações:
SQL
Para anexar uma política de dados a uma coluna, use as declarações DDL CREATE
TABLE
,
ALTER TABLE ADD
COLUMN
> ou ALTER COLUMN SET
OPTIONS
.
O exemplo seguinte usa a declaração CREATE TABLE
e define políticas de dados numa 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 seguinte usa o ALTER COLUMN SET OPTIONS
para adicionar uma política de dados a uma coluna existente numa 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: