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
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
Enable the Cloud Functions, Cloud Storage,Cloud Build Cloud Build, and Cloud Data Loss Prevention APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
Enable the Cloud Functions, Cloud Storage,Cloud Build Cloud Build, and Cloud Data Loss Prevention 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
Öffnen Sie in der Google Cloud Console die Seite "IAM & Verwaltung" und wählen Sie das erstellte Projekt aus:
Suchen Sie das App Engine-Dienstkonto. Dieses Konto hat das Format
[PROJECT_ID]@appspot.gserviceaccount.com
. Ersetzen Sie[PROJECT_ID]
durch Ihre Projekt-ID.Wählen Sie das Bearbeitungssymbol edit neben dem Dienstkonto aus.
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)
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.
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"}}'
--compressedErsetzen Sie
PROJECT_ID
durch Ihre Projekt-ID.Öffnen Sie in der Google Cloud Console die Seite IAM & Verwaltung und wählen Sie das erstellte Projekt aus:
Klicken Sie auf das Kästchen „Von Google bereitgestellte Rollenzuweisungen einschließen“.
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.Wählen Sie das Bearbeitungssymbol edit neben dem Dienstkonto aus.
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.
Die Zahlen in dieser Pipeline entsprechen folgenden Schritten:
- Hochladen der Dateien in Cloud Storage
- Aufrufen einer Funktion von Cloud Functions
- Überprüfen und Klassifizieren der Daten durch Cloud DLP
- 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
Öffnen Sie in der Google Cloud Console den Cloud Storage-Browser.
Klicken Sie auf Bucket erstellen.
Geben Sie im Textfeld Bucket-Name den Namen ein, den Sie für
[YOUR_QUARANTINE_BUCKET]
ausgewählt haben, und klicken Sie auf Erstellen.Wiederholen Sie diesen Vorgang für die Buckets
[YOUR_SENSITIVE_DATA_BUCKET]
und[YOUR_NON_SENSITIVE_DATA_BUCKET]
.
gcloud
Öffnen Sie Cloud Shell:
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
Seite Pub/Sub-Themen öffnen:
Klicken Sie auf Thema erstellen.
Geben Sie in das Textfeld einen Themennamen ein.
Klicken Sie auf das Kästchen Standardabo hinzufügen.
Klicken Sie auf Thema erstellen.
gcloud
Öffnen Sie Cloud Shell:
Erstellen Sie ein Thema und ersetzen Sie dabei
[PUB/SUB_TOPIC]
durch einen Namen Ihrer Wahl:gcloud pubsub topics create [PUB/SUB_TOPIC]
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
Öffnen Sie die Seite Cloud Functions – Übersicht:
Wählen Sie das Projekt aus, für das Sie Cloud Functions aktiviert haben.
Klicken Sie auf Funktion erstellen.
Ersetzen Sie im Textfeld Funktionsname den Standardnamen durch
create_DLP_job
.Wählen Sie im Feld Trigger die Option Cloud Storage aus.
Wählen Sie im Feld Ereignistyp die Option Finalisieren/Erstellen aus.
Klicken Sie im Feld Bucket auf Durchsuchen, markieren Sie den Quarantäne-Bucket in der Drop-down-Liste und klicken Sie auf Auswählen.
Klicken Sie auf Speichern.
Klicken Sie auf Weiter.
Wählen Sie unter Laufzeit die Option Python 3.7 aus.
Setzen Sie unter Quellcode ein Häkchen bei Inline-Editor.
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.
Ersetzen Sie im Textfeld Einstiegspunkt den Standardtext durch Folgendes:
create_DLP_job
.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.
Klicken Sie auf Bereitstellen.
Mit einem grünen Häkchen neben der Funktion wird die erfolgreiche Bereitstellung angezeigt.
gcloud
Öffnen Sie eine Cloud Shell-Sitzung und klonen Sie das GitHub-Repository, das den Code und einige Beispieldatendateien enthält:
Passen Sie die Verzeichnisse gemäß dem Ordner an, in den das Repository geklont wurde:
cd ~dlp-cloud-functions-tutorials/gcs-dlp-classification-python/
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.
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
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
Öffnen Sie die Seite Cloud Functions – Übersicht:
Wählen Sie das Projekt aus, für das Sie Cloud Functions aktiviert haben.
Klicken Sie auf Funktion erstellen.
Ersetzen Sie im Textfeld Funktionsname den Standardnamen durch
resolve_DLP
.Wählen Sie im Feld Trigger die Option Pub/Sub aus.
Suchen Sie im Feld Cloud Pub/Sub-Thema auswählen nach dem Pub/Sub-Thema, das Sie zuvor erstellt haben.
Klicken Sie auf Speichern.
Klicken Sie auf Weiter.
Wählen Sie unter Laufzeit die Option Python 3.7 aus.
Wählen Sie unter Quellcode Inline-Editor aus.
Ersetzen Sie im Textfeld Einstiegspunkt den Standardtext durch
resolve_DLP
.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.
Klicken Sie auf Bereitstellen.
Mit einem grünen Häkchen neben der Funktion wird die erfolgreiche Bereitstellung angezeigt.
gcloud
Öffnen Sie eine neue oder vorhandene Cloud Shell-Sitzung und klonen Sie das GitHub-Repository, das den Code und einige Beispieldatendateien enthält:
Wechseln Sie in das Verzeichnis mit dem Python-Code:
cd gcs-dlp-classification-python/
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.
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]
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.
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:
Passen Sie die Ordner gemäß dem Speicherort der Beispieldatendateien an:
cd ~/dlp-cloud-functions-tutorials/sample_data/
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.
Öffnen Sie in der Cloud Storage-Konsole die Seite Storage-Browser:
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
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Nächste Schritte
- Legen Sie verschiedene gültige Datentypwerte für
INFO_TYPES
fest. - Informationen zum Prüfen von Speicher und Datenbanken auf sensible Daten mithilfe von Cloud DLP lesen
- Erfahren Sie mehr über Funktionen von Cloud Functions.
- Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center