Anonimizza e reidentifica i dati sensibili

Questa guida rapida mostra come utilizzare Sensitive Data Protection per anonimizzare e reidentificare i dati sensibili nei contenuti testuali. Nel processo, ti guida nell'utilizzo di Cloud Key Management Service per creare una chiave con wrapping. Hai bisogno di questa chiave nelle richieste di anonimizzazione e reidentificazione.

Il processo descritto in questa guida rapida è 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, sono necessari la chiave di crittografia che hai utilizzato per l'anonimizzazione e il token.

Sensitive Data Protection supporta metodi di crittografia reversibili e irreversibili. Per identificare nuovamente 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). Ti consigliamo questo, tra tutti i metodi crittografici reversibili supportati da Sensitive Data Protection, perché offre il massimo livello di sicurezza.

Puoi completare i passaggi in questo argomento in 10-20 minuti, esclusi i passaggi Prima di iniziare.

Prima di iniziare

  1. 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 gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Installa Google Cloud CLI.
  3. Per initialize gcloud CLI, esegui questo comando:

    gcloud init
  4. Crea o seleziona un progetto Google Cloud.

    • Crea un progetto Google Cloud:

      gcloud projects create PROJECT_ID

      Sostituisci PROJECT_ID con 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_ID con il nome del tuo progetto Google Cloud.

  5. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  6. Abilita le API Sensitive Data Protection and Cloud KMS.

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com
  7. Concedi i ruoli al tuo Account Google. Esegui questo comando una volta per ciascuno dei seguenti ruoli IAM: roles/dlp.user

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
    • Sostituisci PROJECT_ID con l'ID progetto.
    • Sostituisci EMAIL_ADDRESS con il tuo indirizzo email.
    • Sostituisci ROLE con ogni singolo ruolo.
  8. Installa Google Cloud CLI.
  9. Per initialize gcloud CLI, esegui questo comando:

    gcloud init
  10. Crea o seleziona un progetto Google Cloud.

    • Crea un progetto Google Cloud:

      gcloud projects create PROJECT_ID

      Sostituisci PROJECT_ID con 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_ID con il nome del tuo progetto Google Cloud.

  11. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  12. Abilita le API Sensitive Data Protection and Cloud KMS.

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com
  13. Concedi i ruoli al tuo Account Google. Esegui questo comando una volta per ciascuno dei seguenti ruoli IAM: roles/dlp.user

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
    • Sostituisci PROJECT_ID con l'ID progetto.
    • Sostituisci EMAIL_ADDRESS con il tuo indirizzo email.
    • Sostituisci ROLE con ogni singolo ruolo.

Passaggio 1: crea un keyring e una chiave

Prima di iniziare questa procedura, decidi dove vuoi che Sensitive Data Protection elabori le 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 dei paesi supportati nella pagina relativa alle località di Sensitive Data Protection. Prendi nota del nome della regione che hai scelto (ad es. us-west1).

Questa procedura utilizza global come località per tutte le richieste API. Se vuoi utilizzare un'altra regione, sostituisci global con il nome della regione.

  1. Crea un keyring:

    gcloud kms keyrings create "dlp-keyring" \
        --location "global"
    
  2. Crea una chiave:

    gcloud kms keys create "dlp-key" \
        --location "global" \
        --keyring "dlp-keyring" \
        --purpose "encryption"
    
  3. Elenca il keyring e la chiave:

    gcloud kms keys list \
        --location "global" \
        --keyring "dlp-keyring"
    

    Ottieni il seguente output:

    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 progetto.

    Il percorso in NAME è il nome completo della risorsa della tua chiave Cloud KMS. Prendi nota di questo perché le richieste di anonimizzazione e reidentificazione lo richiedono.

Passaggio 2: crea una chiave AES con codifica Base64

Questa sezione descrive come creare una chiave Advanced Encryption Standard (AES) e codificarla in formato base64.

  1. Crea una chiave AES a 128, 192 o 256 bit. Il seguente comando utilizza openssl per creare una chiave a 256 bit nella directory attuale:

    openssl rand -out "./aes_key.bin" 32
    

    Il file aes_key.bin viene aggiunto alla directory attuale.

  2. Codifica la chiave AES come stringa base64:

    base64 -i ./aes_key.bin
    

    Ottieni un output simile al seguente:

    uEDo6/yKx+zCg2cZ1DBwpwvzMVNk/c+jWs7OwpkMc/s=
    

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 con codifica Base64 che hai creato nel Passaggio 2.

Per eseguire il wrapping della chiave AES, utilizza curl per inviare la seguente richiesta all'API Cloud KMSprojects.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 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 nei contenuti testuali.

Per completare questa attività, hai bisogno di quanto segue:

  • 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.

Questa sezione richiede di salvare la richiesta di esempio in un file JSON. Se usi Cloud Shell, puoi usare 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 nei contenuti testuali:

  1. Crea un file di richiesta JSON con 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 del progetto.
    • WRAPPED_KEY: la chiave con wrapping che hai creato nel Passaggio 3.

    Assicurati che il valore risultante di cryptoKeyName sia il nome completo della risorsa della chiave Cloud KMS.

    Per maggiori informazioni sui componenti di questa richiesta JSON, consulta projects.locations.content.deidentify. Dopo aver completato questa guida rapida, prova a sperimentare con input diversi per questa richiesta. Puoi utilizzare curl come descritto qui. In alternativa, puoi utilizzare Explorer API nella pagina di riferimento dell'API nella sezione Prova questa API.

  2. Salva il file come deidentify-request.json.

  3. Usa curl per effettuare una richiesta di projects.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 progetto.

    Per passare un nome file a curl, utilizza l'opzione -d (per i dati) e anteponi il segno @ al nome file. Questo file deve trovarsi nella stessa directory in cui esegui il comando curl.

    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 come EMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q. Per identificare nuovamente questi contenuti, devi passare l'intero token nella richiesta di reidentificazione.

Passaggio 5: invia una richiesta di reidentificazione all'API DLP

Questa sezione descrive come reidentificare i dati tokenizzati nei contenuti testuali.

Per completare questa attività, hai bisogno di quanto segue:

  • 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.

Per identificare nuovamente i contenuti tokenizzati:

  1. Crea un file di richiesta JSON con 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 del progetto.
    • WRAPPED_KEY: la chiave con wrapping che hai creato nel Passaggio 3.
    • TOKEN: il token che hai ricevuto nel Passaggio 4, ad esempio EMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q.

    Assicurati che il valore risultante di cryptoKeyName sia il nome completo della risorsa della chiave Cloud KMS.

    Per maggiori informazioni sui componenti di questa richiesta JSON, consulta projects.locations.content.reidentify. Dopo aver completato questa guida rapida, prova a sperimentare con input diversi per questa richiesta. Puoi utilizzare curl come descritto qui. In alternativa, puoi utilizzare Explorer API nella pagina di riferimento dell'API nella sezione Prova questa API.

  2. Salva il file come reidentify-request.json.

  3. Usa curl per effettuare una richiesta di projects.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 progetto.

    Per passare un nome file a curl, utilizza l'opzione -d (per i dati) e anteponi il segno @ al nome file. Questo file deve trovarsi nella stessa directory in cui esegui il comando curl.

    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 nuovamente identificato i dati sensibili nei contenuti testuali 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 creata in questa guida rapida, elimina 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 è eliminarlo.

    Elimina un progetto Google Cloud:

    gcloud projects delete PROJECT_ID

Revocare le credenziali

Facoltativo: revoca le credenziali dallgcloud CLI.

gcloud auth revoke

Passaggi successivi