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:

  1. Crie uma taxonomia com pelo menos uma tag de política.
  2. 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.
  3. 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.
  4. 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.
  5. 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

  1. In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.

    Go to project selector

  2. Verify that billing is enabled for your Trusted Cloud project.

  3. Enable the Data Catalog and BigQuery Data Policy APIs.

    Enable the APIs

  4. O BigQuery é ativado de forma automática nos novos projetos, mas talvez seja necessário ativá-lo em um projeto preexistente.
  5. Enable the BigQuery API.

    Enable the API

  6. 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.
  7. 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

    1. Abra a página Taxonomia de tag de política no console doTrusted Cloud .

      Abrir a página de taxonomias de tags de política

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

      1. Em Nome da taxonomia, insira o nome da taxonomia que você quer criar.
      2. Em Descrição, insira uma descrição.
      3. Se necessário, altere o projeto listado em Projeto.
      4. Se necessário, altere o local listado em Local.
      5. Em Tags de política, insira o nome e a descrição da tag de política.
      6. Para adicionar uma tag de política filha a uma tag de política, clique em Adicionar subtag.
      7. 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.
      8. Continue adicionando tags de política e tags de política filha conforme necessário para sua taxonomia.
      9. 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.

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

    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

    1. Abra a página Taxonomia de tag de política no console doTrusted Cloud .

      Abrir a página de taxonomias de tags de política

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

    API

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

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

    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.

    1. Abra a página do BigQuery no console do Trusted Cloud .

      Acessar a página do BigQuery

    2. No BigQuery Explorer, localize e selecione a tabela que você quer atualizar. O esquema da tabela será aberto.

    3. Clique em Editar esquema.

    4. Na tela Esquema atual, selecione a coluna de destino e clique em Adicionar tag de política.

    5. Na tela Adicionar tag de política, localize e selecione a tag de política que você quer aplicar à coluna.

    6. Clique em Selecionar. A tela deve ser semelhante a esta:

      Editar esquema.

    7. Clique em Salvar.

    bq

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

    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

    1. Abra a página Taxonomia de tag de política no console doTrusted Cloud .

      Abrir a página de taxonomias de tags de política

    2. Clique no nome da taxonomia para abrir.
    3. Selecione uma tag de política.
    4. Clique em Gerenciar políticas de dados.
    5. Também é possível alterar a regra de mascaramento.
    6. Opcional: adicionar ou remover principais.
    7. Clique em Enviar.

    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

    1. Abra a página Taxonomia de tag de política no console doTrusted Cloud .

      Abrir a página de taxonomias de tags de política

    2. Clique no nome da taxonomia para abrir.
    3. Selecione uma tag de política.
    4. Clique em Gerenciar políticas de dados.
    5. Clique em ao lado da política de dados a ser excluída.
    6. Clique em Enviar.
    7. Clique em Confirmar.

    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:

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

    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:

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

    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:

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