Kundenverwaltete Cloud KMS-Schlüssel
Standardmäßig verschlüsselt BigQuery inaktive Daten. Diese Standardverschlüsselung wird von BigQuery vorgenommen und verwaltet. Zusätzliche Maßnahmen Ihrerseits sind nicht erforderlich. Zuerst werden Daten in einer BigQuery-Tabelle mit einem Datenverschlüsselungsschlüssel verschlüsselt. Dann werden diese Datenverschlüsselungsschlüssel mit Schlüsselverschlüsselungsschlüsseln verschlüsselt, was als Umschlagverschlüsselung bezeichnet wird. Schlüsselverschlüsselungsschlüssel verschlüsseln nicht direkt Ihre Daten, sondern die Datenverschlüsselungsschlüssel, mit denen Google Ihre Daten verschlüsselt.
Wenn Sie die Verschlüsselung selbst steuern möchten, können Sie Kundenverwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) für BigQuery verwenden. Statt den Besitz und die Verwaltung Google zu überlassen, können Sie so auch selbst über Cloud KMS die Schlüsselverschlüsselungsschlüssel, die Ihre Daten schützen, steuern und verwalten. In diesem Dokument finden Sie Details zum manuellen Erstellen von Cloud KMS-Schlüsseln für BigQuery.
Weitere Informationen zu Verschlüsselungsoptionen Google Cloud Weitere Informationen zu CMEK einschließlich der Vorteile und Einschränkungen finden Sie unter Kundenverwaltete Verschlüsselungsschlüssel.
Hinweis
Alle Datenassets, die sich im verwalteten BigQuery-Speicher befinden, unterstützen CMEK. Wenn Sie jedoch auch Daten abfragen, die in einer externen Datenquelle wie Cloud Storage mit CMEK-verschlüsselten Daten gespeichert sind, wird die Datenverschlüsselung durch Cloud Storage verwaltet. BigLake-Tabellen unterstützen beispielsweise mit CMEK verschlüsselte Daten in Cloud Storage.
BigQuery- und BigLake-Tabellen unterstützen keine CSEKs (Customer-Supplied Encryption Keys, vom Kunden bereitgestellte Verschlüsselungsschlüssel).
Überlegen Sie sich, ob Sie BigQuery und Cloud KMS im selben Google Cloud -Projekt oder in verschiedenen Projekten ausführen möchten. Zu Beispielzwecken wird in diesem Dokument die folgende Konvention verwendet:
PROJECT_ID: die Projekt-ID des Projekts, in dem BigQuery ausgeführt wirdPROJECT_NUMBER: die Projektnummer des Projekts, in dem BigQuery ausgeführt wirdKMS_PROJECT_ID: die Projekt-ID des Projekts, in dem Cloud KMS ausgeführt wird (auch wenn es sich um dasselbe Projekt handelt, in dem BigQuery ausgeführt wird).
BigQuery ist in neuen Projekten automatisch aktiviert. Wenn Sie ein bereits bestehendes Projekt verwenden, um BigQuery auszuführen, müssen Sie die BigQuery-API aktivieren.
Aktivieren Sie die Cloud Key Management Service API für das Google Cloud -Projekt, in dem Cloud KMS ausgeführt wird.
Ein Entschlüsselungsaufruf wird mit Cloud KMS einmal pro Abfrage an eine CMEK-verschlüsselte Tabelle durchgeführt. Weitere Informationen finden Sie unter Cloud KMS – Preise.
Verschlüsselungsvorgabe
Zum Schutz Ihrer Daten in BigQuery verwendet Cloud KMS AES-256-Schlüssel. Diese Schlüssel dienen in BigQuery als Schlüsselverschlüsselungsschlüssel, mit denen die Datenverschlüsselungsschlüssel verschlüsselt werden, die wiederum Ihre Daten verschlüsseln.
Manuelle oder automatische Schlüsselerstellung
Sie können Ihre CMEK-Schlüssel entweder manuell erstellen oder Cloud KMS Autokey (Vorschau) verwenden. Autokey vereinfacht das Erstellen und Verwalten von CMEK-Schlüsseln durch die Automatisierung der Bereitstellung und Zuweisung. Mit Autokey müssen Sie keine Schlüsselbunde, Schlüssel und Dienstkonten im Voraus bereitstellen. Stattdessen werden sie bei der Erstellung von BigQuery-Ressourcen auf Anfrage generiert. Weitere Informationen finden Sie in der Übersicht über Autokey.
Schlüsselbund und Schlüssel manuell erstellen
Erstellen Sie für das Google Cloud -Projekt, in dem Cloud KMS ausgeführt wird, einen Schlüsselbund und einen Schlüssel, wie in Schlüsselbunde und Schlüssel erstellen beschrieben. Erstellen Sie den Schlüsselbund an einem Standort, der dem Standort Ihres BigQuery-Datasets entspricht:
Für jedes multiregionale Dataset sollte ein multiregionaler Schlüsselbund an einem übereinstimmenden Speicherort verwendet werden. Beispiel: Ein Dataset in der Region
USsollte mit einem Schlüsselbund aus der Regionusund ein Dataset in der RegionEUmit einem Schlüsselbund aus der Regioneuropegeschützt werden.Für regionale Datasets sollten übereinstimmende regionale Schlüssel verwendet werden. Beispiel: Ein Dataset in der Region
asia-northeast1sollte mit einem Schlüsselbund aus der Regionasia-northeast1geschützt werden.Sie können die Region
globalnicht verwenden, wenn Sie CMEK für BigQuery in der Google Cloud Console konfigurieren. Sie können jedoch die Regionglobalverwenden, wenn Sie CMEK für BigQuery mit dem bq-Befehlszeilentool oder GoogleSQL konfigurieren.
Weitere Informationen zu den unterstützten Standorten für BigQuery und Cloud KMS finden Sie unter Cloud-Standorte.
Berechtigungen zum Verschlüsseln und Entschlüsseln erteilen
Gewähren Sie dem BigQuery-Dienstkonto die Berechtigung zum Verschlüsseln und Entschlüsseln mit diesem Schlüssel, um Ihre BigQuery-Daten mit einem CMEK-Schlüssel zu schützen. Die Rolle Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler gewährt diese Berechtigung.
Prüfen Sie, ob Ihr Dienstkonto erstellt wurde, und ermitteln Sie dann mithilfe derGoogle Cloud -Konsole die BigQuery-Dienstkonto-ID. Als Nächstes gewähren Sie dem Dienstkonto die entsprechende Rolle zum Verschlüsseln und Entschlüsseln mithilfe von Cloud KMS.
Erstellen eines Dienstkontos auslösen
Ihr BigQuery-Dienstkonto wird nicht automatisch erstellt, wenn Sie ein Projekt erstellen. Um das Erstellen Ihres Dienstkontos auszulösen, geben Sie einen Befehl ein, der das Konto verwendet, z. B. den Befehl bq show --encryption_service_account, oder rufen Sie die API-Methode projects.getServiceAccount auf. Beispiel:
bq show --encryption_service_account --project_id=PROJECT_ID
Dienstkonto-ID ermitteln
Die BigQuery-Dienstkonto-ID hat die folgende Form:
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
Die folgenden Methoden zeigen, wie Sie die BigQuery-Dienstkonto-ID für Ihr Projekt ermitteln.
Console
Öffnen Sie in der Google Cloud Console die Seite Dashboard.
Klicken Sie oben auf der Seite auf die Drop-down-Liste Auswählen aus. Wählen Sie im angezeigten Fenster Auswählen aus Ihr Projekt aus.
Die Projekt-ID und die Projektnummer werden auf der Dashboardkarte Projektinformationen des Projekts angezeigt:

Ersetzen Sie im folgenden String PROJECT_NUMBER durch Ihre Projektnummer. Der neue String identifiziert Ihre BigQuery-Dienstkonto-ID.
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
bq
Verwenden Sie den Befehl bq show mit dem Flag --encryption_service_account, um die Dienstkonto-ID zu ermitteln:
bq show --encryption_service_account
Der Befehl zeigt die Dienstkonto-ID an:
ServiceAccountID
-------------------------------------------------------------
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
Verschlüsseler-/Entschlüsselerrolle zuweisen
Weisen Sie dem BigQuery-Systemdienstkonto, das Sie in die Zwischenablage kopiert haben, die Rolle Cloud KMS CryptoKey Encrypter/Decrypter zu. Dieses Konto hat das folgende Format:
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
Console
Öffnen Sie in der Google Cloud Console die Seite Kryptografische Schlüssel.
Klicken Sie auf den Namen des Schlüsselbunds, der den Schlüssel enthält.
Klicken Sie auf das Kästchen für den Verschlüsselungsschlüssel, dem Sie die Rolle hinzufügen möchten. Der Tab Berechtigungen wird geöffnet.
Klicken Sie auf Mitglied hinzufügen.
Geben Sie die E-Mail-Adresse des Dienstkontos,
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com, ein.- Wenn sich das Dienstkonto bereits in der Mitgliederliste befindet, enthält es Rollen. Klicken Sie auf die Drop-down-Liste der aktuellen Rollen des Dienstkontos
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com.
- Wenn sich das Dienstkonto bereits in der Mitgliederliste befindet, enthält es Rollen. Klicken Sie auf die Drop-down-Liste der aktuellen Rollen des Dienstkontos
Klicken Sie auf die Drop-down-Liste für Rolle auswählen, dann auf Cloud KMS und anschließend auf die Rolle Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler.
Klicken Sie zum Anwenden dieser Rolle auf das Dienstkonto
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.comauf Speichern.
gcloud
Sie können die Google Cloud CLI verwenden, um die Rolle zuzuweisen:
gcloud kms keys add-iam-policy-binding \ --project=KMS_PROJECT_ID \ --member serviceAccount:bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --location=KMS_KEY_LOCATION \ --keyring=KMS_KEY_RING \ KMS_KEY
Ersetzen Sie Folgendes:
KMS_PROJECT_IDist die ID Ihres Google Cloud-Projekts, in dem Cloud KMS ausgeführt wird.PROJECT_NUMBERist die Projektnummer (nicht die Projekt-ID) des Google Cloud -Projekts, in dem BigQuery ausgeführt wird.KMS_KEY_LOCATIONist der Standortname Ihres Cloud KMS-Schlüssels.KMS_KEY_RINGist der Schlüsselbundname Ihres Cloud KMS-Schlüssels.KMS_KEYist der Schlüsselname Ihres Cloud KMS-Schlüssels.
Schlüsselressourcen-ID
Die Ressourcen-ID für den Cloud KMS-Schlüssel ist für die CMEK-Nutzung erforderlich, wie in den Beispielen gezeigt. Bei diesem Wert muss die Groß-/Kleinschreibung beachtet werden und er muss die folgende Form haben:
projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY
Schlüsselressourcen-ID abrufen
Öffnen Sie in der Google Cloud Console die Seite Kryptografische Schlüssel.
Klicken Sie auf den Namen des Schlüsselbunds, der den Schlüssel enthält.
Klicken Sie für den Schlüssel, dessen Ressourcen-ID Sie abrufen, auf Mehr more_vert.
Klicken Sie auf Ressourcennamen kopieren. Die Ressourcen-ID für den Schlüssel wird in die Zwischenablage kopiert. Die Ressourcen-ID wird auch als Ressourcenname bezeichnet.
Durch Cloud KMS geschützte Tabelle erstellen
So erstellen Sie eine Tabelle, die durch Cloud KMS geschützt ist:
Console
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Klicken Sie im linken Bereich auf Explorer:

Wenn das linke Steuerfeld nicht angezeigt wird, klicken Sie auf Linkes Steuerfeld maximieren, um es zu öffnen.
Maximieren Sie im Bereich Explorer Ihr Projekt, klicken Sie auf Datasets und dann auf ein Dataset. Das Dataset wird auf einem Tab geöffnet.
Klicken Sie im Detailbereich auf Tabelle erstellen.
Geben Sie auf der Seite Tabelle erstellen die erforderlichen Informationen ein, um eine leere Tabelle mit einer Schemadefinition zu erstellen. Bevor Sie auf Tabelle erstellen klicken, müssen Sie den Verschlüsselungstyp festlegen und den Cloud KMS-Schlüssel zur Verwendung mit der Tabelle angeben:
- Klicken Sie auf Erweiterte Optionen.
- Klicken Sie auf Vom Kunden verwalteter Schlüssel.
- Wählen Sie den Schlüssel aus. Wenn der Schlüssel, den Sie verwenden möchten, nicht aufgeführt ist, geben Sie die Ressourcen-ID für den Schlüssel ein.
Klicken Sie auf Tabelle erstellen.
SQL
Verwenden Sie die Anweisung CREATE TABLE mit der Option kms_key_name:
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
CREATE TABLE DATASET_ID.TABLE_ID ( name STRING, value INT64 ) OPTIONS ( kms_key_name = 'projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY');
Klicken Sie auf Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
bq
Sie können das Befehlszeilentool mit dem Flag --destination_kms_key verwenden, um die Tabelle zu erstellen. Das Flag --destination_kms_key gibt die Ressourcen-ID des Schlüssels an, der mit der Tabelle verwendet werden soll.
So erstellen Sie eine leere Tabelle mit einem Schema:
bq mk --schema name:string,value:integer -t \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ DATASET_ID.TABLE_ID
So erstellen Sie eine Tabelle aus einer Abfrage:
bq query --destination_table=DATASET_ID.TABLE_ID \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ "SELECT name,count FROM DATASET_ID.TABLE_ID WHERE gender = 'M' ORDER BY count DESC LIMIT 6"
Weitere Informationen zum bq-Befehlszeilentool finden Sie unter bq-Befehlszeilentool verwenden.
Terraform
Verwenden Sie die Ressource google_bigquery_table:
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Im folgenden Beispiel wird eine Tabelle mit dem Namen mytable erstellt. Außerdem werden die Ressourcen google_kms_crypto_key und google_kms_key_ring verwendet, um einen Cloud Key Management Service-Schlüssel für die Tabelle anzugeben.
Um dieses Beispiel auszuführen, müssen Sie die Cloud Resource Manager API und die Cloud Key Management Service API aktivieren.
Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud -Projekt anzuwenden.
Cloud Shell vorbereiten
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Standardprojekt Google Cloud fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.
Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
-
Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung
.tfhaben, z. B.main.tf. In dieser Anleitung wird die Datei alsmain.tfbezeichnet.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.
Kopieren Sie den Beispielcode in das neu erstellte
main.tf.Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.
- Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
- Speichern Sie die Änderungen.
-
Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
terraform init
Fügen Sie optional die Option
-upgradeein, um die neueste Google-Anbieterversion zu verwenden:terraform init -upgrade
Änderungen anwenden
-
Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
terraform plan
Korrigieren Sie die Konfiguration nach Bedarf.
-
Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yesan der Eingabeaufforderung ein:terraform apply
Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.
- Öffnen Sie Ihr Google Cloud Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.
Go
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.