Sensitive Data Protection può anonimizzare i dati sensibili nei contenuti testuali, inclusi i testi archiviati in strutture dei container come le tabelle. L'anonimizzazione è il processo di rimozione delle informazioni identificative dai dati. L'API rileva i dati sensibili, ad esempio le informazioni che consentono l'identificazione personale (PII), quindi utilizza una trasformazione di anonimizzazione per mascherare, eliminare o nascondere in altro modo i dati. Ad esempio, le tecniche di anonimizzazione possono includere una delle seguenti:
- Mascheramento dei dati sensibili sostituendo parzialmente o completamente i caratteri con un simbolo, ad esempio un asterisco (*) o un cancelletto (#).
- Sostituzione di ogni istanza di dati sensibili con una stringa di token o surrogato.
- Crittografia e sostituzione dei dati sensibili utilizzando una chiave generata casualmente o predeterminata.
Puoi fornire informazioni all'API utilizzando JSON su HTTPS, nonché la CLI e diversi linguaggi di programmazione utilizzando le librerie client di Sensitive Data Protection. Per configurare la CLI, consulta la guida rapida. Per ulteriori informazioni sull'invio di informazioni in formato JSON, consulta la guida rapida JSON.
Panoramica dell'API
Per anonimizzare i dati sensibili, utilizza il metodo
content.deidentify
di Sensitive Data Protection.
Una chiamata API di anonimizzazione è composta da tre parti:
- I dati da esaminare:una stringa o una struttura di tabella
(oggetto
ContentItem) da esaminare per l'API. Cosa ispezionare: informazioni sulla configurazione del rilevamento (
InspectConfig) come i tipi di dati (o infoType) da cercare, se filtrare i risultati che superano una determinata soglia di probabilità e se restituire non più di un determinato numero di risultati.Nell'oggetto
InspectConfig, assicurati di includere gli infoType che vuoi cercare. In caso contrario, Sensitive Data Protection esegue la scansione di un insieme predefinito di infoType (ALL_BASIC), alcuni dei quali potrebbero non essere necessari. La scansione di infoType non necessari può aggiungere inutilmente latenza alla tua richiesta.Nella richiesta è necessario un oggetto
InspectConfig, con un'eccezione. Per ulteriori informazioni, vedi Trasformazioni dei record in questa pagina.Cosa fare con i risultati dell'ispezione:informazioni di configurazione (
DeidentifyConfig) che definiscono come vuoi che i dati sensibili vengano anonimizzati. Questo argomento è trattato in modo più dettagliato nella sezione seguente.
L'API restituisce gli stessi elementi che ha ricevuto, nello stesso formato, ma qualsiasi testo identificato come contenente informazioni sensibili in base ai tuoi criteri è stato anonimizzato.
Specificare i criteri di rilevamento
I rilevatori di tipo di informazioni (o "infoType") sono i meccanismi che Sensitive Data Protection utilizza per trovare i dati sensibili.
Sensitive Data Protection include diversi tipi di rilevatori di infoType, tutti riepilogati qui:
- I rilevatori di infoType integrati sono integrati in Sensitive Data Protection. Sono inclusi rilevatori per tipi di dati sensibili specifici per paese o regione, nonché tipi di dati applicabili a livello globale.
- I rivelatori di infoType personalizzati sono rilevatori che crei
personalmente. Esistono tre tipi di rilevatori di infoType personalizzati:
- I rilevatori di dizionari personalizzati regolari sono semplici elenchi di parole che Sensitive Data Protection confronta. Utilizza i rilevatori di dizionari personalizzati regolari quando hai un elenco di fino a diverse decine di migliaia di parole o frasi. I rilevatori di dizionari personalizzati regolari sono preferibili se non prevedi che il tuo elenco di parole cambi in modo significativo.
- I detector di dizionari personalizzati archiviati vengono generati da Sensitive Data Protection utilizzando grandi elenchi di parole o frasi archiviati in Cloud Storage o BigQuery. Utilizza i rilevatori di dizionari personalizzati archiviati quando hai un elenco di parole o frasi di grandi dimensioni, fino a decine di milioni.
- I rilevatori di espressioni regolari (regex) consentono a Sensitive Data Protection di rilevare le corrispondenze in base a un pattern di espressione regolare.
Per perfezionare i risultati della scansione, puoi creare regole di ispezione.
Trasformazioni di anonimizzazione
Devi specificare una o più trasformazioni quando imposti la configurazione di anonimizzazione (DeidentifyConfig). Esistono due categorie di trasformazioni:
InfoTypeTransformations: Trasformazioni applicate solo ai valori all'interno del testo inviato che sono identificati come un infoType specifico.RecordTransformations: Trasformazioni applicate solo ai valori all'interno dei dati di testo tabulari inviati che vengono identificati come un infoType specifico o a un'intera colonna di dati tabulari.
Trasformazioni degli InfoType
Puoi specificare una o più trasformazioni di infoType per richiesta. All'interno di ogni oggetto
InfoTypeTransformation, specifica quanto segue:
- Uno o più infoTypes a cui deve essere applicata una trasformazione (l'oggetto array
infoTypes[]). - Una trasformazione primitiva (l'oggetto
PrimitiveTransformation).
Tieni presente che specificare un infoType è facoltativo, ma non specificare almeno un
infoType in un
InspectConfig
argomento fa sì che la trasformazione venga applicata a tutti gli infoType integrati
per i quali non è stata fornita una trasformazione. Questa operazione non è consigliata, in quanto può
causare un calo del rendimento e un aumento dei costi.
Trasformazioni primitive
Devi specificare almeno una trasformazione primitiva da applicare all'input, indipendentemente dal fatto che la applichi solo a determinati tipi di informazioni o all'intera stringa di testo. Le sezioni seguenti descrivono esempi di metodi di trasformazione che puoi utilizzare. Per un elenco di tutti i metodi di trasformazione offerti da Sensitive Data Protection, consulta Riferimento per la trasformazione.
replaceConfig
L'impostazione replaceConfig su un oggetto ReplaceValueConfig
sostituisce i valori di input corrispondenti con un valore specificato.
Ad esempio, supponiamo di aver impostato replaceConfig su "[email-address]"
per tutti gli infoType EMAIL_ADDRESS e che la seguente stringa venga inviata a
Sensitive Data Protection:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
La stringa restituita sarà la seguente:
My name is Alicia Abernathy, and my email address is [email-address].
L'esempio JSON e il codice seguenti in diversi linguaggi mostrano come formare la richiesta API e cosa restituisce l'API DLP:
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 le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura 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 le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
REST
Per saperne di più sull'utilizzo dell'API DLP con JSON, consulta la guida rapida JSON.
Input JSON:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is aabernathy@example.com."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"primitiveTransformation":{
"replaceConfig":{
"newValue":{
"stringValue":"[email-address]"
}
}
}
}
]
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
}
Output JSON:
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is [email-address]."
},
"overview":{
"transformedBytes":"22",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"replaceConfig":{
"newValue":{
"stringValue":"[email-address]"
}
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"22"
}
]
}
}
redactConfig
La specifica di
redactConfig
oscura un determinato valore rimuovendolo completamente. Il messaggio redactConfig
non ha argomenti; la sua specifica ne consente la trasformazione.
Ad esempio, supponiamo di aver specificato redactConfig per tutti gli infoType EMAIL_ADDRESS e che la seguente stringa venga inviata a Sensitive Data Protection:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
La stringa restituita sarà la seguente:
My name is Alicia Abernathy, and my email address is .
Gli esempi seguenti mostrano come formare la richiesta API e cosa restituisce l'API DLP:
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 le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura 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 le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura 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 le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura 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 le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura 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 le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura 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 le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
REST
Input JSON:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is aabernathy@example.com."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"primitiveTransformation":{
"redactConfig":{
}
}
}
]
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
}
Output JSON:
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is ."
},
"overview":{
"transformedBytes":"22",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"redactConfig":{
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"22"
}
]
}
}
characterMaskConfig
Se imposti characterMaskConfig su un oggetto CharacterMaskConfig, una stringa viene mascherata parzialmente sostituendo un determinato numero di caratteri con un carattere fisso. La mascheratura può iniziare dall'inizio o dalla fine della
stringa. Questa trasformazione funziona anche con i tipi di numeri come gli interi lunghi.
L'oggetto CharacterMaskConfig ha diversi argomenti propri:
maskingCharacter: il carattere da utilizzare per mascherare ogni carattere di un valore sensibile. Ad esempio, puoi specificare un asterisco (*) o un cancelletto (#) per mascherare una serie di numeri, ad esempio quelli di un numero carta di credito.numberToMask: il numero di caratteri da mascherare. Se non imposti questo valore, tutti i caratteri corrispondenti verranno mascherati.reverseOrder: indica se mascherare i caratteri in ordine inverso. Se impostireverseOrdersu true, i caratteri nei valori corrispondenti vengono mascherati dalla fine verso l'inizio del valore. Se lo imposti su false, la maschera inizia all'inizio del valore.charactersToIgnore[]: uno o più caratteri da ignorare durante la mascheratura dei valori. Ad esempio, specifica un trattino per lasciare i trattini al loro posto quando mascheri un numero di telefono. Puoi anche specificare un gruppo di caratteri comuni (CharsToIgnore) da ignorare durante la mascheratura.
Ad esempio, supponiamo di aver impostato characterMaskConfig per la mascheratura con "#" per i tipi di informazioni EMAIL_ADDRESS, ad eccezione dei caratteri "." e "@". Se la
seguente stringa viene inviata a Sensitive Data Protection:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
La stringa restituita sarà la seguente:
My name is Alicia Abernathy, and my email address is ##########@#######.###.
Di seguito sono riportati alcuni esempi che mostrano come utilizzare l'API DLP per anonimizzare i dati sensibili utilizzando tecniche di mascheramento.
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 le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura 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 le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura 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 le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura 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 le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura 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 le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
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 le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
REST
Il seguente esempio JSON mostra come formare la richiesta API e cosa restituisce l'API DLP:
Input JSON:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is aabernathy@example.com."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"primitiveTransformation":{
"characterMaskConfig":{
"maskingCharacter":"#",
"reverseOrder":false,
"charactersToIgnore":[
{
"charactersToSkip":".@"
}
]
}
}
}
]
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
}
Output JSON:
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is ##########@#######.###."
},
"overview":{
"transformedBytes":"22",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"characterMaskConfig":{
"maskingCharacter":"#",
"charactersToIgnore":[
{
"charactersToSkip":".@"
}
]
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"22"
}
]
}
}
cryptoHashConfig
L'impostazione di cryptoHashConfig su un oggetto CryptoHashConfig
esegue la pseudonimizzazione di un valore di input
generando un valore surrogato utilizzando l'hashing crittografico.
Questo metodo sostituisce il valore di input con un "digest" criptato o un valore hash.
Il digest viene calcolato prendendo l'hash SHA-256 del valore di input.
La chiave di crittografia utilizzata per creare l'hash è un oggetto
CryptoKey e deve avere una dimensione di 32 o 64 byte.
Il metodo restituisce una rappresentazione con codifica base64 dell'output sottoposto ad hashing. Al momento, solo i valori stringa e interi possono essere sottoposti ad hashing.
Ad esempio, supponiamo di aver specificato cryptoHashConfig per tutti gli infoType EMAIL_ADDRESS e che l'oggetto CryptoKey sia costituito da una chiave generata in modo casuale (un TransientCryptoKey).
Viene quindi inviata a Sensitive Data Protection la seguente stringa:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
La stringa restituita generata in modo crittografico avrà il seguente aspetto:
My name is Alicia Abernathy, and my email address is 41D1567F7F99F1DC2A5FAB886DEE5BEE.
Naturalmente, la stringa esadecimale verrà generata in modo crittografico e sarà diversa da quella mostrata qui.
dateShiftConfig
L'impostazione di dateShiftConfig su un oggetto DateShiftConfig esegue lo spostamento della data su
un valore di input della data spostando le date di un numero casuale di giorni.
Le tecniche di spostamento delle date spostano in modo casuale un insieme di date, ma conservano la sequenza e la durata di un periodo di tempo. Lo spostamento delle date viene solitamente eseguito in relazione a una persona o a un'entità. ovvero vuoi spostare tutte le date di una persona specifica utilizzando lo stesso differenziale di turno, ma utilizzare un differenziale di turno separato per ogni altra persona.
Per saperne di più sullo spostamento delle date, consulta l'argomento Concetto di spostamento delle date.
Di seguito è riportato un codice campione in diverse lingue che mostra come utilizzare l'API DLP per anonimizzare le date utilizzando lo spostamento delle date.
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 le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.