Sensitive Data Protection può anonimizzare i dati sensibili nei contenuti testuali, incluso il testo archiviato 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 quanto segue:
- Mascherare i dati sensibili sostituendo parzialmente o completamente i caratteri con un simbolo, ad esempio un asterisco (*) o un hash (#).
- Sostituzione di ogni istanza di dati sensibili con una stringa di token o surrogato.
- Crittografia e sostituzione dei dati sensibili mediante una chiave predeterminata o generata in modo casuale.
Puoi fornire informazioni all'API utilizzando JSON tramite 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 introduttiva al JSON.
Panoramica dell'API
Per anonimizzare i dati sensibili, utilizza il metodo
content.deidentify
di Sensitive Data Protection.
Una chiamata di anonimizzazione all'API è composta da tre parti:
- I dati da ispezionare: una stringa o una struttura di tabella
(oggetto
ContentItem
) da ispezionare dall'API. Cosa cercare: informazioni sulla configurazione del rilevamento (
InspectConfig
) ad esempio 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 ricerca di un insieme predefinito di infoType (ALL_BASIC
), alcuni dei quali potrebbero non essere necessari. La ricerca di infoType non necessari può aggiungere latenza inutilmente alla tua richiesta.Un oggetto
InspectConfig
è obbligatorio nella richiesta, con un'eccezione. Per ulteriori informazioni, vedi Registrare le trasformazioni in questa pagina.Che cosa fare con i risultati dell'ispezione: informazioni di configurazione (
DeidentifyConfig
) che definiscono la modalità di anonimizzazione dei dati sensibili. Questo argomento viene trattato in maggiore dettaglio 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.
Specifica dei criteri di rilevamento
I rilevatori di tipo di informazioni (o "infoType") sono i meccanismi utilizzati da Sensitive Data Protection per trovare i dati sensibili.
Sensitive Data Protection include diversi tipi di rilevatori di infoType, tutti brevemente descritti di seguito:
- I rivelatori 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 quelli che crei personalmente. Esistono tre tipi di rilevatori di infoType personalizzati:
- I rivelatori di dizionari personalizzati normali sono semplici elenchi di parole su cui si basa la funzionalità Protezione dei dati sensibili. Utilizza i rilevatori di dizionario personalizzato standard quando hai un elenco di massimo diverse decine di migliaia di parole o frasi. I rilevatori di dizionari personalizzati normali sono preferibili se non prevedi che l'elenco di parole cambierà in modo significativo.
- I rivelatori 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 dizionario personalizzato memorizzati 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 espressioni regolari.
Inoltre, la funzionalità Protezione dei dati sensibili include il concetto di regole di ispezione, che ti consentono di perfezionare i risultati della scansione utilizzando quanto segue:
- Le regole di esclusione ti consentono di ridurre il numero di risultati restituiti aggiungendo regole a un rilevatore infoType integrato o personalizzato.
- Le regole hotword ti consentono di aumentare la quantità o modificare il valore di probabilità dei risultati restituiti aggiungendo regole a un rilevatore infoType integrato o personalizzato.
Trasformazioni di anonimizzazione
Devi specificare una o più trasformazioni quando imposti la configurazione di anonimizzazione
(DeidentifyConfig
).
Esistono due categorie di trasformazioni:
InfoTypeTransformations
: trasformazioni che vengono applicate solo ai valori all'interno del testo inviato che vengono identificati come un infoType specifico.RecordTransformations
: trasformazioni che vengono applicate solo ai valori all'interno dei dati text tabulari inviati identificati come infoType specifico o a un'intera colonna di dati tabulari.
Trasformazioni di InfoType
Puoi specificare una o più trasformazioni di infoType per richiesta. All'interno di ogni
oggetto InfoTypeTransformation
, specifica entrambi i seguenti elementi:
- Uno o più infoTypes a cui deve essere applicata una trasformazione (l'oggetto array
infoTypes[]
). - Una trasformazione primitiva (l'oggetto
PrimitiveTransformation
).
Tieni presente che la specifica di un infoType è facoltativa, ma se non ne specifichi almeno uno
in un
argomento
InspectConfig
la trasformazione viene applicata a tutti gli infoType integrati per i quali
non è stata fornita una trasformazione. Questa operazione non è consigliata, in quanto può provocare 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 infoType o all'intera stringa di testo. Le seguenti sezioni descrivono esempi di metodi di trasformazione che puoi utilizzare. Per un elenco di tutti i metodi di trasformazione offerti da Sensitive Data Protection, consulta la sezione Riferimento per la trasformazione.
replaceConfig
L'impostazione di 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].
Il seguente esempio di codice JSON in diversi linguaggi mostra come formare la richiesta dell'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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
REST
Per ulteriori informazioni sull'utilizzo dell'API DLP con JSON, consulta la guida introduttiva 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
Se specifichi
redactConfig
oscura un determinato valore rimuovendolo completamente. Il messaggio redactConfig
non ha argomenti; se lo specifichi, ne viene attivata 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 riportati di seguito 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare 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
L'impostazione di characterMaskConfig
su un oggetto CharacterMaskConfig
nasconde parzialmente una stringa sostituendo un determinato numero di caratteri con un carattere fisso. Il mascheramento può iniziare dall'inizio o dalla fine della stringa. Questa trasformazione funziona anche con tipi di numeri come gli interi lunghi.
L'oggetto CharacterMaskConfig
ha diversi argomenti:
maskingCharacter
: il carattere da utilizzare per mascherare ogni carattere di un valore sensibile. Ad esempio, puoi specificare un asterisco (*) o un carattere di hash (#) per mascherare una serie di numeri, ad esempio quelli di un numero di 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 impostireverseOrder
su true, i caratteri nei valori corrispondenti vengono mascherati dalla fine verso l'inizio del valore. Se lo imposti su false, il mascheramento inizia all'inizio del valore.charactersToIgnore[]
: uno o più caratteri da saltare durante il mascheramento dei valori. Ad esempio, specifica un trattino qui per mantenere i trattini al loro posto quando mascheri un numero di telefono. Puoi anche specificare un gruppo di caratteri comuni (CharsToIgnore
) da ignorare durante il mascheramento.
Ad esempio, supponiamo di aver impostato characterMaskConfig
per mascherare con "#" per gli infotype 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare 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 su un valore di input
generando un valore sostitutivo mediante hashing criptato.
Questo metodo sostituisce il valore inserito con un valore hash o "digest" criptato.
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, è possibile sottoporre ad hashing solo valori di stringa e interi.
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
).
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 generata tramite crittografia 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 delle date su un valore di immissione 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 mantengono la sequenza e la durata di un periodo di tempo. Lo spostamento delle date avviene solitamente nel contesto di una persona o di un'entità. In altre parole, vuoi spostare tutte le date per una persona specifica utilizzando lo stesso differenziale di spostamento, ma utilizzare un differenziale di spostamento separato per ogni altra persona.
Per ulteriori informazioni sullo spostamento delle date, consulta l'argomento sul concetto di spostamento delle date.
Di seguito è riportato codice campione in diversi linguaggi 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
cryptoReplaceFfxFpeConfig
L'impostazione di cryptoReplaceFfxFpeConfig
su un
oggetto CryptoReplaceFfxFpeConfig
effettua la pseudonimizzazione su un valore
di input sostituendolo con un token. Questo token è:
- Il valore di input criptato.
- Deve avere la stessa lunghezza del valore inserito.
- Calcolata utilizzando la crittografia con protezione del formato in modalità FFX ("FPE-FFX") basata sulla chiave cryptographic key specificata da
cryptoKey
. - Composto dai caratteri specificati da
alphabet
. Opzioni valide:NUMERIC
HEXADECIMAL
UPPER_CASE_ALPHA_NUMERIC
ALPHA_NUMERIC
Il valore di input:
- Deve avere una lunghezza di almeno due caratteri (o la stringa vuota).
- Deve essere composto dai caratteri specificati da un
alphabet
.alphabet
può essere composto da 2 a 95 caratteri. Unalphabet
con 95 caratteri include tutti i caratteri stampabili del set di caratteri US-ASCII.
La protezione dei dati sensibili calcola il token di sostituzione utilizzando una chiave crittografica. Puoi fornire questa chiave in tre modi:
- Incorporandolo non criptato nella richiesta API. Ti sconsigliamo tuttavia di selezionare questa opzione.
- Richiedendo che Sensitive Data Protection li generi.
- Incorporandolo criptato nella richiesta API.
Se scegli di incorporare la chiave nella richiesta API, devi crearla e avvolgerla (criptarla) utilizzando una chiave Cloud Key Management Service (Cloud KMS). Per impostazione predefinita, il valore restituito è una stringa con codifica base64. Per impostare questo valore in Sensitive Data Protection, devi decodificarlo in una stringa di byte. I seguenti snippet di codice mostrano come eseguire questa operazione in diverse lingue. Di seguito sono riportati esempi end-to-end.
Java
KmsWrappedCryptoKey.newBuilder()
.setWrappedKey(ByteString.copyFrom(BaseEncoding.base64().decode(wrappedKey)))
Python
# The wrapped key is base64-encoded, but the library expects a binary
# string, so decode it here.
import base64
wrapped_key = base64.b64decode(wrapped_key)
PHP
// Create the wrapped crypto key configuration object
$kmsWrappedCryptoKey = (new KmsWrappedCryptoKey())
->setWrappedKey(base64_decode($wrappedKey))
->setCryptoKeyName($keyName);
C#
WrappedKey = ByteString.FromBase64(wrappedKey)
Per ulteriori informazioni sulla crittografia e sulla decrittografia dei dati utilizzando Cloud KMS, consulta Criptare e decriptare i dati.
Per impostazione predefinita, FPE-FFX preserva la lunghezza e il set di caratteri del testo in input. Ciò significa che manca l'autenticazione e un vettore di inizializzazione, che causerebbe un'espansione della lunghezza nel token di output. Altri metodi come AES-SIV offrono queste garanzie di sicurezza più elevate e sono consigliati per i casi d'uso della tokenizzazione, a meno che la lunghezza e la conservazione del set di caratteri non siano requisiti rigorosi, ad esempio per la compatibilità con i sistemi legacy.
Di seguito è riportato codice campione in diverse lingue che mostra come utilizzare Sensitive Data Protection per anonimizzare i dati sensibili sostituendo un valore di input con un token.
Java
Per scoprire come installare e utilizzare la libreria client per Sensitive Data Protection, consulta Librerie client di Sensitive Data Protection.
Per autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare 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 autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Per esempi di codice che mostrano come utilizzare Sensitive Data Protection per identificare nuovamente i dati sensibili anonimizzati tramite il metodo di trasformazione CryptoReplaceFfxFpeConfig
, consulta Crittografia con protezione del formato: esempi di identificazione nuovamente.
fixedSizeBucketingConfig
Le trasformazioni di raggruppamento, questa e
bucketingConfig
, servono a mascherare i dati numerici agrupandoli in intervalli. L'intervallo di numeri risultante è una stringa con trattini composta da un limite inferiore, un trattino e un limite superiore.
L'impostazione di fixedSizeBucketingConfig
su un bucket di oggetti FixedSizeBucketingConfig
consente di inserire valori in base a intervalli di dimensioni fisse. L'oggetto
FixedSizeBucketingConfig
è costituito da quanto segue:
lowerBound
: il valore limite inferiore di tutti i bucket. I valori inferiori a questo vengono raggruppati in un unico bucket.upperBound
: il valore limite superiore di tutti i bucket. I valori superiori a questo vengono raggruppati in un unico bucket.bucketSize
: la dimensione di ogni bucket diverso da quelli minimo e massimo.
Ad esempio, se lowerBound
è impostato su 10, upperBound
è impostato su 89 e
bucketSize
è impostato su 10, verranno utilizzati i seguenti bucket: -10,
10-20, 20-30, 30-40, 40-50, 50-60, 60-70, 70-80, 80-89, 89+.
Per ulteriori informazioni sul concetto di raggruppamento, consulta Generalizzazione e raggruppamento.
bucketingConfig
La trasformazione bucketingConfig
offre più flessibilità rispetto all'altra trasformazione di aggregazione, fixedSizeBucketingConfig
.
Invece di specificare limiti superiori e inferiori e un valore di intervallo con cui creare bucket di dimensioni uguali, specifica i valori massimo e minimo per ogni bucket che vuoi creare. Ogni coppia di valori massimo e minimo deve avere
lo stesso tipo.
L'impostazione di bucketingConfig
su un oggetto BucketingConfig
specifica i bucket personalizzati. L'oggetto BucketingConfig
è costituito da un array buckets[]
di oggetti Bucket
. Ogni oggetto Bucket
è costituito da quanto segue:
min
: il limite inferiore dell'intervallo del bucket. Ometti questo valore per creare un separato che non ha un limite inferiore.max
: il limite superiore dell'intervallo del bucket. Ometti questo valore per creare un bucket senza limite superiore.replacementValue
: il valore con cui sostituire i valori compresi tra i limiti inferiore e superiore. Se non fornisci unreplacementValue
, verrà utilizzato un intervallomin-max
con trattini.
Se un valore non rientra negli intervalli definiti, il valore TransformationSummary
restituito conterrà un messaggio di errore.
Ad esempio, considera la seguente configurazione per la trasformazione bucketingConfig
:
"bucketingConfig":{
"buckets":[
{
"min":{
"integerValue":"1"
},
"max":{
"integerValue":"30"
},
"replacementValue":{
"stringValue":"LOW"
}
},
{
"min":{
"integerValue":"31"
},
"max":{
"integerValue":"65"
},
"replacementValue":{
"stringValue":"MEDIUM"
}
},
{
"min":{
"integerValue":"66"
},
"max":{
"integerValue":"100"
},
"replacementValue":{
"stringValue":"HIGH"
}
}
]
}
Questo definisce il seguente comportamento:
- I valori interi compresi tra 1 e 30 vengono mascherati sostituendoli con
LOW
. - I valori interi compresi tra 31 e 65 vengono mascherati sostituendoli con
MEDIUM
. - I valori interi compresi tra 66 e 100 vengono mascherati sostituendoli con
HIGH
.
Per ulteriori informazioni sul concetto di raggruppamento, consulta Generalizzazione e raggruppamento.
replaceWithInfoTypeConfig
Se specifichi
replaceWithInfoTypeConfig
viene sostituito ogni valore corrispondente con il nome dell'infoType. Il messaggio replaceWithInfoTypeConfig
non ha argomenti; se lo specifichi, ne attivi la trasformazione.
Ad esempio, supponiamo di aver specificato replaceWithInfoTypeConfig
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.
timePartConfig
L'impostazione di timePartConfig
su un
oggetto TimePartConfig
conserva una parte di un valore corrispondente che include i valori Date
,
Timestamp
e TimeOfDay
. L'oggetto TimePartConfig
è costituito da un argomento partToExtract
, che può essere impostato su uno dei valori enumerati TimePart
, tra cui anno, mese, giorno del mese e così via.
Ad esempio, supponiamo che tu abbia configurato una trasformazione timePartConfig
impostando partToExtract
su YEAR
. Dopo aver inviato i dati nella prima colonna
di seguito a Sensitive Data Protection, otterrai i valori trasformati
nella seconda colonna:
Valori originali | Valori trasformati |
---|---|
9/21/1976 |
1976 |
6/7/1945 |
1945 |
1/20/2009 |
2009 |
7/4/1776 |
1776 |
8/1/1984 |
1984 |
4/21/1982 |
1982 |
Registra le trasformazioni
Le trasformazioni dei record (l'oggetto
RecordTransformations
) vengono applicate solo ai valori all'interno dei dati tabulari identificati come
un tipo infoType specifico. In RecordTransformations
esistono altre due
sottocategorie di trasformazioni:
fieldTransformations[]
: trasformazioni che applicano varie trasformazioni dei campi.recordSuppressions[]
: regole che definiscono quali record vengono eliminati completamente. I record che corrispondono a qualsiasi regola di eliminazione all'interno direcordSuppressions[]
vengono omessi dall'output.
Trasformazioni dei campi
Ogni
FieldTransformation
oggetto include tre argomenti:
fields
: uno o più campi di input (oggettiFieldID
) a cui applicare la trasformazione.condition
: una condizione (un oggettoRecordCondition
) che deve restituire true affinché la trasformazione venga applicata. Ad esempio, applica una trasformazione del bucket a una colonna di età di un record solo se la colonna del codice postale dello stesso record rientra in un intervallo specifico. In alternativa, oscura un campo solo se il campo della data di nascita indica che la persona ha almeno 85 anni.Uno dei seguenti due argomenti di tipo di trasformazione. È obbligatoria la specifica di uno dei seguenti valori:
infoTypeTransformations
: tratta i contenuti del campo come testo libero e applica un valorePrimitiveTransformation
solo ai contenuti che corrispondono a un valoreInfoType
. Queste trasformazioni sono state discusse in precedenza in questo argomento.primitiveTransformation
: applica la trasformazione primitiva specificata (oggettoPrimitiveTransformation
) all'intero campo. Queste trasformazioni sono state discusse in precedenza in questo argomento.Se l'oggetto
RecordTransformations
contiene solo unprimitiveTransformation
e nessuninfoTypeTransformations
, non è necessario includere un oggettoInspectConfig
nella richiesta. In questo caso, Sensitive Data Protection lo ignora.
Esempio di trasformazioni dei campi
L'esempio seguente invia una richiesta
projects.content.deidentify
con due trasformazioni di campo:
La prima trasformazione del campo si applica alle prime due colonne (
column1
ecolumn2
). Poiché il tipo di trasformazione è un oggettoprimitiveTransformation
(in particolare, unCryptoDeterministicConfig
), Sensitive Data Protection trasforma l'intero campo.La seconda trasformazione di campo si applica alla terza colonna (
column3
). Poiché il tipo di trasformazione è un oggettoinfoTypeTransformations
, la funzionalità Protezione dei dati sensibili applica la trasformazione primitiva (in particolare, unReplaceWithInfoTypeConfig
) solo ai contenuti corrispondenti all'infoType impostato nella configurazione dell'ispezione.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
-
PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempiomy-project
.
Metodo HTTP e URL:
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/content:deidentify
Corpo JSON della richiesta:
{ "item": { "table": { "headers": [ { "name": "column1" }, { "name": "column2" }, { "name": "column3" } ], "rows": [ { "values": [ { "stringValue": "Example string 1" }, { "stringValue": "Example string 2" }, { "stringValue": "My email address is dani@example.org" } ] }, { "values": [ { "stringValue": "Example string 1" }, { "stringValue": "Example string 3" }, { "stringValue": "My email address is cruz@example.org" } ] } ] } }, "deidentifyConfig": { "recordTransformations": { "fieldTransformations": [ { "fields": [ { "name": "column1" }, { "name": "column2" } ], "primitiveTransformation": { "cryptoDeterministicConfig": { "cryptoKey": { "unwrapped": { "key": "YWJjZGVmZ2hpamtsbW5vcA==" } } } } }, { "fields": [ { "name": "column3" } ], "infoTypeTransformations": { "transformations": [ { "primitiveTransformation": { "replaceWithInfoTypeConfig": {} } } ] } } ] } }, "inspectConfig": { "infoTypes": [ { "name": "EMAIL_ADDRESS" } ] } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "item": { "table": { "headers": [ { "name": "column1" }, { "name": "column2" }, { "name": "column3" } ], "rows": [ { "values": [ { "stringValue": "AWttmGlln6Z2MFOMqcOzDdNJS52XFxOOZsg0ckDeZzfc" }, { "stringValue": "AUBTE+sQB6eKZ5iD3Y0Ss682zANXbijuFl9KL9ExVOTF" }, { "stringValue": "My email address is [EMAIL_ADDRESS]" } ] }, { "values": [ { "stringValue": "AWttmGlln6Z2MFOMqcOzDdNJS52XFxOOZsg0ckDeZzfc" }, { "stringValue": "AU+oD2pnqUDTLNItE8RplY3E0fTHeO4rZkX4GeFHN2CI" }, { "stringValue": "My email address is [EMAIL_ADDRESS]" } ] } ] } }, "overview": { "transformedBytes": "96", "transformationSummaries": [ { "field": { "name": "column1" }, "results": [ { "count": "2", "code": "SUCCESS" } ], "fieldTransformations": [ { "fields": [ { "name": "column1" }, { "name": "column2" } ], "primitiveTransformation": { "cryptoDeterministicConfig": { "cryptoKey": { "unwrapped": { "key": "YWJjZGVmZ2hpamtsbW5vcA==" } } } } } ], "transformedBytes": "32" }, { "field": { "name": "column2" }, "results": [ { "count": "2", "code": "SUCCESS" } ], "fieldTransformations": [ { "fields": [ { "name": "column1" }, { "name": "column2" } ], "primitiveTransformation": { "cryptoDeterministicConfig": { "cryptoKey": { "unwrapped": { "key": "YWJjZGVmZ2hpamtsbW5vcA==" } } } } } ], "transformedBytes": "32" }, { "infoType": { "name": "EMAIL_ADDRESS", "sensitivityScore": { "score": "SENSITIVITY_MODERATE" } }, "field": { "name": "column3" }, "results": [ { "count": "2", "code": "SUCCESS" } ], "fieldTransformations": [ { "fields": [ { "name": "column3" } ], "infoTypeTransformations": { "transformations": [ { "primitiveTransformation": { "replaceWithInfoTypeConfig": {} } } ] } } ], "transformedBytes": "32" } ] } }
Eliminazioni di record
Oltre ad applicare trasformazioni ai dati di campo, puoi anche chiedere a Sensitive Data Protection di anonimizzare i dati semplicemente eliminando i record quando determinate condizioni di eliminazione hanno valore true. Puoi applicare sia le trasformazioni dei campi sia le sospensioni dei record nella stessa richiesta.
Imposti il messaggio recordSuppressions
dell'oggetto RecordTransformations
su un array di uno o più oggetti RecordSuppression
.
Ogni
RecordSuppression
contiene un singolo
RecordCondition
che a sua volta contiene un singolo
Expressions
Un oggetto Expressions
contiene:
logicalOperator
: uno dei tipi enumeratiLogicalOperator
.conditions
: un oggettoConditions
che contiene un array di uno o più oggettiCondition
. UnCondition
è un confronto tra un valore di campo e un altro valore, entrambi di tipostring
,boolean
,integer
,double
,Timestamp
oTimeofDay
.
Se il confronto restituisce true, il record viene eliminato e viceversa. Se i valori confrontati non sono dello stesso tipo, viene visualizzato un avviso e la condizione viene valutata come false.
Trasformazioni reversibili
Quando anonimizzi i dati utilizzando le trasformazioni infoType
CryptoReplaceFfxFpeConfig
o
CryptoDeterministicConfig
, puoi reidentificarli, a condizione di disporre del
CryptoKey
utilizzato per anonimizzarli in origine.
Per ulteriori informazioni, consulta la sezione Trasformazioni di tokenizzazione basate su crittografia.
Limite al numero di risultati
Se la richiesta contiene più di 3000 risultati, Sensitive Data Protection restituisce il seguente messaggio:
Too many findings to de-identify. Retry with a smaller request.
L'elenco dei risultati restituiti da Sensitive Data Protection è un sottoinsieme arbitrario di tutti i risultati della richiesta. Per visualizzare tutti i risultati, suddividi la richiesta in batch più piccoli.
Passaggi successivi
Scopri di più su come un flusso di lavoro di anonimizzazione si inserisce nelle implementazioni reali.
Completa il codelab Oscurare i dati sensibili con Sensitive Data Protection.
Esamina un esempio che mostra come creare una chiave con wrapping, tokenizzare i contenuti e reidentificare i contenuti tokenizzati.
Scopri di più sulla creazione di una copia anonimizzata dei dati nello stoccaggio.