Anonimizzazione e reidentificazione dei dati sensibili

Questa guida rapida illustra come utilizzare Sensitive Data Protection per anonimizzare e identificare nuovamente i dati sensibili nei contenuti di testo. Durante la procedura, ti viene mostrato come utilizzare Cloud Key Management Service per creare una chiave con wrapping. Questa chiave è necessaria nelle richieste di anonimizzazione e di identificazione.

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 recuperare (reidentificare) il testo, devi disporre della chiave crittografica utilizzata durante l'anonimizzazione e del token.

Sensitive Data Protection supporta metodi di crittografia sia reversibili che non reversibili. Per identificare nuovamente i contenuti, devi scegliere un metodo reversibile.

Il metodo crittografico descritto qui si chiama crittografia deterministica con AES-SIV (Advanced Encryption Standard in modalità vettore di inizializzazione sintetico). Lo consigliamo tra tutti i metodi di crittografia reversibili supportati da Sensitive Data Protection, perché offre il massimo livello di sicurezza.

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

Prima di iniziare

  1. 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.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. 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.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Sensitive Data Protection and Cloud KMS APIs:

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com
  7. 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 PROJECT_ID with your project ID.
    • Replace USER_IDENTIFIER with the identifier for your user account. For example, user:myemail@example.com.

    • Replace ROLE with each individual role.
  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. 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.

  11. Make sure that billing is enabled for your Google Cloud project.

  12. Enable the Sensitive Data Protection and Cloud KMS APIs:

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com
  13. 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 PROJECT_ID with your project ID.
    • Replace USER_IDENTIFIER with the identifier for your user account. For example, user:myemail@example.com.

    • Replace ROLE with each individual role.

Passaggio 1: crea un mazzo di chiavi 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 protezione dei dati sensibili. 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 scelta (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.

  1. Crea una chiave automatizzata:

    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 la chiave automatizzata e la chiave:

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

    Viene visualizzato 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 tuo progetto.

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

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.

  1. Crea una chiave AES a 128, 192 o 256 bit. Il comando seguente 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.

  2. 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=
    

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 avvolgere la chiave AES con codifica base64 creata nel passaggio 2.

Per eseguire l'incapsulamento 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 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à, devi disporre di quanto segue:

  • Il nome completo della risorsa della chiave Cloud KMS creata nel passaggio 1.
  • La chiave con wrapping creata nel passaggio 3.

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 nella barra degli strumenti della finestra di Cloud Shell.

Per anonimizzare i dati sensibili nei contenuti di testo:

  1. 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 del 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 chiave Cloud KMS.

    Per ulteriori 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 in Prova questa API.

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

  3. Utilizza curl per inviare una richiesta 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 tuo progetto.

    Per passare un nome file a curl, utilizza l'opzione -d (per i dati) e anteponi al nome file il segno @. 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 con un token come EMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q. Per identificare di nuovo questi contenuti, devi passare l'intero token nella richiesta di nuova identificazione.

Passaggio 5: invia una richiesta di nuova identificazione all'API DLP

Questa sezione descrive come identificare nuovamente i dati tokenizzati nei contenuti di testo.

Per completare questa attività, devi disporre di quanto segue:

  • Il nome completo della risorsa della chiave Cloud KMS creata nel passaggio 1.
  • La chiave con wrapping creata nel passaggio 3.
  • Il token che hai ricevuto nel passaggio 4.

Per identificare di nuovo i contenuti tokenizzati:

  1. 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 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 formi il nome completo della risorsa della chiave Cloud KMS.

    Per ulteriori 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 in Prova questa API.

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

  3. Utilizza curl per inviare una richiesta 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 tuo progetto.

    Per passare un nome file a curl, utilizza l'opzione -d (per i dati) e anteponi al nome file il segno @. 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 reale del testo originale.

    Hai appena anonimizzato e reidentificato i dati sensibili nei contenuti di testo utilizzando la crittografia deterministica.

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate su 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 tua chiave:

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

Per eliminare una versione, esegui il seguente 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.

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

Revocare le credenziali

Optional: Revoke credentials from the gcloud CLI.

gcloud auth revoke

Passaggi successivi