Neste tutorial, mostramos como implementar um sistema automatizado de quarentena e classificação de dados usando o Cloud Storage e outros produtos do Google Cloud. Presumimos que você conheça oGoogle Cloud e a programação básica do shell.
Em todas as organizações, os responsáveis pela segurança de dados como você lidam com uma quantidade cada vez maior de dados que precisam ser protegidos e tratados adequadamente. Colocar em quarentena e classificar os dados pode ser complicado e demorado, principalmente se for necessário realizar esses procedimentos com centenas ou milhares de arquivos por dia.
E se você pudesse selecionar cada arquivo, enviá-lo para um local de quarentena, classificá-lo automaticamente e movê-lo para o local adequado com base no resultado da classificação? Neste tutorial, mostramos como implementar esse sistema usando as funções do Cloud Run, o Cloud Storage e a Proteção de dados sensíveis.
Objetivos
- Criar buckets do Cloud Storage a serem usados como parte do pipeline de quarentena e classificação.
- Criar um tópico e uma assinatura do Pub/Sub para notificá-lo quando o processamento do arquivo for concluído.
- Criar uma Função do Cloud simples que invoca a API DLP quando os arquivos são enviados.
- Fazer upload de alguns arquivos de amostra para o bucket de quarentena para invocar o Cloud Function. A função usa a API DLP para inspecionar e classificar os arquivos e movê-los para o bucket apropriado.
Custos
Neste tutorial, usamos componentes faturáveis do Google Cloud , incluindo:
- Cloud Storage
- Funções do Cloud Run
- Proteção de dados sensíveis
Use a calculadora de preços para gerar uma estimativa de custo com base no uso projetado.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run functions, Cloud Storage,Cloud Build Cloud Build, and Cloud Data Loss Prevention APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run functions, Cloud Storage,Cloud Build Cloud Build, and Cloud Data Loss Prevention APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.
Como conceder permissões a contas de serviço
A primeira etapa é conceder permissões a duas contas de serviço: a do Cloud Run Functions e o agente de serviço do Cloud Data Loss Prevention.
Conceder permissões à conta de serviço padrão do App Engine
No console Google Cloud , abra a página "IAM e administrador" e selecione o projeto que você criou:
Localize a conta de serviço do App Engine. Ela tem o formato
[PROJECT_ID]@appspot.gserviceaccount.com
. Substitua[PROJECT_ID]
pelo ID do projeto:Selecione o ícone de edição edit ao lado da conta de serviço.
Adicione os seguintes papéis:
- Administrador do DLP
- Agente de serviço da API DLP
Clique em Salvar.
Conceder permissões ao agente de serviço do Cloud Data Loss Prevention
O agente de serviço de prevenção contra perda de dados do Cloud é criado na primeira vez que é necessário.
No Cloud Shell, crie o agente de serviço de prevenção contra perda de dados do Cloud fazendo uma chamada para
InspectContent
:curl --request POST
"https://dlp.googleapis.com/v2/projects/PROJECT_ID/locations/us-central1/content:inspect"
--header "X-Goog-User-Project: PROJECT_ID"
--header "Authorization: Bearer $(gcloud auth print-access-token)"
--header 'Accept: application/json'
--header 'Content-Type: application/json'
--data '{"item":{"value":"google@google.com"}}'
--compressedSubstitua
PROJECT_ID
pelo ID do projeto.No console Google Cloud , abra a página IAM e administrador e selecione o projeto que você criou:
Marque a caixa de seleção Incluir concessões de papel fornecidas pelo Google.
Localize o agente de serviço do Cloud Data Loss Prevention. Ela tem o formato
service-[PROJECT_NUMBER]@dlp-api.iam.gserviceaccount.com
. Substitua[PROJECT_NUMBER]
pelo número do projeto.Selecione o ícone de edição edit ao lado da conta de serviço.
Adicione o papel Projeto > Visualizador e clique em Salvar.
Como criar o canal de quarentena e classificação
Nesta seção, você cria o pipeline de quarentena e classificação mostrado no diagrama a seguir.
Os números neste pipeline correspondem a estas etapas:
- Você faz upload de arquivos para o Cloud Storage.
- Você invoca um Cloud Function.
- A Proteção de Dados Sensíveis inspeciona e classifica os dados.
- O arquivo é movido para o bucket apropriado.
Criar buckets do Cloud Storage
Seguindo as orientações descritas nas diretrizes de nomenclatura de bucket, crie três buckets nomeados com exclusividade, usado em todo este tutorial:
- Bucket 1: substitua
[YOUR_QUARANTINE_BUCKET]
por um nome exclusivo. - Bucket 2: substitua
[YOUR_SENSITIVE_DATA_BUCKET]
por um nome exclusivo. - Bucket 3: substitua
[YOUR_NON_SENSITIVE_DATA_BUCKET]
por um nome exclusivo.
Console
No console Google Cloud , abra o navegador do Cloud Storage:
Clique em Criar bucket.
Na caixa de texto Nome do bucket, insira o nome selecionado para
[YOUR_QUARANTINE_BUCKET]
e clique em Criar.Repita para os buckets
[YOUR_SENSITIVE_DATA_BUCKET]
e[YOUR_NON_SENSITIVE_DATA_BUCKET]
.
gcloud
Abra o Cloud Shell:
Crie três buckets usando os seguintes comandos:
gcloud storage buckets create gs://[YOUR_QUARANTINE_BUCKET] gcloud storage buckets create gs://[YOUR_SENSITIVE_DATA_BUCKET] gcloud storage buckets create gs://[YOUR_NON_SENSITIVE_DATA_BUCKET]
Criar um tópico e uma assinatura do Pub/Sub
console
Abra a página Tópicos do Pub/Sub:
Selecione Criar tópico.
Na caixa de texto, insira um nome para o tópico.
Marque a caixa de seleção Adicionar uma assinatura padrão.
Clique em Criar tópico.
gcloud
Abra o Cloud Shell:
Crie um tópico substituindo
[PUB/SUB_TOPIC]
pelo nome de sua escolha:gcloud pubsub topics create [PUB/SUB_TOPIC]
Crie uma assinatura substituindo
[PUB/SUB_SUBSCRIPTION]
pelo nome de sua escolha:gcloud pubsub subscriptions create [PUB/SUB_SUBSCRIPTION] --topic [PUB/SUB_TOPIC]
Criar as funções do Cloud Run
Nesta seção, apresentamos as etapas para a implantação do script Python contendo as duas funções do Cloud Run a seguir:
- Uma função invocada quando um objeto é enviado ao Cloud Storage.
- Uma função invocada quando uma mensagem é recebida na fila do Pub/Sub.
O script Python usado para concluir este tutorial está contido em um repositório do GitHub. Para criar a primeira Função do Cloud, é necessário ativar as APIs corretas.
Para ativar as APIs, faça o seguinte:
- Se você estiver trabalhando no console, ao clicar em Criar função, será exibido um guia sobre como ativar as APIs necessárias para usar o Cloud Functions.
- Se você estiver trabalhando na gcloud CLI, deverá ativar manualmente as
seguintes APIs:
- API Artifact Registry
- API Eventarc
- API Cloud Run Admin
Como criar a primeira função
Console
Abra a página Visão geral das funções do Cloud Run:
Selecione o projeto em que você ativou as funções do Cloud Run.
Clique em Criar função.
Na caixa Nome da função, substitua o nome padrão por
create_DLP_job
.No campo Acionador, selecione Cloud Storage.
No campo Tipo de evento, selecione Finalizar/Criar.
No campo bucket, clique em Procurar, selecione o bucket de quarentena destacando o bucket na lista suspensa e clique em Selecionar.
Clique em Salvar.
Clique em Próximo.
Em Ambiente de execução, selecione Python 3.7.
Em Código-fonte, marque Editor in-line.
Substitua o texto na caixa main.py pelo conteúdo do arquivo
https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/main.py
a seguir.Substitua:
[PROJECT_ID_DLP_JOB & TOPIC]
: o ID do projeto que hospeda a função do Cloud Run e o tópico do Pub/Sub.[YOUR_QUARANTINE_BUCKET]
: o nome do bucket em que você fará o upload dos arquivos a serem processados;[YOUR_SENSITIVE_DATA_BUCKET]
: o nome do bucket para o qual você passará os arquivos confidenciais;[YOUR_NON_SENSITIVE_DATA_BUCKET]
: o nome do bucket em que você fará o upload dos arquivos a serem processados;[PUB/SUB_TOPIC]
: o nome do tópico Pub/Sub criado anteriormente.
Na caixa de texto Ponto de entrada, substitua o texto padrão por:
create_DLP_job
.Substitua o texto na caixa de texto requirements.txt pelo conteúdo do seguinte arquivo:
https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/requirements.txt.
Clique em Deploy.
Uma marca de seleção verde ao lado da função indica uma implantação bem-sucedida.
gcloud
Abra uma sessão do Cloud Shell e clone o repositório do GitHub que contém o código e alguns arquivos de dados de amostra:
Altere os diretórios para a pasta em que o repositório foi clonado:
cd ~dlp-cloud-functions-tutorials/gcs-dlp-classification-python/
Faça as seguintes substituições no arquivo main.py:
[PROJECT_ID_DLP_JOB & TOPIC]
: o ID do projeto que hospeda a função do Cloud Run e o tópico do Pub/Sub.[YOUR_QUARANTINE_BUCKET]
: o nome do bucket em que você fará o upload dos arquivos a serem processados;[YOUR_SENSITIVE_DATA_BUCKET]
: o nome do bucket para o qual você passará os arquivos confidenciais;[YOUR_NON_SENSITIVE_DATA_BUCKET]
: o nome do bucket em que você fará o upload dos arquivos a serem processados;[PUB/SUB_TOPIC
: o nome do tópico Pub/Sub criado anteriormente.
Implante a função, substituindo
[YOUR_QUARANTINE_BUCKET]
pelo nome do bucket:gcloud functions deploy create_DLP_job --runtime python37 \ --trigger-resource [YOUR_QUARANTINE_BUCKET] \ --trigger-event google.storage.object.finalize
Verifique se a função foi implantada:
gcloud functions describe create_DLP_job
Uma implantação bem-sucedida é indicada por um status pronto semelhante ao seguinte:
status: READY timeout: 60s
Quando a primeira função do Cloud Functions for implantada com sucesso, avance para a próxima seção para criar a segunda função.
Como criar a segunda função
Console
Abra a página Visão geral das funções do Cloud Run:
Selecione o projeto em que você ativou as funções do Cloud Run.
Clique em Criar função.
Na caixa Nome da função, substitua o nome padrão por
resolve_DLP
.No campo Acionador, selecione Pub/Sub.
No campo Selecionar um tópico do Cloud Pub/Sub, procure o tópico do Pub/Sub criado anteriormente.
Clique em Salvar.
Clique em Avançar.
Em Ambiente de execução, selecione Python 3.7.
Em Código-fonte, selecione Editor in-line.
Na caixa de texto Ponto de entrada, substitua o texto padrão por
resolve_DLP
.Substitua o texto na caixa main.py pelo conteúdo do seguinte arquivo: https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/main.py. Faça as seguintes substituições
[PROJECT_ID_DLP_JOB & TOPIC]
: o ID do projeto que hospeda a função do Cloud Run e o tópico do Pub/Sub.[YOUR_QUARANTINE_BUCKET]
: o nome do bucket em que você fará o upload dos arquivos a serem processados;[YOUR_SENSITIVE_DATA_BUCKET]
: o nome do bucket para o qual você passará os arquivos confidenciais;[YOUR_NON_SENSITIVE_DATA_BUCKET]
: o nome do bucket em que você fará o upload dos arquivos a serem processados;[PUB/SUB_TOPIC
: o nome do tópico Pub/Sub criado anteriormente.
Clique em Deploy.
Uma marca de seleção verde ao lado da função indica uma implantação bem-sucedida.
gcloud
Abra (ou reabra) uma sessão do Cloud Shell e clone o repositório do GitHub que contém o código e alguns arquivos de dados de amostra:
Altere os diretórios para a pasta com o código Python:
cd gcs-dlp-classification-python/
Faça as seguintes substituições no arquivo
main.py
:[PROJECT_ID_DLP_JOB & TOPIC]
: o ID do projeto que hospeda a função do Cloud Run e o tópico do Pub/Sub.[YOUR_QUARANTINE_BUCKET]
: o nome do bucket em que você fará o upload dos arquivos a serem processados;[YOUR_SENSITIVE_DATA_BUCKET]
: o nome do bucket para o qual você passará os arquivos confidenciais;[YOUR_NON_SENSITIVE_DATA_BUCKET]
: o nome do bucket em que você fará o upload dos arquivos a serem processados;[PUB/SUB_TOPIC
: o nome do tópico Pub/Sub criado anteriormente.
Implante a função, substituindo
[PUB/SUB_TOPIC]
pelo seu tópico do Pub/Sub:gcloud functions deploy resolve_DLP --runtime python37 --trigger-topic [PUB/SUB_TOPIC]
Verifique se a função foi implantada:
gcloud functions describe resolve_DLP
Uma implantação bem-sucedida é indicada por um status pronto semelhante ao seguinte:
status: READY timeout: 60s
Quando o Cloud Function tiver sido implantado com êxito, avance para a próxima seção.
Fazer upload de arquivos de amostra para o bucket em quarentena
O repositório do GitHub associado a este artigo inclui arquivos de dados de amostra. A pasta contém alguns arquivos com dados confidenciais e outros com dados não confidenciais. Os dados confidenciais são classificados como contendo um ou mais dos seguintes valores INFO_TYPES
:
US_SOCIAL_SECURITY_NUMBER EMAIL_ADDRESS PERSON_NAME LOCATION PHONE_NUMBER
Os tipos de dados usados para classificar os arquivos de amostra são definidos na constante INFO_TYPES
no arquivo main.py
, que é definido inicialmente como 'FIRST_NAME,PHONE_NUMBER,EMAIL_ADDRESS,US_SOCIAL_SECURITY_NUMBER'
.
Se você ainda não tiver clonado o repositório, abra o Cloud Shell e clone o repositório do GitHub que contém o código e alguns arquivos de dados de amostra:
Altere pastas para os arquivos de dados de amostra:
cd ~/dlp-cloud-functions-tutorials/sample_data/
Copie os arquivos de dados de amostra para o bucket de quarentena usando o comando
cp
, substituindo[YOUR_QUARANTINE_BUCKET]
pelo nome do bucket de quarentena:gcloud storage cp * gs://[YOUR_QUARANTINE_BUCKET]/
A Proteção de Dados Sensíveis inspeciona e classifica cada arquivo enviado para o bucket de quarentena e o move para o bucket de destino apropriado com base na classificação dele.
No Console do Cloud Storage, abra a página Navegador do Storage:
Selecione um dos buckets de destino criados anteriormente e revise os arquivos enviados. Revise também os outros buckets criados.
Limpeza
Depois de concluir o tutorial, você pode limpar os recursos que criou para que eles parem de usar a cota e gerar cobranças. Nas seções a seguir, você aprenderá a excluir e desativar esses recursos.
Excluir o projeto
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
A seguir
- Configure diferentes valores de tipos de dados válidos para
INFO_TYPES
. - Saiba mais sobre como inspecionar dados confidenciais em armazenamentos e bancos de dados usando a Proteção de dados sensíveis.
- Saiba mais sobre as funções do Cloud Run.
- Confira arquiteturas de referência, diagramas, tutoriais e práticas recomendadas do Google Cloud. Confira o Centro de arquitetura do Cloud.