Kurzanleitung: Vertraulichen Text de-identifizieren und neu identifizieren

In dieser Kurzanleitung erfahren Sie, wie Sie mit Cloud Data Loss Prevention (DLP) vertrauliche Daten in Textinhalten de-identifizieren und identifizieren. Bei diesem Vorgang werden Sie durch die Verwendung von Cloud Key Management Service geführt, um einen verpackten Schlüssel zu erstellen. Sie benötigen diesen Schlüssel in Ihren de-identify- und Re-identify-Anfragen.

Der in dieser Kurzanleitung beschriebene Prozess wird als Pseudonymisierung (oder Tokenisierung) bezeichnet. Bei diesem Prozess verwendet Cloud DLP einen kryptografischen Schlüssel, um vertraulichen Text in ein Token zu de-identifizieren. Zum Wiederherstellen (und Re-Identifikation) dieses Texts benötigen Sie den kryptografischen Schlüssel, den Sie während der De-Identifikation und dem Token verwendet haben.

Cloud DLP unterstützt sowohl reversierbare als auch nicht umgekehrte kryptografische Methoden. Wählen Sie eine umgekehrte Methode aus, um Inhalte neu zu identifizieren.

Die hier beschriebene kryptografische Methode wird als deterministische Verschlüsselung mit AES-SIV bezeichnet (Advanced Encryption Standard im synthetischen Initialisierungsvektormodus). Dies wird von allen reversiblen kryptografischen Methoden unterstützt, die Cloud DLP unterstützt, da sie die höchste 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.

Hinweis

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  4. Cloud DLP and Cloud KMS APIs aktivieren.

    Aktivieren Sie die APIs

  5. Erstellen Sie ein Dienstkonto:

    1. Wechseln Sie in der Cloud Console zur Seite Dienstkonto erstellen.

      Zur Seite „Dienstkonto erstellen“
    2. Wählen Sie ein Projekt aus.
    3. Geben Sie im Feld Dienstkontoname einen Namen ein. In der Cloud Console wird das Feld Dienstkonto-ID anhand dieses Namens ausgefüllt.

      Geben Sie im Feld Dienstkontobeschreibung eine Beschreibung ein. Beispiel: Service account for quickstart.

    4. Klicken Sie auf Erstellen.
    5. Klicken Sie auf das Feld Rolle auswählen.

      Klicken Sie unter Schnellzugriff auf Einfach und dann auf Inhaber.

    6. Klicken Sie auf Weiter.
    7. Klicken Sie auf Fertig, um das Erstellen des Dienstkontos abzuschließen.

      Schließen Sie das Browserfenster nicht. Sie verwenden es in der nächsten Aufgabe.

  6. Dienstkontoschlüssel erstellen

    1. Klicken Sie in der Cloud Console auf die E-Mail-Adresse des von Ihnen erstellten Dienstkontos.
    2. Klicken Sie auf Schlüssel.
    3. Klicken Sie auf Schlüssel hinzufügen und dann auf Neuen Schlüssel erstellen.
    4. Klicken Sie auf Erstellen. Daraufhin wird eine JSON-Schlüsseldatei auf Ihren Computer heruntergeladen.
    5. Klicken Sie auf Schließen.
  7. Legen Sie für die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS den Pfad der JSON-Datei fest, die Ihren Dienstkontoschlüssel enthält. Diese Variable gilt nur für Ihre aktuelle Shellsitzung. Wenn Sie eine neue Sitzung öffnen, müssen Sie die Variable noch einmal festlegen.

Schritt 1: Schlüsselbund und Schlüssel erstellen

Entscheiden Sie vor Beginn dieses Verfahrens, wo Cloud DLP Ihre Anfragen zur De-Identifikation und Re-Identifikation 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 Cloud DLP-Anfragen verwenden. Andernfalls schlagen Cloud DLP-Anfragen fehl.

Eine Liste der unterstützten Standorte finden Sie unter Cloud DLP-Standorte. Notieren Sie sich den Namen der ausgewählten Region (z. B. us-west1).

Bei diesem Vorgang 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. Schlüsselbund erstellen

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

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

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

    Sie erhalten die 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 das, da die de-identify- und Re-identify-Anforderungen dies 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 128-, 192- oder 256-Bit-AES-Schlüssel. Der folgende Befehl erstellt mit openssl einen 256-Bit-Schlüssel im aktuellen Verzeichnis:

    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 den in Schritt 1 erstellten Cloud KMS-Schlüssel verwenden, um den base64-codierten AES-Schlüssel zu verpacken, den Sie in Schritt 2 erstellt haben. auf.

Verpacken Sie den AES-Schlüssel mit curl, um die 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\"}"

Dabei gilt:

  • PROJECT_ID ist die Projekt-ID.
  • BASE64_ENCODED_AES_KEY: der base64-codierte String, der in Schritt 2 zurückgegeben wurde.

Die Antwort, die Sie von Cloud KMS erhalten, ähnelt der folgenden JSON-Antwort:

{
  "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 erhaltenen Antwort. Das ist Ihr verpackter Schlüssel.

Schritt 4: De-identify-Anfrage an die Cloud DLP API senden

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

Für diese Aufgabe ist Folgendes erforderlich:

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

So heben Sie die Identifizierung sensibler Daten in Textinhalten auf:

  1. Erstellen Sie eine JSON-Anfragedatei mit dem folgenden 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"
          }
        ]
      }
    }
    

    Dabei gilt:

    • PROJECT_ID: die Projekt-ID.
    • WRAPPED_KEY: Der in Schritt 3 erstellte verpackte Schlüssel.

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

    Weitere Informationen zu den Komponenten dieser JSON-Anfrage finden Sie unter projects.locations.content.deidentify. Nachdem Sie diese Kurzanleitung abgeschlossen haben, versuchen Sie, mit verschiedenen Eingaben für diese Anfrage zu 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 stellen dem Dateinamen das Zeichen @ voran. Diese Datei muss sich in dem Verzeichnis befinden, in dem Sie den Befehl curl ausführen.

    Die Antwort, die Sie von Cloud DLP erhalten, ähnelt der folgenden JSON-Antwort:

    {
     "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 Anfrage zur erneuten Identifizierung übergeben.

Schritt 5: Re-Identifikationsanfrage an die Cloud DLP API senden

In diesem Abschnitt wird beschrieben, wie Sie tokenisierte Daten in Textinhalten neu identifizieren.

Für diese Aufgabe ist Folgendes erforderlich:

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

Gehen Sie folgendermaßen vor, um tokenisierte Inhalte wieder zu identifizieren:

  1. Erstellen Sie eine JSON-Anfragedatei mit dem folgenden 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."
      }
    }
    

    Dabei gilt:

    • PROJECT_ID: die Projekt-ID.
    • WRAPPED_KEY: Der in Schritt 3 erstellte verpackte Schlüssel.
    • 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 enthält.

    Weitere Informationen zu den Komponenten dieser JSON-Anfrage finden Sie unter projects.locations.content.reidentify. Nachdem Sie diese Kurzanleitung abgeschlossen haben, versuchen Sie, mit verschiedenen Eingaben für diese Anfrage zu 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 stellen dem Dateinamen das Zeichen @ voran. Diese Datei muss sich in dem Verzeichnis befinden, in dem Sie den Befehl curl ausführen.

    Die Antwort, die Sie von Cloud DLP erhalten, ähnelt der folgenden JSON-Antwort:

    {
     "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 Feld item wird das E-Mail-Adresstoken durch die tatsächliche E-Mail-Adresse aus dem ursprünglichen Text ersetzt.

    Sie haben mithilfe von deterministische Verschlüsselung de-identifizierte sensible Daten in Textinhalten de-identifiziert.

Bereinigen

Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud-Konto die in dieser Kurzanleitung verwendeten Ressourcen in Rechnung gestellt werden:

Schlüsselversion löschen

Wenn Sie den in dieser Kurzanleitung erstellten Schlüssel nicht mehr verwenden möchten, löschen Sie die Version.

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 den 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

Am einfachsten vermeiden Sie weitere Kosten durch Löschen des für die Anleitung erstellten Projekts.

So löschen Sie das Projekt:

  1. Wechseln Sie in der Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Nächste Schritte