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. Para seguir o tutorial, é necessário ter familiaridade com o Google 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 o Cloud Functions, o Cloud Storage e o Cloud Data Loss Prevention.
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
- Cloud Functions
- Cloud Data Loss Prevention
Use a calculadora de preços para gerar uma estimativa de custo com base no uso projetado.
Antes de começar
- 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.
-
No Console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como confirmar se o faturamento está ativado para o projeto.
- Ative as APIs Cloud Functions, Cloud Storage, and Cloud Data Loss Prevention.
Como conceder permissões a contas de serviço
A primeira etapa é conceder permissões a duas contas de serviço: a do Cloud Functions e a do Cloud DLP.
Conceder permissões à conta de serviço padrão do App Engine
No Console do 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:
- Projeto > Proprietário
- Cloud DLP > Administrador do DLP
- Service Management > Agente de serviço da API DLP
Clique em Salvar.
Conceder permissões à conta de serviço DLP
No Console do Cloud, abra a página IAM e administrador e selecione o projeto que você criou:
Localize a conta de serviço do Agente de serviço do Cloud DLP. 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.
- O Cloud DLP 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 do 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:
gsutil mb gs://[YOUR_QUARANTINE_BUCKET] gsutil mb gs://[YOUR_SENSITIVE_DATA_BUCKET] gsutil mb 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:
Clique em Criar um tópico.
Na caixa de texto que tem uma entrada com o formato
PROJECTS/[YOUR_PROJECT_NAME]/TOPICS/
, anexe o nome do tópico, como este:PROJECTS/[YOUR_PROJECT_NAME]/TOPICS/[PUB/SUB_TOPIC]
Clique em Criar.
Selecione o tópico recém-criado, clique nos três pontos (...) que seguem o nome do tópico e selecione Nova assinatura.
Na caixa de texto que tem uma entrada no formato
PROJECTS/[YOUR_PROJECT_NAME]/TOPICS/[PUB/SUB_TOPIC]
, anexe o nome da assinatura da seguinte maneira:PROJECTS/[YOUR_PROJECT_NAME]/TOPICS/[PUB/SUB_TOPIC]/[PUB/SUB_SUBSCRIPTION]
Clique em Criar.
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
Nesta seção, apresentamos as etapas para a implantação do script Python contendo os dois Cloud Functions 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.
Como criar a primeira função
Console
Abra a página Visão geral do Cloud Functions:
Selecione o projeto para o qual você ativou o Cloud Functions.
Clique em Criar função.
Na caixa Nome, substitua o nome padrão por
create_DLP_job
.No campo Acionador, selecione Cloud Storage.
No campo bucket, clique em Procurar, selecione o bucket de quarentena destacando o bucket na lista suspensa e clique em Selecionar.
Em Ambiente de execução, selecione Python 3.7.
Em Código-fonte, marque Editor in-line.
Cole o código a seguir na caixa main.py, substituindo o texto atual:
Ajuste as seguintes linhas no código que você colou na caixa main.py, substituindo as variáveis pelo ID do seu projeto, pelos buckets correspondentes e pelos nomes do tópico e da assinatura do Pub/Sub que você já criou.
[YOUR_QUARANTINE_BUCKET] [YOUR_SENSITIVE_DATA_BUCKET] [YOUR_NON_SENSITIVE_DATA_BUCKET] [PROJECT_ID_HOSTING_STAGING_BUCKET] [PUB/SUB_TOPIC]
Na caixa de texto Função a ser executada, substitua
hello_gcs
porcreate_DLP_job
.Cole o seguinte código na caixa de texto requirements.txt, substituindo o texto atual:
Clique em Salvar.
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 para a qual o repositório foi clonado:
cd gcs-dlp-classification-python/
Ajuste as seguintes linhas no código na caixa main.py, substituindo as variáveis de bucket a seguir pelos buckets correspondentes criados anteriormente. Substitua também as variáveis de tópico e de assinatura do Pub/Sub pelos nomes escolhidos.
[YOUR_QUARANTINE_BUCKET] [YOUR_SENSITIVE_DATA_BUCKET] [YOUR_NON_SENSITIVE_DATA_BUCKET] [PROJECT_ID_HOSTING_STAGING_BUCKET] [PUB/SUB_TOPIC]
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 do Cloud Functions:
Selecione o projeto para o qual você ativou o Cloud Functions.
Clique em Criar função.
Na caixa Nome, substitua o nome padrão por
resolve_DLP
.No campo Acionador, selecione Pub/Sub.
No campo Tópico, insira
[PUB/SUB_TOPIC]
.Em Código-fonte, marque Editor in-line.
Em Ambiente de execução, selecione Python 3.7.
Cole o código a seguir na caixa main.py, substituindo o texto atual:
Ajuste as seguintes linhas no código que você colou na caixa main.py, substituindo as variáveis pelo ID do seu projeto, pelos buckets correspondentes e pelos nomes do tópico e da assinatura do Pub/Sub que você já criou.
[YOUR_QUARANTINE_BUCKET] [YOUR_SENSITIVE_DATA_BUCKET] [YOUR_NON_SENSITIVE_DATA_BUCKET] [PROJECT_ID_HOSTING_STAGING_BUCKET] [PUB/SUB_TOPIC]
Na caixa de texto Função a ser executada, substitua
helloPubSub
porresolve_DLP
.Cole o trecho a seguir na caixa de texto requirements.txt, substituindo o texto atual:
Clique em Salvar.
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
Ajuste as linhas a seguir no código na caixa main.py, substituindo as variáveis de bucket abaixo pelos buckets correspondentes criados anteriormente. Substitua também as variáveis de tópico e de assinatura do Pub/Sub pelos nomes escolhidos.
[YOUR_QUARANTINE_BUCKET] [YOUR_SENSITIVE_DATA_BUCKET] [YOUR_NON_SENSITIVE_DATA_BUCKET] [PROJECT_ID_HOSTING_STAGING_BUCKET] [PUB/SUB_TOPIC]
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 [‘PHONE_NUMBER', ‘EMAIL_ADDRESS']
.
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
gsutil
, substituindo[YOUR_QUARANTINE_BUCKET]
pelo nome do bucket de quarentena:gsutil -m cp * gs://[YOUR_QUARANTINE_BUCKET]/
O Cloud DLP inspeciona e classifica cada arquivo enviado para o bucket de quarentena e o move para o bucket de destino apropriado com base em sua classificação.
No console do Cloud Storage, abra a página Navegador de armazenamento:
Selecione um dos buckets de destino criados anteriormente e revise os arquivos enviados. Revise também os outros buckets criados.
Limpeza
Depois de concluir este tutorial, é possível limpar os recursos criados no Google Cloud para que eles não consumam sua cota e você não receba cobranças por eles no futuro. Veja como excluir e desativar esses recursos nas seções a seguir.
Excluir o projeto
- No Console do Cloud, acesse a página Gerenciar recursos:
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.
A seguir
- Configure diferentes valores de tipos de dados válidos para
INFO_TYPES
. - Saiba mais sobre como inspecionar armazenamento e bancos de dados para dados confidenciais usando o Cloud DLP.
- Saiba mais sobre o Cloud Functions.
- Teste outros recursos do Google Cloud. Veja nossos tutoriais.