Questo tutorial mostra come implementare un sistema automatizzato di quarantena e classificazione dei dati utilizzando Cloud Storage e altri prodotti Google Cloud. Il tutorial presuppone che tu conosca Google Cloud e la programmazione di base della shell.
In ogni organizzazione, i responsabili della protezione dei dati come te devono affrontare una quantità sempre crescente di dati, che devono essere protetti e trattati in modo appropriato. Quarantare e classificare questi dati può essere complicato e dispendioso in termini di tempo, soprattutto se si usano centinaia o migliaia di file al giorno.
E se potessi portare ogni file, caricarlo in un luogo di quarantena e farlo classificare e spostare automaticamente nella posizione appropriata in base al risultato della classificazione? Questo tutorial mostra come implementare un sistema di questo tipo utilizzando Cloud Functions, Cloud Storage e Cloud Data Loss Prevention.
Obiettivi
- Creare bucket Cloud Storage da utilizzare nell'ambito della pipeline di quarantena e classificazione.
- Crea un argomento e una sottoscrizione Pub/Sub per ricevere una notifica al termine dell'elaborazione dei file.
- Creare una Cloud Function semplice che richiami l'API DLP quando vengono caricati i file.
- Carica alcuni file di esempio nel bucket di quarantena per richiamare la funzione Cloud Functions. La funzione utilizza l'API DLP per ispezionare e classificare i file e spostarli nel bucket appropriato.
Costi
Questo tutorial utilizza i componenti fatturabili di Google Cloud, tra cui:
- Cloud Storage
- Cloud Functions
- Cloud Data Loss Prevention
Puoi utilizzare il Calcolatore prezzi per generare una stima dei costi in base all'utilizzo previsto.
Prima di iniziare
- 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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Storage,Cloud Build Cloud Build, and Cloud Data Loss Prevention APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Storage,Cloud Build Cloud Build, and Cloud Data Loss Prevention APIs.
Concessione delle autorizzazioni agli account di servizio
Il primo passaggio consiste nel concedere le autorizzazioni a due account di servizio: l'account di servizio Cloud Functions e l'account di servizio Cloud DLP.
Concedi le autorizzazioni all'account di servizio predefinito di App Engine
Nella console Google Cloud, apri la pagina IAM e amministrazione e seleziona il progetto che hai creato:
Individua l'account di servizio App Engine. Questo account ha il formato
[PROJECT_ID]@appspot.gserviceaccount.com
. Sostituisci[PROJECT_ID]
con l'ID progetto.Seleziona l'icona di modifica edit accanto all'account di servizio.
Aggiungi i seguenti ruoli:
- Cloud DLP > Amministratore DLP
- Agente di servizio API DLP (devi applicare un filtro in base a questo ruolo per trovarlo)
Fai clic su Salva.
Concedi le autorizzazioni all'account di servizio Sensitive Data Protection
L'agente di servizio Cloud DLP viene creato la prima volta che è necessario.
In Cloud Shell, crea l'agente di servizio Cloud DLP effettuando una chiamata a
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"}}'
--compressedSostituisci
PROJECT_ID
con l'ID progetto.Nella console Google Cloud, apri la pagina IAM e amministrazione e seleziona il progetto che hai creato:
Seleziona la casella di controllo Includi concessioni di ruoli fornite da Google
Individua l'account di servizio dell'agente di servizio Cloud DLP. Questo account ha il formato
service-[PROJECT_NUMBER]@dlp-api.iam.gserviceaccount.com
. Sostituisci[PROJECT_NUMBER]
con il numero del tuo progetto.Seleziona l'icona di modifica edit accanto all'account di servizio.
Aggiungi il ruolo Progetto > Visualizzatore e fai clic su Salva.
Creazione della pipeline di quarantena e classificazione
In questa sezione creerai la pipeline di quarantena e classificazione mostrata nel diagramma seguente.
I numeri di questa pipeline corrispondono ai seguenti passaggi:
- I file vengono caricati in Cloud Storage.
- Richiami una Cloud Function.
- Cloud DLP esamina e classifica i dati.
- Il file viene spostato nel bucket appropriato.
Creazione di bucket di Cloud Storage
Segui le istruzioni riportate nelle linee guida per la denominazione dei bucket, crea tre bucket con nomi univoci da utilizzare in questo tutorial:
- Bucket 1: sostituisci
[YOUR_QUARANTINE_BUCKET]
con un nome univoco. - Bucket 2: sostituisci
[YOUR_SENSITIVE_DATA_BUCKET]
con un nome univoco. - Bucket 3: sostituisci
[YOUR_NON_SENSITIVE_DATA_BUCKET]
con un nome univoco.
console
Nella console Google Cloud, apri il browser Cloud Storage:
Fai clic su Crea bucket.
Nella casella di testo Nome bucket, inserisci il nome selezionato per
[YOUR_QUARANTINE_BUCKET]
e fai clic su Crea.Ripeti l'operazione per i bucket
[YOUR_SENSITIVE_DATA_BUCKET]
e[YOUR_NON_SENSITIVE_DATA_BUCKET]
.
gcloud
Apri Cloud Shell:
Crea tre bucket utilizzando i seguenti comandi:
gsutil mb gs://[YOUR_QUARANTINE_BUCKET] gsutil mb gs://[YOUR_SENSITIVE_DATA_BUCKET] gsutil mb gs://[YOUR_NON_SENSITIVE_DATA_BUCKET]
Crea un argomento e una sottoscrizione Pub/Sub
console
Apri la pagina Argomenti Pub/Sub:
Fai clic su Crea argomento.
Nella casella di testo inserisci un nome per l'argomento.
Seleziona la casella di controllo Aggiungi un abbonamento predefinito.
Fai clic su Crea argomento.
gcloud
Apri Cloud Shell:
Crea un argomento, sostituendo
[PUB/SUB_TOPIC]
con un nome a tua scelta:gcloud pubsub topics create [PUB/SUB_TOPIC]
Crea una sottoscrizione, sostituendo
[PUB/SUB_SUBSCRIPTION]
con un nome a tua scelta:gcloud pubsub subscriptions create [PUB/SUB_SUBSCRIPTION] --topic [PUB/SUB_TOPIC]
crea le funzioni Cloud Functions
Questa sezione descrive come eseguire il deployment dello script Python contenente le seguenti due funzioni Cloud Functions:
- Una funzione che viene richiamata quando un oggetto viene caricato in Cloud Storage.
- Funzione richiamata quando un messaggio viene ricevuto nella coda Pub/Sub.
Lo script Python che utilizzi per completare questo tutorial è contenuto in un repository GitHub. Per creare la prima Cloud Function, devi abilitare le API corrette.
Per abilitare le API, segui questi passaggi:
- Se stai utilizzando la console, quando fai clic su Crea funzione, vedrai una guida su come abilitare le API necessarie per l'utilizzo di Cloud Functions.
- Se utilizzi gcloud CLI, devi abilitare manualmente le
seguenti API:
- API Artifact Registry
- API Eventarc
- API Cloud Run Admin
Creazione della prima funzione
console
Apri la pagina Panoramica di Cloud Functions:
Seleziona il progetto per il quale hai abilitato Cloud Functions.
Fai clic su Crea funzione.
Nella casella Nome funzione, sostituisci il nome predefinito con
create_DLP_job
.Nel campo Attivatore, seleziona Cloud Storage.
Nel campo Tipo di evento, seleziona Finalizza/Crea.
Nel campo Bucket, fai clic su Sfoglia, seleziona il bucket in quarantena evidenziandolo nell'elenco a discesa, quindi fai clic su Seleziona.
Fai clic su Salva
Fai clic su Avanti.
In Runtime, seleziona Python 3.7.
In Codice sorgente, seleziona Editor incorporato.
Sostituisci il testo nella casella main.py con il contenuto del seguente file
https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/main.py
.Sostituisci quanto segue:
[PROJECT_ID_DLP_JOB & TOPIC]
: l'ID progetto che ospita la funzione Cloud Function e l'argomento Pub/Sub.[YOUR_QUARANTINE_BUCKET]
il nome del bucket in cui caricherai i file da elaborare .[YOUR_SENSITIVE_DATA_BUCKET]
: il nome del bucket in cui sposterai i file sensibili.[YOUR_NON_SENSITIVE_DATA_BUCKET]
: il nome del bucket in cui caricherai i file da elaborare.[PUB/SUB_TOPIC]
: il nome dell'argomento Pub/Sub creato in precedenza.
Nella casella di testo Punto di ingresso, sostituisci il testo predefinito con quanto segue:
create_DLP_job
.Sostituisci il testo nella casella di testo requirements.txt con i contenuti del seguente file:
https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/requirements.txt.
Fai clic su Esegui il deployment.
Un segno di spunta verde accanto alla funzione indica che il deployment è stato eseguito correttamente.
gcloud
Apri una sessione di Cloud Shell e clona il repository GitHub che contiene il codice e alcuni file di dati di esempio:
Cambia le directory nella cartella in cui è stato clonato il repository:
cd ~dlp-cloud-functions-tutorials/gcs-dlp-classification-python/
Effettua le seguenti sostituzioni nel file main.py
[PROJECT_ID_DLP_JOB & TOPIC]
: l'ID progetto che ospita la funzione Cloud Function e l'argomento Pub/Sub.[YOUR_QUARANTINE_BUCKET]
: il nome del bucket in cui caricherai i file da elaborare .[YOUR_SENSITIVE_DATA_BUCKET]
: il nome del bucket in cui sposterai i file sensibili.[YOUR_NON_SENSITIVE_DATA_BUCKET]
: il nome del bucket in cui caricherai i file da elaborare.[PUB/SUB_TOPIC
: il nome dell'argomento Pub/Sub creato in precedenza.
Esegui il deployment della funzione, sostituendo
[YOUR_QUARANTINE_BUCKET]
con il nome del bucket:gcloud functions deploy create_DLP_job --runtime python37 \ --trigger-resource [YOUR_QUARANTINE_BUCKET] \ --trigger-event google.storage.object.finalize
Verifica che il deployment della funzione sia stato eseguito correttamente:
gcloud functions describe create_DLP_job
Un deployment riuscito è indicato da uno stato Pronto simile al seguente:
status: READY timeout: 60s
Una volta completato il deployment della Cloud Function, vai alla sezione successiva per creare la seconda Cloud Function.
Creazione della seconda funzione
console
Apri la pagina Panoramica di Cloud Functions:
Seleziona il progetto per il quale hai abilitato Cloud Functions.
Fai clic su Crea funzione.
Nella casella Nome funzione, sostituisci il nome predefinito con
resolve_DLP
.Nel campo Attivatore, seleziona Pub/Sub.
Nel campo Seleziona un argomento Cloud Pub/Sub, cerca l'argomento Pub/Sub che hai creato in precedenza.
Fai clic su Salva.
Fai clic su Avanti.
In Runtime, seleziona Python 3.7.
In Codice sorgente, seleziona Editor incorporato.
Nella casella di testo Punto di ingresso, sostituisci il testo predefinito con
resolve_DLP
.Sostituisci il testo nella casella main.py con il contenuto del seguente file: https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/main.py. Effettua le seguenti sostituzioni
[PROJECT_ID_DLP_JOB & TOPIC]
: l'ID progetto che ospita la funzione Cloud Function e l'argomento Pub/Sub.[YOUR_QUARANTINE_BUCKET]
: il nome del bucket in cui caricherai i file da elaborare .[YOUR_SENSITIVE_DATA_BUCKET]
: il nome del bucket in cui sposterai i file sensibili.[YOUR_NON_SENSITIVE_DATA_BUCKET]
: il nome del bucket in cui caricherai i file da elaborare.[PUB/SUB_TOPIC
: il nome dell'argomento Pub/Sub creato in precedenza.
Fai clic su Esegui il deployment.
Un segno di spunta verde accanto alla funzione indica che il deployment è stato eseguito correttamente.
gcloud
Apri (o riapri) una sessione di Cloud Shell e clona il repository GitHub che contiene il codice e alcuni file di dati di esempio:
Cambia le directory nella cartella con il codice Python:
cd gcs-dlp-classification-python/
Effettua le seguenti sostituzioni nel file
main.py
:[PROJECT_ID_DLP_JOB & TOPIC]
: l'ID progetto che ospita la funzione Cloud Function e l'argomento Pub/Sub.[YOUR_QUARANTINE_BUCKET]
: il nome del bucket in cui caricherai i file da elaborare.[YOUR_SENSITIVE_DATA_BUCKET]
: il nome del bucket in cui sposterai i file sensibili.[YOUR_NON_SENSITIVE_DATA_BUCKET]
: il nome del bucket in cui caricherai i file da elaborare.[PUB/SUB_TOPIC
: il nome dell'argomento Pub/Sub creato in precedenza.
Esegui il deployment della funzione, sostituendo
[PUB/SUB_TOPIC]
con il tuo argomento Pub/Sub:gcloud functions deploy resolve_DLP --runtime python37 --trigger-topic [PUB/SUB_TOPIC]
Verifica che il deployment della funzione sia stato eseguito correttamente:
gcloud functions describe resolve_DLP
Un deployment riuscito è indicato da uno stato Pronto simile al seguente:
status: READY timeout: 60s
Una volta eseguito il deployment della Cloud Function, vai alla sezione successiva.
Carica i file di esempio nel bucket di quarantena
Il repository di GitHub associato a questo articolo include file di dati di esempio. La
cartella contiene alcuni file con dati sensibili e altri file con
dati non sensibili. I dati sensibili sono classificati come contenenti uno o più dei seguenti valori INFO_TYPES
:
US_SOCIAL_SECURITY_NUMBER EMAIL_ADDRESS PERSON_NAME LOCATION PHONE_NUMBER
I tipi di dati utilizzati per classificare i file di esempio sono definiti nella costante INFO_TYPES
del file main.py
, che inizialmente è impostata su 'FIRST_NAME,PHONE_NUMBER,EMAIL_ADDRESS,US_SOCIAL_SECURITY_NUMBER'
.
Se non hai già clonato il repository, apri Cloud Shell e clona il repository GitHub che contiene il codice e alcuni file di dati di esempio:
Sostituisci le cartelle con i file di dati di esempio:
cd ~/dlp-cloud-functions-tutorials/sample_data/
Copia i file di dati di esempio nel bucket di quarantena utilizzando il comando
gsutil
, sostituendo[YOUR_QUARANTINE_BUCKET]
con il nome del tuo bucket di quarantena:gsutil -m cp * gs://[YOUR_QUARANTINE_BUCKET]/
Cloud DLP esamina e classifica ogni file caricato nel bucket di quarantena e lo sposta nel bucket di destinazione appropriato in base alla sua classificazione.
Nella console Cloud Storage, apri la pagina Browser Storage:
Seleziona uno dei bucket di destinazione che hai creato in precedenza ed esamina i file caricati. Esamina anche gli altri bucket che hai creato.
Esegui la pulizia
Al termine del tutorial, puoi eseguire la pulizia delle risorse che hai creato in modo che smettano di utilizzare la quota e non incorrano in addebiti. Le sezioni seguenti descrivono come eliminare o disattivare queste risorse.
Elimina il progetto
- 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.
Passaggi successivi
- Prova a impostare valori validi per il tipo di dati diversi per
INFO_TYPES
. - Scopri di più sull'ispezione dello spazio di archiviazione e dei database per i dati sensibili utilizzando Cloud DLP.
- Scopri di più su Cloud Functions.
- Esplora le architetture di riferimento, i diagrammi e le best practice su Google Cloud. Dai un'occhiata al nostro Cloud Architecture Center.