Introdução à segurança no nível da coluna do BigQuery

O BigQuery fornece acesso detalhado a colunas com dados confidenciais usando tags de política ou uma classificação de dados baseada em tipos. Usando a segurança no nível da coluna do BigQuery, é possível criar políticas que verificam no momento da consulta se o usuário tem o acesso adequado. Por exemplo, uma política pode impor verificações de acesso como:

  • É necessário estar em group:high-access para ver as colunas que contêm TYPE_SSN.

Fluxo de trabalho de segurança no nível da coluna

Fluxo de trabalho

Para restringir o acesso a dados no nível da coluna:

  1. Definir tags de taxonomia e política de dados. Use o Data Catalog para criar e gerenciar tags de taxonomia e política para seus dados. Para ver as diretrizes, consulte Práticas recomendadas para tags de política.

  2. Atribuir tags de política às colunas do BigQuery. No BigQuery, use anotações de esquema para atribuir uma tag de política a cada coluna em que você quer restringir o acesso.

  3. Gerenciar o acesso nas tags de política. Use as políticas de gerenciamento de identidade e acesso (IAM, na sigla em inglês) para restringir o acesso a cada tag de política. A política está em vigor para cada coluna que pertence à tag de política.

Quando um usuário tenta acessar os dados da coluna no momento da consulta, o BigQuery verifica a tag da política de coluna e a própria política, para ver se o usuário está autorizado a acessar os dados.

Exemplo de caso de uso:

Considere uma organização que precisa classificar dados confidenciais em duas categorias: Alta e Média.

Tags de política

Para configurar a segurança no nível da coluna, um administrador de dados, que tem as permissões apropriadas, execute as etapas a seguir para configurar uma hierarquia de classificação de dados.

  1. O administrador de dados cria uma taxonomia chamada "criticidade comercial" no Data Catalog. A taxonomia inclui os nós ou as tags de política Alta e Média.

  2. O administrador de dados decide que a política do nó Alta incluirá acesso a um grupo chamado high-tier-access.

  3. O administrador de dados cria mais níveis de nós na taxonomia, em Alta e Média. O nó de nível mais baixo é um nó de folha, como o nó de folha employee_ssn. O administrador de dados pode criar ou não uma política de acesso diferente para o nó de folha employee_ssn.

  4. O administrador de dados atribui uma tag de política a colunas específicas da tabela. Neste exemplo, o administrador de dados atribui a política de acesso Alta à coluna employee_ssn em uma tabela.

  5. Na página Esquema atual do console, o administrador de dados pode ver a tag de política que rege uma coluna específica. Neste exemplo, a coluna employee_ssn está na tag de política Alta. Portanto, ao visualizar o esquema para employee_ssn, o console exibe o nome da taxonomia e a tag de política no campoPolicy tags: Business criticality:High.

    IU da tag de política

    Para saber como usar o console para definir uma tag de política, consulte Definir uma tag de política em uma coluna.

    Como alternativa, é possível definir a tag de política usando o comando bq update. O campo names de policyTags inclui o ID da tag de política Alta, projects/project-id/locations/location/taxonomies/taxonomy-id/policyTags/policytag-id:

    [
     ...
     {
       "name": "ssn",
       "type": "STRING",
       "mode": "REQUIRED",
       "policyTags": {
         "names": ["projects/project-id/locations/location/taxonomies/taxonomy-id/policyTags/policytag-id"]
       }
     },
     ...
    ]
    

    Para saber como usar o comando bq update para definir uma tag de política, consulte Definir uma tag de política em uma coluna.

  6. O administrador realiza etapas semelhantes para a tag de política Média.

Ao usar o acesso detalhado, é possível gerenciar o acesso a muitas colunas controlando apenas um pequeno número de tags da política de classificação de dados.

Para saber mais sobre essas etapas, consulte Como restringir o acesso com a segurança no nível da coluna do BigQuery.

Papéis usados com a segurança no nível da coluna

Os papéis do Data Catalog a seguir são usados para segurança no nível da coluna do BigQuery.

ID e nome da função Permissões incluídas Aplicável a Descrição
Administrador de tag de política
datacatalog.categoryAdmin datacatalog.categories.getIamPolicy
datacatalog.categories.setIamPolicy
datacatalog.taxonomies.create
datacatalog.taxonomies.delete
datacatalog.taxonomies.get
datacatalog.taxonomies.getIamPolicy
datacatalog.taxonomies.list
datacatalog.taxonomies.setIamPolicy
datacatalog.taxonomies.update
resourcemanager.projects.get
resourcemanager.projects.list
Projeto Este papel tem permissão para fazer o seguinte:
  • criar, ler, atualizar e excluir taxonomias;
  • definir políticas do IAM em tags de política.
Normalmente, um usuário com esse papel é responsável por definir políticas de governança de dados para a organização.

Leitor de controle refinado
datacatalog.categoryFineGrainedReader datacatalog.categories.fineGrainedGet Tag de política Esse papel tem permissão para acessar o conteúdo das colunas do BigQuery restritas por uma tag de política.

Normalmente, um usuário com esse papel está consultando os dados.

Para saber mais sobre os papéis do Data Catalog, consulte Gerenciamento de identidade e acesso do Data Catalog (IAM).

Impacto das gravações

Para ler dados em uma coluna protegida pela segurança no nível da coluna, o usuário sempre precisa ter permissão de leitura, recebida por acesso de leitura detalhado, nas tags de política da coluna.

Isso se aplica a:

  • Tabelas, incluindo tabelas de caracteres curinga
  • Visualizações
  • Copiar tabelas

Para gravar dados em uma linha de uma coluna protegida pela segurança no nível da coluna, o requisito do usuário depende do tipo de gravação.

Se a operação de gravação for inserida, o acesso de leitura detalhado não será necessário. No entanto, o usuário não terá acesso para ler os dados que foram inseridos, a menos que ele tenha acesso de leitura detalhado.

Se a operação de gravação for atualizada, excluída ou mesclada, o usuário não poderá realizar a operação, a menos que tenha acesso de leitura detalhado.

Um usuário não pode carregar dados de arquivos locais ou do Cloud Storage, a menos que tenha acesso de leitura detalhado. No entanto, um usuário pode carregar dados de streaming, porque os carregamentos de streaming não verificam as tags de política. O usuário não terá acesso para ler os dados que foram carregados de um stream, a menos que tenha acesso de leitura detalhado.

Para mais informações, consulte Impacto nas gravações com a segurança no nível da coluna do BigQuery.

Como consultar tabelas

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.

Como consultar visualizações

O impacto da segurança no nível da coluna nas visualizações é independente da visualização autorizada. Em ambos os casos, a segurança no nível da coluna é aplicada de forma transparente.

Se a visualização não for autorizada:

Se o usuário tiver acesso no nível da coluna para as colunas das tabelas subjacentes da visualização, ele poderá consultar as colunas na visualização. Caso contrário, o usuário não poderá consultar as colunas na visualização.

Se a visualização for autorizada:

O acesso é controlado apenas pela segurança no nível da coluna em colunas nas tabelas subjacentes da visualização. As políticas do IAM no nível da tabela e no conjunto de dados, se houver, não são usadas para verificar o acesso. Se o usuário tiver acesso às tags de política usadas nas tabelas subjacentes da visualização autorizada, ele poderá consultar as colunas na visualização autorizada.

O diagrama a seguir mostra como o acesso a uma visualização é avaliado.

Como acessar visualizações

Impacto da viagem no tempo

O BigQuery permite que os usuários consultem uma tabela em um estado anterior. Esse recurso permite consultar as linhas de um momento anterior. Ele também permite restaurar uma tabela de um momento específico.

No SQL legado, é preciso consultar os dados históricos usando decoradores de tempo no nome da tabela. No SQL padrão, você consulta dados históricos usando a cláusula FOR SYSTEM_TIME AS OF na tabela.

Suponha que você consulte os dados históricos de uma tabela no tempo t. Nesse caso, faça o seguinte:

  • Se o esquema no tempo t é idêntico a um subconjunto do esquema atual da tabela ou é um, o BigQuery verifica a segurança mais recente no nível da coluna na tabela atual. Se o usuário tiver permissão para ler as colunas atuais, ele poderá consultar os dados históricos dessas colunas.

  • Se o esquema no tempo t for diferente do esquema atual para as colunas na consulta, a consulta falhará.

Considerações sobre o local

Ao escolher um local para a taxonomia, considere as limitações a seguir.

Tags de política

As taxonomias são recursos regionais, como conjuntos de dados e tabelas do BigQuery. Ao criar uma taxonomia, você especifica a região ou o local dela.

É possível criar uma taxonomia e aplicar tags de política a tabelas em todas as regiões em que o BigQuery está disponível. No entanto, para aplicar tags de política de uma taxonomia a uma coluna da tabela, a própria taxonomia e a tabela precisam existir no mesmo local regional.

Embora não seja possível aplicar uma tag de política a uma coluna da tabela que existe em outro local, você pode copiar a taxonomia para outro local replicando-o explicitamente.

Se você quiser usar a mesma taxonomia e tags de política em vários locais regionais, saiba mais sobre como replicar taxonomias em Como gerenciar tags de política em locais.

Organizações

Não é possível usar referências entre organizações. Uma tabela e todas as tags de política que você quer aplicar às colunas precisam existir na mesma organização.

Limitações

  • Se você substituir para uma tabela de destino, qualquer tag de política atual será removida da tabela, a menos que você use a sinalização --destination_schema para especificar um esquema com tags de política. O exemplo a seguir mostra como usar --destination_schema.

    bq query --destination_table mydataset.mytable2 \
      --use_legacy_sql=false --destination_schema=schema.json \
      'SELECT * FROM mydataset.mytable1'
    
  • Uma coluna pode ter apenas uma tag de política.

  • Uma tabela pode ter no máximo 1.000 tags de políticas únicas.

  • Não será possível usar o SQL legado se você tiver ativado a 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.

Preços

A segurança no nível da coluna requer o uso do BigQuery e do Data Catalog. Para informações sobre preços desses produtos, consulte os seguintes tópicos:

Audit logging

Quando os dados da tabela com tags de política são lidos, salvamos as tags de política referenciadas no Cloud Logging. No entanto, a verificação de tags de política não está associada à consulta que acionou a verificação.

Por meio do Cloud Logging, os auditores podem entender quem tem acesso a determinadas categorias de dados confidenciais. Para mais informações, consulte Como auditar tags de política.

Para mais informações sobre a geração de registros no BigQuery, consulte Introdução ao monitoramento do BigQuery.

Para mais informações sobre a geração de registros no Google Cloud, consulte Cloud Logging.

A seguir