Cloud Data Loss Prevention può rilevare, classificare e anonimizzare i dati sensibili all'interno dei dati strutturati. Quando anonimizzi i contenuti come tabella, la struttura e le colonne forniscono a Cloud DLP ulteriori indizi che potrebbero consentire di fornire risultati migliori per alcuni casi d'uso. Ad esempio, puoi eseguire la scansione di una singola colonna per un determinato tipo di dati anziché l'intera struttura della tabella.
Questo argomento fornisce esempi su come configurare l'anonimizzazione dei dati sensibili all'interno del testo strutturato. L'anonimizzazione viene abilitata tramite trasformazioni dei record. Queste trasformazioni vengono applicate a valori all'interno di dati di testo tabulari identificati come un infoType specifico o a un'intera colonna di dati tabulari.
Questo argomento fornisce inoltre esempi di trasformazioni dei dati tabulari, utilizzando il metodo di hash crittografico. I metodi di trasformazione crittografica sono univoci per via del requisito di una chiave di crittografia.
Il file JSON fornito negli esempi seguenti può essere inserito in qualsiasi richiesta di
de-identificazione all'interno dell'attributo
"deidentifyConfig"
(DeidentifyConfig
). Fai clic sul link "example API Explorer" per provare il codice JSON di esempio in Explorer API.
Trasforma una colonna senza ispezione
Per trasformare una colonna specifica in cui i contenuti sono già noti, puoi saltare l'ispezione e specificare direttamente una trasformazione. L'esempio segue la tabella buckets della colonna "HAPPINESS SCORE" con incrementi di 10.
Input | Tabella trasformata | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Java
Per informazioni su come installare e utilizzare la libreria client per Cloud DLP, consulta le librerie client di Cloud DLP.
"deidentifyConfig":{
"recordTransformations":{
"fieldTransformations":[
{
"fields":[
{
"name":"HAPPINESS SCORE"
}
],
"primitiveTransformation":{
"fixedSizeBucketingConfig":{
"bucketSize":10,
"lowerBound":{
"integerValue":"0"
},
"upperBound":{
"integerValue":"100"
}
}
}
}
]
}
}
Trasforma una colonna in base al valore di un'altra colonna
Puoi trasformare una colonna in base al valore di un'altra. In questo esempio vengono oscurati "TUTTO IL PUNTEGGIO" per tutti i pazienti di età superiore a 89 anni.
Input | Tabella trasformata | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Java
Per informazioni su come installare e utilizzare la libreria client per Cloud DLP, consulta le librerie client di Cloud DLP.
"deidentifyConfig":{
"recordTransformations":{
"fieldTransformations":[
{
"fields":[
{
"name":"HAPPINESS SCORE"
}
],
"primitiveTransformation":{
"characterMaskConfig":{
"maskingCharacter":"*"
}
},
"condition":{
"expressions":{
"conditions":{
"conditions":[
{
"field":{
"name":"AGE"
},
"operator":"GREATER_THAN",
"value":{
"integerValue":"89"
}
}
]
}
}
}
}
]
}
}
Trasformazione dei risultati trovati nelle colonne
Puoi trasformare i risultati che costituiscono solo una parte dei contenuti di una cella o tutti. In questo esempio, tutte le istanze di PERSON_NAME
sono anonimizzate.
Input | Tabella trasformata | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Java
Per informazioni su come installare e utilizzare la libreria client per Cloud DLP, consulta le librerie client di Cloud DLP.
"deidentifyConfig":{
"recordTransformations":{
"fieldTransformations":[
{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"PERSON_NAME"
}
],
"primitiveTransformation":{
"replaceWithInfoTypeConfig":{
}
}
}
]
},
"fields":[
{
"name":"PATIENT"
},
{
"name":"FACTOID"
}
]
}
]
}
}
Elimina una riga in base ai contenuti di una colonna
Puoi rimuovere una riga interamente in base ai contenuti visualizzati in qualsiasi colonna. In questo esempio viene soppresso il record di "Charles Dickens", poiché questo paziente ha più di 89 anni.
Input | Tabella trasformata | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Java
Per informazioni su come installare e utilizzare la libreria client per Cloud DLP, consulta le librerie client di Cloud DLP.
"deidentifyConfig":{
"recordTransformations":{
"recordSuppressions":[
{
"condition":{
"expressions":{
"conditions":{
"conditions":[
{
"field":{
"name":"AGE"
},
"operator":"GREATER_THAN",
"value":{
"integerValue":"89"
}
}
]
}
}
}
}
]
}
}
Trasformare i risultati solo quando vengono soddisfatte condizioni specifiche in un altro campo
In questo esempio, i risultati di PERSON_NAME
vengono oscurati solo se la colonna "QUANDO" indica che il paziente ha più di 89 anni.
Input | Tabella trasformata | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Java
Per informazioni su come installare e utilizzare la libreria client per Cloud DLP, consulta le librerie client di Cloud DLP.
"deidentifyConfig":{
"recordTransformations":{
"fieldTransformations":[
{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"PERSON_NAME"
}
],
"primitiveTransformation":{
"replaceWithInfoTypeConfig":{
}
}
}
]
},
"fields":[
{
"name":"PATIENT"
},
{
"name":"FACTOID"
}
],
"condition":{
"expressions":{
"conditions":{
"conditions":[
{
"field":{
"name":"AGE"
},
"operator":"GREATER_THAN",
"value":{
"integerValue":"89"
}
}
]
}
}
}
}
]
}
}
Trasformare i risultati utilizzando una trasformazione hash crittografica
I seguenti esempi JSON utilizzano le trasformazioni infoType per indicare all'API DLP di esaminare l'intera struttura della tabella per infoType specifici e quindi di criptare i valori corrispondenti utilizzando un elemento CryptoKey
temporaneo.
L'esempio seguente mostra l'anonimizzazione di due infoType mediante una trasformazione hash crittografica.
Ingresso:
userid | commenti |
---|---|
user1@example.org | la mia email è utente1@example.org e il telefono è 858-555-0222 |
user2@example.org | la mia email è utente2@example.org e il telefono è 858-555-0223 |
user3@example.org | la mia email è utente3@example.org e il telefono è 858-555-0224 |
Tabella trasformata:
userid | commenti |
---|---|
1kSfj3Op64MH1BiznupEpX0BdQrHMm62X6abgsPH5zM= | la mia email è 1kSfj3Op64MH1BiznupEpX0BdQrHMm62X6abgsPH5zM= e il telefono è hYXPcsJNBCe1rr51sHiVw2KhtoyMe4HEFKNHWFcDVm0= |
4ESy7+rEN8NVaUJ6J7kwvcgW8wcm0cm5gbBAcu6SfdM= | il mio indirizzo email è 4ESy7+rEN8NVaUJ6J7kwvcgW8wcm0cm5gbBAcu6SfdM= e il telefono è KKqW1tQwgvGiC6iWJHhLiz2enNSEFRzhmLOf9fSTxRw= |
bu1blyd/mbjLmpF2Rdi6zpgsLatSwpJLVki2fMeudM0= | la mia email è bu1blyd/mbjLmpF2Rdi6zpgsLatSwpJLVki2fMeudM0= e il telefono è eNt7qtZVLmxRb8z8NBR/+z00In07CI3hEMStbwofWoc= |
{
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
},
{
"name":"PHONE_NUMBER"
}
]
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
},
{
"name":"PHONE_NUMBER"
}
],
"primitiveTransformation":{
"cryptoHashConfig":{
"cryptoKey":{
"transient":{
"name":"[TRANSIENT-CRYPTO-KEY]"
}
}
}
}
}
]
}
},
"item":{
"table":{
"headers":[
{
"name":"userid"
},
{
"name":"comments"
}
],
"rows":[
{
"values":[
{
"stringValue":"abby_abernathy@example.org"
},
{
"stringValue":"my email is abby_abernathy@example.org and phone is 858-555-0222"
}
]
},
{
"values":[
{
"stringValue":"bert_beauregard@example.org"
},
{
"stringValue":"my email is bert_beauregard@example.org and phone is 858-555-0223"
}
]
},
{
"values":[
{
"stringValue":"cathy_crenshaw@example.org"
},
{
"stringValue":"my email is cathy_crenshaw@example.org and phone is 858-555-0224"
}
]
}
]
}
}
}
Trasforma i risultati utilizzando due trasformazioni hash crittografiche separate
Questo esempio mostra come utilizzare chiavi di crittografia diverse in trasformazioni diverse all'interno di una singola configurazione di anonimizzazione. Innanzitutto, viene dichiarata una trasformazione dei campi "userid". Tale trasformazione non include trasformazioni infoType, pertanto il campo ""id-utente" in ogni riga viene trasformato, indipendentemente dal tipo di dati. Quindi viene dichiarata un'altra trasformazione del campo, questa nel campo "comments".
Ingresso:
userid | commenti |
---|---|
user1@example.org | la mia email è utente1@example.org e il telefono è 858-555-0222 |
abbyabernathy1 | il mio utenteid è abbyabernathy1 e la mia email è aabernathy@example.com |
Tabella trasformata:
userid | commenti |
---|---|
5WvS4+aJtCCwWWG79cmRNamDgyvJ+CkuwNpA2gaR1VQ= | la mia email è vjqGLaA6+NUUnZAWXpI72lU1GfwQdOKu7XqWaJPcvQQ= e il telefono è BY+mSXXTu6mOoX5pr0Xbse60uelsSHmwRCq6HcscKtk= |
t0dOmHvkT0VsM++SVmESVKHenLkmhBmFezH3hSDldDg= | il mio ID utente è abbyabernathy1 e la mia email è TQ3ancdUn9zgwO5qe6ahkmVrBuNhvlMknxjPjIt0N2w= |
{
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
},
{
"name":"PHONE_NUMBER"
}
]
},
"deidentifyConfig":{
"recordTransformations":{
"fieldTransformations":[
{
"fields":[
{
"name":"userid"
}
],
"primitiveTransformation":{
"cryptoHashConfig":{
"cryptoKey":{
"transient":{
"name":"[TRANSIENT-CRYPTO-KEY-1]"
}
}
}
}
},
{
"fields":[
{
"name":"comments"
}
],
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"PHONE_NUMBER"
},
{
"name":"EMAIL_ADDRESS"
}
],
"primitiveTransformation":{
"cryptoHashConfig":{
"cryptoKey":{
"transient":{
"name":"[TRANSIENT-CRYPTO-KEY-2]"
}
}
}
}
}
]
}
}
]
}
},
"item":{
"table":{
"headers":[
{
"name":"userid"
},
{
"name":"comments"
}
],
"rows":[
{
"values":[
{
"stringValue":"user1@example.org"
},
{
"stringValue":"my email is user1@example.org and phone is 858-333-2222"
}
]
},
{
"values":[
{
"stringValue":"abbyabernathy1"
},
{
"stringValue":"my userid is abbyabernathy1 and my email is aabernathy@example.com"
}
]
}
]
}
}
}