Questa pagina descrive come ispezionare una risorsa Cloud Storage e creare copie dei dati sottoposte a deidentificazione utilizzando l'API Cloud Data Loss Prevention.
Questa operazione contribuisce a garantire che i file utilizzati nei processi aziendali non contengano dati sensibili, come informazioni che consentono l'identificazione personale (PII). La protezione dei dati sensibili può ispezionare i file in un bucket Cloud Storage alla ricerca di 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 abilitato la fatturazione.
Hai attivato Sensitive Data Protection.
Hai un bucket Cloud Storage con dati che vuoi anonimizzare.
Sai come inviare una richiesta HTTP all'API DLP. Per ulteriori informazioni, vedi Ispeziona il testo sensibile utilizzando l'API DLP.
Scopri le limitazioni e i punti da considerare per questa operazione.
L'ispezione dello spazio di archiviazione richiede il seguente ambito OAuth:
https://www.googleapis.com/auth/cloud-platform
. Per ulteriori informazioni, vedi Autenticazione nell'API DLP.
Ruoli IAM richiesti
Se tutte le risorse per questa operazione si trovano nello stesso progetto, è sufficiente il ruolo Agente di servizio dell'API DLP (roles/dlp.serviceAgent
) sull'agente di servizio. Con questo ruolo, puoi:
- Crea il job di ispezione
- Leggere i file nella directory di input
- Scrivere i file deidentificati 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 di trasformazione.
Se devi avere le risorse in progetti separati, assicurati che l'agente di servizio del tuo progetto disponga anche dei seguenti ruoli:
- Il ruolo Visualizzatore oggetti Storage (
roles/storage.objectViewer
) nel bucket di input o nel progetto che lo contiene. - Il ruolo Storage Object Creator
(
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 di trasformazione o nel progetto che la contiene.
Per concedere un ruolo all'agente di servizio, vedi 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, configura un job di ispezione che cerca dati sensibili in base ai criteri specificati. Poi, all'interno del lavoro di ispezione, fornisci le istruzioni per la deidentificazione 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
de-identificazione sono il filtro dei file per tipo (FileType
) e l'espressione
regolare (FileSet
).
Quando abiliti l'azione Deidentify
, per impostazione predefinita Sensitive Data Protection
crea copie anonimizzate (trasformate) di tutti i tipi di file supportati
inclusi nella scansione. Tuttavia, puoi configurare il job in modo che trasformi solo un
sottoinsieme dei tipi di file supportati.
(Facoltativo) Crea modelli di anonimizzazione
Se vuoi controllare la trasformazione dei risultati, crea i seguenti modelli. Questi modelli forniscono istruzioni sulla trasformazione dei risultati in file strutturati, 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 deidentificazione strutturata:un
DeidentifyTemplate
da utilizzare per file strutturati, come i file CSV. QuestoDeidentifyTemplate
può contenereRecordTransformations
. Se questo modello non è presente, Sensitive Data Protection utilizza il modello di anonimizzazione predefinito che hai creato. Se non è presente, la protezione dei dati sensibili 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, la protezione dei dati sensibili 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 ispezionare, quali tipi
di dati contrassegnare come sensibili e cosa fare con i risultati.
Per anonimizzare i dati sensibili in una directory Cloud Storage, il tuo
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 su come trovare i dati sensibili. Un'azione
Deidentify
che contiene quanto segue:Un oggetto
TransformationConfig
, che specifica tutti i modelli che hai creato per l'anonimizzazione dei dati in file strutturati e non strutturati. Puoi anche includere la configurazione per l'oscuramento dei dati sensibili nelle immagini.Se non includi un oggetto
TransformationConfig
, Sensitive Data Protection sostituisce i dati sensibili nel testo con il relativo infoType. Nelle immagini, copre i dati sensibili con un riquadro nero.Un oggetto
TransformationDetailsStorageConfig
, che specifica una tabella BigQuery in cui Sensitive Data Protection deve memorizzare i dettagli di ogni trasformazione. Per ogni trasformazione, i dettagli includono una descrizione, un codice di successo 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 memorizza i contenuti deidentificati effettivi.
Quando i dati vengono scritti in una tabella BigQuery, la fatturazione e l'utilizzo delle quote vengono applicati al progetto che contiene la tabella di destinazione.
Una volta anonimizzati i contenuti copiati, il job di anonimizzazione
termina. 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
. L'oggetto DlpJob
restituito include sia
un oggetto DeidentifyDataSourceDetails
sia un oggetto InspectDataSourceDetails
. Questi oggetti contengono rispettivamente i risultati di un'azione Deidentify
e del
lavoro di ispezione.
Se hai incluso un oggetto TransformationDetailsStorageConfig
nel tuo DlpJob
, viene creata una tabella
BigQuery contenente i metadati relativi ai 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 Riferimento ai dettagli della trasformazione.
Esempi di codice
Gli esempi seguenti 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, vedi Librerie client di Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Go
Per scoprire come installare e utilizzare la libreria client per Sensitive Data Protection, vedi Librerie client di Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Java
Per scoprire come installare e utilizzare la libreria client per Sensitive Data Protection, vedi Librerie client di Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Per scoprire come installare e utilizzare la libreria client per Sensitive Data Protection, vedi Librerie client di Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
PHP
Per scoprire come installare e utilizzare la libreria client per Sensitive Data Protection, vedi Librerie client di Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Per scoprire come installare e utilizzare la libreria client per Sensitive Data Protection, vedi Librerie client di Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura 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 Cloud Storage che vuoi esaminare, ad esempiogs://input-bucket/folder1/folder1a
. Se l'URL termina con una barra finale, le sottodirectory all'interno diINPUT_DIRECTORY
non vengono analizzate.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 deidentificazione 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 deidentificazione 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 uno automaticamente.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 del job (DlpJob
). Questo oggetto contiene la configurazione per le fasi di ispezione e deidentificazione.storageConfig
: la posizione dei contenuti da esaminare (StorageConfig
). Questo esempio specifica un bucket Cloud StorageCloudStorageOptions
.inspectConfig
: Informazioni sui dati sensibili che vuoi ispezionare per (InspectConfig
). Questo esempio ispeziona i contenuti corrispondenti all'infoType integratoPERSON_NAME
.actions
: le azioni da intraprendere dopo il completamento della parte di ispezione del lavoro (Action
).deidentify
: se specifichi questa azione, Sensitive Data Protection deidentifica i dati sensibili corrispondenti in base alla configurazione specificata all'interno di (Deidentify
).cloud_storage_output
: specifica l'URL della directory Cloud Storage che vuoi esaminare.transformation_config
: specifica in che modo Sensitive Data Protection deve anonimizzare i dati sensibili in file strutturati, non strutturati e immagini (TransformationConfig
).Se non includi un oggetto
TransformationConfig
, Sensitive Data Protection sostituisce i dati sensibili nel testo con il relativo infoType. Nelle immagini, copre i dati sensibili con un riquadro nero.transformation_details_storage_config
: specifica che Sensitive Data Protection deve archiviare i metadati relativi a ogni trasformazione eseguita per questo job. Inoltre, specifica la posizione e il nome della tabella in cui Sensitive Data Protection deve archiviare i metadati (TransformationDetailsStorageConfig
).fileTypesToTransform
: limita l'operazione di anonimizzazione solo ai tipi di file che elenchi. Se non imposti questo campo, tutti i tipi di file supportati inclusi nell'operazione di ispezione vengono inclusi anche nell'operazione di deidentificazione. In questo esempio, Sensitive Data Protection de-identifica solo i file di immagine, CSV e di testo, anche se hai configuratoDlpJob
per ispezionare 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 il comando seguente:
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 archiviatoDlpJob
.PATH_TO_JSON_FILE
: il percorso del file JSON che contiene il corpo della richiesta.
Sensitive Data Protection restituisce l'identificatore del nuovo DlpJob
, il relativo stato e uno snapshot della configurazione di ispezione che hai impostato.
{ "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 archiviatoDlpJob
.JOB_ID
: l'ID del job restituito quando hai creatoDlpJob
.
Se l'operazione è 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ù sulla procedura di anonimizzazione dei dati archiviati.
- Scopri come anonimizzare i dati archiviati utilizzando la console Google Cloud .
- Segui il codelab Creazione di una copia anonimizzata dei dati in Cloud Storage.
- Scopri di più sulle trasformazioni di anonimizzazione.
- Scopri come ispezionare lo spazio di archiviazione per individuare dati sensibili.