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 e bq 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

  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.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

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

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

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

    Enable the APIs

  8. O BigQuery é ativado automaticamente nos novos projetos, mas talvez seja necessário ativá-lo em um projeto preexistente.

    Enable the BigQuery API.

    Enable the 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.

  1. No console do Google Cloud, abra a página IAM.

    Abrir a página do IAM

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

  3. Clique na lista suspensa Selecionar um papel.

  4. Clique em Data Catalog e em Administrador de tags de política.

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

  1. No console do Google Cloud, abra a página IAM.

    Abrir a página do IAM

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

  3. Clique na lista suspensa Selecionar um papel.

  4. Clique em BigQuery e depois em BigQuery ou BigQuery.

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

  1. Abra a página Taxonomia de tag de política no console do Google 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.

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

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

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

  2. Clique no nome da taxonomia que contém as tags de política relevantes.

  3. Selecione uma ou mais tags de política.

  4. Se o Painel de informações estiver oculto, clique em Mostrar painel de informações.

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

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

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

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

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:

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

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

  2. Clique na taxonomia com o controle de acesso no nível da coluna que você quer aplicar:

  3. 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:

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

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

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

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

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

  2. Clique no nome da taxonomia que contém as tags de política relevantes.

  3. Selecione uma ou mais tags de política.

  4. Se o Painel de informações estiver oculto, clique em Mostrar painel de informações.

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

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

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

  2. Clique no nome da taxonomia que contém as tags de política relevantes.

  3. Selecione uma ou mais tags de política.

  4. Se o Painel de informações estiver oculto, clique em Mostrar painel de informações.

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

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

  1. Veja as tags de política da taxonomia que contém a tag de política.

  2. Encontre a tag de política com o nome de recurso você quer copiar.

  3. Clique no ícone Copiar nome da fonte da tag de política.

    Copiar o nome do recurso

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.

Limpar tag de política.

bq

  1. 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.
  2. Modifique o schema.json para limpar uma tag de política de uma coluna.

    [
     ...
     {
       "name": "ssn",
       "type": "STRING",
       "mode": "REQUIRED",
       "policyTags": {
         "names": []
       }
     },
     ...
    ]
    
  3. 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:

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

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

  2. Clique no nome da taxonomia que contém as tags a serem excluídas.
  3. Clique em Editar.
  4. Clique em ao lado das tags de política que você quer excluir.
  5. Clique em Salvar.
  6. Clique em Confirmar.

Para excluir uma taxonomia inteira, siga estas etapas:

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

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

  2. Clique no nome da taxonomia que contém as tags a serem excluídas.
  3. Clique em Excluir taxonomia da tag de política.
  4. 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 coluna ssn.

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

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.