Klassifizierung der in Cloud Storage hochgeladenen Daten automatisieren


In dieser Anleitung wird gezeigt, wie Sie mithilfe von Cloud Storage und anderen Google Cloud-Produkten ein automatisiertes System zur Datenquarantäne und -klassifizierung implementieren. Für diese Anleitung wird vorausgesetzt, dass Sie mit Google Cloud und der grundlegenden Shell-Programmierung vertraut sind.

In jeder Organisation haben Datenschutzbeauftragte wie Sie mit einer ständig wachsenden Menge von Daten zu tun, die angemessen geschützt und verwaltet werden muss. Angesichts von Hunderten oder Tausenden von Dateien pro Tag kann es kompliziert und zeitaufwendig sein, Daten in Quarantäne zu stellen und zu klassifizieren.

Wie wäre es, wenn Sie jede Datei in ein Quarantäneverzeichnis hochladen und sie dann automatisch klassifizieren und anhand des Klassifizierungsergebnisses an den richtigen Speicherort verschieben lassen könnten? In dieser Anleitung wird beschrieben, wie Sie ein solches System mit Cloud Functions, Cloud Storage und Cloud Data Loss Prevention umsetzen können.

Lernziele

  • Cloud Storage-Buckets zur Verwendung als Teil der Quarantäne- und Klassifizierungspipeline erstellen
  • Erstellen Sie ein Pub/Sub-Thema und ein Abo, damit Sie benachrichtigt werden, wenn die Dateiverarbeitung abgeschlossen ist.
  • Eine einfache Funktion in Cloud Functions zum Aufrufen der DLP API beim Hochladen von Dateien erstellen
  • Einige Beispieldateien in den Quarantäne-Bucket zum Aufrufen der Cloud Function hochladen – die DLP API wird von der Funktion verwendet, um die Dateien zu überprüfen und zu klassifizieren und sie in den entsprechenden Bucket zu verschieben

Kosten

In dieser Anleitung werden kostenpflichtige Google Cloud-Komponenten verwendet, darunter:

  • Cloud Storage
  • Cloud Functions
  • Cloud Data Loss Prevention

Mithilfe des Preisrechners können Sie ausgehend von der voraussichtlichen Nutzung eine Kostenschätzung vornehmen.

Hinweise

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  3. Enable the Cloud Functions, Cloud Storage,Cloud Build Cloud Build, and Cloud Data Loss Prevention APIs.

    Enable the APIs

Berechtigungen für Dienstkonten gewähren

Im ersten Schritt gewähren Sie Berechtigungen für zwei Dienstkonten: das Cloud Functions-Dienstkonto und das Cloud DLP-Dienstkonto.

Berechtigungen für das App Engine-Standarddienstkonto gewähren

  1. Öffnen Sie in der Google Cloud Console die Seite "IAM & Verwaltung" und wählen Sie das erstellte Projekt aus:

    IAM aufrufen

  2. Suchen Sie das App Engine-Dienstkonto. Dieses Konto hat das Format [PROJECT_ID]@appspot.gserviceaccount.com. Ersetzen Sie [PROJECT_ID] durch Ihre Projekt-ID.

  3. Wählen Sie das Bearbeitungssymbol neben dem Dienstkonto aus.

  4. Fügen Sie die folgenden Rollen hinzu:

    • Cloud DLP > DLP-Administrator
    • DLP API-Dienst-Agent (Sie müssen nach dieser Rolle filtern, um ihn zu finden)
  5. Klicken Sie auf Speichern.

Berechtigungen für den Schutz sensibler Daten gewähren

Der Cloud DLP-Dienst-Agent wird erstellt, wenn er zum ersten Mal benötigt wird.

  1. Erstellen Sie in Cloud Shell den Cloud DLP-Dienst-Agent durch Aufrufen von InspectContent:

    curl --request POST 
    "https://dlp.googleapis.com/v2/projects/PROJECT_ID/locations/us-central1/content:inspect"
    --header "X-Goog-User-Project: PROJECT_ID"
    --header "Authorization: Bearer $(gcloud auth print-access-token)"
    --header 'Accept: application/json'
    --header 'Content-Type: application/json'
    --data '{"item":{"value":"google@google.com"}}'
    --compressed

    Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

  2. Öffnen Sie in der Google Cloud Console die Seite IAM & Verwaltung und wählen Sie das erstellte Projekt aus:

    IAM aufrufen

  3. Klicken Sie auf das Kästchen „Von Google bereitgestellte Rollenzuweisungen einschließen“.

  4. Gehen Sie zum Dienstkonto Cloud DLP-Dienst-Agent. Dieses Konto hat das Format service-[PROJECT_NUMBER]@dlp-api.iam.gserviceaccount.com. Ersetzen Sie [PROJECT_NUMBER] durch die Projekt-ID.

  5. Wählen Sie das Bearbeitungssymbol neben dem Dienstkonto aus.

  6. Fügen Sie die Rolle Projekt > Betrachter hinzu und klicken Sie auf Speichern.

Quarantäne- und Klassifizierungspipeline erstellen

In diesem Abschnitt erstellen Sie die im folgenden Diagramm dargestellte Quarantäne- und Klassifizierungspipeline.

Workflow für Quarantäne und Klassifizierung

Die Zahlen in dieser Pipeline entsprechen folgenden Schritten:

  1. Hochladen der Dateien in Cloud Storage
  2. Aufrufen einer Funktion von Cloud Functions
  3. Überprüfen und Klassifizieren der Daten durch Cloud DLP
  4. Verschieben der Datei in den entsprechenden Bucket

Cloud Storage-Buckets erstellen

Erstellen Sie gemäß den Hinweisen zur Namensgebung für Buckets drei eindeutig benannte Buckets zur Verwendung in dieser Anleitung:

  • Bucket 1: Ersetzen Sie [YOUR_QUARANTINE_BUCKET] durch einen eindeutigen Namen.
  • Bucket 2: Ersetzen Sie [YOUR_SENSITIVE_DATA_BUCKET] durch einen eindeutigen Namen.
  • Bucket 3: Ersetzen Sie [YOUR_NON_SENSITIVE_DATA_BUCKET] durch einen eindeutigen Namen.

Console

  1. Öffnen Sie in der Google Cloud Console den Cloud Storage-Browser.

    Cloud Storage aufrufen

  2. Klicken Sie auf Bucket erstellen.

  3. Geben Sie im Textfeld Bucket-Name den Namen ein, den Sie für [YOUR_QUARANTINE_BUCKET] ausgewählt haben, und klicken Sie auf Erstellen.

  4. Wiederholen Sie diesen Vorgang für die Buckets [YOUR_SENSITIVE_DATA_BUCKET] und [YOUR_NON_SENSITIVE_DATA_BUCKET].

gcloud

  1. Öffnen Sie Cloud Shell:

    Zu Cloud Shell

  2. Erstellen Sie mit folgenden Befehlen drei Buckets:

    gsutil mb gs://[YOUR_QUARANTINE_BUCKET]
    gsutil mb gs://[YOUR_SENSITIVE_DATA_BUCKET]
    gsutil mb gs://[YOUR_NON_SENSITIVE_DATA_BUCKET]
    

Pub/Sub-Thema und -Abo erstellen

Konsole

  1. Seite Pub/Sub-Themen öffnen:

    Zu Pub/Sub-Themen

  2. Klicken Sie auf Thema erstellen.

  3. Geben Sie in das Textfeld einen Themennamen ein.

  4. Klicken Sie auf das Kästchen Standardabo hinzufügen.

  5. Klicken Sie auf Thema erstellen.

gcloud

  1. Öffnen Sie Cloud Shell:

    Zu Cloud Shell

  2. Erstellen Sie ein Thema und ersetzen Sie dabei [PUB/SUB_TOPIC] durch einen Namen Ihrer Wahl:

    gcloud pubsub topics create [PUB/SUB_TOPIC]
  3. Erstellen Sie ein Abo und ersetzen Sie dabei [PUB/SUB_SUBSCRIPTION] durch einen Namen Ihrer Wahl:

    gcloud pubsub subscriptions create [PUB/SUB_SUBSCRIPTION] --topic [PUB/SUB_TOPIC]

Cloud Functions-Funktionen erstellen

In diesem Abschnitt wird das Bereitstellen des Python-Skripts beschrieben, das die folgenden zwei Cloud Functions-Funktionen enthält:

  • Eine Funktion, die beim Hochladen eines Objekts in Cloud Storage aktiviert wird.
  • Eine Funktion, die bei Eingang einer Nachricht in der Pub/Sub-Warteschlange aufgerufen wird.

Das Python-Skript, mit dem Sie diese Anleitung abschließen, ist in einem GitHub-Repository enthalten. Um die erste Cloud Functions-Funktion zu erstellen, müssen Sie die richtigen APIs aktivieren.

So aktivieren Sie die APIs:

  • Wenn Sie in der Konsole arbeiten, klicken Sie auf Funktion erstellen, um zu erfahren, wie die APIs aktiviert werden, die Sie zur Verwendung von Cloud Functions benötigen.
  • Wenn Sie in der gcloud CLI arbeiten, müssen Sie die folgenden APIs manuell aktivieren:
    • Artifact Registry API
    • Eventarc API
    • Cloud Run Admin API

Die erste Funktion erstellen

Console

  1. Öffnen Sie die Seite Cloud Functions – Übersicht:

    Zu Cloud Functions

  2. Wählen Sie das Projekt aus, für das Sie Cloud Functions aktiviert haben.

  3. Klicken Sie auf Funktion erstellen.

  4. Ersetzen Sie im Textfeld Funktionsname den Standardnamen durch create_DLP_job.

  5. Wählen Sie im Feld Trigger die Option Cloud Storage aus.

  6. Wählen Sie im Feld Ereignistyp die Option Finalisieren/Erstellen aus.

  7. Klicken Sie im Feld Bucket auf Durchsuchen, markieren Sie den Quarantäne-Bucket in der Drop-down-Liste und klicken Sie auf Auswählen.

  8. Klicken Sie auf Speichern.

  9. Klicken Sie auf Weiter.

  10. Wählen Sie unter Laufzeit die Option Python 3.7 aus.

  11. Setzen Sie unter Quellcode ein Häkchen bei Inline-Editor.

  12. Ersetzen Sie den Text im Feld main.py durch den Inhalt der folgenden Datei https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/main.py.

    Ersetzen Sie Folgendes:

    • [PROJECT_ID_DLP_JOB & TOPIC]: die ID des Projekts, in dem die Cloud Functions-Funktion und das Pub/Sub-Thema gehostet werden.
    • [YOUR_QUARANTINE_BUCKET]: der Name des Buckets, in den Sie die zu verarbeitenden Dateien hochladen.
    • [YOUR_SENSITIVE_DATA_BUCKET]: der Name des Buckets, in den Sie vertrauliche Dateien verschieben.
    • [YOUR_NON_SENSITIVE_DATA_BUCKET]: der Name des Buckets, in den Sie die zu verarbeitenden Dateien hochladen.
    • [PUB/SUB_TOPIC]: der Name des Pub/Sub-Themas, das Sie zuvor erstellt haben.
  13. Ersetzen Sie im Textfeld Einstiegspunkt den Standardtext durch Folgendes: create_DLP_job.

  14. Ersetzen Sie den Text im Textfeld requirements.txt durch den Inhalt der folgenden Datei: https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/requirements.txt.

  15. Klicken Sie auf Bereitstellen.

    Mit einem grünen Häkchen neben der Funktion wird die erfolgreiche Bereitstellung angezeigt.

    erfolgreiche Bereitstellung

gcloud

  1. Öffnen Sie eine Cloud Shell-Sitzung und klonen Sie das GitHub-Repository, das den Code und einige Beispieldatendateien enthält:

    In Cloud Shell öffnen

  2. Passen Sie die Verzeichnisse gemäß dem Ordner an, in den das Repository geklont wurde:

    cd ~dlp-cloud-functions-tutorials/gcs-dlp-classification-python/
  3. Ersetzen Sie in der Datei main.py die folgenden Werte:

    • [PROJECT_ID_DLP_JOB & TOPIC]: die ID des Projekts, in dem die Cloud Functions-Funktion und das Pub/Sub-Thema gehostet werden.
    • [YOUR_QUARANTINE_BUCKET]: der Name des Buckets, in den Sie die zu verarbeitenden Dateien hochladen.
    • [YOUR_SENSITIVE_DATA_BUCKET]: der Name des Buckets, in den Sie vertrauliche Dateien verschieben.
    • [YOUR_NON_SENSITIVE_DATA_BUCKET]: der Name des Buckets, in den Sie die zu verarbeitenden Dateien hochladen.
    • [PUB/SUB_TOPIC: der Name des Pub/Sub-Themas, das Sie zuvor erstellt haben.
  4. Stellen Sie die Funktion bereit und ersetzen Sie dabei [YOUR_QUARANTINE_BUCKET] durch Ihren Bucket-Namen:

    gcloud functions deploy create_DLP_job --runtime python37 \
        --trigger-resource [YOUR_QUARANTINE_BUCKET] \
        --trigger-event google.storage.object.finalize
    
  5. Prüfen Sie, ob die Funktion erfolgreich bereitgestellt wurde:

    gcloud functions describe create_DLP_job

    Eine erfolgreiche Bereitstellung wird durch einen Bereitschaftsstatus angezeigt, der in etwa so angegeben wird:

    status:  READY
    timeout:  60s
    

Wenn die Cloud Functions-Funktion erfolgreich bereitgestellt wurde, fahren Sie mit dem nächsten Abschnitt fort, um die zweite Cloud Functions-Funktion zu erstellen.

Die zweite Funktion erstellen

Console

  1. Öffnen Sie die Seite Cloud Functions – Übersicht:

    Zur Übersichtsseite von Cloud Functions

  2. Wählen Sie das Projekt aus, für das Sie Cloud Functions aktiviert haben.

  3. Klicken Sie auf Funktion erstellen.

  4. Ersetzen Sie im Textfeld Funktionsname den Standardnamen durch resolve_DLP.

  5. Wählen Sie im Feld Trigger die Option Pub/Sub aus.

  6. Suchen Sie im Feld Cloud Pub/Sub-Thema auswählen nach dem Pub/Sub-Thema, das Sie zuvor erstellt haben.

  7. Klicken Sie auf Speichern.

  8. Klicken Sie auf Weiter.

  9. Wählen Sie unter Laufzeit die Option Python 3.7 aus.

  10. Wählen Sie unter Quellcode Inline-Editor aus.

  11. Ersetzen Sie im Textfeld Einstiegspunkt den Standardtext durch resolve_DLP.

  12. Ersetzen Sie den Text im Feld main.py durch den Inhalt der folgenden Datei: https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/main.py. Ersetzen Sie die folgenden Werte:

    • [PROJECT_ID_DLP_JOB & TOPIC]: die ID des Projekts, in dem die Cloud Functions-Funktion und das Pub/Sub-Thema gehostet werden.
    • [YOUR_QUARANTINE_BUCKET]: der Name des Buckets, in den Sie die zu verarbeitenden Dateien hochladen.
    • [YOUR_SENSITIVE_DATA_BUCKET]: der Name des Buckets, in den Sie vertrauliche Dateien verschieben.
    • [YOUR_NON_SENSITIVE_DATA_BUCKET]: der Name des Buckets, in den Sie die zu verarbeitenden Dateien hochladen.
    • [PUB/SUB_TOPIC: der Name des Pub/Sub-Themas, das Sie zuvor erstellt haben.
  13. Klicken Sie auf Bereitstellen.

    Mit einem grünen Häkchen neben der Funktion wird die erfolgreiche Bereitstellung angezeigt.

    erfolgreiche Bereitstellung

gcloud

  1. Öffnen Sie eine neue oder vorhandene Cloud Shell-Sitzung und klonen Sie das GitHub-Repository, das den Code und einige Beispieldatendateien enthält:

    In Cloud Shell öffnen

  2. Wechseln Sie in das Verzeichnis mit dem Python-Code:

    cd gcs-dlp-classification-python/

  3. Ersetzen Sie in der Datei main.py die folgenden Werte:

    • [PROJECT_ID_DLP_JOB & TOPIC]: die ID des Projekts, in dem die Cloud Functions-Funktion und das Pub/Sub-Thema gehostet werden.
    • [YOUR_QUARANTINE_BUCKET]: der Name des Buckets, in den Sie die zu verarbeitenden Dateien hochladen.
    • [YOUR_SENSITIVE_DATA_BUCKET]: der Name des Buckets, in den Sie vertrauliche Dateien verschieben.
    • [YOUR_NON_SENSITIVE_DATA_BUCKET]: der Name des Buckets, in den Sie die zu verarbeitenden Dateien hochladen.
    • [PUB/SUB_TOPIC: der Name des Pub/Sub-Themas, das Sie zuvor erstellt haben.
  4. Stellen Sie die Funktion bereit. Ersetzen Sie dabei [PUB/SUB_TOPIC] durch Ihr Pub/Sub-Thema:

    gcloud functions deploy resolve_DLP --runtime python37 --trigger-topic [PUB/SUB_TOPIC]
  5. Prüfen Sie, ob die Funktion erfolgreich bereitgestellt wurde:

    gcloud functions describe resolve_DLP

    Eine erfolgreiche Bereitstellung wird durch einen Bereitschaftsstatus angezeigt, der in etwa so angegeben wird:

    status:  READY
    timeout:  60s
    

Wenn die Cloud Functions-Funktion erfolgreich bereitgestellt wurde, fahren Sie mit dem nächsten Abschnitt fort.

Beispieldateien in den Quarantäne-Bucket hochladen

Das mit diesem Artikel verknüpfte GitHub-Repository enthält Beispieldatendateien. Der Ordner enthält einige Dateien mit sensiblen Daten und andere Dateien mit nicht sensiblen Daten. Als sensibel werden Daten dann klassifiziert, wenn sie mindestens einen der folgenden INFO_TYPES-Werte enthalten:

US_SOCIAL_SECURITY_NUMBER
EMAIL_ADDRESS
PERSON_NAME
LOCATION
PHONE_NUMBER

Die Datentypen, die zur Klassifizierung der Beispieldateien verwendet werden, sind in der Datei main.py in der Konstante INFO_TYPES festgelegt, die zu Beginn auf 'FIRST_NAME,PHONE_NUMBER,EMAIL_ADDRESS,US_SOCIAL_SECURITY_NUMBER' gesetzt ist.

  1. Wenn Sie das Repository noch nicht geklont haben, öffnen Sie Cloud Shell und klonen Sie das GitHub-Repository, das den Code und einige Beispieldatendateien enthält:

    In Cloud Shell öffnen

  2. Passen Sie die Ordner gemäß dem Speicherort der Beispieldatendateien an:

    cd ~/dlp-cloud-functions-tutorials/sample_data/
  3. Kopieren Sie die Beispieldatendateien mit dem Befehl gsutil in den Quarantäne-Bucket. Ersetzen Sie dabei [YOUR_QUARANTINE_BUCKET] durch den Namen des Quarantäne-Buckets:

    gsutil -m  cp * gs://[YOUR_QUARANTINE_BUCKET]/

    Cloud DLP prüft und klassifiziert alle in den Quarantäne-Bucket hochgeladenen Dateien und verschiebt sie entsprechend dieser Klassifizierung in den entsprechenden Ziel-Bucket.

  4. Öffnen Sie in der Cloud Storage-Konsole die Seite Storage-Browser:

    Zum Cloud Storage-Browser

  5. Wählen Sie einen der zuvor erstellten Ziel-Buckets aus und überprüfen Sie die hochgeladenen Dateien. Überprüfen Sie die anderen von Ihnen erstellten Buckets ebenfalls.

Bereinigen

Nachdem Sie die Anleitung abgeschlossen haben, können Sie die erstellten Ressourcen bereinigen, damit sie keine Kontingente mehr nutzen und keine Gebühren mehr anfallen. In den folgenden Abschnitten erfahren Sie, wie Sie diese Ressourcen löschen oder deaktivieren.

Projekt löschen

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Nächste Schritte