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 personali (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 anonimizzare i dati sensibili. 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 tipi 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 la protezione dei dati sensibili confronta. Utilizza i rilevatori di dizionari personalizzati regolari quando hai un elenco di parole o frasi fino a diverse decine di migliaia. 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.
Inoltre, Sensitive Data Protection 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 per 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 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 InfoType
Puoi specificare una o più trasformazioni di infoType per richiesta. All'interno di ogni
oggetto InfoTypeTransformation
, devi specificare 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 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 è sconsigliata, 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].
Il seguente esempio JSON e il codice 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
REST
Per ulteriori informazioni 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
Se specifichi
redactConfig
,
un determinato valore viene oscurato mediante la rimozione completa. 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 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 come 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, 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 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 su un valore di input
generando un valore surrogato utilizzando l'hashing crittografico.
Questo metodo sostituisce il valore di input con un "digest" o un valore hash 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, 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 crittograficamente 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 effettuato in riferimento 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 sui concetti relativi allo 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
cryptoReplaceFfxFpeConfig
L'impostazione di cryptoReplaceFfxFpeConfig
su un oggetto
CryptoReplaceFfxFpeConfig
esegue la pseudonimizzazione di 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
sulla chiave crittografica specificata da
cryptoKey
. - Composta dai caratteri specificati da
alphabet
. Opzioni valide:NUMERIC
HEXADECIMAL
UPPER_CASE_ALPHA_NUMERIC
ALPHA_NUMERIC
Il valore di input:
- Deve contenere almeno due caratteri (o la stringa vuota).
- Deve essere composto dai caratteri specificati da un
alphabet
. Ilalphabet
può essere composto da un numero di caratteri compreso tra 2 e 95. (Unalphabet
con 95 caratteri include tutti i caratteri stampabili nel 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 senza crittografia nella richiesta API. Ti sconsigliamo tuttavia di selezionare questa opzione.
- Richiedendo a Sensitive Data Protection di generarlo.
- Incorporandolo criptato nella richiesta API.
Se scegli di incorporare la chiave nella richiesta API, devi creare una chiave e eseguirne il wrapping (crittografarla) utilizzando una chiave 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 farlo in diverse lingue. Dopo questi snippet vengono forniti 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 la decrittografia dei dati utilizzando Cloud KMS, consulta Crittografia e decrittografia dei 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ù solide e sono consigliati per i casi d'uso della tokenizzazione, a meno che la conservazione della lunghezza e del set di caratteri non sia un requisito rigoroso, ad esempio per la compatibilità con un sistema di dati 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 la sezione Librerie client Sensitive Data Protection.
Per eseguire l'autenticazione in Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura 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 reidentificazione.
fixedSizeBucketingConfig
Le trasformazioni di bucketing, questa e
bucketingConfig
, servono a mascherare i dati numerici
raggruppandoli in intervalli. L'intervallo di numeri risultante è una stringa con trattino
composta da un limite inferiore, un trattino e un limite superiore.
L'impostazione di fixedSizeBucketingConfig
su FixedSizeBucketingConfig
raggruppa i valori di input degli oggetti in base a intervalli di dimensioni fisse. L'oggetto
FixedSizeBucketingConfig
è costituito da quanto segue:
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
: 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 bucketing, consulta Generalizzazione e bucketing.
bucketingConfig
La trasformazione bucketingConfig
offre maggiore flessibilità rispetto all'altra trasformazione di raggruppamento, fixedSizeBucketingConfig
.
Invece di specificare 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 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 bucket senza 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 il limite inferiore e quello superiore. Se non fornisci unreplacementValue
, verrà utilizzato un intervallomin-max
con 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"
}
}
]
}
Ciò 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 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; la sua specifica consente
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
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 enumerati TimePart
, inclusi anno, mese, giorno del mese e così via.
Ad esempio, supponiamo di aver 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 trasformazioni
Le trasformazioni dei record (l'oggetto
RecordTransformations
) vengono applicate solo ai valori all'interno dei dati tabellari identificati come
un infoType specifico. All'interno di RecordTransformations
, esistono due ulteriori
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 oggetto
FieldTransformation
include tre argomenti:
fields
: uno o più campi di input (oggettiFieldID
) a cui applicare la trasformazione.condition
: una condizione (unRecordCondition
oggetto) che deve restituire il valore true affinché la trasformazione venga applicata. Ad esempio, applica una trasformazione bucket a una colonna dell'età di un record solo se la colonna del codice postale per lo stesso record rientra in un intervallo specifico. oppure, oscura un campo solo se il campo della data di nascita indica che la persona ha 85 anni o più.Uno dei due seguenti argomenti del tipo di trasformazione. È necessario specificarne uno:
infoTypeTransformations
: considera i contenuti del campo come testo libero e applica unPrimitiveTransformation
solo 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
RecordTransformations
contiene solo unprimitiveTransformation
e nessuninfoTypeTransformations
, non devi 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 dei campi:
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 del campo si applica alla terza colonna (
column3
). Poiché il tipo di trasformazione è un oggettoinfoTypeTransformations
, Sensitive Data Protection applica la trasformazione primitiva (in particolare, unReplaceWithInfoTypeConfig
) solo ai contenuti che corrispondono all'infoType impostato nella configurazione dell'ispezione.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
-
PROJECT_ID
: il tuo 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" } ] } }
Eliminazioni di record
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 il valore true. Puoi applicare sia le trasformazioni dei campi sia le eliminazioni 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
,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
CryptoReplaceFfxFpeConfig
o
CryptoDeterministicConfig
infoType, puoi reidentificare i dati, a condizione che tu disponga di
CryptoKey
utilizzato per anonimizzare originariamente i dati.
Per ulteriori informazioni, consulta Trasformazioni di tokenizzazione basate sulla crittografia.
Limite al numero di risultati
Se la tua 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 nella 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 deidentificazione si inserisce nelle implementazioni reali.
Completa il codelab Oscuramento dei dati sensibili con Sensitive Data Protection.
Segui 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.