In dieser Anleitung erfahren Sie, wie Sie Daten beim Abfragen von Tabellen aus BigQuery mithilfe von Remote-Funktionen und Sensitive Data Protection de-identifizieren. Dieser Ansatz ist nützlich, um Echtzeit-Abfrageergebnisse zu bereinigen und den Zugriff auf Daten zu minimieren, die für die Analyse nicht erforderlich sind.
In diesem Tutorial wird die Verschlüsselung und Entschlüsselung von Daten bei der Übertragung veranschaulicht. Informationen zur Verwendung von Sensitive Data Protection zum Verschlüsseln inaktiver Daten finden Sie unter De-Identifikation sensibler Daten im Speicher.
Diese Anleitung richtet sich an eine Zielgruppe, deren Aufgaben in den Bereichen Datensicherheit, Datenverarbeitung oder Datenanalyse liegen. In dieser Anleitung wird davon ausgegangen, dass Sie mit Datenverarbeitung und Datenschutz vertraut sind, ohne Experte darin zu sein. Außerdem wird davon ausgegangen, dass Sie grundlegende Cloud Shell- und SQL-Scripts ausführen können.
In dieser Anleitung werden SQL-basierte Funktionen, BigQuery, Remote-Funktionen, Cloud Run und Sensitive Data Protection verwendet.
Mit De-Identifikationstechniken wie der Verschlüsselung werden sensible Rohdaten in Ihren Daten verschleiert. Mit diesen Techniken können Sie Ihre Daten weiterhin zusammenführen oder analysieren. Durch die Verschleierung der sensiblen Rohdaten reduzieren Sie gleichzeitig das mit der Verarbeitung der Daten verbundene Risiko.
Unternehmen haben möglicherweise Richtlinien oder regulatorische Anforderungen, nach denen nur de-identifizierte Daten in ihrem Cloud Data Warehouse gespeichert werden dürfen. Außerdem müssen sie die de-identifizierten Daten möglicherweise effizient re-identifizieren, um Berichte zu erstellen.
Wenn Sie das Risiko der Verarbeitung großer Mengen sensibler Daten minimieren möchten, können Sie mithilfe einer automatisierten Pipeline zur Datentransformation de-identifizierte Datasets erstellen. In dieser Anleitung erfahren Sie, wie Sie diese Pipeline durch eine SQL-Abfrage ersetzen, die nur die Re-Identifizierung oder sowohl die De-Identifikation als auch die Re-Identifizierung durchführt. In dieser Anleitung erfahren Sie, wie Sie sowohl die De-Identifikation als auch die Re-Identifikation mithilfe eines zentralen Dienstes durchführen, der in Cloud Run gehostet wird. Sie können diesen zentralen Dienst in der gesamten Organisation verwenden, ohne einen Dataflow-Cluster einrichten oder verwalten zu müssen.
Sensitive Data Protection kann Datasets klassifizieren, indem die Daten auf sensible Informationen geprüft werden. Sensitive Data Protection bietet mehr als 200 integrierte Klassifikatoren, die als infoTypes bezeichnet werden. Für die De-Identifizierung von Daten mit der Cloud Data Loss Prevention API sind Datenpipelines und Anwendungen erforderlich. In dieser Anleitung wird beschrieben, wie Ihre Datenanalysten, Data Engineers oder Data Scientists dasselbe Ergebnis mit SQL-Funktionen erzielen können.
Am Ende dieser Anleitung können Sie eine Abfrage ähnlich der folgenden schreiben. Die sensiblen Daten werden im Abfrageergebnis de-identifiziert und re-identifiziert.
SELECT
pii_column,
fns.dlp_freetext_encrypt(pii_column) AS dlp_encrypted,
fns.dlp_freetext_decrypt(fns.dlp_freetext_encrypt(pii_column)) AS dlp_decrypted
FROM
UNNEST(
[
'My name is John Doe. My email is john.doe@example.com']) AS pii_column
Die Ausgabe sieht etwa so aus:
| Zeile | pii_column |
dlp_encrypted |
dlp_decrypted |
|---|---|---|---|
1 |
My name is John Doe. My email is john.doe@example.com |
My name is John Doe. My email is
BQ_TRF_EMAIL(40):AQy6lGvwKR+AiiRqJpEr+nBzZUzOcjXkXamUugU= |
My name is John Doe. My email is john.doe@example.com |
Architektur
Das folgende Diagramm zeigt, wie in dieser Anleitung BigQuery als Data Warehouse, Sensitive Data Protection zum De-Identifizieren und Re-Identifizieren von Daten und Cloud Run zum Hosten der Remote-Funktionen verwendet werden.
Ziele
- Stellen Sie einen Cloud Run-Dienst bereit, der die De-Identifikationsfunktionen von Sensitive Data Protection bietet.
- BigQuery-Remote-Funktionen erstellen, die De-Identifikationsvorlagen für Sensitive Data Protection verwenden
- Datenverschlüsselung in BigQuery mit einer SQL-Abfrage überprüfen
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.
Hinweis
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie einfach 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.
-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
Google Cloud Projekt erstellen oder auswählen
Erforderliche Rollen zum Auswählen oder Erstellen eines Projekts
- Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
-
Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Project Creator“ (
roles/resourcemanager.projectCreator), die die Berechtigungresourcemanager.projects.createenthält. Informationen zum Zuweisen von Rollen
-
Erstellen Sie ein Projekt in Google Cloud :
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch einen Namen für das Projekt in Google Cloud , das Sie erstellen. -
Wählen Sie das von Ihnen erstellte Projekt in Google Cloud aus:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch Ihren Google Cloud Projektnamen.
-
Prüfen Sie, ob die Abrechnung für Ihr Google Cloud -Projekt aktiviert ist.
Aktivieren Sie die APIs für Artifact Registry, BigQuery, BigQuery Connection API, Cloud Build, Cloud Data Loss Prevention API, Cloud Key Management Service, Cloud Run, Container Registry, Identity and Access Management, Resource Manager, Secret Manager und Service Usage, falls sie noch nicht aktiviert sind:
Erforderliche Rollen zum Aktivieren von APIs
Zum Aktivieren von APIs benötigen Sie die Berechtigung
serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Inhaberrolle (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollengcloud services enable artifactregistry.googleapis.com
bigquery.googleapis.com bigqueryconnection.googleapis.com cloudbuild.googleapis.com cloudkms.googleapis.com cloudresourcemanager.googleapis.com containerregistry.googleapis.com dlp.googleapis.com iam.googleapis.com run.googleapis.com secretmanager.googleapis.com serviceusage.googleapis.com -
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
Google Cloud Projekt erstellen oder auswählen
Erforderliche Rollen zum Auswählen oder Erstellen eines Projekts
- Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
-
Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Project Creator“ (
roles/resourcemanager.projectCreator), die die Berechtigungresourcemanager.projects.createenthält. Informationen zum Zuweisen von Rollen
-
Erstellen Sie ein Projekt in Google Cloud :
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch einen Namen für das Projekt in Google Cloud , das Sie erstellen. -
Wählen Sie das von Ihnen erstellte Projekt in Google Cloud aus:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch Ihren Google Cloud Projektnamen.
-
Prüfen Sie, ob die Abrechnung für Ihr Google Cloud -Projekt aktiviert ist.
Aktivieren Sie die APIs für Artifact Registry, BigQuery, BigQuery Connection API, Cloud Build, Cloud Data Loss Prevention API, Cloud Key Management Service, Cloud Run, Container Registry, Identity and Access Management, Resource Manager, Secret Manager und Service Usage, falls sie noch nicht aktiviert sind:
Erforderliche Rollen zum Aktivieren von APIs
Zum Aktivieren von APIs benötigen Sie die Berechtigung
serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Inhaberrolle (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollengcloud services enable artifactregistry.googleapis.com
bigquery.googleapis.com bigqueryconnection.googleapis.com cloudbuild.googleapis.com cloudkms.googleapis.com cloudresourcemanager.googleapis.com containerregistry.googleapis.com dlp.googleapis.com iam.googleapis.com run.googleapis.com secretmanager.googleapis.com serviceusage.googleapis.com
Umgebung vorbereiten
Klonen Sie in Cloud Shell das Quell-Repository:
git clone https://github.com/GoogleCloudPlatform/bigquery-dlp-remote-function.gitWechseln Sie in das Verzeichnis für diese Anleitung:
cd bigquery-dlp-remote-function/
Ressourcen mithilfe eines Skripts bereitstellen
Wenn Sie das Bereitstellungsskript ohne Anpassungen verwenden möchten, führen Sie die folgenden Schritte aus. Wenn Sie die Bereitstellung anpassen möchten, überspringen Sie diesen Abschnitt und lesen Sie stattdessen Benutzerdefinierte Lösung manuell bereitstellen.
Legen Sie die Werte für die Felder PROJECT_ID und REGION fest:
# Project ID of the Google Cloud project PROJECT_ID="PROJECT_ID" # Google Cloud region to use for deployment of resources # Refer to https://cloud.google.com/about/locations REGION="REGION"Ersetzen Sie Folgendes:
- PROJECT_ID: die ID des Projekts für diese Anleitung.
- REGION: Die Region, in der Sie die Daten speichern und verarbeiten möchten, z. B.
us-west1. Geben Sie eine Region und keine Zone an.
Optional: Wenn Sie eine Inspektionsvorlage verwenden möchten, setzen Sie das Feld DLP_INSPECT_TEMPLATE auf den vollständigen Ressourcennamen dieser Inspektionsvorlage. Die Vorlage für die Überprüfung muss sich in derselben Region befinden, die Sie im Feld REGION festgelegt haben.
Achten Sie darauf, dass die Inspektionsvorlage alle infoTypes enthält, die in der De-Identifikationsvorlage verwendet werden.
Wenn Sie diesen Schritt überspringen, prüft Sensitive Data Protection die Daten mit einem systemstandardmäßigen Satz von infoType-Detektoren.
DLP_INSPECT_TEMPLATE="DLP_INSPECT_TEMPLATE"Ersetzen Sie DLP_INSPECT_TEMPLATE durch den vollständigen Ressourcennamen Ihrer Inspektionsvorlage, z. B.
projects/PROJECT_ID/locations/REGION/inspectTemplates/TEMPLATE_ID.Authentifizieren Sie sich mit Standardanmeldedaten für Anwendungen:
gcloud auth application-default login && \ gcloud auth application-default set-quota-project "${PROJECT_ID}"Initialisieren Sie das Terraform-Skript und führen Sie es aus, um alle Ressourcen zu erstellen:
terraform init && \ terraform apply \ -var "project_id=${PROJECT_ID}" \ -var "region=${REGION}" \ -var "dlp_inspect_template_full_path=${DLP_INSPECT_TEMPLATE}"Das System zeigt alle Aktionen an, die von Terraform ausgeführt werden. Prüfen Sie die Aktionen. Geben Sie
yesein, um fortzufahren.Prüfen Sie, ob Daten verschlüsselt und entschlüsselt werden können.
Benutzerdefinierte Lösung manuell bereitstellen
Wenn Sie die Bereitstellung anpassen möchten, folgen Sie diesen Schritten. Wenn Sie das bereitgestellte Bereitstellungsskript ohne Anpassungen oder manuelle Schritte verwenden möchten, lesen Sie stattdessen Ressourcen mithilfe eines Skripts bereitstellen.
Umgebungsvariablen festlegen
Legen Sie in Cloud Shell die folgenden Umgebungsvariablen fest:
PROJECT_ID="PROJECT_ID"
REGION="REGION"
CLOUD_RUN_SERVICE_NAME="CLOUD-RUN-SERVICE-NAME"
ARTIFACT_REGISTRY_NAME="ARTIFACT-DOCKER-REGISTRY-NAME"
Ersetzen Sie Folgendes:
- PROJECT_ID: die ID des Projekts für diese Anleitung.
- REGION: die Region, in der Sie die Daten speichern und verarbeiten möchten, z. B.
us-west1. Geben Sie eine Region und keine Zone an. - CLOUD_RUN_SERVICE_NAME: ein Name für den neuen Cloud Run-Dienst. Sie können bis zu 15 Zeichen eingeben.
- ARTIFACT_REGISTRY_NAME: ein Name für die neue Artifact Registry zum Speichern von Container-Images.
Dienstkonto für den Cloud Run-Dienst erstellen
Erstellen Sie ein Dienstkonto:
RUNNER_SA_NAME="${CLOUD_RUN_SERVICE_NAME}-runner" RUNNER_SA_EMAIL="${RUNNER_SA_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" gcloud iam service-accounts create "${RUNNER_SA_NAME}" \ --project="${PROJECT_ID}" \ --description "Runner for BigQuery remote function execution" \ --display-name "${RUNNER_SA_NAME}"Weisen Sie die erforderlichen Rollen für Sensitive Data Protection zu.
Weisen Sie die Rolle DLP-Leser zu:
gcloud projects add-iam-policy-binding "${PROJECT_ID}" \ --member="serviceAccount:${RUNNER_SA_EMAIL}" \ --role='roles/dlp.reader'Weisen Sie die Rolle DLP-Nutzer zu:
gcloud projects add-iam-policy-binding "${PROJECT_ID}" \ --member="serviceAccount:${RUNNER_SA_EMAIL}" \ --role='roles/dlp.user'
Cloud Run-Dienst bereitstellen
So stellen Sie die Anwendung bereit:
Optional: Sie können die Standardwerte ändern, indem Sie die Umgebungsvariablen ändern oder die Datei
src/main/resources/aes.propertiesaktualisieren.Erstellen Sie ein Artifact Registry-Repository, um das Container-Image der Funktion zu speichern:
gcloud artifacts repositories create "${ARTIFACT_REGISTRY_NAME}" \ --repository-format=docker \ --location="${REGION}" \ --description="Container images repository for BigQuery Functions" \ --project="${PROJECT_ID}"Kompilieren Sie die Anwendung und stellen Sie sie mit Cloud Build in Cloud Run bereit:
gcloud builds submit \ --project ${PROJECT_ID} \ --substitutions=_CONTAINER_IMAGE_NAME="${REGION}-docker.pkg.dev/${PROJECT_ID}/${ARTIFACT_REGISTRY_NAME}/${CLOUD_RUN_SERVICE_NAME}:latest" \ --machine-type=e2-highcpu-8 && \ gcloud beta run deploy ${CLOUD_RUN_SERVICE_NAME} \ --image="${REGION}-docker.pkg.dev/${PROJECT_ID}/${ARTIFACT_REGISTRY_NAME}/${CLOUD_RUN_SERVICE_NAME}:latest" \ --execution-environment=gen2 \ --platform=managed \ --region="${REGION}" \ --service-account="${RUNNER_SA_EMAIL}" \ --cpu=4 \ --memory=8Gi \ --no-allow-unauthenticated \ --project ${PROJECT_ID} \ --update-env-vars=PROJECT_ID=${PROJECT_ID}Das Ende der Ausgabe sieht in etwa so aus:
ID: 403a276e-b0c6-41f3-aaed-f0ec9f9cedba CREATE_TIME: 2023-02-04T01:52:15+00:00 DURATION: 1M59S SOURCE: gs://PROJECT_ID_cloudbuild/source/1675475534.124241-9c43787f64e04cfd9e4a1979d3324fe0.tgz IMAGES: gcr.io/PROJECT_ID/CLOUD_RUN_SERVICE_NAME (+1 more) STATUS: SUCCESS Deploying container to Cloud Run service [CLOUD_RUN_SERVICE_NAME] in project [PROJECT_ID] region [REGION] OK Deploying new service... Done. OK Creating Revision... Revision deployment finished. Checking container heal th. OK Routing traffic... Done. Service [CLOUD_RUN_SERVICE_NAME] revision [CLOUD_RUN_SERVICE_NAME-00001-tat] has been deployed and is serving 100 percent of traffic. Service URL: https://CLOUD_RUN_SERVICE_NAME-j2bpjx2xoq-uw.a.run.app
Rufen Sie die Cloud Run-URL ab und speichern Sie sie in Ihren Umgebungsvariablen:
RUN_URL="$(gcloud run services describe ${CLOUD_RUN_SERVICE_NAME} --region \ ${REGION} --project ${PROJECT_ID} --format="get(status.address.url)")"
De-Identifikationsvorlage für Sensitive Data Protection erstellen
Mit De-Identifikationsvorlagen für Sensitive Data Protection können Sie Ihre De-Identifikationseinstellungen speichern, um sie für mehrere Vorgänge und Datenquellen wiederzuverwenden.
In diesem Schritt wird die Datei sample_dlp_deid_config.json verwendet, die eine Beispielvorlage für die De-Identifikation enthält.
Erstellen Sie die Vorlage in Cloud Shell:
DEID_TEMPLATE=$(curl -X POST \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: ${PROJECT_ID}" \
--data-binary "@sample_dlp_deid_config.json" \
"https://dlp.googleapis.com/v2/projects/${PROJECT_ID}/locations/${REGION}/deidentifyTemplates")
DEID_TEMPLATE_NAME="$(echo ${DEID_TEMPLATE} | jq -r '.name')"
Google empfiehlt, einen verpackten Schlüssel zu verwenden, wenn Sie die Sensitive Data Protection-Verschlüsselung für tatsächliche sensible Arbeitslasten ausführen. Zu Demonstrationszwecken wird in dieser Anleitung ein unverpackter Schlüssel verwendet. Weitere Informationen zum Erstellen eines verpackten Schlüssels und zu seiner Verwendung in De-Identifikations- und Re-Identifikationsanfragen finden Sie unter Sensible Daten de-identifizieren und re-identifizieren.
BigQuery-Verbindung zu Cloud Run erstellen
Erstellen Sie in Cloud Shell eine BigQuery-Verbindung für den Zugriff auf Cloud Run:
bq mk --connection \ --display_name='External transform function connection' \ --connection_type=CLOUD_RESOURCE \ --project_id="${PROJECT_ID}" \ --location="${REGION}" \ ext-${CLOUD_RUN_SERVICE_NAME}Suchen Sie das für die Verbindung verwendete BigQuery-Dienstkonto und legen Sie es fest:
CONNECTION_SA="$(bq --project_id ${PROJECT_ID} --format json show \ --connection ${PROJECT_ID}.${REGION}.ext-${CLOUD_RUN_SERVICE_NAME} \ | jq -r '.cloudResource.serviceAccountId')"Weisen Sie dem Dienstkonto die Rolle Cloud Run-Aufrufer zu:
gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${CONNECTION_SA}" \ --role='roles/run.invoker'
BigQuery-Dataset für Remote-Funktionen erstellen
Definieren Sie das BigQuery-Dataset für die Remote-Funktionen:
BQ_FUNCTION_DATASET="fns"Erstellen Sie das Dataset, falls es noch nicht vorhanden ist:
bq mk --dataset \ --project_id ${PROJECT_ID} \ --location ${REGION} \ ${BQ_FUNCTION_DATASET}
Remote-Funktionen für Sensitive Data Protection erstellen
Optional: Wenn Sie eine Inspektionsvorlage verwenden möchten, setzen Sie die Variable DLP_INSPECT_TEMPLATE auf den vollständigen Ressourcennamen dieser Inspektionsvorlage. Die Vorlage für die Überprüfung muss sich in derselben Region befinden, die Sie in der Umgebungsvariable REGION festgelegt haben.
Achten Sie darauf, dass die Inspektionsvorlage alle infoTypes enthält, die in der De-Identifikationsvorlage verwendet werden.
Wenn Sie diesen Schritt überspringen, prüft Sensitive Data Protection die Daten mit einem systemstandardmäßigen Satz von infoType-Detektoren.
DLP_INSPECT_TEMPLATE="DLP_INSPECT_TEMPLATE"Ersetzen Sie DLP_INSPECT_TEMPLATE durch den vollständigen Ressourcennamen Ihrer Prüfvorlage, z. B.
projects/PROJECT_ID/locations/REGION/inspectTemplates/TEMPLATE_ID.Erstellen Sie die De-Identifikationsfunktion für Sensitive Data Protection:
bq query --project_id ${PROJECT_ID} \ --use_legacy_sql=false \ "CREATE OR REPLACE FUNCTION ${BQ_FUNCTION_DATASET}.dlp_freetext_encrypt(v STRING) RETURNS STRING REMOTE WITH CONNECTION \`${PROJECT_ID}.${REGION}.ext-${CLOUD_RUN_SERVICE_NAME}\` OPTIONS (endpoint = '${RUN_URL}', user_defined_context = [('mode', 'deidentify'),('algo','dlp'),('dlp-deid-template','${DEID_TEMPLATE_NAME}'),('dlp-inspect-template', '${DLP_INSPECT_TEMPLATE}')]);"Funktion zur Re-Identifizierung für Sensitive Data Protection erstellen:
bq query --project_id ${PROJECT_ID} \ --use_legacy_sql=false \ "CREATE OR REPLACE FUNCTION ${BQ_FUNCTION_DATASET}.dlp_freetext_decrypt(v STRING) RETURNS STRING REMOTE WITH CONNECTION \`${PROJECT_ID}.${REGION}.ext-${CLOUD_RUN_SERVICE_NAME}\` OPTIONS (endpoint = '${RUN_URL}', user_defined_context = [('mode', 'reidentify'),('algo','dlp'),('dlp-deid-template','${DEID_TEMPLATE_NAME}'),('dlp-inspect-template', '${DLP_INSPECT_TEMPLATE}')]);"
De-Identifikation und Re-Identifikation prüfen
So prüfen Sie, ob die Lösung Daten de-identifiziert und re-identifiziert:
Console
Wechseln Sie in der Google Cloud Console zu BigQuery.
BigQuery wird in dem Projekt geöffnet, auf das zuletzt zugegriffen wurde.
Klicken Sie zum Öffnen eines Abfrageeditors auf Neue Abfrage erstellen.
Geben Sie die folgende Abfrage ein:
SELECT pii_column, fns.dlp_freetext_encrypt(pii_column) AS dlp_encrypted, fns.dlp_freetext_decrypt(fns.dlp_freetext_encrypt(pii_column)) AS dlp_decrypted FROM UNNEST( [ 'My name is John Doe. My email is john.doe@example.com', 'Some non PII data', '650-253-0000', 'some script with simple number 1234']) AS pii_columnKlicken Sie auf Ausführen.
bq
Legen Sie die Umgebungsvariable für das Dataset fest:
BQ_FUNCTION_DATASET="fns"Führen Sie die Abfrage aus:
bq query --project_id ${PROJECT_ID} \ --use_legacy_sql=false \ " SELECT pii_column, ${BQ_FUNCTION_DATASET}.dlp_freetext_encrypt(pii_column) AS dlp_encrypted, ${BQ_FUNCTION_DATASET}.dlp_freetext_decrypt(${BQ_FUNCTION_DATASET}.dlp_freetext_encrypt(pii_column)) AS dlp_decrypted FROM UNNEST( [ 'My name is John Doe. My email is john.doe@example.com', 'Some non PII data', '650-253-0000', 'some script with simple number 1234']) AS pii_column"
Die Ausgabe sieht etwa so aus:
| Zeile | pii_column |
dlp_encrypted |
dlp_decrypted |
|---|---|---|---|
1 |
My name is John Doe. My email is john.doe@example.com |
My name is John Doe. My email is
BQ_TRF_EMAIL(40):AQy6lGvwKR+AiiRqJpEr+nBzZUzOcjXkXamUugU= |
My name is John Doe. My email is john.doe@example.com |
2 |
Some non PII data |
Some non PII data |
Some non PII data |
3 |
650-253-0000 |
BQ_TRF_PH(40):AeKpGU5KBXaTyecCun7dv1hHht5w5Q2PTpvkRC4= |
650-253-0000 |
4 |
some script with simple number 1234 |
some script with simple number 1234 |
some script with simple number 1234 |
Hinweise
Beachten Sie Folgendes, wenn Sie diese Anleitung an Ihre Anforderungen anpassen:
- Die De-Identifizierung und Re-Identifizierung werden über einen Cloud Run-Dienst verarbeitet. Stellen Sie die Cloud Run-CPU und den Arbeitsspeicher entsprechend Ihren Rechenanforderungen bereit. Weitere Informationen finden Sie unter CPU-Limits und Arbeitsspeicherlimits für Cloud Run.
- Beachten Sie bei der Verwendung von Sensitive Data Protection die Nutzungslimits und die Empfehlungen zur Kostenkontrolle.
Um die Kosten und den Gesamtverbrauch des Kontingents für Sensitive Data Protection zu kontrollieren, sollten Sie die Elemente, die Sie über die Remote-Funktion von Sensitive Data Protection übergeben, auf maximal 10.000 beschränken. Die Lösung kann die Anfragen automatisch im Batch verarbeiten, um die folgenden Anfragelimits für Sensitive Data Protection zu berücksichtigen:
- Maximale Anzahl von Tabellenwerten: 50.000
- Standardmäßige Größenbeschränkung für Anfragen: 0,5 MB
Die endgültigen und gefilterten Ergebnisse der Abfrage sollten an die Sensitive Data Protection-Funktion und nicht an die Quelle übergeben werden.
Bei dieser Lösung ist jeder Wert in der Spalte
pii_columnein Element, z. B.My name is John Doe. My email is john.doe@example.com.Achten Sie darauf, dass sich Ihr BigQuery-Dataset, Ihr Cloud Run-Dienst und Ihre Sensitive Data Protection-Vorlagen in derselben Cloud-Region befinden.
Bereinigen
Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.
Google Cloud -Projekt löschen:
gcloud projects delete PROJECT_ID
Nächste Schritte
- Weitere Informationen zu BigQuery-Remote-Funktionen
- Sensible Daten de-identifizieren
- Anhand eines Beispiels wird gezeigt, wie Sie einen verpackten Schlüssel erstellen, Inhalte tokenisieren und tokenisierte Inhalte wieder identifizieren.
- Erfahren Sie, wie Sie PII in umfangreichen Datasets mit Sensitive Data Protection de-identifizieren und re-identifizieren.
- Weitere Informationen zu Cloud KMS.