Automazione della classificazione dei dati caricati su Cloud Storage


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 abbia familiarità con Google Cloud e con la programmazione di base della shell.

In ogni organizzazione, i responsabili della protezione dei dati come te devono gestire una quantità sempre maggiore di dati, che devono essere protetti e trattati in modo appropriato. La quarantena e la classificazione di questi dati possono essere complicate e richiedere molto tempo, soprattutto se si considerano centinaia o migliaia di file al giorno.

E se potessi prendere ogni file, caricarlo in una posizione 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 funzioni Cloud Run, Cloud Storage e Sensitive Data Protection.

Obiettivi

  • Crea bucket Cloud Storage da utilizzare come parte della pipeline di quarantena e classificazione.
  • Crea un argomento e una sottoscrizione Pub/Sub per ricevere una notifica al termine dell'elaborazione dei file.
  • Crea 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. La funzione utilizza l'API DLP per ispezionare e classificare i file e spostarli nel bucket appropriato.

Costi

Questo tutorial utilizza componenti fatturabili di Google Cloud , tra cui:

  • Cloud Storage
  • Cloud Run Functions
  • Sensitive Data Protection

Puoi utilizzare il Calcolatore prezzi per generare una stima dei costi in base all'utilizzo previsto.

Prima di iniziare

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Run functions, Cloud Storage,Cloud Build Cloud Build, and Cloud Data Loss Prevention APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Cloud Run functions, Cloud Storage,Cloud Build Cloud Build, and Cloud Data Loss Prevention APIs.

    Enable the APIs

Concessione delle autorizzazioni ai service account

Il primo passaggio consiste nel concedere le autorizzazioni a due service account: il account di servizio delle funzioni Cloud Run e l'agente di servizio Cloud Data Loss Prevention.

Concedi le autorizzazioni al account di servizio predefinito di App Engine

  1. Nella console Google Cloud , apri la pagina IAM e amministrazione e seleziona il progetto che hai creato:

    Vai a IAM

  2. Individua il account di servizio App Engine. Questo account ha il formato [PROJECT_ID]@appspot.gserviceaccount.com. Sostituisci [PROJECT_ID] con l'ID progetto.

  3. Seleziona l'icona di modifica accanto all'account di servizio.

  4. Aggiungi i seguenti ruoli:

    • Amministratore DLP
    • DLP API Service Agent
  5. Fai clic su Salva.

Concedere le autorizzazioni all'agente di servizio Cloud Data Loss Prevention

L'agente di servizio Cloud Data Loss Prevention viene creato la prima volta che è necessario.

  1. In Cloud Shell, crea l'agente di servizio Cloud Data Loss Prevention chiamando 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"}}'
    --compressed

    Sostituisci PROJECT_ID con l'ID progetto.

  2. Nella console Google Cloud , apri la pagina IAM e amministrazione e seleziona il progetto che hai creato:

    Vai a IAM

  3. Seleziona la casella di controllo Includi concessioni di ruoli fornite da Google

  4. Individua l'agente di servizio Cloud Data Loss Prevention. Questo account ha il formato service-[PROJECT_NUMBER]@dlp-api.iam.gserviceaccount.com. Sostituisci [PROJECT_NUMBER] con il numero del tuo progetto.

  5. Seleziona l'icona di modifica accanto all'account di servizio.

  6. Aggiungi il ruolo Progetto > Visualizzatore e poi 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.

Flusso di lavoro di quarantena e classificazione

I numeri in questa pipeline corrispondono a questi passaggi:

  1. Carichi i file su Cloud Storage.
  2. Richiami una Cloud Function.
  3. Sensitive Data Protection ispeziona e classifica i dati.
  4. Il file viene spostato nel bucket appropriato.

Creazione di bucket di Cloud Storage

Seguendo le indicazioni riportate nelle linee guida per la denominazione dei bucket, crea tre bucket con nomi univoci, che utilizzerai 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

  1. Nella console Google Cloud , apri il browser Cloud Storage:

    Vai a Cloud Storage

  2. Fai clic su Crea bucket.

  3. Nella casella di testo Nome bucket, inserisci il nome che hai selezionato per [YOUR_QUARANTINE_BUCKET], quindi fai clic su Crea.

  4. Ripeti l'operazione per i bucket [YOUR_SENSITIVE_DATA_BUCKET] e [YOUR_NON_SENSITIVE_DATA_BUCKET].

gcloud

  1. Apri Cloud Shell:

    Vai a Cloud Shell

  2. Crea tre bucket utilizzando i seguenti comandi:

    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]
    

Crea un argomento e una sottoscrizione Pub/Sub

console

  1. Apri la pagina Argomenti Pub/Sub:

    Vai agli argomenti Pub/Sub.

  2. Fai clic su Crea argomento.

  3. Nella casella di testo, inserisci un nome argomento.

  4. Seleziona la casella di controllo Aggiungi una sottoscrizione predefinita.

  5. Fai clic su Crea argomento.

gcloud

  1. Apri Cloud Shell:

    Vai a Cloud Shell

  2. Crea un argomento, sostituendo [PUB/SUB_TOPIC] con un nome a tua scelta:

    gcloud pubsub topics create [PUB/SUB_TOPIC]
  3. 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 Run

Questa sezione descrive in dettaglio il deployment dello script Python contenente le seguenti due funzioni Cloud Run:

  • Una funzione richiamata quando un oggetto viene caricato in Cloud Storage.
  • Una funzione richiamata quando viene ricevuto un messaggio 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:

  • Se lavori nella console, quando fai clic su Crea funzione, vedrai una guida su come attivare le API necessarie per utilizzare Cloud Functions.
  • Se lavori in gcloud CLI, devi abilitare manualmente le seguenti API:
    • API Artifact Registry
    • API Eventarc
    • API Cloud Run Admin

Creazione della prima funzione

console

  1. Apri la pagina Panoramica di Cloud Run Functions:

    Vai alle funzioni Cloud Run

  2. Seleziona il progetto per cui hai attivato le funzioni Cloud Run.

  3. Fai clic su Crea funzione.

  4. Nella casella Nome funzione, sostituisci il nome predefinito con create_DLP_job.

  5. Nel campo Trigger, seleziona Cloud Storage.

  6. Nel campo Tipo di evento, seleziona Finalizzazione/creazione.

  7. Nel campo Bucket, fai clic su Sfoglia, seleziona il bucket di quarantena evidenziandolo nell'elenco a discesa, quindi fai clic su Seleziona.

  8. Fai clic su Salva.

  9. Fai clic su Avanti.

  10. In Runtime, seleziona Python 3.7.

  11. In Codice sorgente, seleziona Editor incorporato.

  12. Sostituisci il testo nella casella main.py con i contenuti 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 Run 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 che hai creato in precedenza.
  13. Nella casella di testo Punto di ingresso, sostituisci il testo predefinito con il seguente: create_DLP_job.

  14. 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.

  15. Fai clic su Esegui il deployment.

    Un segno di spunta verde accanto alla funzione indica che il deployment è stato eseguito correttamente.

    deployment riuscito

gcloud

  1. Apri una sessione Cloud Shell e clona il repository GitHub che contiene il codice e alcuni file di dati di esempio:

    APRI IN Cloud Shell

  2. Passa alla directory in cui è stato clonato il repository:

    cd ~dlp-cloud-functions-tutorials/gcs-dlp-classification-python/
  3. Apporta le seguenti sostituzioni nel file main.py

    • [PROJECT_ID_DLP_JOB & TOPIC]: l'ID progetto che ospita la funzione Cloud Run 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 che hai creato in precedenza.
  4. Esegui il deployment della funzione, sostituendo [YOUR_QUARANTINE_BUCKET] con il nome del tuo bucket:

    gcloud functions deploy create_DLP_job --runtime python37 \
        --trigger-resource [YOUR_QUARANTINE_BUCKET] \
        --trigger-event google.storage.object.finalize
    
  5. 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 eseguito il deployment della Cloud Function, vai alla sezione successiva per creare la secondaCloud Functiond.

Creazione della seconda funzione

console

  1. Apri la pagina Panoramica di Cloud Run Functions:

    VAI ALLA PAGINA PANORAMICA DI Cloud Run Functions

  2. Seleziona il progetto per cui hai attivato le funzioni Cloud Run.

  3. Fai clic su Crea funzione.

  4. Nella casella Nome funzione, sostituisci il nome predefinito con resolve_DLP.

  5. Nel campo Trigger, seleziona Pub/Sub.

  6. Nel campo Seleziona un argomento Cloud Pub/Sub, cerca l'argomento Pub/Sub che hai creato in precedenza.

  7. Fai clic su Salva.

  8. Fai clic su Avanti.

  9. In Runtime, seleziona Python 3.7.

  10. In Codice sorgente, seleziona Editor incorporato.

  11. Nella casella di testo Punto di ingresso, sostituisci il testo predefinito con resolve_DLP.

  12. Sostituisci il testo nella casella main.py con i contenuti 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 Run 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 che hai creato in precedenza.
  13. Fai clic su Esegui il deployment.

    Un segno di spunta verde accanto alla funzione indica che il deployment è stato eseguito correttamente.

    deployment riuscito

gcloud

  1. Apri (o riapri) una sessione Cloud Shell e clona il repository GitHub che contiene il codice e alcuni file di dati di esempio:

    APRI IN Cloud Shell

  2. Passa alla directory della cartella con il codice Python:

    cd gcs-dlp-classification-python/

  3. Apporta le seguenti sostituzioni nel file main.py:

    • [PROJECT_ID_DLP_JOB & TOPIC]: l'ID progetto che ospita la funzione Cloud Run 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 che hai creato in precedenza.
  4. 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]
  5. 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
    

Quando il deployment della Cloud Function è stato eseguito correttamente, vai alla sezione successiva.

Caricare file di esempio nel bucket di quarantena

Il repository 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 di 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 nel file main.py, inizialmente impostata su 'FIRST_NAME,PHONE_NUMBER,EMAIL_ADDRESS,US_SOCIAL_SECURITY_NUMBER'.

  1. Se non hai ancora clonato il repository, apri Cloud Shell e clona il repository GitHub che contiene il codice e alcuni file di dati di esempio:

    APRI IN Cloud Shell

  2. Passa alle cartelle dei file di dati di esempio:

    cd ~/dlp-cloud-functions-tutorials/sample_data/
  3. Copia i file di dati di esempio nel bucket di quarantena utilizzando il comando cp, sostituendo [YOUR_QUARANTINE_BUCKET] con il nome del tuo bucket di quarantena:

    gcloud storage cp * gs://[YOUR_QUARANTINE_BUCKET]/

    Sensitive Data Protection ispeziona e classifica ogni file caricato nel bucket di quarantena e lo sposta nel bucket di destinazione appropriato in base alla classificazione.

  4. Nella console Cloud Storage, apri la pagina Browser di archiviazione:

    VAI AL BROWSER Cloud Storage

  5. Seleziona uno dei bucket di destinazione che hai creato in precedenza e rivedi i file caricati. Controlla anche gli altri bucket che hai creato.

Esegui la pulizia

Al termine del tutorial, puoi eliminare le risorse che hai creato in modo che non utilizzino più la quota generando addebiti. Le seguenti sezioni descrivono come eliminare o disattivare queste risorse.

Elimina il progetto

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Passaggi successivi