Anonimizzazione e reidentificazione dei dati sensibili
Il processo descritto in questo documento è chiamato pseudonimizzazione (o tokenizzazione). In questo processo, Sensitive Data Protection utilizza una chiave di crittografia per convertire (anonimizzare) il testo sensibile in un token. Per ripristinare (reidentificare) il testo, devi disporre della chiave di crittografia utilizzata durante l'anonimizzazione e del token.
Sensitive Data Protection supporta metodi crittografici reversibili e non reversibili. Per reidentificare i contenuti, devi scegliere un metodo reversibile.
Il metodo crittografico descritto qui è chiamato crittografia deterministica utilizzando AES-SIV (Advanced Encryption Standard in modalità Synthetic Initialization Vector). Consigliamo questo metodo perché offre il livello di sicurezza più elevato tra tutti i metodi crittografici reversibili supportati da Sensitive Data Protection.
Puoi completare i passaggi descritti in questo documento in 10-20 minuti, esclusi i passaggi della sezione Prima di iniziare.
Prima di iniziare
- Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
Crea o seleziona un Google Cloud progetto.
Ruoli richiesti per selezionare o creare un progetto
- Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per il quale ti è stato concesso un ruolo.
-
Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto
(
roles/resourcemanager.projectCreator), che contiene l'autorizzazioneresourcemanager.projects.create. Scopri come concedere i ruoli.
-
Creare un progetto Google Cloud :
gcloud projects create PROJECT_ID
Sostituisci
PROJECT_IDcon un nome per il progetto Google Cloud che stai creando. -
Seleziona il progetto Google Cloud che hai creato:
gcloud config set project PROJECT_ID
Sostituisci
PROJECT_IDcon il nome del progetto Google Cloud .
-
Se utilizzi un progetto esistente per questa guida, verifica di disporre delle autorizzazioni necessarie per completare la guida. Se hai creato un nuovo progetto, disponi già delle autorizzazioni necessarie.
-
Verifica che la fatturazione sia abilitata per il tuo progetto Google Cloud .
Abilita le API Sensitive Data Protection e Cloud KMS:
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo dei servizi (
roles/serviceusage.serviceUsageAdmin), che include l'autorizzazioneserviceusage.services.enable. Scopri come concedere i ruoli.gcloud services enable dlp.googleapis.com
cloudkms.googleapis.com -
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
Crea o seleziona un Google Cloud progetto.
Ruoli richiesti per selezionare o creare un progetto
- Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per il quale ti è stato concesso un ruolo.
-
Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto
(
roles/resourcemanager.projectCreator), che contiene l'autorizzazioneresourcemanager.projects.create. Scopri come concedere i ruoli.
-
Creare un progetto Google Cloud :
gcloud projects create PROJECT_ID
Sostituisci
PROJECT_IDcon un nome per il progetto Google Cloud che stai creando. -
Seleziona il progetto Google Cloud che hai creato:
gcloud config set project PROJECT_ID
Sostituisci
PROJECT_IDcon il nome del progetto Google Cloud .
-
Se utilizzi un progetto esistente per questa guida, verifica di disporre delle autorizzazioni necessarie per completare la guida. Se hai creato un nuovo progetto, disponi già delle autorizzazioni necessarie.
-
Verifica che la fatturazione sia abilitata per il tuo progetto Google Cloud .
Abilita le API Sensitive Data Protection e Cloud KMS:
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo dei servizi (
roles/serviceusage.serviceUsageAdmin), che include l'autorizzazioneserviceusage.services.enable. Scopri come concedere i ruoli.gcloud services enable dlp.googleapis.com
cloudkms.googleapis.com
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per creare una chiave AES sottoposta a wrapping, deidentificare i dati sensibili e reidentificarli, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:
-
Cloud KMS Admin (
roles/cloudkms.admin) -
Cloud KMS CryptoKey Encrypter (
roles/cloudkms.cryptoKeyEncrypter) -
Utente DLP (
roles/dlp.user)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Creare chiavi automatizzate e una chiave
Prima di iniziare questa procedura, decidi dove vuoi che Sensitive Data Protection
elabori le tue richieste di anonimizzazione e reidentificazione. Quando crei una chiave Cloud KMS, devi archiviarla in global o nella stessa regione che utilizzerai per le richieste di Sensitive Data Protection.
In caso contrario, le richieste di Sensitive Data Protection non andranno a buon fine.
Puoi trovare un elenco delle località supportate in Località di Sensitive Data Protection. Prendi nota del nome della regione che hai scelto (ad esempio, us-west1).
Questa procedura utilizza global come posizione per tutte le richieste API. Se vuoi
utilizzare una regione diversa, sostituisci global con il nome della regione.
Creare chiavi automatizzate:
gcloud kms keyrings create "dlp-keyring" \ --location "global"Crea una chiave:
gcloud kms keys create "dlp-key" \ --location "global" \ --keyring "dlp-keyring" \ --purpose "encryption"Elenca la chiave automatizzata e la chiave:
gcloud kms keys list \ --location "global" \ --keyring "dlp-keyring"Viene visualizzato il seguente output:
NAME: projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key PURPOSE: ENCRYPT_DECRYPT ALGORITHM: GOOGLE_SYMMETRIC_ENCRYPTION PROTECTION_LEVEL: SOFTWARE LABELS: PRIMARY_ID: 1 PRIMARY_STATE: ENABLEDIn questo output,
PROJECT_IDè l'ID del tuo progetto.Il valore di
NAMEè il nome completo della risorsa della chiave Cloud KMS. Annota questo valore perché è necessario per le richieste di anonimizzazione e reidentificazione.
Creare una chiave AES con codifica Base64
Questa sezione descrive come creare una chiave Advanced Encryption Standard (AES) e codificarla in formato base64.
Crea una chiave AES a 128, 192 o 256 bit. Il seguente comando utilizza
opensslper creare una chiave a 256 bit nella directory corrente:openssl rand -out "./aes_key.bin" 32Il file
aes_key.binviene aggiunto alla directory corrente.Codifica la chiave AES come stringa base64:
base64 -i ./aes_key.binViene visualizzato un output simile al seguente:
uEDo6/yKx+zCg2cZ1DBwpwvzMVNk/c+jWs7OwpkMc/s=
Esegui il wrapping della chiave AES utilizzando la chiave Cloud KMS
Questa sezione descrive come utilizzare la chiave Cloud KMS creata in Crea un keyring e una chiave per eseguire il wrapping della chiave AES codificata in base64 creata in Crea una chiave AES codificata in base64.
Per eseguire il wrapping della chiave AES, utilizza curl per inviare la seguente richiesta al metodo projects.locations.keyRings.cryptoKeys.encrypt dell'API Cloud KMS:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key:encrypt" \
--request "POST" \
--header "Authorization:Bearer $(gcloud auth application-default print-access-token)" \
--header "content-type: application/json" \
--data "{\"plaintext\": \"BASE64_ENCODED_AES_KEY\"}"
Sostituisci quanto segue:
PROJECT_ID: l'ID progettoBASE64_ENCODED_AES_KEY: la stringa codificata in base64 restituita in Crea una chiave AES codificata in base64.
La risposta che ricevi da Cloud KMS è simile al seguente JSON:
{
"name": "projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key/cryptoKeyVersions/1",
"ciphertext": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=",
"ciphertextCrc32c": "901327763",
"protectionLevel": "SOFTWARE"
}
In questo output, PROJECT_ID è l'ID del tuo progetto.
Prendi nota del valore di ciphertext nella risposta.
Questa è la tua chiave con wrapping.
Inviare una richiesta di anonimizzazione all'API DLP
Questa sezione descrive come anonimizzare i dati sensibili nel contenuto testuale.
Per completare questa attività, hai bisogno di quanto segue:
- Il nome completo della risorsa della chiave Cloud KMS che hai creato in Crea un keyring e una chiave.
- La chiave sottoposta a wrapping che hai creato in Esegui il wrapping della chiave AES utilizzando la chiave Cloud KMS.
Devi salvare la richiesta di esempio in un file JSON. Se utilizzi Cloud Shell, usa l'editor di Cloud Shell per creare il file. Per avviare l'editor, fai clic su Apri editor nella barra degli strumenti di Cloud Shell.
Per anonimizzare i dati sensibili nel contenuto testuale:
Crea un file di richiesta JSON denominato
deidentify-request.jsoncon il testo seguente.{ "item": { "value": "My name is Alicia Abernathy, and my email address is aabernathy@example.com." }, "deidentifyConfig": { "infoTypeTransformations": { "transformations": [ { "infoTypes": [ { "name": "EMAIL_ADDRESS" } ], "primitiveTransformation": { "cryptoDeterministicConfig": { "cryptoKey": { "kmsWrapped": { "cryptoKeyName": "projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key", "wrappedKey": "WRAPPED_KEY" } }, "surrogateInfoType": { "name": "EMAIL_ADDRESS_TOKEN" } } } } ] } }, "inspectConfig": { "infoTypes": [ { "name": "EMAIL_ADDRESS" } ] } }Sostituisci quanto segue:
PROJECT_ID: l'ID progetto.WRAPPED_KEY: la chiave sottoposta a wrapping che hai creato in Esegui il wrapping della chiave AES utilizzando la chiave Cloud KMS.
Assicurati che il valore risultante di
cryptoKeyNameformi il nome completo della risorsa della tua chiave Cloud KMS.Per ulteriori informazioni sui componenti di questa richiesta JSON, consulta
projects.locations.content.deidentify. Dopo aver completato questa attività, prova diversi input per questa richiesta. Puoi utilizzarecurlcome descritto qui. In alternativa, utilizza Explorer API nella pagina Riferimento API nella sezione Prova questo metodo.Utilizza
curlper effettuare una richiestaprojects.locations.content.deidentify:curl -s \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" \ https://dlp.googleapis.com/v2/projects/PROJECT_ID/locations/global/content:deidentify \ -d @deidentify-request.jsonSostituisci
PROJECT_IDcon l'ID del tuo progetto.Per passare un nome file a
curl, utilizza l'opzione-d(per i dati) e fai precedere il nome file dal segno@. Questo file deve trovarsi nella stessa directory in cui esegui il comandocurl.La risposta che ricevi da Sensitive Data Protection è simile al seguente JSON:
{ "item": { "value": "My name is Alicia Abernathy, and my email address is EMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q." }, "overview": { "transformedBytes": "22", "transformationSummaries": [ { "infoType": { "name": "EMAIL_ADDRESS" }, "transformation": { "cryptoDeterministicConfig": { "cryptoKey": { "kmsWrapped": { "wrappedKey": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=", "cryptoKeyName": "projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key" } }, "surrogateInfoType": { "name": "EMAIL_ADDRESS_TOKEN" } } }, "results": [ { "count": "1", "code": "SUCCESS" } ], "transformedBytes": "22" } ] } }Nel campo
item, l'indirizzo email viene sostituito con un token comeEMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q. Prendi nota del valore del token nella risposta. Per reidentificare i contenuti deidentificati, devi trasmettere l'intero token nella richiesta di reidentificazione.
Invia una richiesta di reidentificazione all'API DLP
Questa sezione descrive come reidentificare i dati tokenizzati nei contenuti di testo.
Per completare questa attività, hai bisogno di quanto segue:
- Il nome completo della risorsa della chiave Cloud KMS che hai creato in Crea un keyring e una chiave.
- La chiave sottoposta a wrapping che hai creato in Esegui il wrapping della chiave AES utilizzando la chiave Cloud KMS.
- Il token che hai ricevuto in Invia una richiesta di anonimizzazione all'API DLP.
Per identificare nuovamente i contenuti tokenizzati:
Crea un file di richiesta JSON denominato
reidentify-request.jsoncon il testo seguente.{ "reidentifyConfig":{ "infoTypeTransformations":{ "transformations":[ { "infoTypes":[ { "name":"EMAIL_ADDRESS_TOKEN" } ], "primitiveTransformation":{ "cryptoDeterministicConfig":{ "cryptoKey":{ "kmsWrapped": { "cryptoKeyName": "projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key", "wrappedKey": "WRAPPED_KEY" } }, "surrogateInfoType":{ "name":"EMAIL_ADDRESS_TOKEN" } } } } ] } }, "inspectConfig":{ "customInfoTypes":[ { "infoType":{ "name":"EMAIL_ADDRESS_TOKEN" }, "surrogateType":{ } } ] }, "item":{ "value": "My name is Alicia Abernathy, and my email address is TOKEN." } }Sostituisci quanto segue:
PROJECT_ID: l'ID progetto.WRAPPED_KEY: la chiave sottoposta a wrapping che hai creato in Esegui il wrapping della chiave AES utilizzando la chiave Cloud KMS.TOKEN: il token che hai ricevuto in Invia una richiesta di anonimizzazione all'API DLP, ad esempioEMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q.
Assicurati che il valore risultante di
cryptoKeyNameformi il nome completo della risorsa della tua chiave Cloud KMS.Per ulteriori informazioni sui componenti di questa richiesta JSON, consulta
projects.locations.content.reidentify. Dopo aver completato questa attività, prova diversi input per questa richiesta. Puoi utilizzarecurlcome descritto qui. In alternativa, utilizza Explorer API nella pagina Riferimento API nella sezione Prova questo metodo.Utilizza
curlper effettuare una richiestaprojects.locations.content.reidentify:curl -s \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" \ https://dlp.googleapis.com/v2/projects/PROJECT_ID/locations/global/content:reidentify \ -d @reidentify-request.jsonSostituisci
PROJECT_IDcon l'ID del tuo progetto.Per passare un nome file a
curl, utilizza l'opzione-d(per i dati) e fai precedere il nome file dal segno@. Questo file deve trovarsi nella stessa directory in cui esegui il comandocurl.La risposta che ricevi da Sensitive Data Protection è simile al seguente JSON:
{ "item": { "value": "My name is Alicia Abernathy, and my email address is aabernathy@example.com." }, "overview": { "transformedBytes": "70", "transformationSummaries": [ { "infoType": { "name": "EMAIL_ADDRESS" }, "transformation": { "cryptoDeterministicConfig": { "cryptoKey": { "kmsWrapped": { "wrappedKey": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=", "cryptoKeyName": "projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key" } }, "surrogateInfoType": { "name": "EMAIL_ADDRESS_TOKEN" } } }, "results": [ { "count": "1", "code": "SUCCESS" } ], "transformedBytes": "70" } ] } }Nel campo
item, il token dell'indirizzo email viene sostituito con l'indirizzo email effettivo del testo originale.Ora hai anonimizzato e reidentificato i dati sensibili nel contenuto testuale utilizzando la crittografia deterministica.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, elimina il progetto Google Cloud con le risorse.
Elimina la versione della chiave
Se non vuoi più utilizzare la chiave che hai creato in questa attività, distruggi la relativa versione.
Elenca le versioni disponibili per la chiave:
gcloud kms keys versions list \
--location "global" \
--keyring "dlp-keyring" \
--key "dlp-key"
Per eliminare una versione, esegui questo comando:
gcloud kms keys versions destroy KEY_VERSION \
--location "global" \
--keyring "dlp-keyring" \
--key "dlp-key"
Sostituisci KEY_VERSION con il numero della versione da eliminare, ad esempio 1.
Elimina il progetto
Se hai creato un nuovo progetto per questa attività, il modo più semplice per evitare addebiti aggiuntivi è eliminare il progetto.
Elimina un progetto Google Cloud :
gcloud projects delete PROJECT_ID
Revocare le credenziali
(Facoltativo) Revoca le credenziali da gcloud CLI.
gcloud auth revoke
Passaggi successivi
- Per ulteriori informazioni sull'anonimizzazione dei contenuti sensibili, consulta Anonimizzazione dei dati sensibili.
- Per informazioni su come un workflow di anonimizzazione si inserisce nei deployment reali, consulta Anonimizzazione e reidentificazione delle PII in set di dati su larga scala utilizzando Sensitive Data Protection.
- Per informazioni concettuali sulla tokenizzazione dei dati con una chiave di crittografia, vedi Assegnazione di pseudonimi.