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, come le informazioni che consentono l'identificazione personale (PII), quindi utilizza una trasformazione di anonimizzazione per mascherare, eliminare o oscurare in altro modo i dati. Ad esempio, le tecniche di anonimizzazione possono includere:
- 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 token o surrogata.
- Crittografia e sostituzione dei dati sensibili utilizzando una chiave generata in modo casuale o predeterminata.
Puoi fornire informazioni all'API utilizzando JSON su HTTPS, nonché l'interfaccia a riga di comando e diversi linguaggi di programmazione utilizzando le librerie client di Sensitive Data Protection. Per configurare l'interfaccia a riga di comando, consulta la guida rapida. Per ulteriori informazioni sull'invio di informazioni in formato JSON, consulta la guida rapida di 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 ispezionare: una stringa o una struttura di tabella (oggetto
ContentItem) che l'API deve ispezionare. Cosa ispezionare: informazioni di 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 scansionare. In caso contrario, Sensitive Data Protection esegue la scansione di un set predefinito di infoType (ALL_BASIC), alcuni dei quali potrebbero non essere necessari. La ricerca di infoType non necessari può aggiungere inutilmente latenza alla richiesta.Nella richiesta è obbligatorio un oggetto
InspectConfig, con un'eccezione. Per ulteriori informazioni, consulta Trasformazioni dei record in questa pagina.Cosa fare con i risultati dell'ispezione: informazioni di configurazione (
DeidentifyConfig) che definiscono il modo in cui vuoi anonimizzare i dati sensibili. Questo argomento viene trattato in modo più dettagliato nella sezione seguente.
L'API restituisce gli stessi elementi che hai fornito, nello stesso formato, ma tutto il testo identificato come contenente informazioni sensibili in base ai tuoi criteri è stato anonimizzato.
Specifica dei criteri di rilevamento
I rilevatori di tipi 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 riassunti di seguito:
- I rilevatori di infoType integrati sono integrati in Sensitive Data Protection. Includono rilevatori per tipi di dati sensibili specifici per paese o regione, nonché tipi di dati applicabili a livello globale.
- I rilevatori infoType personalizzati sono rilevatori che crei tu. Esistono tre tipi di rilevatori infoType personalizzati:
- I rilevatori di dizionari personalizzati regolari sono semplici elenchi di parole che Sensitive Data Protection utilizza per la corrispondenza. Utilizza i rilevatori di dizionari personalizzati standard quando hai un elenco di massimo diverse decine di migliaia di parole o frasi. I rilevatori di dizionari personalizzati regolari sono preferibili se non prevedi che l'elenco di parole cambi in modo significativo.
- I rilevatori di dizionari personalizzati archiviati vengono generati da Sensitive Data Protection utilizzando elenchi di grandi dimensioni di parole o frasi archiviate 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 vengono 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 su 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 entrambi i seguenti elementi:
- Uno o più infoTypes a cui applicare una trasformazione (l'oggetto array
infoTypes[]). - Una trasformazione primitiva (l'oggetto
PrimitiveTransformation).
Tieni presente che la specifica di un infoType è facoltativa, ma se non specifichi almeno un infoType 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ò causare una riduzione delle prestazioni 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 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 il riferimento per la trasformazione.
replaceConfig
Se imposti replaceConfig su un oggetto ReplaceValueConfig, i valori di input corrispondenti vengono sostituiti con un valore specificato da te.
Ad esempio, supponiamo che tu abbia 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 in diversi linguaggi riportati di seguito 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 di 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,
un determinato valore viene oscurato rimuovendolo completamente. Il messaggio redactConfig non ha argomenti; se lo specifichi, ne attivi la trasformazione.
Ad esempio, supponiamo che tu abbia 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 .
I seguenti esempi 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 parzialmente mascherata sostituendo un numero specificato 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 i numeri 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, come 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 all'inizio del valore. Se impostato su false, l'oscuramento inizia all'inizio del valore.charactersToIgnore[]: uno o più caratteri da saltare durante il mascheramento dei valori. Ad esempio, specifica un trattino qui 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 il mascheramento.
Ad esempio, supponiamo che tu abbia 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 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
L'esempio JSON seguente 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
Se imposti cryptoHashConfig su un oggetto CryptoHashConfig, viene eseguita la pseudonimizzazione su un valore di input generando un valore surrogato utilizzando l'hashing di crittografia.
Questo metodo sostituisce il valore di input con un "digest" crittografato 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 con hashing. Al momento, è possibile eseguire l'hashing solo di valori di tipo stringa e numero intero.
Ad esempio, supponiamo che tu abbia specificato cryptoHashConfig per tutti gli infoType EMAIL_ADDRESS e che l'oggetto CryptoKey sia costituito da una chiave generata in modo casuale (un TransientCryptoKey).
In questo caso, 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 in modo crittografico sarà simile alla seguente:
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
Se imposti dateShiftConfig su un oggetto DateShiftConfig, viene eseguito lo spostamento delle date 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 preservano la sequenza e la durata di un periodo di tempo. Lo spostamento delle date viene solitamente eseguito nel contesto di un individuo o di un'entità. In altre parole, vuoi spostare tutte le date per un individuo specifico utilizzando lo stesso differenziale di spostamento, ma utilizzare un differenziale di spostamento separato per ogni altro individuo.
Per saperne di più sullo spostamento delle date, consulta l'argomento relativo al concetto di spostamento delle date.
Di seguito è riportato il 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 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.
cryptoReplaceFfxFpeConfig
Se imposti cryptoReplaceFfxFpeConfig su un oggetto CryptoReplaceFfxFpeConfig, viene eseguita la pseudonimizzazione su un valore di input sostituendolo con un token. Questo token è:
- Il valore di input criptato.
- La stessa lunghezza del valore di input.
- Calcolato utilizzando la crittografia con protezione del formato in modalità FFX ("FPE-FFX") con chiave di crittografia specificata da
cryptoKey. - Composta dai caratteri specificati da
alphabet. Opzioni valide:NUMERICHEXADECIMALUPPER_CASE_ALPHA_NUMERICALPHA_NUMERIC
Il valore di input:
- Deve contenere almeno due caratteri (o la stringa vuota).
- Deve essere composto dai caratteri specificati da un
alphabet. Ilalphabetpuò essere composto da un numero di caratteri compreso tra 2 e 95. Unalphabetcon 95 caratteri include tutti i caratteri stampabili nel set di caratteri US-ASCII.
Sensitive Data Protection calcola il token di sostituzione utilizzando una chiave di crittografia. Puoi fornire questa chiave in tre modi:
- Incorporandola non criptata nella richiesta API. Ti sconsigliamo tuttavia di selezionare questa opzione.
- Richiedendo a Sensitive Data Protection di generarla.
- Incorporandola in forma crittografata nella richiesta API.
Se scegli di incorporare la chiave nella richiesta API, devi creare una chiave e aggregarla (crittografarla) utilizzando una chiave di Cloud Key Management Service (Cloud KMS). Il valore restituito è una stringa con codifica Base64 per impostazione predefinita. 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 diversi linguaggi. Di seguito sono riportati alcuni 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 saperne di più sulla crittografia e sulla decrittografia dei dati utilizzando Cloud KMS, consulta Cripta e decripta i dati.
Per progettazione, FPE-FFX conserva la lunghezza e il set di caratteri del testo di input. Ciò significa che non dispone di autenticazione e di un vettore di inizializzazione, il che causerebbe un'espansione della lunghezza nel token di output. Altri metodi come AES-SIV forniscono queste garanzie di sicurezza più efficaci e sono consigliati per i casi d'uso di tokenizzazione, a meno che la conservazione della lunghezza e del set di caratteri non siano requisiti rigorosi, ad esempio per la compatibilità con le versioni precedenti di un sistema di dati legacy.
Di seguito è riportato un codice campione in diversi linguaggi 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 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.
Per esempi di codice che mostrano come utilizzare Sensitive Data Protection per reidentificare i dati sensibili anonimizzati tramite il metodo di trasformazione CryptoReplaceFfxFpeConfig, consulta Crittografia con protezione del formato: esempi di reidentificazione.
fixedSizeBucketingConfig
Le trasformazioni di bucketing, questa e bucketingConfig, servono a mascherare i dati numerici "suddividendoli" in intervalli. L'intervallo di numeri risultante è una stringa con trattino composta da un limite inferiore, un trattino e un limite superiore.
Se imposti fixedSizeBucketingConfig su un oggetto FixedSizeBucketingConfig, i valori di input vengono raggruppati in bucket in base a intervalli di dimensioni fisse. L'oggetto FixedSizeBucketingConfig è costituito dai seguenti elementi:
lowerBound: il valore del 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: le dimensioni di ogni bucket, ad eccezione dei bucket 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 saperne di più sul concetto di bucketing, consulta Generalizzazione e bucketing.
bucketingConfig
La trasformazione bucketingConfig offre una maggiore flessibilità rispetto all'altra trasformazione di bucketing, fixedSizeBucketingConfig.
Anziché specificare i limiti superiore e inferiore e un valore di intervallo con cui creare bucket di dimensioni uguali, devi specificare i valori massimo e minimo per ogni bucket che vuoi creare. Ogni coppia di valori massimi e minimi 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:
min: il limite minimo dell'intervallo del bucket. Ometti questo valore per creare un bucket senza limite inferiore.max: il limite massimo dell'intervallo del bucket. Ometti questo valore per creare un bucket senza limite superiore.replacementValue: il valore con cui sostituire i valori che rientrano nei limiti inferiore e superiore. Se non fornisci unreplacementValue, verrà utilizzato un intervallomin-maxcon trattino.
Se un valore non rientra negli intervalli definiti, l'oggetto 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 e sostituiti 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 e sostituiti con
HIGH.
Per saperne di più sul concetto di bucketing, consulta Generalizzazione e bucketing.
replaceWithInfoTypeConfig
Se specifichi replaceWithInfoTypeConfig, ogni valore corrispondente viene sostituito con il nome dell'infoType. Il messaggio replaceWithInfoTypeConfig non ha argomenti; specificarlo attiva la sua trasformazione.
Ad esempio, supponiamo che tu abbia 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
Se imposti timePartConfig su un oggetto TimePartConfig, viene conservata 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 qualsiasi dei valori di enumerazione 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 infoType specifico. All'interno di RecordTransformations, esistono altre due
sottocategorie di trasformazioni:
fieldTransformations[]: trasformazioni che applicano varie trasformazioni dei campi.recordSuppressions[]: regole che definiscono quali record vengono soppressi completamente. I record che corrispondono a qualsiasi regola di soppressione all'interno direcordSuppressions[]vengono omessi dall'output.
Trasformazioni dei campi
Ogni oggetto FieldTransformation include tre argomenti:
fields: uno o più campi di immissione (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 di bucket a una colonna di età di un record solo se la colonna del codice postale per lo stesso record rientra in un intervallo specifico. In alternativa, oscura un campo solo se il campo della data di nascita indica che una persona ha almeno 85 anni.Uno dei seguenti due argomenti del tipo di trasformazione. È obbligatorio specificarne uno:
infoTypeTransformations: tratta i contenuti del campo come testo libero e applica unPrimitiveTransformationsolo ai contenuti che corrispondono a unInfoType. 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
RecordTransformationscontiene solo unprimitiveTransformatione nessuninfoTypeTransformations, non è necessario includere un oggettoInspectConfignella 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 dei campi si applica alle prime due colonne (
column1ecolumn2). Poiché il tipo di trasformazione è un oggettoprimitiveTransformation(nello specifico, unCryptoDeterministicConfig), Sensitive Data Protection trasforma l'intero campo.La seconda trasformazione dei campi si applica alla terza colonna (
column3). Poiché il tipo di trasformazione è un oggettoinfoTypeTransformations, Sensitive Data Protection applica la trasformazione primitiva (nello specifico, unReplaceWithInfoTypeConfig) solo ai contenuti che corrispondono all'infoType impostato nella configurazione di ispezione.
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
-
PROJECT_ID: l'ID progetto Google Cloud . Gli ID progetto sono stringhe alfanumeriche, comemy-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"
}
]
}
}Registra le soppressioni
Oltre ad applicare trasformazioni ai dati dei campi, puoi anche indicare a Sensitive Data Protection di anonimizzare i dati semplicemente eliminando i record quando determinate condizioni di eliminazione restituiscono true. Puoi applicare sia le trasformazioni dei campi sia le soppressioni dei record nella stessa richiesta.
Imposta il messaggio recordSuppressions dell'oggetto RecordTransformations su un array di uno o più oggetti RecordSuppression.
Ogni oggetto RecordSuppression contiene un singolo oggetto RecordCondition, che a sua volta contiene un singolo oggetto Expressions.
Un oggetto Expressions contiene:
logicalOperator: uno dei tipi enumeratiLogicalOperator.conditions: un oggettoConditions, contenente 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,TimestampoTimeofDay.
Se il confronto restituisce true, il record viene soppresso e viceversa. Se i valori confrontati non sono dello stesso tipo, viene visualizzato un avviso e la condizione restituisce false.
Trasformazioni reversibili
Quando anonimizzi i dati utilizzando le trasformazioni infoType
CryptoReplaceFfxFpeConfig
o
CryptoDeterministicConfig,
puoi reidentificarli, a condizione che tu disponga della
CryptoKey
utilizzata per anonimizzarli originariamente.
Per saperne di più, consulta 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 restituito da Sensitive Data Protection è un sottoinsieme arbitrario di tutti i risultati della richiesta. Per ottenere 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.
Segui il codelab Oscuramento dei 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 spazio di archiviazione.