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 :

  1. Crie uma taxonomia com, pelo menos, uma etiqueta de política.
  2. 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.
  3. 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.
  4. Defina a etiqueta de política numa coluna. Que mapeia as políticas de dados associadas à etiqueta de política para a coluna selecionada.
  5. 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

  1. 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.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  8. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  9. 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.
  10. 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

    1. Abra a página Taxonomias de etiquetas de políticas na Google Cloud consola.

      Abra a página Taxonomias de etiquetas de políticas

    2. Clique em Criar taxonomia.
    3. Na página Nova taxonomia:

      1. Em Nome da taxonomia, introduza o nome da taxonomia que quer criar.
      2. Em Descrição, introduza uma descrição.
      3. Se necessário, altere o projeto apresentado em Projeto.
      4. Se necessário, altere a localização apresentada em Localização.
      5. Em Etiquetas de políticas, introduza um nome e uma descrição para a etiqueta de política.
      6. Para adicionar uma etiqueta de política secundária a uma etiqueta de política, clique em Adicionar subetiqueta.
      7. 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.
      8. Continue a adicionar etiquetas de políticas e etiquetas de políticas para crianças conforme necessário para a sua taxonomia.
      9. Quando terminar de criar etiquetas de políticas para a sua hierarquia, clique em Criar.

    API

    Para usar taxonomias existentes, chame taxonomies.import em vez dos dois primeiros passos do procedimento seguinte.

    1. Ligue taxonomies.create para criar uma taxonomia.
    2. Chame taxonomies.policytag.create para criar uma etiqueta de política.

    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

    1. Abra a página Taxonomias de etiquetas de políticas na Google Cloud consola.

      Abra a página Taxonomias de etiquetas de políticas

    2. Clique no nome da taxonomia para a abrir.
    3. Selecione uma etiqueta de política.
    4. Clique em Gerir políticas de dados.
    5. 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.
    6. 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 e bigquery.routines.list ao nível do projeto.
    7. 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.
    8. Clique em Enviar.

    API

    1. Chame o método create. Transmita um recurso que cumpra os seguintes requisitos:DataPolicy

      • O campo dataPolicyType está definido como DATA_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.
    2. Chame o método setIamPolicy e transmita um Policy. O Policy tem de identificar os principais a quem é concedido acesso aos dados ocultados e especificar roles/bigquerydatapolicy.maskedReader para o campo role.

    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.

    1. Abra a página do BigQuery na Google Cloud consola.

      Aceda à página do BigQuery

    2. No explorador do BigQuery, localize e selecione a tabela que quer atualizar. É apresentado o esquema da tabela.

    3. Clique em Editar esquema.

    4. No ecrã Esquema atual, selecione a coluna de destino e clique em Adicionar etiqueta de política.

    5. No ecrã Adicione uma etiqueta de política, localize e selecione a etiqueta de política que quer aplicar à coluna.

    6. Clique em Selecionar. O seu ecrã deve ser semelhante ao seguinte:

      Editar esquema.

    7. Clique em Guardar.

    bq

    1. 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.
    2. Modifique o ficheiro schema.json para definir uma etiqueta de política numa coluna. Para o valor do campo names de policyTags, 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"]
         }
       },
       ...
      ]
    3. Atualize o esquema.

      bq update \
         project-id:dataset.table schema.json

    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

    1. Abra a página Taxonomias de etiquetas de políticas na Google Cloud consola.

      Abra a página Taxonomias de etiquetas de políticas

    2. Clique no nome da taxonomia para a abrir.
    3. Selecione uma etiqueta de política.
    4. Clique em Gerir políticas de dados.
    5. Opcionalmente, altere a regra de ocultação.
    6. Opcional: adicione ou remova diretores.
    7. Clique em Enviar.

    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

    1. Abra a página Taxonomias de etiquetas de políticas na Google Cloud consola.

      Abra a página Taxonomias de etiquetas de políticas

    2. Clique no nome da taxonomia para a abrir.
    3. Selecione uma etiqueta de política.
    4. Clique em Gerir políticas de dados.
    5. Clique em junto à política de dados que quer eliminar.
    6. Clique em Enviar.
    7. Clique em Confirm.

    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:

    • O campo dataPolicyType está definido como DATA_MASKING_POLICY ou RAW_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.

    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:

    • bigquery.tables.update
    • bigquery.tables.setColumnDataPolicy
    • bigquery.dataPolicies.get

    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:

    • 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 API tabledata.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.