Questa pagina descrive come ispezionare una risorsa Cloud Storage e creare copie anonimizzate dei dati utilizzando l'API Cloud Data Loss Prevention.
Questa operazione aiuta a garantire che i file utilizzati nei processi aziendali non contengano dati sensibili, come le informazioni che consentono l'identificazione personale (PII). Sensitive Data Protection può esaminare i file in un bucket Cloud Storage per i dati sensibili e creare copie anonimizzate di questi file in un bucket separato. Puoi quindi utilizzare le copie anonimizzate nei tuoi processi aziendali.
Per saperne di più su questa funzionalità, consulta Anonimizzazione dei dati sensibili in Cloud Storage.
Prima di iniziare
Questa pagina presuppone quanto segue:
Hai attivato la fatturazione.
Hai attivato la protezione dei dati sensibili.
Hai un bucket Cloud Storage con dati che vuoi anonimizzare.
Sai come inviare una richiesta HTTP all'API DLP. Per ulteriori informazioni, consulta Esaminare il testo sensibile utilizzando l'API DLP.
Scopri di più sulle limitazioni e sui punti di considerazione per questa operazione.
L'ispezione dell'archiviazione richiede il seguente ambito OAuth:
https://www.googleapis.com/auth/cloud-platform
. Per maggiori informazioni, consulta Autenticazione nell'API DLP.
Ruoli IAM obbligatori
Se tutte le risorse per questa operazione si trovano nello stesso progetto, il ruolo Agente di servizio API DLP (roles/dlp.serviceAgent
) nell'agente di servizio è sufficiente. Questo ruolo ti consente di:
- Crea il job di ispezione
- Leggi i file nella directory di input
- Scrivi i file anonimizzati nella directory di output
- Scrivi i dettagli della trasformazione in una tabella BigQuery
Le risorse pertinenti includono il job di ispezione, i modelli di anonimizzazione, il bucket di input, il bucket di output e la tabella dei dettagli della trasformazione.
Se devi disporre delle risorse in progetti separati, assicurati che l'agente di servizio del progetto disponga anche dei ruoli seguenti:
- Il ruolo Visualizzatore oggetti Storage (
roles/storage.objectViewer
) nel bucket di input o nel progetto che lo contiene. - Il ruolo Creatore oggetti Storage (
roles/storage.objectCreator
) nel bucket di output o nel progetto che lo contiene. - Il ruolo Editor dati BigQuery (
roles/bigquery.dataEditor
) nella tabella dei dettagli della trasformazione o nel progetto che la contiene.
Per concedere un ruolo all'agente di servizio, ossia un account di servizio gestito da Google, consulta Concedere un singolo ruolo. Puoi anche controllare l'accesso ai seguenti livelli:
Panoramica dell'API
Per creare copie anonimizzate dei contenuti archiviati in Cloud Storage, devi configurare un job di ispezione che cerca dati sensibili in base ai criteri da te specificati. Quindi, all'interno del job di ispezione, fornisci istruzioni per l'anonimizzazione sotto forma di azione Deidentify
.
Se vuoi eseguire la scansione solo di un sottoinsieme dei file nel bucket, puoi limitare i file analizzati dal job. Le opzioni supportate per i job con anonimizzazione sono il filtro dei file per tipo (FileType
) ed espressione regolare (FileSet
).
Quando attivi l'azione Deidentify
, per impostazione predefinita Sensitive Data Protection crea copie anonimizzate (trasformate) di tutti i tipi di file supportati inclusi nell'analisi. Tuttavia, puoi configurare il job in modo da trasformare solo un sottoinsieme dei tipi di file supportati.
(Facoltativo) Creare modelli di anonimizzazione
Se vuoi controllare in che modo i risultati vengono trasformati, crea i seguenti modelli. Questi modelli forniscono istruzioni su come trasformare i risultati in file strutturati, file non strutturati e immagini.
Modello di anonimizzazione: un
DeidentifyTemplate
predefinito da utilizzare per i file non strutturati, come i file di testo in formato libero. Questo tipo diDeidentifyTemplate
non può contenere un oggettoRecordTransformations
, che è supportato solo per i contenuti strutturati. Se questo modello non è presente, Sensitive Data Protection utilizza il metodoReplaceWithInfoTypeConfig
per trasformare i file non strutturati.Modello di anonimizzazione strutturato: un
DeidentifyTemplate
da utilizzare per i file strutturati, ad esempio i file CSV. QuestoDeidentifyTemplate
può contenereRecordTransformations
. Se questo modello non è presente, la protezione dei dati sensibili utilizza il modello di anonimizzazione predefinito che hai creato. Se anche questo non è presente, Sensitive Data Protection utilizza il metodoReplaceWithInfoTypeConfig
per trasformare i file strutturati.Modello di oscuramento delle immagini:un
DeidentifyTemplate
da utilizzare per le immagini. Questo modello deve contenere un oggettoImageTransformations
. Se questo modello non è presente, Sensitive Data Protection oscura tutti i risultati nelle immagini con una casella nera.
Scopri di più sulla creazione di un modello di anonimizzazione.
Crea un job di ispezione con un'azione di anonimizzazione
L'oggetto DlpJob
fornisce istruzioni su cosa esaminare, quali tipi di dati
contrassegnare come sensibili e cosa fare con i risultati.
Per anonimizzare i dati sensibili in una directory Cloud Storage, DlpJob
deve definire almeno quanto segue:
- Un oggetto
StorageConfig
, che specifica la directory Cloud Storage da ispezionare. - Un oggetto
InspectConfig
, che contiene i tipi di dati da cercare e istruzioni di ispezione aggiuntive per trovare i dati sensibili. Un'azione
Deidentify
contenente quanto segue:Un oggetto
TransformationConfig
, che specifica eventuali modelli che hai creato per anonimizzare i dati nei file strutturati e non strutturati. Puoi anche includere la configurazione per oscurare i dati sensibili nelle immagini.Se non includi un oggetto
TransformationConfig
, Sensitive Data Protection sostituisce i dati sensibili nel testo con il relativo infoType. Sulle immagini, i dati sensibili vengono coperti con una casella nera.Un oggetto
TransformationDetailsStorageConfig
, che specifica una tabella BigQuery in cui Sensitive Data Protection deve archiviare i dettagli di ogni trasformazione. Per ogni trasformazione, i dettagli includono una descrizione, un codice di operazione riuscita o di errore, eventuali dettagli dell'errore, il numero di byte trasformati, la posizione dei contenuti trasformati e il nome del job di ispezione in cui Sensitive Data Protection ha eseguito la trasformazione. Questa tabella non archivia gli effettivi contenuti anonimizzati.
Quando i dati vengono scritti in una tabella BigQuery, l'utilizzo delle quote e della fatturazione viene applicato al progetto che contiene la tabella di destinazione.
Dopo che i contenuti copiati sono stati anonimizzati, il job di anonimizzazione viene completato. Il job contiene un riepilogo del numero di volte in cui sono state applicate le trasformazioni specificate, che puoi recuperare utilizzando il metodo projects.dlpJobs.get
su DlpJob
. Il valore DlpJob
restituito include sia un oggetto DeidentifyDataSourceDetails
sia un oggetto InspectDataSourceDetails
. Questi oggetti contengono rispettivamente i risultati di un'azione Deidentify
e del job di ispezione.
Se hai incluso un oggetto TransformationDetailsStorageConfig
in DlpJob
, viene creata una tabella BigQuery contenente i metadati sui dettagli della trasformazione. Per ogni trasformazione che si verifica, Sensitive Data Protection scrive una riga di metadati nella tabella. Per ulteriori informazioni sui contenuti della tabella, consulta la documentazione sui dettagli della trasformazione.
Esempi di codice
I seguenti esempi mostrano come utilizzare l'API DLP per creare copie anonimizzate dei file Cloud Storage.
Metodo HTTP e URL
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/dlpJobs
C#
Per scoprire come installare e utilizzare la libreria client per Sensitive Data Protection, consulta Librerie client di Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Go
Per scoprire come installare e utilizzare la libreria client per Sensitive Data Protection, consulta Librerie client di Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Java
Per scoprire come installare e utilizzare la libreria client per Sensitive Data Protection, consulta Librerie client di Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Node.js
Per scoprire come installare e utilizzare la libreria client per Sensitive Data Protection, consulta Librerie client di Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
PHP
Per scoprire come installare e utilizzare la libreria client per Sensitive Data Protection, consulta Librerie client di Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Per scoprire come installare e utilizzare la libreria client per Sensitive Data Protection, consulta Librerie client di Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
REST
Input JSON{
"inspect_job": {
"storage_config": {
"cloud_storage_options": {
"file_set": {
"url": "INPUT_DIRECTORY"
}
}
},
"inspect_config": {
"info_types": [
{
"name": "PERSON_NAME"
}
]
},
"actions": {
"deidentify": {
"cloud_storage_output": "OUTPUT_DIRECTORY",
"transformation_config": {
"deidentify_template": "DEIDENTIFY_TEMPLATE_NAME",
"structured_deidentify_template": "STRUCTURED_DEIDENTIFY_TEMPLATE_NAME",
"image_redact_template": "IMAGE_REDACTION_TEMPLATE_NAME"
},
"transformation_details_storage_config": {
"table": {
"project_id": "TRANSFORMATION_DETAILS_PROJECT_ID",
"dataset_id": "TRANSFORMATION_DETAILS_DATASET_ID",
"table_id": "TRANSFORMATION_DETAILS_TABLE_ID"
}
},
"fileTypesToTransform": ["IMAGE","CSV", "TEXT_FILE"]
}
}
}
}
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto in cui vuoi archiviare il job di ispezione.INPUT_DIRECTORY
: la directory di Cloud Storage che vuoi ispezionare, ad esempiogs://input-bucket/folder1/folder1a
. Se l'URL termina con una barra finale, tutte le sottodirectory all'interno diINPUT_DIRECTORY
non vengono scansionate.OUTPUT_DIRECTORY
: la directory Cloud Storage in cui vuoi archiviare i file anonimizzati. Questa directory non deve trovarsi nello stesso bucket Cloud Storage diINPUT_DIRECTORY
.DEIDENTIFY_TEMPLATE_NAME
: il nome completo della risorsa del modello di anonimizzazione predefinito, per i file non strutturati e strutturati, se ne hai creato uno. Questo valore deve essere nel formatoprojects/projectName/(locations/locationId)/deidentifyTemplates/templateName
.STRUCTURED_DEIDENTIFY_TEMPLATE_NAME
: il nome completo della risorsa del modello di anonimizzazione per i file strutturati, se ne hai creato uno. Questo valore deve essere nel formatoprojects/projectName/(locations/locationId)/deidentifyTemplates/templateName
.IMAGE_REDACTION_TEMPLATE_NAME
: il nome completo della risorsa del modello di oscuramento delle immagini per le immagini, se ne hai creato uno. Questo valore deve essere nel formatoprojects/projectName/(locations/locationId)/deidentifyTemplates/templateName
.TRANSFORMATION_DETAILS_PROJECT_ID
: l'ID del progetto in cui vuoi archiviare i dettagli della trasformazione.TRANSFORMATION_DETAILS_DATASET_ID
: l'ID del set di dati BigQuery in cui vuoi archiviare i dettagli della trasformazione. Se non fornisci un ID tabella, il sistema ne crea automaticamente uno.TRANSFORMATION_DETAILS_TABLE_ID
: l'ID della tabella BigQuery in cui vuoi archiviare i dettagli della trasformazione.
Tieni presente i seguenti oggetti:
inspectJob
: l'oggetto di configurazione per il job (DlpJob
). Questo oggetto contiene la configurazione per entrambe le fasi di ispezione e anonimizzazione.storageConfig
: la posizione dei contenuti da ispezionare (StorageConfig
). In questo esempio è specificato un bucket Cloud StorageCloudStorageOptions
.inspectConfig
: informazioni sui dati sensibili che vuoi esaminare (InspectConfig
). Questo esempio controlla la presenza di contenuti corrispondenti all'infoType integratoPERSON_NAME
.actions
: le azioni da eseguire dopo il completamento della parte di ispezione del job (Action
).deidentify
: se specifichi questa azione, indichi a Sensitive Data Protection di anonimizzare i dati sensibili corrispondenti in base alla configurazione specificata all'interno di (Deidentify
).cloud_storage_output
: specifica l'URL della directory Cloud Storage da esaminare.transformation_config
: specifica in che modo la protezione dei dati sensibili deve anonimizzare i dati sensibili nei file strutturati, nei file non strutturati e nelle immagini (TransformationConfig
).Se non includi un oggetto
TransformationConfig
, Sensitive Data Protection sostituisce i dati sensibili nel testo con il relativo infoType. Sulle immagini, i dati sensibili vengono coperti con una casella nera.transformation_details_storage_config
: specifica che Sensitive Data Protection deve archiviare i metadati su ogni trasformazione eseguita per questo job. Specifica inoltre la posizione e il nome della tabella in cui la protezione dei dati sensibili deve archiviare i metadati (TransformationDetailsStorageConfig
).fileTypesToTransform
: limita l'operazione di anonimizzazione solo ai tipi di file elencati. Se non imposti questo campo, tutti i tipi di file supportati inclusi nell'operazione di ispezione sono inclusi anche nell'operazione di anonimizzazione. In questo esempio, Sensitive Data Protection anonimizza solo i file immagine, CSV e di testo, anche se hai configuratoDlpJob
per l'ispezione di tutti i tipi di file supportati.
Crea un job di ispezione tramite l'API REST
Per creare il job di ispezione (DlpJob
), invia una richiesta projects.dlpJobs.create
. Per inviare la richiesta utilizzando cURL, salva l'esempio REST precedente come file JSON ed esegui questo comando:
curl -s \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://dlp.googleapis.com/v2/projects/PROJECT_ID/dlpJobs \
-d @PATH_TO_JSON_FILE
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto in cui hai archiviato iDlpJob
.PATH_TO_JSON_FILE
: il percorso del file JSON che contiene il corpo della richiesta.
Sensitive Data Protection restituisce l'identificatore della risorsa DlpJob
appena creata, il relativo stato e uno snapshot della configurazione di ispezione impostata.
{ "name": "projects/PROJECT_ID/dlpJobs/JOB_ID", "type": "INSPECT_JOB", "state": "PENDING", ... }
Recupera i risultati del job di ispezione
Per recuperare i risultati di DlpJob
, invia una richiesta projects.dlpJobs.get
:
curl -s \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://dlp.googleapis.com/v2/projects/PROJECT_ID/dlpJobs/JOB_ID
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto in cui hai archiviato iDlpJob
.JOB_ID
: l'ID del job restituito al momento della creazione diDlpJob
.
Se l'operazione è stata completata, riceverai una risposta simile alla seguente:
{ "name": "projects/PROJECT_ID/dlpJobs/JOB_ID", "type": "INSPECT_JOB", "state": "DONE", "inspectDetails": { "requestedOptions": { "snapshotInspectTemplate": {}, "jobConfig": { "storageConfig": { "cloudStorageOptions": { "fileSet": { "url": "INPUT_DIRECTORY" } } }, "inspectConfig": { "infoTypes": [ { "name": "PERSON_NAME" } ], "limits": {} }, "actions": [ { "deidentify": { "transformationDetailsStorageConfig": { "table": { "projectId": "TRANSFORMATION_DETAILS_PROJECT_ID", "datasetId": "TRANSFORMATION_DETAILS_DATASET_ID", "tableId": "TRANSFORMATION_DETAILS_TABLE_ID" } }, "transformationConfig": { "deidentifyTemplate": "DEIDENTIFY_TEMPLATE_NAME", "structuredDeidentifyTemplate": "STRUCTURED_DEIDENTIFY_TEMPLATE_NAME", "imageRedactTemplate": "IMAGE_REDACTION_TEMPLATE_NAME" }, "fileTypesToTransform": [ "IMAGE", "CSV", "TEXT_FILE" ], "cloudStorageOutput": "OUTPUT_DIRECTORY" } } ] } }, "result": { "processedBytes": "25242", "totalEstimatedBytes": "25242", "infoTypeStats": [ { "infoType": { "name": "PERSON_NAME" }, "count": "114" } ] } }, "createTime": "2022-06-09T23:00:53.380Z", "startTime": "2022-06-09T23:01:27.986383Z", "endTime": "2022-06-09T23:02:00.443536Z", "actionDetails": [ { "deidentifyDetails": { "requestedOptions": { "snapshotDeidentifyTemplate": { "name": "DEIDENTIFY_TEMPLATE_NAME", "createTime": "2022-06-09T17:46:34.208923Z", "updateTime": "2022-06-09T17:46:34.208923Z", "deidentifyConfig": { "infoTypeTransformations": { "transformations": [ { "primitiveTransformation": { "characterMaskConfig": { "maskingCharacter": "*", "numberToMask": 25 } } } ] } }, "locationId": "global" }, "snapshotStructuredDeidentifyTemplate": { "name": "STRUCTURED_DEIDENTIFY_TEMPLATE_NAME", "createTime": "2022-06-09T20:51:12.411456Z", "updateTime": "2022-06-09T21:07:53.633149Z", "deidentifyConfig": { "recordTransformations": { "fieldTransformations": [ { "fields": [ { "name": "Name" } ], "primitiveTransformation": { "replaceConfig": { "newValue": { "stringValue": "[redacted]" } } } } ] } }, "locationId": "global" }, "snapshotImageRedactTemplate": { "name": "IMAGE_REDACTION_TEMPLATE_NAME", "createTime": "2022-06-09T20:52:25.453564Z", "updateTime": "2022-06-09T20:52:25.453564Z", "deidentifyConfig": {}, "locationId": "global" } }, "deidentifyStats": { "transformedBytes": "3972", "transformationCount": "110" } } } ], "locationId": "global" }
Passaggi successivi
- Scopri di più sul processo di anonimizzazione dei dati nello spazio di archiviazione.
- Scopri come anonimizzare i dati nello spazio di archiviazione utilizzando la console Google Cloud.
- Segui il codelab dedicato alla creazione di una copia anonimizzata dei dati in Cloud Storage.
- Scopri di più sulle trasformazioni di anonimizzazione.
- Scopri come controllare lo spazio di archiviazione per individuare dati sensibili.