DLP-Proxy zur Interaktion mit Cloud SQL verwenden

In dieser Anleitung wird beschrieben, wie Sie einen Proxy verwenden können, um Abfrageergebnisse mit Cloud Data Loss Prevention (Cloud DLP) zu tokenisieren und zu anonymisieren. Dieser Proxy dient nur Demonstrationszwecken in dieser Anleitung und ist nicht für die Produktion bestimmt.

Diese Anleitung wendet sich an Datenbankadministratoren, Sicherheitsexperten und Cloud-Architekten, die Cloud DLP verwenden möchten, um in Cloud SQL gespeicherte Daten zu tokenisieren und zu anonymisieren. In dieser Anleitung wird davon ausgegangen, dass Sie mit Cloud Shell und Cloud SQL vertraut sind.

In Unternehmen müssen immer mehr Daten gespeichert werden, von denen viele als sensible Daten gelten. Nicht jeder, der Zugriff auf diese gespeicherten Informationen hat, muss auch die sensiblen Daten sehen, wenn Anfragen an die Datenbank gesendet werden.

In dieser Anleitung wird eine Möglichkeit gezeigt, wie Sie Nutzern Zugriff auf eine Cloud SQL-Datenbank mit sensiblen Daten gewähren können, aber verhindern, dass diese sensiblen Daten in Abfrageergebnissen angezeigt werden.

Das folgende Diagramm zeigt die Bereitstellungsarchitektur für diese Anleitung.

Bereitstellungsarchitektur, in der Nutzer auf eine Cloud SQL-Datenbank zugreifen können.

Im Verlauf dieser Anleitung richten Sie einen DLP-Proxy ein, der als Schnittstelle zwischen Cloud SQL und einem einfachen SQL-Client dient.

Ziele

  • Datenbank erstellen und sensible Daten in eine Tabelle laden
  • Cloud DLP-Vorlagen erstellen
  • DLP-Proxyserver und Client-JAR-Dateien herunterladen
  • DLP-Proxy konfigurieren, um eine Verbindung zur Datenbank auf der Cloud SQL-Instance herzustellen und die Cloud DLP-Vorlagen zu nutzen
  • Proxy-Features testen

Kosten

In dieser Anleitung werden die folgenden kostenpflichtigen Komponenten von Google Cloud verwendet:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Nach Abschluss dieser Anleitung können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.

Hinweise

  1. Melden Sie sich bei Ihrem Google-Konto an.

    Wenn Sie noch kein Konto haben, melden Sie sich hier für ein neues Konto an.

  2. Wählen Sie in der Cloud Console auf der Seite für die Projektauswahl ein Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

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

  4. Aktivieren Sie die erforderlichen APIs.

    Aktivieren Sie die APIs

Cloud SQL for MySQL-Datenbank erstellen

In diesem Abschnitt erstellen Sie eine Cloud SQL-Instanz und eine Cloud SQL for MySQL-Datenbank, in die Sie beispielhafte sensible Daten laden.

  1. Aktivieren Sie Cloud Shell in der Cloud Console.

    Cloud Shell aktivieren

    Unten in der Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Cloud SDK einschließlich des gcloud-Befehlszeilentools vorinstalliert ist. Die Werte sind bereits für Ihr aktuelles Projekt festgelegt. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  2. Alle Befehle in dieser Anleitung werden in Cloud Shell ausgeführt.
  3. Kopieren Sie die für die Anleitung benötigten Dateien aus dem öffentlichen Cloud Storage-Bucket von Google in einen Ordner mit dem Namen gcp-dlp-tutorial:
    mkdir gcp-dlp-proxy-tutorial
    gsutil cp  gs://solutions-public-assets/dlp-cloudsql-proxy/*.* gcp-dlp-proxy-tutorial
    
  4. Richten Sie das Cloud-Projekt ein:
    gcloud config set project project-id
    

    Ersetzen Sie Folgendes:

    • project-id: Ihre Cloud-Projekt-ID
  5. Ändern Sie die Verzeichnisse in den Ordner, in den Sie die Anleitungsdateien kopiert haben.
    cd  gcp-dlp-proxy-tutorial
    
  6. Führen Sie den folgenden Befehl aus, um eine Liste der Zonen abzurufen:
    gcloud compute zones list
    

    Weitere Informationen zu Zonen finden Sie unter Geografie und Regionen.

  7. Wählen Sie die Zone, in der Sie die Cloud SQL-Instanz erstellen, und exportieren Sie die Zone als Umgebungsvariable:
    export ZONE=zone
    

    Ersetzen Sie Folgendes:

    • zone: Zone Ihrer Wahl, in der Sie die Cloud SQL-Instanz erstellen.
  8. Erstellen Sie die Cloud SQL for MySQL-Instanz mit dem Namen dlp-test-instance:
    gcloud sql instances create dlp-test-instance  --zone  $ZONE
    

    Wenn die Instanz korrekt erstellt wurde, sieht die Ausgabe etwa so aus:

    Creating Cloud SQL instance...done.
    Created [https://www.googleapis.com/sql/v1beta4/projects/[PROJECT_ID]/instances/dlp-test-instance].
    NAME               DATABASE_VERSION  LOCATION  TIER              PRIMARY_ADDRESS  PRIVATE_ADDRESS  STATUS
    dlp-test-instance  MYSQL_5_7         [ZONE]    db-n1-standard-1  35.195.26.16     -                RUNNABLE
    
  9. Legen Sie für den MySQL-Nutzer root@% ein Passwort fest.
    gcloud sql users set-password root \
      --host=% --instance=dlp-test-instance \
      --password=password
    

    Ersetzen Sie Folgendes:

    • password: Ein starkes Passwort.

    Die Ausgabe sieht so aus:

    Updating Cloud SQL user...done.
    
  10. Erstellen Sie auf der Instanz eine Datenbank mit dem Namen dlp-test-db:
    gcloud sql databases create  dlp-test-db --instance dlp-test-instance
    

    Die Ausgabe sieht etwa so aus:

    Creating Cloud SQL database...done.
    Created database [dlp-test-db].
    instance: dlp-test-instance
    name: dlp-test-db
    project: project-id
    
  11. Erstellen Sie einen Datenbanknutzer mit dem Namen dlptester:
    gcloud sql users create dlptester \
      --host=% --instance=dlp-test-instance --password=password-database
    

    Ersetzen Sie Folgendes:

    • password-database: Ersetzen Sie dies durch ein starkes Passwort. Notieren Sie sich das Passwort, da Sie es später in der Anleitung benötigen.

    Die Ausgabe sieht so aus:

    Creating Cloud SQL user...done.
    Created user [dlptester].
    
  12. Stellen Sie eine Verbindung zur Cloud SQL for MySQL-Instanz her:
    gcloud sql connect dlp-test-instance  --user=dlptester
    

    Geben Sie bei Aufforderung password-database ein.

  13. Erstellen Sie über die MySQL-Eingabeaufforderung eine Tabelle mit dem Namen TEST_DATA und laden Sie in diese Tabelle sensible Beispieldaten:
    source create_test_data.sql
    
  14. Senden Sie über die MySQL-Eingabeaufforderung eine Abfrage, um festzustellen, ob die Testdaten in die Tabelle geladen wurden:
    select * from TEST_DATA LIMIT 10;
    

    Die Ergebnisse der Abfrage sollten etwa so aussehen:

    MySQL [dlp-test-db]> select * from TEST_DATA LIMIT 10;
    +------+---------------------+--------------+-------------+--------+
    | id   | email               | phone        | ssn         | metric |
    +------+---------------------+--------------+-------------+--------+
    |    1 | mallory@example.org | 858-222-0222 | 222-22-2222 |      5 |
    |    2 | james@example.org   | 858-333-0333 | 333-33-3333 |      8 |
    |    3 | mallory@example.org | 858-222-0222 | 222-22-2222 |      8 |
    |    4 | maria@example.org   | 858-444-0444 | 444-44-4444 |      1 |
    |    1 | mallory@example.org | 858-222-0222 | 222-22-2222 |      5 |
    |    2 | james@example.org   | 858-333-0333 | 333-33-3333 |      8 |
    |    3 | mallory@example.org | 858-222-0222 | 222-22-2222 |      8 |
    |    4 | maria@example.org   | 858-444-0444 | 444-44-4444 |      1 |
    +------+---------------------+--------------+-------------+--------+
    8 rows in set (0.00 sec)
    
  15. Verlassen Sie den MySQL-Client.
    exit
    

Cloud DLP-Vorlagen erstellen

In diesem Abschnitt erstellen Sie zwei Cloud DLP-Vorlagen: eine Vorlage zum Prüfen der Daten in den TEST_DATA-Tabellen für sensible Daten gemäß Definition durch die InfoTypes; und eine zweite Vorlage für die Anonymisierung, mit der die von den InfoTypes definierten sensiblen Daten tokenisiert werden.

Prüfvorlage erstellen

  1. Öffnen Sie in der Cloud Console die Seite Cloud DLP.

    Zu Cloud DLP

  2. Klicken Sie auf Erstellen und wählen Sie Vorlage aus.

  3. Geben Sie in das Feld Template ID den String inspect-template-1 ein.

  4. Klicken Sie auf Weiter.

  5. Legen Sie die InfoTypes auf EMAIL_ADDRESS, PHONE_NUMBER und US_SOCIAL_SECURITY_NUMBER fest.

  6. Klicken Sie auf Erstellen.

De-Identifikationsvorlagen erstellen

In diesem Abschnitt erstellen Sie eine Anonymisierungsvorlage mit dem Namen de-identify-template-1. Diese Vorlage wird so konfiguriert, dass sie sensible Daten durch einen Ersatzwert ersetzt, der durch kryptografisches Hashing generiert wird. Weitere Informationen finden Sie in der Cloud DLP-Dokumentation im Abschnitt cryptoHashConfig.

  1. Öffnen Sie den API Explorer.

  2. Ersetzen Sie im Feld parent [YOUR-PROJECT] durch Ihre Cloud-Projekt-ID.

  3. Klicken Sie auf Ausführen und bei Aufforderung noch einmal auf Ausführen.

    Sie erhalten eine 200-Antwort und die Ausgabe sieht etwa so aus:

    {
      "name": "projects/YOUR-PROJECT-ID/deidentifyTemplates/de-identify-template-1",
      "createTime": "2019-10-15T12:46:51.944253Z",
      "updateTime": "2019-10-15T12:46:51.944253Z",
      "deidentifyConfig": {
        "infoTypeTransformations": {
          "transformations": [
            {
              "infoTypes": [
                {
                  "name": "PHONE_NUMBER"
                },
                {
                  "name": "US_SOCIAL_SECURITY_NUMBER"
                },
                {
                  "name": "EMAIL_ADDRESS"
                }
              ],
              "primitiveTransformation": {
                "cryptoDeterministicConfig": {
                  "cryptoKey": {
                    "transient": {
                      "name": "abc"
                    }
                  },
                  "surrogateInfoType": {
                    "name": "S1"
                  }
    
  4. Prüfen Sie nun, ob die Vorlage zur Anonymisierung korrekt gespeichert wurde. Gehen Sie dazu zurück zum API Explorer und rufen Sie die Liste der Vorlagen ab.

  5. Geben Sie in das Feld parent den String projects/project-id ein.

  6. Klicken Sie auf Ausführen und bei Aufforderung noch einmal auf Ausführen.

    Die Ausgabe sieht etwa so aus und enthält die von Ihnen erstellte Vorlage:

    Ausgabe des API Explorers

DLP-Proxy konfigurieren und nutzen

In diesem Abschnitt konfigurieren Sie den DLP-Proxy, stellen über den Client eine Verbindung zum Proxy her und testen, ob die Abfrageergebnisse von Cloud DLP verarbeitet werden.

  1. Öffnen Sie in Cloud Shell das Verzeichnis mit dem Ordner, in den Sie die Anleitungsdateien kopiert haben:

    cd  ~/gcp-dlp-proxy-tutorial
    
  2. Bearbeiten Sie die Konfigurationsdatei des DLP-Proxyservers:

    nano config.json
    
  3. Ersetzen Sie in den folgenden Zeilen die Platzhalter durch die Werte Ihrer Konfiguration:

    "db_instance": "project_id:region:instance_name",
    "db_dbname": "dbase_name",
    "projectID": "project_id",
    "audit_template": "inspect_template",
     "deidentify_template": "deidentify_template",
    

    Ersetzen Sie Folgendes:

    • project_id: Ihre Cloud-Projekt-ID
    • region: Name der Region, die der Zone entspricht, in der Sie die Cloud SQL-Instanz erstellt haben. Wenn Ihre Instanz beispielsweise in der Zone us-central1-a erstellt wurde, lautet die Region us-central1.
    • instance_name: Name Ihrer Cloud SQL-Instanz, z. B. dlp-test-instance
    • dbase_name: Name Ihrer Datenbank, z. B. dlp-test-db
    • inspect_template: Name Ihrer Prüfvorlage, z. B. inspect-template-1
    • inspect_template: Name Ihrer Anonymisierungsvorlage, z. B. de-identify-template-1
  4. Führen Sie den Proxy im Hintergrund aus, um den DLP-Proxy zu starten. Leiten Sie dazu die Terminalausgabe in die Datei log.txt weiter:

    java -jar dlp-cloudsql-proxy-server.jar database_userpassword-databaselog.txt 2>&1 &
    

    Ersetzen Sie Folgendes:

    • database_user: Nutzername des Datenbanknutzers
    • password-database: Passwort des zuvor erstellten Datenbanknutzers
  5. Ob der DLP-Proxy ausgeführt wird, erkennen Sie an der Ausführung des Prozesses:

    ps -ax | grep dlp-cloudsql-proxy-server.jar
    

    In der Ausgabe wird angezeigt, dass der Prozess den DLP-Proxy ausführt:

    1233 pts/1    Sl     0:08 java -jar dlP-cloudsql-proxy-Server.jar dlptester XXXXXXXX
    1266 pts/1    S+     0:00 grep --color=auto dlp-cloud sql-proxy-Server
    

    Wenn der Prozess nicht ausgeführt wird, prüfen Sie die log.txt-Datei auf Fehlermeldungen.

  6. Starten Sie den einfachen Client, der für die Verbindung zum DLP-Proxy an Port 5000 bereitgestellt wird:

    java -jar dlp-sql-proxy-client-0.1.0.jar 5000
    
  7. Führen Sie aus dem Client eine einfache Abfrage aus. Die Ausführung dieses Befehls kann einige Momente dauern, da Cloud DLP die Daten verarbeiten muss, bevor sie ausgegeben werden.

    select * from TEST_DATA LIMIT 10;
    

    In den Abfrageergebnissen wurden die Telefonnummer, die E-Mail-Adresse und die SSN-Werte durch kryptografisch gehashte Ersatzwerte ersetzt. Vergleichen Sie dies mit den Ergebnissen, die zurückgegeben werden, wenn Sie den Proxy nicht verwenden.

    Connected to SQL Proxy
    Enter query here (enter "quit" to disconnect):
    select * from TEST_DATA LIMIT 10;
    id: 1
    phone: S1(40):AYnPXA6QcxlpOITeaZZM3+U/s7KtXyTqv5KAbB8=
    metric: 5
    email: S1(48):AS8hnzz6g1fGCabK2cbhPn5X7Qvc7FKmLTXnKF1iKF2nRjGQ
    ssn: S1(40):AQ1jSCdIsctniCkCHNEbsc+kliJArHmM6bOJRg==
    
    id: 2
    phone: S1(40):AfiaKlOYHAzgWGtrkpvaCWUY1e2yvMaK7IQvM/M=
    metric: 8
    email: S1(48):ASF7UBFuZ/xUzXJjD1Ap745xcGmKpTjw+IwIBB/F/OX53w==
    ssn: S1(40):AWYXh7U8PhNUZu+fXLuLFS0KCMmcM5uKH17rig==
    
    id: 3
    phone: S1(40):AYnPXA6QcxlpOITeaZZM3+U/s7KtXyTqv5KAbB8=
    metric: 8
    email: S1(48):AS8hnzz6g1fGCabK2cbhPn5X7Qvc7FKmLTXnKF1iKF2nRjGQ
    ssn: S1(40):AQ1jSCdIsctniCkCHNEbsc+kliJArHmM6bOJRg==
    
    id: 4
    phone: S1(40):AXFnPkf620wIBXxW0uuBXSVERzRzvhdgbCdaYIw=
    metric: 1
    email: S1(48):AZgs1pfjEPLL6sDAcIZWuCZhC/saw/rQrujxAFy/O60uIA==
    ssn: S1(40):AatdICHDpwCc19ELEjCS8zAmeSVvx/1KB5/S2Q==
    
    End of query results
    
  8. Beenden Sie den Client:

    quit
    
  9. Beenden Sie den DLP-Proxyserver:

    killall java
    
  10. Schreiben Sie die Datei log.txt in das Terminal, um die Ausgabe vom DLP-Proxy anzuzeigen:

    cat  log.txt
    

    Die Ausgabe der Prüfphase wird am Ende der Datei gemäß den drei zuvor konfigurierten InfoTypes angezeigt.

    RunCommand
    DLP Result
    DLP Findings:
            Quote:                          Info type: PHONE_NUMBER Likelihood: VERY_LIKELY
            Quote:                          Info type: EMAIL_ADDRESS        Likelihood: LIKELY
            Quote:                          Info type: US_SOCIAL_SECURITY_NUMBER    Likelihood: VERY_LIKELY
            Quote:                          Info type: PHONE_NUMBER Likelihood: VERY_LIKELY
            Quote:                          Info type: EMAIL_ADDRESS        Likelihood: LIKELY
            Quote:                          Info type: US_SOCIAL_SECURITY_NUMBER    Likelihood: VERY_LIKELY
            Quote:                          Info type: PHONE_NUMBER Likelihood: VERY_LIKELY
            Quote:                          Info type: EMAIL_ADDRESS        Likelihood: LIKELY
            Quote:                          Info type: US_SOCIAL_SECURITY_NUMBER    Likelihood: VERY_LIKELY
            Quote:                          Info type: PHONE_NUMBER Likelihood: VERY_LIKELY
            Quote:                          Info type: EMAIL_ADDRESS        Likelihood: LIKELY
            Quote:                          Info type: US_SOCIAL_SECURITY_NUMBER    Likelihood: VERY_LIKELY
    
    Got DLP Result
    Sensitive information found
    write log: 1503994
    Logged Main.Query: 1503994
    

Bereinigen

Am einfachsten können Sie die Abrechnung deaktivieren, wenn Sie das Cloud-Projekt löschen, das Sie für die Anleitung erstellt haben. Alternativ haben Sie die Möglichkeit, die einzelnen Ressourcen zu löschen.

Projekt löschen

  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 Beenden, um das Projekt zu löschen.

Weitere Informationen