Como restringir o acesso com a segurança no nível da coluna do BigQuery

Nesta página, explicamos como usar a segurança 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 a segurança no nível da coluna, consulte Introdução à segurança no nível da coluna do BigQuery.

As instruções nesta página usam o BigQuery e o Data Catalog. Para informações sobre os preços desses produtos, consulte os seguintes tópicos:

Você atualiza o esquema da tabela para definir uma tag de política em uma coluna. Você pode usar a IU da Web do BigQuery na ferramenta de linha de comando do Console do Cloud bq e a API BigQuery para definir uma tag de política em uma coluna. Também pode criar uma tabela, especificar o esquema e especificar tags de política em uma operação, usando as seguintes técnicas:

  • Os comandos bq mk e bq load.
  • O método da API tables.insert.
  • A página Criar tabela na IU da Web do BigQuery. Se você usar essa IU, selecione Editar como texto ao adicionar ou edite o esquema.

Antes de começar

  1. Faça login na sua Conta do Google.

    Se você ainda não tiver uma, inscreva-se.

  2. No Console do Cloud, na página de seletor de projetos, selecione ou crie um projeto do Cloud.

    Acessar a página do seletor de projetos

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud. Saiba como confirmar se a cobrança está ativada para o seu projeto.

  4. Ative a API Data Catalog.

    Ative a API

  5. O BigQuery é ativado automaticamente em novos projetos. Para ativar o BigQuery em um projeto preexistente, clique no botão abaixo. Ative a API BigQuery.

    Ative a API

Conceder papéis

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. Os usuários ou contas de serviço que consultam dados protegidos pela segurança no nível da coluna precisam ter o papel Leitor refinado do Data Catalog. As seções a seguir mostram como conceder esses papéis.

Para obter informações gerais sobre esses papéis, consulte Papéis usados com a segurança no nível da coluna.

Conceder o papel de administrador de tags de política

Para um administrador que criará e gerenciará tags de política de dados, conceda o papel Administrador de tags de política do Data Catalog. Antes de executar as seguintes etapas, você precisa ter permissões resourcemanager.projects.setIamPolicy no projeto para o qual você concederá o Administrador de tags de política. Se você não tiver a permissão resourcemanager.projects.setIamPolicy, peça que um proprietário do projeto conceda a você a permissão ou execute as etapas a seguir para você.

  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). Se o endereço de e-mail do usuário não estiver na lista, primeiro adicione o usuário ao seu projeto antes de prosseguir para a próxima etapa.

  3. Na página Editar permissões, clique em Adicionar outro papel.

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

  5. Clique em Salvar.

Para mais informações sobre esse papel, consulte Papéis usados com segurança no nível da coluna.

Conceder o papel Leitor refinado

Para os usuários que precisam de acesso aos dados protegidos com segurança em nível de coluna, conceda o papel Leitor refinado Data Catalog. Antes de executar as seguintes etapas, você precisa ter permissões resourcemanager.projects.setIamPolicy no projeto que você concederá o papel Leitor refinado. Se você não tiver a permissão resourcemanager.projects.setIamPolicy, peça ao proprietário do projeto que conceda a permissão ou execute as etapas a seguir.

  1. Abra a página "IAM" no Console do Cloud.

    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). Se o endereço de e-mail do usuário não estiver na lista, primeiro adicione o usuário ao seu projeto antes de prosseguir para a próxima etapa.

  3. Na página Editar permissões, clique em Adicionar outro papel.

  4. Clique em Data Catalog e, em seguida, clique em Leitor refinado.

  5. Clique em Salvar.

Para mais informações sobre esse papel, consulte Papéis usados com segurança no nível da coluna.

Criar uma taxonomia

Use o Data Catalog para criar uma taxonomia e adicionar tags de política aos seus dados.

A conta de usuário para as etapas a seguir é necessária para ter o papel de administrador de tags de política do Data Catalog.

  1. Abra a página Taxonomias do Data Catalog no Console do Cloud.

    Abrir a página Taxonomias

  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 tag de política filha.
    7. Para adicionar uma nova tag de política no mesmo nível de outra tag de política, clique no ícone +.

      Veja a seguir a página Nova taxonomia de um exemplo de taxonomia.

      Criar página de taxonomia.

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

Visualizar tags de política

Para visualizar as tags de política criadas para uma taxonomia:

  1. Abra a página Taxonomias do Data Catalog no Console do Cloud.

    Abrir a página Taxonomias

  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.

    Tags de política.

Visualizar permissões para tags de política

Para visualizar a permissão em uma tag de política:

  1. Abra a página Taxonomias do Data Catalog no Console do Cloud.

    Abrir a página Taxonomias

  2. Clique na taxonomia com as tags de política em que você quer atribuir permissão.

  3. Clique nas tag de política em que você quer atribuir permissão.

    Tag de política selecionada.

  4. No painel à direita, é possível ver os membros e as permissões das tags de política selecionadas.

    Permissões da tag de política.

Atualizar permissões em tags de política

Para atualizar a permissão de uma tag de política:

  1. Abra a página Taxonomias do Data Catalog no Console do Cloud.

    Abrir a página Taxonomias

  2. Clique na taxonomia com as tags de política que você quer atualizar.

  3. Clique nas tags de política cuja permissão você quer atualizar.

    Tag de política selecionada.

  4. No painel à direita, é possível ver os membros e as permissões das tags de política selecionadas. Adicione contas ao papel Administrador das palavras-chave da política para contas que vão criar e gerenciar tags de política. Adicione contas ao papel Leitor refinado para as contas que se destinam a ter acesso aos dados protegidos pela segurança no nível da coluna. Você também pode usar esse painel para remover contas ou modificar outras permissões.

  5. Quando terminar, clique em Salvar.

Recuperar um nome de recurso de 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

Definir uma tag de política em uma coluna

O usuário ou a conta de serviço que define uma tag de política precisa da permissão datacatalog.taxonomies.get. Essa permissão está incluída no papel Administrador das tags de política e no papel Visualizador do projeto.

Console

Para modificar um esquema usando a IU da Web do BigQuery no Console do Cloud, defina a tag de política ao editar o esquema.

  1. Na tela Esquema atual, selecione sua coluna e clique em Adicionar tag de política.
  2. Na tela Adicionar tag de política, selecione a tag de política que você quer aplicar à coluna.
  3. Clique em Selecionar. A tela deve ser semelhante a esta:

    Editar esquema.

  4. Clique em Salvar.

Como alternativa, ao criar uma tabela ou modificar um esquema usando a IU da Web do BigQuery no Console do Cloud, defina a tag de política ao editar o esquema como texto.

  1. Para Esquema, clique em Editar como texto.
  2. Modifique o esquema 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.

    Editar como texto.

Linha de comando

  1. Recupere o esquema para 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 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

Chame tables.patch e use a propriedade schema para definir uma tag de política na definição de seu esquema. Consulte o esquema de exemplo de linha de comando para ver como definir uma tag de política.

Como o método tables.update substitui todo o recurso da tabela, é melhor usar o método tables.patch.

Outras maneiras de definir uma tag de política em uma coluna

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.

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. Você pode ver o esquema usando o Console do 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.

Consultar dados com segurança 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 o 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 acima, 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.

Limpar uma tag de política

Atualize o esquema da tabela para limpar uma tag de política de uma coluna. Use a IU da Web do BigQuery no Console do 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.

Linha de comando

  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.

Aplicar controle de acesso

Para aplicar o controle de acesso:

  1. Abra a página Taxonomias do Data Catalog no Console do Cloud.

    Abrir a página Taxonomias

  2. Clique na taxonomia com a segurança 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.

Desativar o controle de acesso

  1. Abra a página Taxonomias do Data Catalog no Console do Cloud.

    Abrir a página Taxonomias

  2. Clique na taxonomia com a segurança no nível da coluna que você quer desativar.

  3. Se a opção Aplicar controle de acesso estiver ativada, clique em Aplicar controle de acesso para desativá-la.

FAQs

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. A mesma segurança em nível de coluna na tabela é aplicada quando as colunas protegidas são acessadas por meio de uma visualização.

Há dois tipos de visualizações no BigQuery: visualizações lógicas e visualizações autorizadas. Os dois tipos de visualizações são derivados de uma tabela de origem e são consistentes com a segurança no nível da coluna da tabela.

A segurança no nível da coluna funciona nas colunas STRUCT ou RECORD?

Sim. Você pode aplicar tags de política apenas aos campos de folha, e apenas esses campos serão protegidos.

Posso usar o SQL legado e o SQL padrão?

Você pode usar o SQL padrão para consultar tabelas protegidas pela segurança 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 do Cloud IAM é registrada no Logging. No entanto, a verificação de tags de política não está associada à consulta que acionou a verificação.

A cópia de uma tabela é afetada pela segurança 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 terá segurança 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.

A segurança no nível da coluna é compatível com a nuvem privada virtual?

Sim, a segurança no nível da coluna e a VPC são compatíveis e complementares.

A VPC aproveita o Cloud IAM para controlar o acesso a serviços, como o BigQuery e o Cloud Storage. A segurança no nível da coluna fornece segurança granular de colunas individuais no próprio BigQuery.

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 da segurança no nível da coluna.

Em geral, as atualizações do Cloud 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.