Sensible Daten de-identifizieren und re-identifizieren

In dieser Kurzanleitung erfahren Sie, wie Sie mit dem Schutz sensibler Daten sensible Daten in Textinhalten de-identifizieren und re-identifizieren. Dabei werden Sie durch die Verwendung des Cloud Key Management Service geführt und erstellen einen zusammengefassten Schlüssel. Sie benötigen diesen Schlüssel in Ihren De- und Re-Identifikationsanfragen.

Der in dieser Kurzanleitung beschriebene Prozess wird Pseudonymisierung (oder Tokenisierung) genannt. Bei diesem Vorgang verwendet der Schutz sensibler Daten einen kryptografischen Schlüssel, um vertraulichen Text in ein Token umzuwandeln (de-identifizieren). Zum Wiederherstellen (Re-Identifizieren) dieses Textes benötigen Sie den kryptografischen Schlüssel, den Sie bei der De-Identifikation verwendet haben, und den Token.

Der Schutz sensibler Daten unterstützt sowohl reversible als auch nicht-reversible kryptografische Methoden. Sie müssen eine umkehrbare Methode auswählen, um Inhalte neu zu identifizieren.

Die hier beschriebene kryptografische Methode wird als deterministische Verschlüsselung mit AES-SIV (Advanced Encryption Standard im synthetic Initialization Vector-Modus) bezeichnet. Wir empfehlen dies unter allen reversiblen kryptografischen Methoden, die vom Schutz sensibler Daten unterstützt werden, da sie das höchste Maß an Sicherheit bieten.

Die in diesem Thema beschriebenen Schritte lassen sich in 10 bis 20 Minuten ausführen. Dabei sind die Schritte unter Vorbereitung nicht berücksichtigt.

Hinweise

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

Schritt 1: Schlüsselbund und Schlüssel erstellen

Bevor Sie mit diesem Verfahren beginnen, entscheiden Sie, wo der Schutz sensibler Daten Ihre De-Identifikations- und Re-Identifikationsanfragen verarbeiten soll. Wenn Sie einen Cloud KMS-Schlüssel erstellen, müssen Sie ihn entweder in global oder in derselben Region speichern, die Sie für Ihre Anfragen zum Schutz sensibler Daten verwenden. Andernfalls schlagen die Anfragen zum Schutz sensibler Daten fehl.

Eine Liste der unterstützten Standorte finden Sie unter Standorte für den Schutz sensibler Daten. Notieren Sie sich den Namen der ausgewählten Region (z. B. us-west1).

In diesem Verfahren wird global als Speicherort für alle API-Anfragen verwendet. Wenn Sie eine andere Region verwenden möchten, ersetzen Sie global durch den Namen der Region.

  1. Erstellen Sie einen Schlüsselbund:

    gcloud kms keyrings create "dlp-keyring" \
        --location "global"
    
  2. Erstellen Sie einen Schlüssel:

    gcloud kms keys create "dlp-key" \
        --location "global" \
        --keyring "dlp-keyring" \
        --purpose "encryption"
    
  3. Listen Sie den Schlüsselbund und Schlüssel auf:

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

    Sie erhalten folgende Ausgabe:

    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 dieser Ausgabe ist PROJECT_ID die ID Ihres Projekts.

    Der Pfad unter NAME ist der vollständige Ressourcenname Ihres Cloud KMS-Schlüssels. Beachten Sie dies, da die De-Identifikations- und Re-Identifikationsanfragen sie erfordern.

Schritt 2: base64-codierten AES-Schlüssel erstellen

In diesem Abschnitt wird beschrieben, wie Sie einen AES-Schlüssel (Advanced Encryption Standard) erstellen und im base64-Format codieren.

  1. Erstellen Sie einen AES-Schlüssel mit 128, 192 oder 256 Bit. Der folgende Befehl verwendet openssl, um einen 256-Bit-Schlüssel im aktuellen Verzeichnis zu erstellen:

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

    Die Datei aes_key.bin wird Ihrem aktuellen Verzeichnis hinzugefügt.

  2. Codieren Sie den AES-Schlüssel als base64-String:

    base64 -i ./aes_key.bin
    

    Die Ausgabe sollte in etwa so aussehen:

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

Schritt 3: AES-Schlüssel mit dem Cloud KMS-Schlüssel verpacken

In diesem Abschnitt wird beschrieben, wie Sie mit dem in Schritt 1 erstellten Cloud KMS-Schlüssel den base64-codierten AES-Schlüssel verpacken, den Sie in Schritt 2 erstellt haben.

Verwenden Sie zum Verpacken des AES-Schlüssels curl, um folgende Anfrage an die Cloud KMS API projects.locations.keyRings.cryptoKeys.encrypt zu senden:

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\"}"

Ersetzen Sie Folgendes:

  • PROJECT_ID ist die Projekt-ID.
  • BASE64_ENCODED_AES_KEY ist der in Schritt 2 zurückgegebene base64-codierte String.

Die Antwort von Cloud KMS sieht in etwa wie die folgende JSON-Datei aus:

{
  "name": "projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key/cryptoKeyVersions/1",
  "ciphertext": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=",
  "ciphertextCrc32c": "901327763",
  "protectionLevel": "SOFTWARE"
}

In dieser Ausgabe ist PROJECT_ID die ID Ihres Projekts.

Notieren Sie sich den Wert von ciphertext in der Antwort, die Sie erhalten. Dies ist Ihr verpackter Schlüssel.

Schritt 4: De-Identifikationsanfrage an die DLP API senden

In diesem Abschnitt wird beschrieben, wie Sie sensible Daten in Textinhalten de-identifizieren.

Zum Durcharbeiten dieser Aufgabe benötigen Sie Folgendes:

  • Der vollständige Ressourcenname des Cloud KMS-Schlüssels, den Sie in Schritt 1 erstellt haben.
  • Den verpackten Schlüssel, den Sie in Schritt 3 erstellt haben.

In diesem Abschnitt müssen Sie die Beispielanfrage in einer JSON-Datei speichern. Wenn Sie Cloud Shell verwenden, können Sie die Datei mit dem Cloud Shell-Editor erstellen. Klicken Sie zum Starten des Editors in der Symbolleiste des Cloud Shell-Fensters auf Editor öffnen .

So de-identifizieren Sie sensible Daten in Textinhalten:

  1. Erstellen Sie eine JSON-Anfragedatei mit folgendem Text.

    {
      "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"
          }
        ]
      }
    }
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die Projekt-ID.
    • WRAPPED_KEY: Der verpackte Schlüssel, den Sie in Schritt 3 erstellt haben.

    Achten Sie darauf, dass der resultierende Wert von cryptoKeyName den vollständigen Ressourcennamen Ihres Cloud KMS-Schlüssels bildet.

    Weitere Informationen zu den Komponenten dieser JSON-Anfrage finden Sie unter projects.locations.content.deidentify. Nachdem Sie diese Kurzanleitung durchgearbeitet haben, können Sie mit verschiedenen Eingaben für diese Anfrage experimentieren. Sie können curl wie hier beschrieben verwenden. Alternativ können Sie den API Explorer auf dieser API-Referenzseite unter API testen verwenden.

  2. Speichern Sie die Datei als deidentify-request.json.

  3. Verwenden Sie curl, um eine projects.locations.content.deidentify-Anfrage zu stellen:

    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
    

    Ersetzen Sie PROJECT_ID durch die ID Ihres Projekts.

    Um einen Dateinamen an curl zu übergeben, verwenden Sie die Option -d (für "Daten") und setzen Sie vor den Dateinamen ein @-Zeichen. Diese Datei muss sich in demselben Verzeichnis befinden, in dem Sie den Befehl curl ausführen.

    Die Antwort, die Sie vom Schutz sensibler Daten erhalten, sieht in etwa so aus:

    {
     "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"
         }
       ]
     }
    }
    

    Im Feld item wird die E-Mail-Adresse durch ein Token wie EMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q ersetzt. Um diesen Inhalt neu zu identifizieren, müssen Sie das gesamte Token in der Re-Identifizierungsanfrage übergeben.

Schritt 5: Re-Identifikationsanfrage an die DLP API senden

In diesem Abschnitt wird beschrieben, wie tokenisierte Daten in Textinhalten re-identifiziert werden.

Zum Durcharbeiten dieser Aufgabe benötigen Sie Folgendes:

  • Der vollständige Ressourcenname des Cloud KMS-Schlüssels, den Sie in Schritt 1 erstellt haben.
  • Den verpackten Schlüssel, den Sie in Schritt 3 erstellt haben.
  • Das Token, das Sie in Schritt 4 erhalten haben.

So re-identifizieren Sie tokenisierte Inhalte:

  1. Erstellen Sie eine JSON-Anfragedatei mit folgendem Text.

    {
      "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."
      }
    }
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die Projekt-ID.
    • WRAPPED_KEY: Der verpackte Schlüssel, den Sie in Schritt 3 erstellt haben.
    • TOKEN: Das Token, das Sie in Schritt 4 erhalten haben, z. B. EMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q.

    Achten Sie darauf, dass der resultierende Wert von cryptoKeyName den vollständigen Ressourcennamen Ihres Cloud KMS-Schlüssels bildet.

    Weitere Informationen zu den Komponenten dieser JSON-Anfrage finden Sie unter projects.locations.content.reidentify. Nachdem Sie diese Kurzanleitung durchgearbeitet haben, können Sie mit verschiedenen Eingaben für diese Anfrage experimentieren. Sie können curl wie hier beschrieben verwenden. Alternativ können Sie den API Explorer auf dieser API-Referenzseite unter API testen verwenden.

  2. Speichern Sie die Datei als reidentify-request.json.

  3. Verwenden Sie curl, um eine projects.locations.content.reidentify-Anfrage zu stellen:

    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
    

    Ersetzen Sie PROJECT_ID durch die ID Ihres Projekts.

    Um einen Dateinamen an curl zu übergeben, verwenden Sie die Option -d (für "Daten") und setzen Sie vor den Dateinamen ein @-Zeichen. Diese Datei muss sich in demselben Verzeichnis befinden, in dem Sie den Befehl curl ausführen.

    Die Antwort, die Sie vom Schutz sensibler Daten erhalten, sieht in etwa so aus:

    {
     "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"
         }
       ]
     }
    }
    

    Im item-Feld wird das E-Mail-Adresstoken durch die tatsächliche E-Mail-Adresse aus dem ursprünglichen Text ersetzt.

    Sie haben gerade sensible Daten in Textinhalten mit der deterministischen Verschlüsselung de- und re-identifiziert.

Bereinigen

Löschen Sie das Google Cloud-Projekt mit den Ressourcen, damit Ihrem Google Cloud-Konto die auf dieser Seite verwendeten Ressourcen nicht in Rechnung gestellt werden.

Schlüsselversion löschen

Löschen Sie die Schlüsselversion, wenn Sie den in dieser Kurzanleitung erstellten Schlüssel nicht mehr verwenden möchten.

Listen Sie die für Ihren Schlüssel verfügbaren Versionen auf:

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

Führen Sie folgenden Befehl aus, um eine Version zu löschen:

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

Ersetzen Sie KEY_VERSION durch die Nummer der zu löschenden Version.

Projekt löschen

Wenn Sie für diese Kurzanleitung ein neues Projekt erstellt haben, können Sie zusätzliche Kosten am einfachsten vermeiden, indem Sie das Projekt löschen.

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

Anmeldedaten widerrufen

Optional: Revoke credentials from the gcloud CLI.

gcloud auth revoke

Nächste Schritte