Riferimento alla trasformazione

Questo argomento tratta le tecniche di anonimizzazione o trasformazioni disponibili in Sensitive Data Protection.

Tipi di tecniche di anonimizzazione

La scelta della trasformazione di anonimizzazione da utilizzare dipende dal tipo di dati che vuoi anonimizzare e dallo scopo per cui lo fai. Le tecniche di anonimizzazione supportate da Sensitive Data Protection rientrano nelle seguenti categorie generali:

  • Oscuramento: elimina tutto o parte di un valore sensibile rilevato.
  • Sostituzione: sostituisce un valore sensibile rilevato con un valore surrogato specificato.
  • Mascheramento: sostituisce un certo numero di caratteri di un valore sensibile con un surrogato specificato, ad esempio un cancelletto (#) o un asterisco (*).
  • Tokenizzazione basata sulla crittografia: cripta il valore dei dati sensibili originali utilizzando una chiave di crittografica. Sensitive Data Protection supporta diversi tipi di tokenizzazione, tra cui trasformazioni che possono essere invertite o "reidentificate".
  • Bucketing: "generalizza" un valore sensibile sostituendolo con un intervallo di valori. Ad esempio, sostituendo un'età specifica con una fascia d'età o temperature con intervalli corrispondenti a "Caldo", "Medio" e "Freddo".
  • Spostamento della data: sposta i valori di data sensibili in base a una quantità di tempo casuale.
  • Estrazione dell'ora: estrae o conserva le parti specificate dei valori di data e ora.

Il resto di questo argomento tratta ogni tipo diverso di trasformazione di deidentificazione e fornisce esempi del loro utilizzo.

Metodi di trasformazione

La tabella seguente elenca le trasformazioni che Sensitive Data Protection fornisce per anonimizzare i dati sensibili:

Trasformazione Oggetto Descrizione Can Reverse1 Integrità referenziale2 Tipo input
Oscuramento RedactConfig Oscura un valore rimuovendolo. Qualsiasi
Sostituzione ReplaceValueConfig Sostituisce ogni valore di input con un valore specificato. Qualsiasi
Sostituisci con dizionario ReplaceDictionaryConfig Sostituisce un valore di input con un valore selezionato casualmente da un elenco di parole. Qualsiasi
Sostituisci con infoType ReplaceWithInfoTypeConfig Sostituisce un valore di input con il nome del relativo infoType. Qualsiasi
Maschera con personaggio CharacterMaskConfig Maschera una stringa completamente o parzialmente sostituendo un determinato numero di caratteri con un carattere fisso specificato. Qualsiasi
Assegnazione di pseudonimi sostituendo il valore di input con un hash crittografico CryptoHashConfig Sostituisce i valori di input con una stringa esadecimale di 32 byte generata utilizzando una determinata chiave di crittografia dei dati. Per saperne di più, consulta la documentazione concettuale sulla pseudonimizzazione. Stringhe o numeri interi
Assegnazione di pseudonimi mediante sostituzione con token crittografico con protezione del formato CryptoReplaceFfxFpeConfig Sostituisce un valore di input con un token o un valore surrogato della stessa lunghezza utilizzando la crittografia che preserva il formato (FPE) con la modalità di funzionamento FFX. Ciò consente di utilizzare l'output in sistemi che prevedono la convalida del formato in base alla lunghezza. Questa opzione è utile per i sistemi legacy in cui è necessario mantenere la lunghezza della stringa. Importante: per l'input di lunghezza variabile o maggiore di 32 byte, utilizza CryptoDeterministicConfig. Per rimanere sicuri, i seguenti limiti sono consigliati dal National Institute of Standards and Technology:
  • radix^max_size <= 2^128.
  • radix^min_len >= 100
Stringhe o numeri interi con un numero limitato di caratteri e di lunghezza uniforme. L'alfabeto deve essere composto da almeno 2 caratteri e non deve superare i 95 caratteri.
Assegnazione di pseudonimi mediante sostituzione con token crittografico CryptoDeterministicConfig Sostituisce un valore di input con un token o un valore surrogato della stessa lunghezza utilizzando AES in modalità Synthetic Initialization Vector (AES-SIV). Questo metodo di trasformazione, a differenza della tokenizzazione che preserva il formato, non ha limitazioni sui set di caratteri delle stringhe supportati, genera token identici per ogni istanza di un valore di input identico e utilizza surrogati per consentire la reidentificazione data la chiave di crittografia originale. Qualsiasi
Valori bucket basati su intervalli di dimensioni fisse FixedSizeBucketingConfig Maschera i valori di input sostituendoli con bucket o intervalli in cui rientra il valore di input. Qualsiasi
Valori bucket in base a intervalli di dimensioni personalizzati BucketingConfig I bucket inseriscono i valori in base a intervalli configurabili dall'utente e valori di sostituzione. Qualsiasi
Date shifting DateShiftConfig Sposta le date di un numero casuale di giorni, con la possibilità di essere coerenti per lo stesso contesto.
Mantiene la sequenza e la durata
Date/ore
Estrai dati temporali TimePartConfig Estrae o conserva una parte dei valori Date, Timestamp e TimeOfDay. Date/ore

Note a piè di pagina

1 Le trasformazioni reversibili possono essere invertite per reidentificare i dati sensibili utilizzando il metodo content.reidentify.
2 L'integrità referenziale consente ai record di mantenere la loro relazione tra loro, pur deidentificando i dati. Ad esempio, data la stessa chiave di crittografia e lo stesso contesto, i dati verranno sostituiti con la stessa forma offuscata ogni volta che vengono trasformati, consentendo di conservare le connessioni tra i record.

Oscuramento

Se vuoi semplicemente rimuovere i dati sensibili dai contenuti di input, Sensitive Data Protection supporta una trasformazione di oscuramento (RedactConfig nell'API DLP).

Ad esempio, supponiamo di voler eseguire una semplice oscuramento di 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 .

L'esempio JSON e il codice seguenti in diversi linguaggi 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.


using System;
using System.Collections.Generic;
using Google.Api.Gax.ResourceNames;
using Google.Cloud.Dlp.V2;

public class DeidentifyDataUsingRedactWithMatchedInputValues
{
    public static DeidentifyContentResponse Deidentify(
        string projectId,
        string text,
        IEnumerable<InfoType> infoTypes = null)
    {
        // Instantiate the client.
        var dlp = DlpServiceClient.Create();

        // Construct inspect config.
        var inspectConfig = new InspectConfig
        {
            InfoTypes = { infoTypes ?? new InfoType[] { new InfoType { Name = "EMAIL_ADDRESS" } } },
        };

        // Construct redact config.
        var redactConfig = new RedactConfig();

        // Construct deidentify config using redact config.
        var deidentifyConfig = new DeidentifyConfig
        {
            InfoTypeTransformations = new InfoTypeTransformations
            {
                Transformations =
                {
                    new InfoTypeTransformations.Types.InfoTypeTransformation
                    {
                        PrimitiveTransformation = new PrimitiveTransformation
                        {
                            RedactConfig = redactConfig
                        }
                    }
                }
            }
        };

        // Construct a request.
        var request = new DeidentifyContentRequest
        {
            ParentAsLocationName = new LocationName(projectId, "global"),
            DeidentifyConfig = deidentifyConfig,
            InspectConfig = inspectConfig,
            Item = new ContentItem { Value = text }
        };

        // Call the API.
        var response = dlp.DeidentifyContent(request);

        // Check the deidentified content.
        Console.WriteLine($"Deidentified content: {response.Item.