Importe dados para um data warehouse do BigQuery seguro

Last reviewed 2025-06-15 UTC

Muitas organizações implementam armazéns de dados que armazenam dados confidenciais para poderem analisar os dados para vários fins empresariais. Este documento destina-se a engenheiros de dados e administradores de segurança que implementam e protegem armazéns de dados através do BigQuery. Faz parte de um plano que é composto pelo seguinte:

Este documento aborda o seguinte:

  • A arquitetura e os Google Cloud serviços que pode usar para ajudar a proteger um armazém de dados num ambiente de produção.
  • Práticas recomendadas para importar dados para o BigQuery a partir de uma rede externa, como um ambiente nas instalações.
  • Práticas recomendadas para a governança de dados ao criar, implementar e operar um armazém de dados no Google Cloud, incluindo o seguinte:

    • Desidentificação dos dados

    • tratamento diferencial de dados confidenciais

    • encriptação ao nível da coluna

    • controlos de acesso ao nível da coluna

Este documento pressupõe que já configurou um conjunto básico de controlos de segurança, conforme descrito no projeto de bases empresariais. Ajuda a adicionar controlos adicionais aos controlos de segurança existentes para ajudar a proteger dados confidenciais num armazém de dados.

Exemplos de utilização do armazém de dados

O plano detalhado suporta os seguintes exemplos de utilização:

Vista geral

Os armazéns de dados, como o BigQuery, permitem às empresas analisar os respetivos dados empresariais para obter estatísticas. Os analistas acedem aos dados da empresa que estão armazenados em armazéns de dados para criar estatísticas. Se o seu armazém de dados incluir dados confidenciais, tem de tomar medidas para preservar a segurança, a confidencialidade, a integridade e a disponibilidade dos dados da empresa enquanto são armazenados, enquanto estão em trânsito ou enquanto estão a ser analisados. Neste projeto, faz o seguinte:

  • Quando importar dados de origens de dados externas, encripte os dados que se encontram fora do Google Cloud (por exemplo, num ambiente no local) e importe-os para Google Cloud.
  • Configure controlos que ajudam a proteger o acesso a dados confidenciais.
  • Configure controlos que ajudam a proteger o pipeline de dados.
  • Configure uma separação de funções adequada para diferentes perfis fictícios.
  • Quando importa dados de outras origens localizadas em Google Cloud (também conhecidas como origens de dados internas), configure modelos para encontrar e remover a identificação de dados confidenciais.
  • Configure controlos de segurança e registo adequados para ajudar a proteger os dados confidenciais.
  • Use a classificação de dados, as etiquetas de políticas, a ocultação dinâmica de dados e a encriptação ao nível da coluna para restringir o acesso a colunas específicas no data warehouse.

Arquitetura

Para criar um data warehouse confidencial, tem de importar dados em segurança e, em seguida, armazená-los num perímetro dos VPC Service Controls.

Arquitetura ao importar dados de Google Cloud

A imagem seguinte mostra como os dados carregados são categorizados, anonimizados e armazenados quando importa dados de origem do Google Cloud usando o repositórioterraform-google-secured-data-warehouse. Também mostra como pode voltar a identificar dados confidenciais a pedido para análise.

A arquitetura do armazém de dados confidenciais para origens internas.

Arquitetura ao importar dados de origens externas

A imagem seguinte mostra como os dados são carregados e armazenados quando importa dados de um ambiente nas instalações ou de outra nuvem para um armazém do BigQuery através do repositório terraform-google-secured-data-warehouse-onprem-ingest.

A arquitetura do armazém de dados confidenciais para redes externas.

Google Cloud serviços e funcionalidades

As arquiteturas usam uma combinação dos seguintes Google Cloud serviços e funcionalidades:

Serviço ou funcionalidade Descrição

BigQuery

Aplicável a origens de dados internas e externas. No entanto, existem diferentes opções de armazenamento, como se segue:

  • Quando importa dados do Google Cloud, o BigQuery armazena os dados confidenciais no perímetro de dados confidenciais.
  • Quando importa dados de uma origem externa, o BigQuery armazena os dados encriptados e a chave de encriptação envolvida em tabelas separadas.

O BigQuery usa vários controlos de segurança para ajudar a proteger o conteúdo, incluindo controlos de acesso, segurança ao nível da coluna para dados confidenciais e encriptação de dados.

Cloud Key Management Service (Cloud KMS) com o Cloud HSM

Aplicável a origens internas e externas. No entanto, existe um exemplo de utilização adicional para origens de dados externas.

O Cloud HSM é um serviço de módulo de segurança de hardware (HSM) baseado na nuvem que aloja a chave de encriptação de chaves (KEK). Quando importa dados de uma origem externa, usa o Cloud HSM para gerar a chave de encriptação que usa para encriptar os dados na sua rede antes de os enviar para Google Cloud.

Cloud Logging

Aplicável a origens internas e externas.

O Cloud Logging recolhe todos os registos dos Google Cloud serviços para armazenamento e obtenção pelas suas ferramentas de análise e investigação.

Cloud Monitoring

Aplicável a fontes internas e externas.

O Cloud Monitoring recolhe e armazena informações de desempenho e métricas sobre os Google Cloud serviços.

Funções do Cloud Run

Aplicável apenas a origens de dados externas.

As funções do Cloud Run são acionadas pelo Cloud Storage e escrevem os dados que o Cloud Storage carrega para o contentor de carregamento no BigQuery.

Cloud Storage e Pub/Sub

Aplicável a fontes internas e externas.

O Cloud Storage e o Pub/Sub recebem dados da seguinte forma:

  • Cloud Storage: recebe e armazena dados em lote. Por predefinição, o Cloud Storage usa o TLS para encriptar os dados em trânsito e o AES-256 para encriptar os dados no armazenamento. A chave de encriptação é uma chave de encriptação gerida pelo cliente (CMEK). Para mais informações sobre a encriptação, consulte as opções de encriptação de dados.

    Pode ajudar a proteger o acesso aos contentores do Cloud Storage através de controlos de segurança, como a gestão de identidade e acesso, as listas de controlo de acesso (ACLs) e os documentos de políticas. Para mais informações sobre os controlos de acesso suportados, consulte o artigo Vista geral do controlo de acesso.

Data Profiler para o BigQuery

Aplicável a origens internas e externas.

O Data Profiler para o BigQuery procura automaticamente dados confidenciais em todas as tabelas e colunas do BigQuery em toda a organização, incluindo todas as pastas e projetos.

Pipelines do Dataflow

Aplicável a origens internas e externas; no entanto, existem diferentes pipelines.

Os pipelines do Dataflow importam dados da seguinte forma:

  • Quando importa dados do Google Cloud, dois pipelines do Dataflow removem a identificação e voltam a identificar os dados confidenciais. O primeiro pipeline remove a identificação dos dados confidenciais através da pseudonimização. O segundo pipeline identifica novamente os dados confidenciais quando os utilizadores autorizados precisam de aceder.
  • Quando importa dados de uma origem externa, um pipeline do Dataflow escreve dados de streaming no BigQuery.

Catálogo universal do Dataplex

Aplicável a fontes internas e externas.

O catálogo universal do Dataplex categoriza automaticamente os dados confidenciais com metadados, também conhecidos como etiquetas de políticas, durante o carregamento. O catálogo universal do Dataplex também usa metadados para gerir o acesso a dados confidenciais. Para controlar o acesso aos dados no data warehouse, aplica etiquetas de políticas a colunas que incluem dados confidenciais.

Interligação dedicada

Aplicável apenas a origens de dados externas.

O Dedicated Interconnect permite-lhe mover dados entre a sua rede e Google Cloud. Pode usar outra opção de conectividade, conforme descrito em Escolher um produto de conectividade de rede.

IAM e Resource Manager

Aplicável a fontes internas e externas.

A gestão de identidade e de acesso (IAM) e o Resource Manager restringem o acesso e segmentam os recursos. Os controlos de acesso e a hierarquia de recursos seguem o princípio do menor privilégio.

Security Command Center

Aplicável a origens internas e externas.

O Security Command Center monitoriza e revê os resultados de segurança de todo o seu Google Cloud ambiente numa localização central.

Proteção de dados confidenciais

Aplicável a origens internas e externas; no entanto, ocorrem verificações diferentes.

A Proteção de dados confidenciais analisa os dados da seguinte forma:

  • Quando importa dados do Google Cloud, o Sensitive Data Protection desidentifica dados confidenciais durante o carregamento. A proteção de dados confidenciais desidentifica dados estruturados e não estruturados com base nos infoTypes ou registos detetados.
  • Quando importa dados de uma origem externa, a Proteção de dados confidenciais analisa os dados armazenados no BigQuery para encontrar dados confidenciais que não estejam protegidos. Para mais informações, consulte o artigo Usar a proteção de dados confidenciais para analisar dados do BigQuery.

VPC Service Controls

Aplicável a origens internas e externas; no entanto, existem perímetros diferentes.

O VPC Service Controls cria perímetros de segurança que isolam serviços e recursos através da configuração de autorização, controlos de acesso e troca de dados segura. Os perímetros são os seguintes:

  • Um perímetro de carregamento de dados aceita dados recebidos (em lote ou stream) e remove a identificação dos mesmos. Uma zona de destino separada ajuda a proteger o resto das suas cargas de trabalho de dados recebidos.
  • Quando importa dados do Google Cloud, um perímetro de dados confidenciais pode voltar a identificar os dados confidenciais e armazená-los numa área restrita.
  • Quando importa dados externos, um perímetro de dados isola os dados de encriptação de outras cargas de trabalho.
  • Um perímetro de governação armazena as chaves de encriptação e define o que é considerado dados confidenciais.

Estes perímetros foram concebidos para proteger o conteúdo recebido, isolar dados confidenciais através da configuração de controlos de acesso e monitorização adicionais, e separar a sua administração dos dados reais no armazém. A sua administração inclui a gestão de chaves, a gestão do catálogo de dados e o registo.

Estrutura da organização

Agrupa os recursos da sua organização para os poder gerir e separar os ambientes de teste do ambiente de produção. O Resource Manager permite-lhe agrupar logicamente os recursos por projeto, pasta e organização.

Os diagramas seguintes mostram uma hierarquia de recursos com pastas que representam diferentes ambientes, como bootstrap, common, produção, não produção (ou preparação) e desenvolvimento. Implementa a maioria dos projetos na arquitetura na pasta de produção e o projeto de gestão de dados na pasta comum, que é usada para a gestão.

Estrutura da organização ao importar dados do Google Cloud

O diagrama seguinte mostra a estrutura da organização quando importa dados de Google Cloud através do repositório terraform-google-secured-data-warehouse.

A hierarquia de recursos para um armazém de dados confidenciais para origens internas.

Estrutura da organização ao importar dados de origens externas

O diagrama seguinte mostra a estrutura da organização quando importa dados de uma origem externa através do repositório terraform-google-secured-data-warehouse-onprem-ingest.

A hierarquia de recursos para um armazém de dados confidenciais para origens externas.

Pastas

Usa pastas para isolar o ambiente de produção e os serviços de administração dos ambientes de não produção e de testes. A tabela seguinte descreve as pastas do esquema de bases empresariais usadas por esta arquitetura.

Pasta Descrição

Bootstrap

Contém os recursos necessários para implementar o projeto das bases empresariais.

Comum

Contém serviços centralizados para a organização, como o projeto de administração de dados.

Produção

Contém projetos com recursos na nuvem que foram testados e estão prontos a usar. Nesta arquitetura, a pasta de produção contém o projeto de carregamento de dados e os projetos relacionados com dados.

Não produção

Contém projetos com recursos na nuvem que estão a ser testados e preparados para lançamento. Nesta arquitetura, a pasta Non-production contém o projeto de carregamento de dados e projetos relacionados com dados.

Programação

Contém projetos com recursos na nuvem que estão a ser desenvolvidos. Nesta arquitetura, a pasta Development contém o projeto de carregamento de dados e projetos relacionados com dados.

Pode alterar os nomes destas pastas para se alinharem com a estrutura de pastas da sua organização, mas recomendamos que mantenha uma estrutura semelhante. Para mais informações, consulte o projeto de bases empresariais.

Projetos

Isola partes do seu ambiente através de projetos. A tabela seguinte descreve os projetos necessários na organização. Cria estes projetos quando executa o código do Terraform. Pode alterar os nomes destes projetos, mas recomendamos que mantenha uma estrutura de projeto semelhante.

Projeto Descrição

Carregamento de dados

Projeto comum para fontes internas e externas.

Contém serviços que são necessários para receber dados e remover a identificação de dados confidenciais.

Gestão de dados

Projeto comum para fontes internas e externas.

Contém serviços que oferecem capacidades de gestão de chaves, registo e catalogação de dados.

Dados não confidenciais

Projete apenas para fontes internas.

Contém serviços que são necessários para armazenar dados que foram anonimizados.

Dados confidenciais

Projete apenas para fontes internas.

Contém serviços que são necessários para armazenar e reidentificar dados confidenciais.

Dados

Projeto apenas para origens externas.

Contém serviços que são necessários para armazenar dados.

Além destes projetos, o seu ambiente também tem de incluir um projeto que aloje uma tarefa de Flex Template do Dataflow. A tarefa de modelo flexível é necessária para o pipeline de dados de streaming.

Mapeamento de funções e grupos para projetos

Tem de conceder a diferentes grupos de utilizadores na sua organização acesso aos projetos que compõem o data warehouse confidencial. As secções seguintes descrevem as recomendações de arquitetura para grupos de utilizadores e atribuições de funções nos projetos que criar. Pode personalizar os grupos para corresponderem à estrutura existente da sua organização, mas recomendamos que mantenha uma segregação de funções e uma atribuição de funções semelhantes.

Grupo de analistas de dados

Os analistas de dados analisam os dados no armazém. No repositório terraform-google-secured-data-warehouse-onprem-ingest, este grupo pode ver os dados depois de terem sido carregados no data warehouse e realizar as mesmas operações que o grupo Visualizador de dados encriptados.

A tabela seguinte descreve as funções do grupo em diferentes projetos para o repositório terraform-google-secured-data-warehouse (apenas origens de dados internas).

Mapeamento de projetos Funções

Carregamento de dados

Função adicional para analistas de dados que requerem acesso a dados confidenciais:

Dados confidenciais

Dados não confidenciais

A tabela seguinte descreve as funções do grupo em diferentes projetos para o repositório terraform-google-secured-data-warehouse-onprem-ingest (apenas origens de dados externos).

Âmbito da atribuição Funções

Projeto de carregamento de dados

Projeto de dados

Nível da Política de Dados

Masked Reader (roles/bigquerydatapolicy.maskedReader)

Grupo de visualizadores de dados encriptados (apenas origens externas)

O grupo Visualizador de dados encriptados no repositório terraform-google-secured-data-warehouse-onprem-ingestpode ver dados encriptados de tabelas de relatórios do BigQuery através do Looker Studio e de outras ferramentas de relatórios, como o SAP Business Objects. O grupo de visualizadores de dados encriptados não pode ver dados de texto não cifrado de colunas encriptadas.

Este grupo requer a função Utilizador do BigQuery (roles/bigquery.jobUser) no projeto de dados. Este grupo também requer a função Leitor com máscara (roles/bigquerydatapolicy.maskedReader) ao nível da política de dados.

Grupo de leitores de texto simples (apenas fontes externas)

O grupo Plaintext reader no repositório terraform-google-secured-data-warehouse-onprem-ingesttem a autorização necessária para chamar a função definida pelo utilizador (UDF) de desencriptação para ver dados de texto simples e a autorização adicional para ler dados não ocultados.

Este grupo requer as seguintes funções no projeto de dados:

Além disso, este grupo requer a função Leitor detalhado (roles/datacatalog.categoryFineGrainedReader) ao nível do catálogo universal do Dataplex.

Grupo de engenheiros de dados

Os engenheiros de dados configuram e mantêm o pipeline de dados e o armazém.

A tabela seguinte descreve as funções do grupo em diferentes projetos para o repositório terraform-google-secured-data-warehouse.

Pontuação do trabalho Funções

Projeto de carregamento de dados

Projeto de dados confidenciais

Projeto de dados não confidenciais

A tabela seguinte descreve as funções do grupo em diferentes projetos para o repositório terraform-google-secured-data-warehouse-onprem-ingest.

Âmbito da atribuição Funções

Projeto de carregamento de dados

Projeto de dados

Grupo de administradores de rede

Os administradores de rede configuram a rede. Normalmente, são membros da equipa de rede.

Os administradores de rede precisam das seguintes funções ao nível da organização:

Grupo de administradores de segurança

Os administradores de segurança administram controlos de segurança, como acesso, chaves, regras de firewall, VPC Service Controls e o Security Command Center.

Os administradores de segurança precisam das seguintes funções ao nível da organização:

Grupo de analistas de segurança

Os analistas de segurança monitorizam e respondem a incidentes de segurança e a resultados da proteção de dados confidenciais.

Os analistas de segurança precisam das seguintes funções ao nível da organização:

Exemplos de fluxos de acesso a grupos para origens externas

As secções seguintes descrevem os fluxos de acesso para dois grupos quando importa dados de origens externas através do repositório terraform-google-secured-data-warehouse-onprem-ingest.

Fluxo de acesso para o grupo de visualizadores de dados encriptados

O diagrama seguinte mostra o que ocorre quando um utilizador do grupo visualizador de dados encriptados tenta aceder a dados encriptados no BigQuery.

O fluxo para o grupo de visualizadores de dados encriptados.

Seguem-se os passos para aceder aos dados no BigQuery:

  1. O visualizador de dados encriptados executa a seguinte consulta no BigQuery para aceder a dados confidenciais:

    SELECT ssn, pan FROM cc_card_table
    
  2. O BigQuery valida o acesso da seguinte forma:

    • O utilizador está autenticado com credenciais válidas e não expiradas. Google Cloud
    • A identidade do utilizador e o endereço IP de origem do pedido fazem parte da lista de autorizações no nível de acesso ou na regra de entrada no perímetro dos VPC Service Controls.
    • O IAM verifica se o utilizador tem as funções adequadas e se tem autorização para aceder às colunas encriptadas selecionadas na tabela do BigQuery.

O BigQuery devolve os dados confidenciais em formato encriptado.

Fluxo de acesso para o grupo de leitores de texto simples

O diagrama seguinte mostra o que ocorre quando um utilizador do grupo leitor de texto simples tenta aceder a dados encriptados no BigQuery.

O fluxo para o grupo de leitores de texto simples.

Seguem-se os passos para aceder aos dados no BigQuery:

  1. O leitor de texto simples executa a seguinte consulta no BigQuery para aceder a dados confidenciais no formato descifrado:

    SELECT decrypt_ssn(ssn) FROM cc_card_table
    
  2. O BigQuery chama a função definida pelo utilizador (UDF) de desencriptação na consulta para aceder às colunas protegidas.

  3. O acesso é validado da seguinte forma:

    • O IAM verifica se o utilizador tem as funções adequadas e se tem autorização para aceder à UDF de desencriptação no BigQuery.
    • A UDF obtém a chave de encriptação de dados (DEK) envolvida que foi usada para proteger as colunas de dados confidenciais.
  4. A UDF de desencriptação chama a chave de encriptação de chaves (KEK) no Cloud HSM para desenvolver a DEK. A UDF de desencriptação usa a função de desencriptação AEAD do BigQuery para desencriptar as colunas de dados confidenciais.

  5. O utilizador tem acesso aos dados de texto simples nas colunas de dados confidenciais.

Controlos de segurança comuns

As secções seguintes descrevem os controlos que se aplicam a fontes internas e externas.

Controlos de carregamento de dados

Para criar o seu armazém de dados, tem de transferir dados de outra Google Cloud origem (por exemplo, um lago de dados), do seu ambiente no local ou de outra nuvem. Pode usar uma das seguintes opções para transferir os seus dados para o armazém de dados no BigQuery:

  • Uma tarefa em lote que usa o Cloud Storage.
  • Uma tarefa de streaming que usa o Pub/Sub.

Para ajudar a proteger os dados durante o carregamento, pode usar a encriptação por parte do cliente, regras de firewall e políticas de nível de acesso. O processo de carregamento é, por vezes, denominado processo de extração, transformação e carregamento (ETL).

Regras de rede e de firewall

As regras da firewall da nuvem virtual privada (VPC) controlam o fluxo de dados para os perímetros. Cria regras de firewall que negam todas as saídas, exceto as ligações específicas da porta TCP 443 dos nomes de domínios restricted.googleapis.comespeciais. O domínio restricted.googleapis.com tem as seguintes vantagens:

  • Ajuda a reduzir a superfície de ataque da sua rede através do acesso privado à Google quando as cargas de trabalho comunicam com as APIs e os serviços Google.
  • Garante que usa apenas serviços que suportam os VPC Service Controls.

Para mais informações, consulte o artigo Configurar o acesso privado da Google.

Quando usar o repositório terraform-google-secured-data-warehouse, tem de configurar sub-redes separadas para cada tarefa do Dataflow. As sub-redes separadas garantem que os dados que estão a ser anonimizados são devidamente separados dos dados que estão a ser reidentificados.

O pipeline de dados requer que abra portas TCP na firewall, conforme definido no ficheiro dataflow_firewall.tf nos repositórios respetivos. Para mais informações, consulte o artigo Configurar o acesso à Internet e as regras da firewall.

Para negar aos recursos a capacidade de usar endereços IP externos, a política da organização Definir IPs externos permitidos para instâncias de VMs (compute.vmExternalIpAccess) está definida para negar tudo.

Controlos de perímetro

Conforme mostrado no diagrama de arquitetura, coloca os recursos do armazém de dados em perímetros separados. Para permitir que os serviços em diferentes perímetros partilhem dados, crie pontes de perímetro.

As pontes de perímetro permitem que os serviços protegidos façam pedidos de recursos fora do respetivo perímetro. Estas pontes estabelecem as seguintes ligações para o repositório terraform-google-secured-data-warehouse:

  • Associam o projeto de carregamento de dados ao projeto de governação para que a anulação da identificação possa ocorrer durante o carregamento.
  • Associam o projeto de dados não confidenciais e o projeto de dados confidenciais, para que os dados confidenciais possam ser reidentificados quando um analista de dados o solicitar.
  • Associam o projeto confidencial ao projeto de administração de dados para que a reidentificação possa ocorrer quando um analista de dados a solicitar.

Estas pontes estabelecem as seguintes ligações para o repositório terraform-google-secured-data-warehouse-onprem-ingest:

  • Associam o projeto de carregamento de dados ao projeto de dados para que os dados possam ser carregados para o BigQuery.
  • Associam o projeto de dados ao projeto de administração de dados para que a Proteção de dados confidenciais possa analisar o BigQuery em busca de dados confidenciais não protegidos.
  • Associam o projeto de carregamento de dados ao projeto de administração de dados para acesso ao registo, à monitorização e às chaves de encriptação.

Além das pontes de perímetro, usa regras de saída para permitir que os recursos protegidos por perímetros de serviço acedam a recursos que estão fora do perímetro. Nesta solução, configura regras de saída para obter as tarefas de modelo flexível do Dataflow externas localizadas no Cloud Storage num projeto externo. Para mais informações, consulte o artigo Aceda a um recurso fora do perímetro. Google Cloud

Política de acesso

Para ajudar a garantir que apenas identidades específicas (utilizador ou serviço) podem aceder a recursos e dados, ative os grupos e as funções da IAM.

Para ajudar a garantir que apenas origens específicas podem aceder aos seus projetos, ative uma política de acesso para a sua organização Google. Recomendamos que crie uma política de acesso que especifique o intervalo de endereços IP permitidos para pedidos e permita apenas pedidos de utilizadores ou contas de serviço específicos. Para mais informações, consulte os atributos do nível de acesso.

Contas de serviço e controlos de acesso

As contas de serviço são identidades que Google Cloud pode usar para executar pedidos de API em seu nome. As contas de serviço garantem que as identidades dos utilizadores não têm acesso direto aos serviços. Para permitir a separação de funções, crie contas de serviço com funções diferentes para fins específicos. Estas contas de serviço estão definidas no módulo data-ingestion e no módulo confidential-data em cada arquitetura.

Para o repositório terraform-google-secured-data-warehouse, as contas de serviço são as seguintes:

  • Uma conta de serviço do controlador do Dataflow para o pipeline do Dataflow que remove a identificação dos dados confidenciais.
  • Uma conta de serviço do controlador do Dataflow para o pipeline do Dataflow que identifica novamente os dados confidenciais.
  • Uma conta de serviço do Cloud Storage para carregar dados de um ficheiro em lote.
  • Uma conta de serviço do Pub/Sub para carregar dados de um serviço de streaming.
  • Uma conta de serviço do Cloud Scheduler para executar a tarefa em lote do Dataflow que cria o pipeline do Dataflow.

A tabela seguinte indica as funções atribuídas a cada conta de serviço:

Conta de serviço Nome Projeto Funções

Controlador do Dataflow

Esta conta é usada para a desidentificação.

sa-dataflow-controller

Carregamento de dados

Controlador do Dataflow

Esta conta é usada para reidentificação.

sa-dataflow-controller-reid

Dados confidenciais

Cloud Storage

sa-storage-writer

Carregamento de dados

Pub/Sub

sa-pubsub-writer

Carregamento de dados

Cloud Scheduler

sa-scheduler-controller

Carregamento de dados

Para o repositório terraform-google-secured-data-warehouse-onprem-ingest, as contas de serviço são as seguintes:

  • A conta de serviço do Cloud Storage executa o processo de carregamento de dados em lote automatizado para o contentor de armazenamento de carregamento.
  • A conta de serviço do Pub/Sub permite o streaming de dados para o serviço Pub/Sub.
  • A conta de serviço do controlador do Dataflow é usada pelo pipeline do Dataflow para transformar e escrever dados do Pub/Sub para o BigQuery.
  • A conta de serviço das funções do Cloud Run escreve dados de lotes subsequentes carregados do Cloud Storage para o BigQuery.
  • A conta de serviço de carregamento de armazenamento permite que o pipeline de ETL crie objetos.
  • A conta de serviço de escrita do Pub/Sub permite que o pipeline ETL escreva dados no Pub/Sub.

A tabela seguinte indica as funções atribuídas a cada conta de serviço:

Nome Funções Âmbito da atribuição

Conta de serviço do controlador do Dataflow

Projeto de carregamento de dados

Projeto de dados

Gestão de dados

Conta de serviço das funções do Cloud Run

Projeto de carregamento de dados

Projeto de dados

Conta de serviço de carregamento de armazenamento

Projeto de carregamento de dados

Conta de serviço de gravação do Pub/Sub

Projeto de carregamento de dados

Políticas organizacionais

Esta arquitetura inclui as restrições da política da organização que o projeto detalhado das bases empresariais usa e adiciona restrições adicionais. Para mais informações acerca das restrições usadas no esquema detalhado das bases empresariais, consulte as restrições da política da organização.

A tabela seguinte descreve as restrições da política organizacional adicionais que estão definidas no módulo org_policies para os respetivos repositórios:

Política Nome da restrição Valor recomendado

Restrinja as implementações de recursos a localizações físicas específicas. Para valores adicionais, consulte Grupos de valores.

gcp.resourceLocations

Uma das seguintes opções:

in:us-locations

in:eu-locations

in:asia-locations

Desative a criação de contas de serviço

iam.disableServiceAccountCreation

true

Ative o SO Login para VMs criadas no projeto.

compute.requireOsLogin

true

Restrinja as novas regras de encaminhamento para serem apenas internas, com base no endereço IP.

compute.restrictProtocolForwardingCreationForTypes

INTERNAL

Definir o conjunto de sub-redes da VPC partilhada que os recursos do Compute Engine podem usar.

compute.restrictSharedVpcSubnetworks

projects//regions//s ubnetworks/.

Substitua pelo ID de recurso da sub-rede privada que quer que a arquitetura use.

Desative o registo de saída da porta série no Cloud Logging.

compute.disableSerialPortLogging

true

Exigir proteção CMEK (terraform-google-secured-data-warehouse-onprem-ingest apenas)

gcp.restrictNonCmekServices

bigquery.googleapis.com

Desative a criação de chaves de contas de serviço (terraform-google-secured-data-warehouse-onprem-ingest only)

disableServiceAccountKeyCreation

verdadeiro

Ativar o Início de sessão do SO para VMs criadas no projeto (terraform-google-secured-data-warehouse-onprem-ingest only)

compute.requireOsLogin

verdadeiro

Desative as concessões automáticas de funções à conta de serviço predefinida (terraform-google-secured-data-warehouse-onprem-ingest only)

automaticIamGrantsForDefaultServiceAccounts

verdadeiro

Definições de entrada permitidas (funções do Cloud Run) (terraform-google-secured-data-warehouse-onprem-ingest only)

cloudfunctions.allowedIngressSettings

ALLOW_INTERNAL_AND_GCLB

Controlos de segurança para origens de dados externas

As secções seguintes descrevem os controlos que se aplicam à ingestão de dados de origens externas.

Ligação encriptada a Google Cloud

Quando importa dados de origens externas, pode usar o Cloud VPN ou o Cloud Interconnect para proteger todos os dados que fluem entre Google Cloud e o seu ambiente. Esta arquitetura empresarial recomenda o Dedicated Interconnect, porque oferece uma ligação direta e um elevado débito, que são importantes se estiver a fazer stream de muitos dados.

Para permitir o acesso a Google Cloud a partir do seu ambiente, tem de definir endereços IP na lista de autorizações nas regras da política de níveis de acesso.

Encriptação do lado do cliente

Antes de mover os seus dados confidenciais para o Google Cloud, encriptar os dados localmente para ajudar a protegê-los em repouso e em trânsito. Pode usar a biblioteca de encriptação Tink ou outras bibliotecas de encriptação. A biblioteca de encriptação do Tink é compatível com a encriptação AEAD do BigQuery, que a arquitetura usa para desencriptar dados encriptados ao nível da coluna após a importação dos dados.

A biblioteca de encriptação Tink usa DEKs que pode gerar localmente ou a partir do Cloud HSM. Para encapsular ou proteger a DEK, pode usar uma KEK gerada no Cloud HSM. A KEK é um conjunto de chaves de encriptação CMEK simétricas que é armazenado em segurança no Cloud HSM e gerido através de funções e autorizações da IAM.

Durante o carregamento, a DEK envolvida e os dados são armazenados no BigQuery. O BigQuery inclui duas tabelas: uma para os dados e outra para a DEK envolvida. Quando os analistas precisam de ver dados confidenciais, o BigQuery pode usar a desencriptação AEAD para desencapsular a DEK com a KEK e desencriptar a coluna protegida.

Além disso, a encriptação do lado do cliente com o Tink protege ainda mais os seus dados encriptando as colunas de dados confidenciais no BigQuery. A arquitetura usa as seguintes chaves de encriptação do Cloud HSM:

  • Uma chave CMEK para o processo de carregamento que também é usada pelo Pub/Sub, pela pipeline do Dataflow para streaming, pelo carregamento em lote do Cloud Storage e pelos artefactos das funções do Cloud Run para carregamentos em lote subsequentes.
  • A chave criptográfica envolvida pelo Cloud HSM para os dados encriptados na sua rede através do Tink.
  • Chave CMEK para o armazém do BigQuery no projeto de dados.

Especifica a localização da CMEK, que determina a localização geográfica onde a chave é armazenada e disponibilizada para acesso. Tem de garantir que a CMEK está na mesma localização que os seus recursos. Por predefinição, a CMEK é rodada a cada 30 dias.

Se as obrigações de conformidade da sua organização exigirem que faça a gestão das suas próprias chaves externamente ao Google Cloud, pode ativar o Cloud External Key Manager. Se usar chaves externas, é responsável pelas atividades de gestão de chaves, incluindo a rotação de chaves.

Ocultação dinâmica de dados

Para ajudar na partilha e aplicação de políticas de acesso aos dados em grande escala, pode configurar a ocultação de dados dinâmicos. A ocultação de dados dinâmica permite que as consultas existentes ocultem automaticamente os dados das colunas através dos seguintes critérios:

  • As regras de ocultação aplicadas à coluna no tempo de execução da consulta.
  • As funções atribuídas ao utilizador que está a executar a consulta. Para aceder aos dados de colunas não ocultados, o analista de dados tem de ter a função de Leitor detalhado.

Para definir o acesso a colunas no BigQuery, crie etiquetas de políticas. Por exemplo, a taxonomia criada no exemplo autónomo cria a etiqueta de política 1_Sensitive para colunas que incluem dados que não podem ser tornados públicos, como o limite de crédito. A regra de ocultação de dados predefinida é aplicada a estas colunas para ocultar o valor da coluna.

Tudo o que não estiver etiquetado está disponível para todos os utilizadores que têm acesso ao data warehouse. Estes controlos de acesso garantem que, mesmo depois de os dados serem escritos no BigQuery, os dados em campos confidenciais continuam a não poder ser lidos até o acesso ser explicitamente concedido ao utilizador.

Encriptação e desencriptação ao nível da coluna

A encriptação ao nível da coluna permite-lhe encriptar dados no BigQuery a um nível mais detalhado. Em vez de encriptar uma tabela inteira, selecione as colunas que contêm dados confidenciais no BigQuery e apenas essas colunas são encriptadas. O BigQuery usa funções de encriptação e desencriptação AEAD que criam os conjuntos de chaves que contêm as chaves para encriptação e desencriptação. Estas chaves são, em seguida, usadas para encriptar e desencriptar valores individuais numa tabela e para rodar chaves num conjunto de chaves. A encriptação ao nível da coluna oferece controlo de acesso duplo aos dados encriptados no BigQuery, porque o utilizador tem de ter autorizações para a tabela e a chave de encriptação para ler dados em texto não cifrado.

Profiler de dados para o BigQuery com a proteção de dados confidenciais

O perfilador de dados permite-lhe identificar as localizações de dados confidenciais e de alto risco nas tabelas do BigQuery. O perfilador de dados analisa e examina automaticamente todas as tabelas e colunas do BigQuery em toda a organização, incluindo todas as pastas e projetos. Em seguida, o perfilador de dados produz métricas como os infoTypes previstos, os níveis de risco e sensibilidade dos dados avaliados e metadados sobre as suas tabelas. Com estas estatísticas, pode tomar decisões informadas sobre como protege, partilha e usa os seus dados.

Controlos de segurança para origens de dados internas

As secções seguintes descrevem os controlos que se aplicam ao carregamento de dados de Google Cloud origens.

Gestão de chaves e encriptação para carregamento

Ambas as opções de carregamento (Cloud Storage ou Pub/Sub) usam o Cloud HSM para gerir a CMEK. Usa as chaves CMEK para ajudar a proteger os seus dados durante o carregamento. A proteção de dados confidenciais protege ainda mais os seus dados encriptando dados confidenciais, usando os detetores que configurar.

Para carregar dados, usa as seguintes chaves de encriptação:

  • Uma chave CMEK para o processo de carregamento que também é usada pelo pipeline do Dataflow e pelo serviço Pub/Sub.
  • A chave criptográfica encapsulada pelo Cloud HSM para o processo de desidentificação de dados através da proteção de dados confidenciais.
  • Duas chaves CMEK, uma para o armazém do BigQuery no projeto de dados não confidenciais e outra para o armazém no projeto de dados confidenciais. Para mais informações, consulte o artigo Gestão de chaves.

Especifica a localização da CMEK, que determina a localização geográfica onde a chave é armazenada e disponibilizada para acesso. Tem de garantir que a sua CMEK está na mesma localização que os seus recursos. Por predefinição, a CMEK é rodada a cada 30 dias.

Se as obrigações de conformidade da sua organização exigirem que faça a gestão das suas próprias chaves externamente a partir do Google Cloud, pode ativar o Cloud EKM. Se usar chaves externas, é responsável pelas atividades de gestão de chaves, incluindo a rotação de chaves.

Desidentificação dos dados

Utiliza a proteção de dados confidenciais para desidentificar os seus dados estruturados e não estruturados durante a fase de carregamento. Para dados estruturados, usa transformações de registos com base em campos para anular a identificação dos dados. Para ver um exemplo desta abordagem, consulte a pasta /examples/de_identification_template/. Este exemplo verifica se existem números de cartões de crédito e PINs de cartões nos dados estruturados. Para dados não estruturados, usa tipos de informações para remover a identificação dos dados.

Para desidentificar dados etiquetados como confidenciais, usa a proteção de dados confidenciais e uma pipeline do Dataflow para criar símbolos. Este pipeline recebe dados do Cloud Storage, processa-os e, em seguida, envia-os para o armazém de dados do BigQuery.

Para mais informações sobre o processo de desidentificação dos dados, consulte a governança de dados.

Controlos de acesso ao nível da coluna

Para ajudar a proteger os dados confidenciais, usa controlos de acesso para colunas específicas no armazém do BigQuery. Para aceder aos dados nestas colunas, um analista de dados tem de ter a função de leitor detalhado.

Para definir o acesso a colunas no BigQuery, crie etiquetas de políticas. Por exemplo, o ficheiro taxonomy.tf no módulo de exemplo bigquery-confidential-data cria as seguintes etiquetas:

  • Uma etiqueta de política 3_Confidential para colunas que incluem informações muito confidenciais, como números de cartões de crédito. Os utilizadores que têm acesso a esta etiqueta também têm acesso a colunas etiquetadas com as etiquetas de políticas 2_Private ou 1_Sensitive.
  • Uma etiqueta de política 2_Private para colunas que incluem informações de identificação pessoal (IIP) sensíveis, como o nome próprio de uma pessoa. Os utilizadores que têm acesso a esta etiqueta também têm acesso a colunas etiquetadas com a etiqueta de política 1_Sensitive. Os utilizadores não têm acesso a colunas etiquetadas com a etiqueta de política 3_Confidential.
  • Uma etiqueta de política 1_Sensitive para colunas que incluem dados que não podem ser tornados públicos, como o limite de crédito. Os utilizadores que têm acesso a esta etiqueta não têm acesso a colunas etiquetadas com as etiquetas de políticas 2_Private ou 3_Confidential.

Tudo o que não estiver etiquetado está disponível para todos os utilizadores que tenham acesso ao data warehouse.

Estes controlos de acesso garantem que, mesmo após a reidentificação dos dados, os dados continuam a não poder ser lidos até que o acesso seja explicitamente concedido ao utilizador.

Nota: pode usar as definições predefinidas para executar os exemplos. Para ver mais práticas recomendadas, consulte o artigo Práticas recomendadas para usar etiquetas de políticas no BigQuery.

Contas de serviço com funções limitadas

Tem de limitar o acesso ao projeto de dados confidenciais para que apenas os utilizadores autorizados possam ver os dados confidenciais. Para tal, crie uma conta de serviço com a função Utilizador da conta de serviço (roles/iam.serviceAccountUser) que os utilizadores autorizados têm de se fazer passar. A representação da conta de serviço ajuda os utilizadores a usar contas de serviço sem transferir as chaves das contas de serviço, o que melhora a segurança geral do seu projeto. A representação cria um token de curto prazo que os utilizadores autorizados com a função Criador de tokens de conta de serviço (roles/iam.serviceAccountTokenCreator) podem transferir.

Gestão de chaves e encriptação para armazenamento e reidentificação

Gerir chaves CMEK separadas para os seus dados confidenciais, para que possa voltar a identificar os dados. Usa o Cloud HSM para proteger as suas chaves. Para voltar a identificar os seus dados, use as seguintes chaves:

  • Uma chave CMEK que o pipeline do Dataflow usa para o processo de reidentificação.
  • A chave criptográfica original que a proteção de dados confidenciais usa para desidentificar os seus dados.
  • Uma chave CMEK para o armazém do BigQuery no projeto de dados confidenciais.

Conforme mencionado em Gestão de chaves e encriptação para carregamento, pode especificar a localização da CMEK e os períodos de rotação. Pode usar o EKM na nuvem se for exigido pela sua organização.

Operações

Pode ativar o registo e as funcionalidades do Security Command Center Premium ou do nível Enterprise, como as estatísticas de segurança e a deteção de ameaças de eventos. Estes controlos ajudam a fazer o seguinte:

  • Monitorizar quem está a aceder aos seus dados.
  • Certifique-se de que é implementada uma auditoria adequada.
  • Gerar resultados para recursos na nuvem com erros de configuração
  • Apoiar a capacidade das suas equipas de gestão de incidentes e operações de responder a problemas que possam ocorrer.

Transparência de acesso

A Transparência de acesso envia-lhe uma notificação em tempo real quando o pessoal da Google precisa de aceder aos seus dados. Os registos da Transparência de acesso são gerados sempre que um humano acede ao conteúdo, e apenas o pessoal da Google com justificações comerciais válidas (por exemplo, um registo de apoio técnico) pode obter acesso.

Registo

Para ajudar a cumprir os requisitos de auditoria e obter estatísticas sobre os seus projetos, configure o Google Cloud Observability com registos de dados para os serviços que quer acompanhar. O módulo centralized-logging nos repositórios configura as seguintes práticas recomendadas:

Para todos os serviços nos projetos, os seus registos têm de incluir informações sobre leituras e escritas de dados, bem como informações sobre o que os administradores leem. Para ver práticas recomendadas de registo adicionais, consulte o artigo Controlos de deteção.

Alertas e monitorização

Depois de implementar a arquitetura, pode configurar alertas para notificar o seu centro de operações de segurança (SOC) de que pode estar a ocorrer um incidente de segurança. Por exemplo, pode usar alertas para informar o seu analista de segurança quando uma autorização do IAM tiver sido alterada. Para mais informações sobre a configuração de alertas do Security Command Center, consulte o artigo Configurar notificações de resultados. Para alertas adicionais que não são publicados pelo Security Command Center, pode configurar alertas com o Cloud Monitoring.

Considerações de segurança adicionais

Além dos controlos de segurança descritos neste documento, deve rever e gerir a segurança e o risco em áreas importantes que se sobrepõem e interagem com a sua utilização desta solução. Estas incluem o seguinte:

  • A segurança do código que usa para configurar, implementar e executar tarefas do Dataflow e funções do Cloud Run.
  • A taxonomia de classificação de dados que usa com esta solução.
  • Geração e gestão de chaves de encriptação.
  • O conteúdo, a qualidade e a segurança dos conjuntos de dados que armazena e analisa no data warehouse.
  • O ambiente geral no qual implementa a solução, incluindo o seguinte:
    • A conceção, a segmentação e a segurança das redes às quais se liga a esta solução.
    • A segurança e a governação dos controlos de IAM da sua organização.
    • As definições de autenticação e autorização para os intervenientes aos quais concede acesso à infraestrutura que faz parte desta solução e que têm acesso aos dados armazenados e geridos nessa infraestrutura.

Reunir tudo num só lugar

Para implementar a arquitetura descrita neste documento, faça o seguinte:

  1. Determine se vai implementar a arquitetura com o esquema detalhado das bases empresariais ou de forma autónoma. Se optar por não implementar o projeto detalhado das bases empresariais, certifique-se de que o seu ambiente tem uma base de segurança semelhante implementada.
  2. Para importar dados de origens externas, configure uma ligação Dedicated Interconnect com a sua rede.
  3. Reveja o terraform-google-secured-data-warehouse README ou o terraform-google-secured-data-warehouse-onprem-ingest README e certifique-se de que cumpre todos os pré-requisitos.
  4. Verifique se a sua identidade de utilizador tem as funções Utilizador da conta de serviço (roles/iam.serviceAccountUser) e Criador de tokens da conta de serviço Criador de tokens da conta de serviço (roles/iam.serviceAccountTokenCreator) para a pasta de desenvolvimento da sua organização, conforme descrito em Estrutura da organização. Se não tiver uma pasta que use para testes, crie uma pasta e configure o acesso.

  5. Registe o ID da conta de faturação, o nome a apresentar da organização, o ID da pasta para a sua pasta de teste ou demonstração e os endereços de email dos seguintes grupos de utilizadores:

    • Analistas de dados
    • Visualizador de dados encriptados
    • Leitor de texto simples
    • Engenheiros de dados
    • Administradores de rede
    • Administradores de segurança
    • Analistas de segurança
  6. Crie os projetos. Para ver uma lista das APIs que tem de ativar, consulte o ficheiro README.

  7. Crie a conta de serviço para o Terraform e atribua as funções adequadas para todos os projetos.

  8. Configure a política de controlo de acesso.

  9. Para Google Cloud origens de dados que usam o repositório terraform-google-secured-data-warehouse, no seu ambiente de teste, implemente o passo a passo para ver a solução em ação. Como parte do processo de testes, considere o seguinte:

    1. Adicione os seus próprios dados de exemplo ao armazém do BigQuery.
    2. Trabalhe com um analista de dados na sua empresa para testar o respetivo acesso aos dados confidenciais e se consegue interagir com os dados do BigQuery da forma esperada.
  10. Para origens de dados externas que usam o repositório terraform-google-secured-data-warehouse-onprem-ingest, no ambiente de teste, implemente a solução:

    1. Clone e execute os scripts do Terraform para configurar um ambiente no Google Cloud.
    2. Instale a biblioteca de encriptação do Tink na sua rede.

    3. Configure as Credenciais padrão da aplicação para poder executar a biblioteca Tink na sua rede.

    4. Crie chaves de encriptação com o Cloud KMS.

    5. Gere conjuntos de chaves encriptados com o Tink.

    6. Encriptar dados com o Tink através de um dos seguintes métodos:

    7. Carregue dados encriptados para o BigQuery através de carregamentos por streaming ou em lote.

  11. Para origens de dados externas, verifique se os utilizadores autorizados podem ler dados não encriptados do BigQuery através da função de desencriptação AEAD do BigQuery. Por exemplo, execute a seguinte função de descifragem:

    Execute a consulta de criação de vista:

    CREATE OR REPLACE VIEW `{project_id}.{bigquery_dataset}.decryption_view` AS
    
    SELECT
     Card_Type_Code,
     Issuing_Bank,
     Card_Number,
     `bigquery_dataset.decrypt`(Card_Number) AS Card_Number_Decrypted
    FROM `project_id.dataset.table_name`
    

    Execute a consulta de seleção a partir da vista:

    SELECT
      Card_Type_Code,
      Issuing_Bank,
      Card_Number,
      Card_Number_Decrypted
    FROM
    `{project_id}.{bigquery_dataset}.decrypted_view`
    

    Para consultas e exemplos de utilização adicionais, consulte o artigo Encriptação ao nível da coluna com o Cloud KMS.

  12. Use o Security Command Center para analisar os projetos recém-criados em função dos seus requisitos de conformidade.

  13. Implemente a arquitetura no seu ambiente de produção.

O que se segue?