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.

Você atualiza o esquema da tabela para definir uma tag de política em uma coluna. É possível usar o Console do Cloud, a ferramenta de linha de comando bq e a API BigQuery para definir uma tag de política em uma coluna. Também pode criar uma tabela, além de especificar o esquema as 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.
  • A página Criar tabela no Console do Cloud. Se você usa o Console do Cloud, selecione Editar como texto ao adicionar ou editar o esquema.

Antes de começar

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. No Console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como confirmar se o faturamento está ativado para o projeto.

  4. Ative a API Data Catalog.

    Ative a API

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

    Acessar o seletor de projetos

  6. Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como confirmar se o faturamento está ativado para o projeto.

  7. Ative a API Data Catalog.

    Ative a API

  8. O BigQuery é ativado automaticamente em novos projetos. Para ativar o BigQuery em um projeto preexistente, acesse Ative a API BigQuery.

    Ative a 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. Nesta página, os papéis discutidos são o Administrador de tags de política do Data Catalog e o Leitor refinado do Data Catalog

  • 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. Esse papel pode gerenciar taxonomias e tags de política, além de conceder ou remover políticas de ACL.

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

Para mais informações sobre todos os papéis relacionados à tag de política, consulte Papéis usados com a segurança no nível da coluna.

Papel Administrador de tags de política

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 Administrador de tags de política do Data Catalog, você precisa ter permissões resourcemanager.projects.setIamPolicy no projeto para o qual 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). 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 Save.

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

Papel Leitor refinado

Os usuários que precisam de acesso aos dados protegidos com segurança em nível de coluna precisam do papel Leitor refinado do Data Catalog. Esse papel geralmente é concedido como parte da configuração de uma tag de política em uma coluna.

Antes de executar as seguintes etapas, você precisa ter permissões resourcemanager.projects.setIamPolicy no projeto para o qual 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 para você.

  1. Abra a página do 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). 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 seguida, clique em Leitor refinado.

  5. Clique em Save.

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 em tags de política

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

    Abrir a página Taxonomias

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

  3. Selecione as tags de política.

    Tag de política selecionada.

  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 participantes 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

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

    Abrir a página Taxonomias

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

  3. Selecione as tags de política.

    Tag de política selecionada.

  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 participantes e as permissões 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 pela segurança 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 Save.

Pesquisar tags de política

Para pesquisar tags de política no Data Catalog, siga estas etapas:

  1. Abra a página inicial do Data Catalog e faça uma pesquisa pelos recursos de dados no campo Pesquisar.

    Abrir a página inicial do Data Catalog

Para mais informações sobre como encontrar recursos, como tags de política no Data Catalog, consulte Como pesquisar recursos de dados.

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 o 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 Save.

Como alternativa, ao criar uma tabela ou modificar um esquema usando o 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.

bq

  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. É possível 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 o 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.

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.

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 é registrada no Logging. Para mais informações, consulte Registro de auditoria para segurança no nível da coluna.

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