Este tutorial mostra como implementar um sistema de classificação e quarentena de dados automatizado através do Cloud Storage e de outros produtos Google Cloud. O tutorial pressupõe que tem conhecimentos sobre o Google Cloud e programação básica de shell.
Em todas as organizações, os encarregados de proteção de dados, como si, enfrentam uma quantidade cada vez maior de dados, dados que têm de ser protegidos e tratados adequadamente. A colocação em quarentena e a classificação desses dados podem ser complicadas e demoradas, especialmente quando existem centenas ou milhares de ficheiros por dia.
E se pudesse pegar em cada ficheiro, carregá-lo para uma localização de quarentena e classificá-lo automaticamente, bem como movê-lo para a localização adequada com base no resultado da classificação? Este tutorial mostra-lhe como implementar um sistema deste tipo usando funções do Cloud Run, Cloud Storage e proteção de dados confidenciais.
Conceder autorizações a contas de serviço
O primeiro passo consiste em conceder autorizações a duas contas de serviço: a conta de serviço das funções do Cloud Run e o agente do serviço de prevenção de perda de dados do Google Cloud.
Conceda autorizações à conta de serviço predefinida do App Engine
Na Google Cloud consola, abra a página IAM e administração e selecione o projeto que criou:
Localize a conta de serviço do App Engine. Esta conta tem o formato
[PROJECT_ID]@appspot.gserviceaccount.com
. Substitua[PROJECT_ID]
pelo ID do seu projeto.Selecione o ícone de edição edit junto à conta de serviço.
Adicione as seguintes funções:
- Administrador de DLP
- Agente do serviço da API DLP
Clique em Guardar.
Conceda autorizações ao agente de serviço do Cloud Data Loss Prevention
O agente de serviço do Cloud Data Loss Prevention é criado quando é necessário pela primeira vez.
No Cloud Shell, crie o agente de serviço do Cloud Data Loss Prevention 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 seu ID do projeto.Na Google Cloud consola, abra a página IAM e administração e selecione o projeto que criou:
Selecione a caixa de verificação Incluir concessões de funções fornecidas pela Google
Localize o agente de serviço da Cloud Data Loss Prevention. Esta conta tem o formato
service-[PROJECT_NUMBER]@dlp-api.iam.gserviceaccount.com
. Substitua[PROJECT_NUMBER]
pelo número do seu projeto.Selecione o ícone de edição edit junto à conta de serviço.
Adicione a função Projeto > Visitante e, de seguida, clique em Guardar.
Criar o pipeline de quarentena e classificação
Nesta secção, cria o pipeline de quarentena e classificação apresentado no diagrama seguinte.
Os números nesta conduta correspondem a estes passos:
- Carrega ficheiros para o Cloud Storage.
- Invoca uma função do Cloud.
- A Proteção de dados confidenciais inspeciona e classifica os dados.
- O ficheiro é movido para o contentor adequado.
Crie contentores do Cloud Storage
Seguindo as orientações descritas nas diretrizes de nomenclatura de contentores, crie três contentores com nomes exclusivos, que vai usar ao longo deste 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.
consola
Na Google Cloud consola, abra o navegador do Cloud Storage:
Clique em Criar contentor.
Na caixa de texto Nome do contentor, introduza o nome que selecionou para
[YOUR_QUARANTINE_BUCKET]
e, de seguida, clique em Criar.Repita o processo para os contentores
[YOUR_SENSITIVE_DATA_BUCKET]
e[YOUR_NON_SENSITIVE_DATA_BUCKET]
.
gcloud
Abra o Cloud Shell:
Crie três contentores com 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]
Crie um tópico e uma subscrição do Pub/Sub
consola
Abra a página Tópicos do Pub/Sub:
Clique em Criar tópico.
Na caixa de texto, introduza um nome de tópico.
Selecione a caixa de verificação Adicionar uma subscrição predefinida.
Clique em Criar tópico.
gcloud
Abra o Cloud Shell:
Crie um tópico, substituindo
[PUB/SUB_TOPIC]
por um nome à sua escolha:gcloud pubsub topics create [PUB/SUB_TOPIC]
Crie uma subscrição, substituindo
[PUB/SUB_SUBSCRIPTION]
por um nome à sua escolha:gcloud pubsub subscriptions create [PUB/SUB_SUBSCRIPTION] --topic [PUB/SUB_TOPIC]
Crie as funções do Cloud Run
Esta secção explica passo a passo a implementação do script Python que contém as seguintes duas funções do Cloud Run:
- Uma função que é invocada quando um objeto é carregado para o Cloud Storage.
- Uma função que é invocada quando uma mensagem é recebida na fila do Pub/Sub.
O script Python que usa para concluir este tutorial está contido num repositório do GitHub. Para criar a primeira Cloud Function, tem de ativar as APIs corretas.
Para ativar as APIs, faça o seguinte:
- Se estiver a trabalhar na consola, quando clicar em Criar função, vai ver um guia sobre como ativar as APIs que precisa de usar as Cloud Functions.
- Se estiver a trabalhar na CLI gcloud, tem de ativar manualmente as seguintes APIs:
- API Artifact Registry
- API Eventarc
- Cloud Run Admin API
Criar a primeira função
consola
Abra a página Vista geral das funções do Cloud Run:
Selecione o projeto para o qual ativou as funções do Cloud Run.
Clique em Criar função.
Na caixa Nome da função, substitua o nome predefinido por
create_DLP_job
.No campo Acionador, selecione Cloud Storage.
No campo Tipo de evento, selecione Finalizar/Criar.
No campo Recipiente, clique em procurar, selecione o recipiente de quarentena realçando-o na lista pendente e, de seguida, clique em Selecionar.
Clique em Guardar.
Clique em Seguinte
Em Tempo de execução, selecione Python 3.7.
Em Código-fonte, selecione Editor inline.
Substitua o texto na caixa main.py pelo conteúdo do seguinte ficheiro
https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/main.py
.Substitua o seguinte:
[PROJECT_ID_DLP_JOB & TOPIC]
: o ID do projeto que está a alojar a sua função do Cloud Run e o tópico do Pub/Sub.[YOUR_QUARANTINE_BUCKET]
o nome do contentor para o qual vai carregar os ficheiros a serem processados .[YOUR_SENSITIVE_DATA_BUCKET]
: o nome do contentor para o qual vai mover os ficheiros confidenciais.[YOUR_NON_SENSITIVE_DATA_BUCKET]
: o nome do contentor para o qual vai carregar os ficheiros a serem processados.[PUB/SUB_TOPIC]
: o nome do tópico do Pub/Sub que criou anteriormente.
Na caixa de texto Ponto de entrada, substitua o texto predefinido pelo seguinte:
create_DLP_job
.Substitua o texto na caixa de texto requirements.txt pelo conteúdo do seguinte ficheiro:
https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/requirements.txt.
Clique em Implementar.
Uma marca de verificação verde junto à função indica uma implementaçã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 ficheiros de dados de exemplo:
Altere os diretórios para a pasta para a qual o repositório foi clonado:
cd ~dlp-cloud-functions-tutorials/gcs-dlp-classification-python/
Faça as seguintes substituições no ficheiro main.py
[PROJECT_ID_DLP_JOB & TOPIC]
: o ID do projeto que está a alojar a sua função do Cloud Run e o tópico do Pub/Sub.[YOUR_QUARANTINE_BUCKET]
: o nome do contentor para o qual vai carregar os ficheiros a serem processados .[YOUR_SENSITIVE_DATA_BUCKET]
: o nome do contentor para o qual vai mover os ficheiros confidenciais.[YOUR_NON_SENSITIVE_DATA_BUCKET]
: o nome do contentor para o qual vai carregar os ficheiros a serem processados.[PUB/SUB_TOPIC
: o nome do tópico do Pub/Sub que criou anteriormente.
Implemente a função, substituindo
[YOUR_QUARANTINE_BUCKET]
pelo nome do seu contentor:gcloud functions deploy create_DLP_job --runtime python37 \ --trigger-resource [YOUR_QUARANTINE_BUCKET] \ --trigger-event google.storage.object.finalize
Valide se a função foi implementada com êxito:
gcloud functions describe create_DLP_job
Uma implementação bem-sucedida é indicada por um estado pronto semelhante ao seguinte:
status: READY timeout: 60s
Quando a função na nuvem tiver sido implementada com êxito, avance para a secção seguinte para criar a segunda função na nuvem.
Criar a segunda função
consola
Abra a página Vista geral das funções do Cloud Run:
Selecione o projeto para o qual ativou as funções do Cloud Run.
Clique em Criar função.
Na caixa Nome da função, substitua o nome predefinido por
resolve_DLP
.No campo Acionador, selecione Pub/Sub.
No campo Selecionar um tópico do Cloud Pub/Sub, pesquise o tópico do Pub/Sub que criou anteriormente.
Clique em Guardar
Clique em Seguinte
Em Tempo de execução, selecione Python 3.7.
Em Código fonte, selecione Editor inline.
Na caixa de texto Ponto de entrada, substitua o texto predefinido por
resolve_DLP
.Substitua o texto na caixa main.py pelo conteúdo do seguinte ficheiro: 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 está a alojar a sua função do Cloud Run e o tópico do Pub/Sub.[YOUR_QUARANTINE_BUCKET]
: o nome do contentor para o qual vai carregar os ficheiros a serem processados .[YOUR_SENSITIVE_DATA_BUCKET]
: o nome do contentor para o qual vai mover os ficheiros confidenciais.[YOUR_NON_SENSITIVE_DATA_BUCKET]
: o nome do contentor para o qual vai carregar os ficheiros a serem processados.[PUB/SUB_TOPIC
: o nome do tópico do Pub/Sub que criou anteriormente.
Clique em Implementar.
Uma marca de verificação verde junto à função indica uma implementaçã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 ficheiros de dados de exemplo:
Altere os diretórios para a pasta com o código Python:
cd gcs-dlp-classification-python/
Faça as seguintes substituições no ficheiro
main.py
:[PROJECT_ID_DLP_JOB & TOPIC]
: o ID do projeto que está a alojar a sua função do Cloud Run e o tópico do Pub/Sub.[YOUR_QUARANTINE_BUCKET]
: o nome do contentor para o qual vai carregar os ficheiros a serem processados.[YOUR_SENSITIVE_DATA_BUCKET]
: o nome do contentor para o qual vai mover os ficheiros confidenciais.[YOUR_NON_SENSITIVE_DATA_BUCKET]
: o nome do contentor para o qual vai carregar os ficheiros a serem processados.[PUB/SUB_TOPIC
: o nome do tópico do Pub/Sub que criou anteriormente.
Implemente 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]
Valide se a função foi implementada com êxito:
gcloud functions describe resolve_DLP
Uma implementação bem-sucedida é indicada por um estado pronto semelhante ao seguinte:
status: READY timeout: 60s
Quando a função do Google Cloud tiver sido implementada com êxito, avance para a secção seguinte.
Carregue ficheiros de exemplo para o contentor de quarentena
O repositório do GitHub associado a este artigo inclui ficheiros de dados de exemplo. A pasta contém alguns ficheiros com dados confidenciais e outros ficheiros com dados não confidenciais. Os dados confidenciais são classificados como contendo um ou mais dos seguintes INFO_TYPES
valores:
US_SOCIAL_SECURITY_NUMBER EMAIL_ADDRESS PERSON_NAME LOCATION PHONE_NUMBER
Os tipos de dados usados para classificar os ficheiros de exemplo são definidos na constante INFO_TYPES
no ficheiro main.py
, que é inicialmente definido como 'FIRST_NAME,PHONE_NUMBER,EMAIL_ADDRESS,US_SOCIAL_SECURITY_NUMBER'
.
Se ainda não clonou o repositório, abra o Cloud Shell e clone o repositório do GitHub que contém o código e alguns ficheiros de dados de amostra:
Altere as pastas para os ficheiros de dados de exemplo:
cd ~/dlp-cloud-functions-tutorials/sample_data/
Copie os ficheiros de dados de exemplo para o contentor de quarentena através do comando
cp
, substituindo[YOUR_QUARANTINE_BUCKET]
pelo nome do seu contentor de quarentena:gcloud storage cp * gs://[YOUR_QUARANTINE_BUCKET]/
A Proteção de dados confidenciais inspeciona e classifica cada ficheiro carregado para o contentor de quarentena e move-o para o contentor de destino adequado com base na respetiva classificação.
Na consola do Cloud Storage, abra a página Navegador de armazenamento:
Selecione um dos contentores de destino que criou anteriormente e reveja os ficheiros carregados. Reveja também os outros contentores que criou.