Anonimizzazione e reidentificazione dei dati sensibili
La procedura descritta in questa guida rapida è chiamata pseudonimizzazione (o tokenizzazione). In questo processo, Sensitive Data Protection utilizza una chiave crittografica per convertire (anonimizzare) il testo sensibile in un token. Per ripristinare (reidentificare) il testo, devi disporre della chiave crittografica che hai utilizzato durante l'anonimizzazione e del token.
Sensitive Data Protection supporta metodi crittografici reversibili e non reversibili. Per identificare nuovamente i contenuti, devi scegliere un metodo reversibile.
Il metodo crittografico descritto qui è chiamato crittografia deterministica con AES-SIV (Advanced Encryption Standard in modalità Synthetic Initialization Vector). Consigliamo questo metodo tra tutti i metodi crittografici reversibili supportati da Sensitive Data Protection , perché offre il livello di sicurezza più elevato.
Puoi completare i passaggi descritti in questo argomento in 10-20 minuti, esclusi i passaggi della sezione Prima di iniziare.
Prima di iniziare
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere alla gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Sensitive Data Protection and Cloud KMS APIs:
gcloud services enable dlp.googleapis.com
cloudkms.googleapis.com -
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/dlp.user
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Replace the following:
PROJECT_ID
: your project ID.USER_IDENTIFIER
: the identifier for your user account—for example,myemail@example.com
.ROLE
: the IAM role that you grant to your user account.
-
Install the Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere alla gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Sensitive Data Protection and Cloud KMS APIs:
gcloud services enable dlp.googleapis.com
cloudkms.googleapis.com -
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/dlp.user
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Replace the following:
PROJECT_ID
: your project ID.USER_IDENTIFIER
: the identifier for your user account—for example,myemail@example.com
.ROLE
: the IAM role that you grant to your user account.
Crea 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 l'output seguente:
NAME PURPOSE ALGORITHM PROTECTION_LEVEL LABELS PRIMARY_ID PRIMARY_STATE projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key ENCRYPT_DECRYPT GOOGLE_SYMMETRIC_ENCRYPTION SOFTWARE 1 ENABLED
In questo output,
PROJECT_ID
è l'ID del tuo progetto.Il percorso sotto
NAME
è il nome completo della risorsa della chiave Cloud KMS. Prendine nota perché è necessario per le richieste di anonimizzazione e reidentificazione.Crea una chiave AES a 128, 192 o 256 bit. Il seguente comando utilizza
openssl
per creare una chiave a 256 bit nella directory corrente:openssl rand -out "./aes_key.bin" 32
Il file
aes_key.bin
viene aggiunto alla directory corrente.Codifica la chiave AES come stringa base64:
base64 -i ./aes_key.bin
Viene visualizzato un output simile al seguente:
uEDo6/yKx+zCg2cZ1DBwpwvzMVNk/c+jWs7OwpkMc/s=
PROJECT_ID
: l'ID progettoBASE64_ENCODED_AES_KEY
: la stringa con codifica Base64 restituita nel passaggio 2.- Il nome completo della risorsa della chiave Cloud KMS che hai creato nel passaggio 1.
- La chiave con wrapping che hai creato nel passaggio 3.
Crea un file di richiesta JSON con il seguente testo.
{ "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 con wrapping che hai creato nel passaggio 3.
Assicurati che il valore risultante di
cryptoKeyName
formi il nome completo della risorsa della tua chiave Cloud KMS.Per ulteriori informazioni sui componenti di questa richiesta JSON, consulta la pagina
projects.locations.content.deidentify
. Dopo aver completato questa guida rapida, prova a sperimentare con input diversi per questa richiesta. Puoi utilizzarecurl
come descritto qui. In alternativa, puoi utilizzare Explorer API nella pagina Riferimento API nella sezione Prova questa API.Salva il file come
deidentify-request.json
.Utilizza
curl
per 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.json
Sostituisci
PROJECT_ID
con 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/PROJECT_ID/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 da un token comeEMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q
. Per identificare nuovamente questi contenuti, devi superare l'intero token nella richiesta di reidentificazione.- Il nome completo della risorsa della chiave Cloud KMS che hai creato nel passaggio 1.
- La chiave con wrapping che hai creato nel passaggio 3.
- Il token che hai ricevuto nel passaggio 4.
Crea un file di richiesta JSON con il seguente testo.
{ "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 con wrapping che hai creato nel passaggio 3.TOKEN
: il token che hai ricevuto nel passaggio 4, ad esempioEMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q
.
Assicurati che il valore risultante di
cryptoKeyName
formi il nome completo della risorsa della tua chiave Cloud KMS.Per ulteriori informazioni sui componenti di questa richiesta JSON, consulta la pagina
projects.locations.content.reidentify
. Dopo aver completato questa guida rapida, prova a sperimentare con input diversi per questa richiesta. Puoi utilizzarecurl
come descritto qui. In alternativa, puoi utilizzare Explorer API nella pagina Riferimento API nella sezione Prova questa API.Salva il file come
reidentify-request.json
.Utilizza
curl
per 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.json
Sostituisci
PROJECT_ID
con 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/PROJECT_ID/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.Hai appena anonimizzato e reidentificato i dati sensibili nel contenuto testuale utilizzando la crittografia deterministica.
- Per informazioni più dettagliate su come anonimizzare i contenuti sensibili, consulta Anonimizzazione dei dati sensibili.
- Per informazioni su come un flusso di lavoro di anonimizzazione si inserisce nelle implementazioni 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 tramite una chiave di crittografia, vedi Assegnazione di pseudonimi.
Passaggio 1: crea 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 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 località per tutte le richieste API. Se vuoi
utilizzare una regione diversa, sostituisci global
con il nome della regione.
Passaggio 2: crea una chiave AES codificata in base64
Questa sezione descrive come creare una chiave Advanced Encryption Standard (AES) e codificarla in formato base64.
Passaggio 3: esegui il wrapping della chiave AES utilizzando la chiave Cloud KMS
Questa sezione descrive come utilizzare la chiave Cloud KMS creata nel passaggio 1 per eseguire il wrapping della chiave AES codificata in base64 creata nel passaggio 2.
Per eseguire il wrapping della chiave AES, utilizza curl
per inviare la seguente richiesta all'API Cloud KMS
projects.locations.keyRings.cryptoKeys.encrypt
:
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:
La risposta che ricevi da Cloud KMS è simile al seguente JSON:
{ "name": "projects/PROJECT_ID/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 che ricevi.
Questa è la tua chiave con wrapping.
Passaggio 4: invia 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:
Questa sezione richiede di salvare la richiesta di esempio in un file JSON. Se utilizzi Cloud Shell, puoi utilizzare l'editor di Cloud Shell per creare il file. Per avviare l'editor, fai clic su
Apri editor sulla barra degli strumenti della finestra di Cloud Shell.Per anonimizzare i dati sensibili nel contenuto testuale:
Passaggio 5: invia una richiesta di reidentificazione all'API DLP
Questa sezione descrive come identificare nuovamente i dati tokenizzati nei contenuti di testo.
Per completare questa attività, hai bisogno di quanto segue:
Per identificare nuovamente i contenuti tokenizzati:
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 creata in questa guida rapida, 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.
Elimina il progetto
Se hai creato un nuovo progetto per questa guida rapida, il modo più semplice per evitare addebiti aggiuntivi è eliminare il progetto.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Revocare le credenziali
Optional: Revoke credentials from the gcloud CLI.
gcloud auth revoke