Sensible Daten de-identifizieren und re-identifizieren

In diesem Dokument erfahren Sie, wie Sie mit Sensitive Data Protection sensible Daten in Textinhalten de- 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 diesem Dokument beschriebene Prozess wird Pseudonymisierung (oder Tokenisierung) genannt. Bei diesem Prozess verwendet Sensitive Data Protection einen kryptografischen Schlüssel, um vertraulichen Text in ein Token umzuwandeln (zu de-identifizieren). Zum Wiederherstellen (Re-Identifizieren) dieses Textes benötigen Sie den kryptografischen Schlüssel, der bei der De-Identifikation verwendet wurde, und den Token.

Sensitive Data Protection unterstützt sowohl umkehrbare als auch nicht umkehrbare 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 diese Methode, da sie die höchste Sicherheit unter allen umkehrbaren kryptografischen Methoden bietet, die vom Schutz sensibler Daten unterstützt werden.

Die in diesem Dokument 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. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  4. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  5. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • 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.

  6. Wenn Sie für diese Anleitung ein vorhandenes Projekt verwenden, prüfen Sie, ob Sie die erforderlichen Berechtigungen haben. Wenn Sie ein neues Projekt erstellt haben, haben Sie bereits die erforderlichen Berechtigungen.

  7. Verify that billing is enabled for your Google Cloud project.

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

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com
  9. Install the Google Cloud CLI.

  10. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  11. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  12. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • 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.

  13. Wenn Sie für diese Anleitung ein vorhandenes Projekt verwenden, prüfen Sie, ob Sie die erforderlichen Berechtigungen haben. Wenn Sie ein neues Projekt erstellt haben, haben Sie bereits die erforderlichen Berechtigungen.

  14. Verify that billing is enabled for your Google Cloud project.

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

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com
  16. Erforderliche Rollen

    Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen eines umbrochenen AES-Schlüssels, zum Anonymisieren sensibler Daten und zum Re-Identifizieren benötigen:

    Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

    Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

    Schlüsselbund und Schlüssel erstellen

    Entscheiden Sie vor Beginn dieses Verfahrens, wo Sensitive Data Protection 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 Sensitive Data Protection-Anfragen verwenden. Andernfalls schlagen die Sensitive Data Protection-Anfragen 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: projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key
      PURPOSE: ENCRYPT_DECRYPT
      ALGORITHM: GOOGLE_SYMMETRIC_ENCRYPTION
      PROTECTION_LEVEL: SOFTWARE
      LABELS:
      PRIMARY_ID: 1
      PRIMARY_STATE: ENABLED
      

      In dieser Ausgabe ist PROJECT_ID die ID Ihres Projekts.

      Der Wert von NAME ist der vollständige Ressourcenname Ihres Cloud KMS-Schlüssels. Notieren Sie sich diesen Wert, da die De-Identifikations- und Re-Identifikationsanfragen ihn erfordern.

    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=
      

    AES-Schlüssel mit dem Cloud KMS-Schlüssel verpacken

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

    Verwenden Sie zum Verpacken des AES-Schlüssels curl, um folgende Anfrage an die Cloud KMS API-Methode 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:

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

    {
      "name": "projects/<var>PROJECT_ID</var>/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. Dies ist Ihr verpackter Schlüssel.

    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:

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

    So de-identifizieren Sie sensible Daten in Textinhalten:

    1. Erstellen Sie eine JSON-Anfragedatei mit dem Namen deidentify-request.json und 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"
            }
          ]
        }
      }
      

      Ersetzen Sie Folgendes:

      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 Aufgabe abgeschlossen 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 der entsprechenden API-Referenzseite unter Diese Methode testen verwenden.

    2. 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 von Sensitive Data Protection sieht in etwa wie die folgende JSON-Datei 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/<var>PROJECT_ID</var>/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. Notieren Sie sich den Wert des Tokens in der Antwort. Um die anonymisierten Inhalte neu zu identifizieren, müssen Sie das gesamte Token in der Re-Identifizierungsanfrage übergeben.

    Re-Identifizierungsanfrage 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:

    So re-identifizieren Sie tokenisierte Inhalte:

    1. Erstellen Sie eine JSON-Anfragedatei mit dem Namen reidentify-request.json und 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."
        }
      }
      

      Ersetzen Sie Folgendes:

      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 Aufgabe abgeschlossen 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 der API-Referenzseite unter Diese Methode testen verwenden.

    2. 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 von Sensitive Data Protection sieht in etwa wie die folgende JSON-Datei 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/<var>PROJECT_ID</var>/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 jetzt sensible Daten in Textinhalten mit der deterministischen Verschlüsselung de- und re-identifiziert.

    Bereinigen

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

    Schlüsselversion löschen

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

    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, z. B. 1.

    Projekt löschen

    Wenn Sie für diese Aufgabe ein neues Projekt erstellt haben, vermeiden Sie weitere Kosten am einfachsten, 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