Vom Kunden verwaltete 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. Weitere Informationen finden Sie unter Cloud Key Management Service (KMS).
Wenn Sie die Verschlüsselung selbst steuern möchten, können Sie von Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) für BigQuery verwenden. Statt es 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. Hier werden Details zum entsprechenden Verfahren beschrieben.
Weitere Informationen finden Sie unter Verschlüsselung inaktiver Daten. Weitere Informationen zu CMEK einschließlich der Vorteile und Einschränkungen finden Sie unter Vom Kunden verwaltete 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 unterschiedlichen Projekten ausführen möchten. Für die Beispiele gelten diese Konventionen:
PROJECT_ID
ist die ID des Projekts, in dem BigQuery ausgeführt wirdPROJECT_NUMBER
ist die Projektnummer des Projekts, in dem BigQuery ausgeführt wirdKMS_PROJECT_ID
ist die ID des Projekts, in dem Cloud KMS ausgeführt wird (auch wenn dies dasselbe Projekt ist, 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.
Für das Google Cloud-Projekt, in dem Cloud KMS ausgeführt wird:
- Cloud Key Management Service API aktivieren
- Erstellen Sie einen Schlüsselbund und einen Schlüssel, wie unter 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 aus einem übereinstimmenden Standort verwendet werden. Beispiel: Ein Dataset in der Region
US
sollte mit einem Schlüsselbund aus der Regionus
und ein Dataset in der RegionEU
mit einem Schlüsselbund aus der Regioneurope
geschützt werden. -
Für regionale Datasets sollten übereinstimmende regionale Schlüssel verwendet werden. Beispiel: Ein Dataset in der Region
asia-northeast1
sollte mit einem Schlüsselbund aus der Regionasia-northeast1
geschützt werden. - Die Region
global
wird für die Verwendung mit BigQuery nicht unterstützt.
-
Für jedes multiregionale Dataset sollte ein multiregionaler Schlüsselbund aus einem übereinstimmenden Standort verwendet werden. Beispiel: Ein Dataset in der Region
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.
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 der Google Cloud Console 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
Wechseln Sie in der Google Cloud Console zur 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.com
auf 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
Dabei gilt:
KMS_PROJECT_ID
ist die ID Ihres Google Cloud-Projekts, in dem Cloud KMS ausgeführt wird.PROJECT_NUMBER
ist die Projektnummer (nicht die Projekt-ID) des Google Cloud-Projekts, in dem BigQuery ausgeführt wird.KMS_KEY_LOCATION
ist der Standortname Ihres Cloud KMS-Schlüssels.KMS_KEY_RING
ist der Schlüsselbundname Ihres Cloud KMS-Schlüssels.KMS_KEY
ist 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".
Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie ein Dataset aus.
Maximieren Sie die Option
Aktionen und klicken Sie auf Öffnen.Klicken Sie im Detailfeld 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
:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
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 Abfragen ausführen.
bq
Sie können das bq
-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.
Einfach loslegen (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 eine lokale Entwicklungsumgebung einrichten.
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Python
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Schützen Sie eine neue Tabelle mit einem vom Kunden verwalteten Verschlüsselungsschlüssel. Legen Sie dazu das Attribut Table.encryption_configuration auf ein EncryptionConfiguration-Objekt fest, bevor Sie die Tabelle erstellen.Durch Cloud KMS-Schlüssel geschützte Tabelle abfragen
Für die Abfrage einer durch Cloud KMS geschützten Tabelle sind keine besonderen Vorkehrungen erforderlich. BigQuery speichert den Namen des Schlüssels, mit dem der Tabelleninhalt verschlüsselt wurde, und verwendet diesen Schlüssel bei der Abfrage einer durch Cloud KMS geschützten Tabelle.
Alle vorhandenen Tools, die BigQuery-Konsole und das bq
-Befehlszeilentool werden genauso wie mit standardmäßig verschlüsselten Tabellen ausgeführt, sofern BigQuery Zugriff auf den Cloud KMS-Schlüssel hat, mit dem der Tabelleninhalt verschlüsselt wurde.
Abfrageergebnisse mit Cloud KMS-Schlüssel schützen
Console
Öffnen Sie in der Google Cloud Console die Seite "BigQuery".
Klicken Sie auf Neue Abfrage erstellen.
Geben Sie im Abfragetextbereich eine gültige GoogleSQL-Abfrage ein.
Klicken Sie auf Mehr, dann auf Abfrageeinstellungen und dann auf Erweiterte Optionen.
Wählen Sie Vom Kunden verwaltete Verschlüsselung aus.
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 Speichern.
Klicken Sie auf Ausführen.
bq
Geben Sie das Flag --destination_kms_key
an, um die Zieltabelle oder bei Verwendung einer temporären Tabelle die Abfrageergebnisse mit Ihrem Cloud KMS-Schlüssel zu schützen.
Das Flag --destination_kms_key
gibt die Ressourcen-ID des Schlüssels an, der mit der Ziel- oder Ergebnistabelle verwendet werden soll.
Sie können optional mit dem Flag --destination_table
die Zieltabelle für die Abfrageergebnisse angeben. Ohne Angabe von --destination_table
werden die Abfrageergebnisse in eine temporäre Tabelle geschrieben.
So fragen Sie eine Tabelle ab:
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.
Go
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Schützen Sie eine neue Tabelle mit einem vom Kunden verwalteten Verschlüsselungsschlüssel. Legen Sie dazu das Attribut Table.encryption_configuration auf ein EncryptionConfiguration-Objekt fest, bevor Sie die Tabelle erstellen.Python
Durch Cloud KMS geschützte Tabelle laden
So laden Sie eine Datendatei in eine Tabelle, die durch Cloud KMS geschützt ist:
Console
Schützen Sie eine Zieltabelle für Ladejobs mit einem vom Kunden verwalteten Verschlüsselungsschlüssel. Geben Sie dazu den Schlüssel beim Laden der Tabelle an.
Öffnen Sie in der Google Cloud Console die Seite "BigQuery".
Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie ein Dataset aus.
Klicken Sie im Detailfeld auf Tabelle erstellen.
Geben Sie die gewünschten Optionen an, die zum Laden der Tabelle zu verwenden sind. Klicken Sie aber vor dem Klicken auf Tabelle erstellen noch auf Erweiterte Optionen.
Wählen Sie unter Verschlüsselung die Option Vom Kunden verwalteter Schlüssel aus.
Klicken Sie auf die Drop-down-Liste Wählen Sie einen vom Kunden verwalteten Schlüssel aus und wählen Sie den zu verwendenden Schlüssel aus. Wenn Sie keine verfügbaren Schlüssel sehen, geben Sie eine Schlüsselressourcen-ID ein.
Klicken Sie auf Tabelle erstellen.
bq
Schützen Sie eine Zieltabelle für Ladejobs mit einem vom Kunden verwalteten Verschlüsselungsschlüssel. Legen Sie dazu das Flag --destination_kms_key
fest.
bq --location=LOCATION load \ --autodetect \ --source_format=FORMAT \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ DATASET.TABLE \ path_to_sourceBeispiel:
bq load \ --autodetect \ --source_format=NEWLINE_DELIMITED_JSON \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ test2.table4 \ gs://cloud-samples-data/bigquery/us-states/us-states.json
Go
Java
Python
Schützen Sie eine Zieltabelle für Ladejobs mit einem vom Kunden verwalteten Verschlüsselungsschlüssel. Legen Sie dazu das Attribut LoadJobConfig.destination_encryption_configuration auf ein EncryptionConfiguration-Objekt fest und laden Sie die Tabelle.
In eine von Cloud KMS geschützte Tabelle streamen
Sie können Daten in Ihre von CMEK geschützte BigQuery-Tabelle streamen, ohne zusätzliche Parameter anzugeben. Diese Daten werden mit Ihrem Cloud KMS-Schlüssel sowohl im Zwischenspeicher als auch am endgültigen Speicherort verschlüsselt. Überprüfen Sie vor dem Streamen in eine CMEK-Tabelle die Anforderungen an die Verfügbarkeit und Zugänglichkeit von Schlüsseln.
Weitere Informationen zum Streamen finden Sie unter Daten in BigQuery streamen.
Tabelle mit Standardverschlüsselung in Tabelle mit Cloud KMS-Schutz umwandeln
bq
Sie können den Befehl bq cp
mit dem Flag --destination_kms_key
verwenden, um eine durch Standardverschlüsselung geschützte Tabelle in eine neue Tabelle oder in die durch Cloud KMS geschützte Originaltabelle zu kopieren. Das Flag --destination_kms_key
gibt die Ressourcen-ID des Schlüssels an, der mit der Zieltabelle verwendet werden soll.
So kopieren Sie eine Tabelle mit Standardverschlüsselung in eine neue Tabelle mit Cloud KMS-Schutz:
bq cp \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ SOURCE_DATASET_ID.SOURCE_TABLE_ID DESTINATION_DATASET_ID.DESTINATION_TABLE_ID
Wenn Sie eine Tabelle mit Standardverschlüsselung in dieselbe Tabelle mit Cloud KMS-Schutz kopieren möchten:
bq cp -f \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ DATASET_ID.TABLE_ID DATASET_ID.TABLE_ID
Wenn Sie eine Tabelle mit Cloud KMS-Schutz auf Standardverschlüsselung ändern möchten, kopieren Sie die Datei in sich selbst, indem Sie bq cp
ohne das Flag --destination_kms_key
ausführen.
Weitere Informationen zum bq
-Befehlszeilentool finden Sie unter bq
-Befehlszeilentool verwenden.
Go
Java
Python
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Schützen Sie das Ziel einer Tabellenkopie mit einem vom Kunden verwalteten Verschlüsselungsschlüssel. Legen Sie dazu das Attribut QueryJobConfig.destination_encryption_configuration auf ein EncryptionConfiguration-Objekt fest und kopieren Sie die Tabelle.
Ermitteln, ob eine Tabelle durch Cloud KMS geschützt ist
Klicken Sie in der Google Cloud Console auf den blauen Pfeil links neben dem Dataset, um die Ansicht zu maximieren, oder doppelklicken Sie auf den Dataset-Namen. Hierdurch werden die Tabellen und Ansichten im Dataset angezeigt.
Klicken Sie auf den Namen der Tabelle.
Klicken Sie auf Details. Auf der Seite Tabellendetails werden die Beschreibung und die Informationen der Tabelle angezeigt.
Wenn die Tabelle durch Cloud KMS geschützt ist, wird im Feld Vom Kunden verwalteter Verschlüsselungsschlüssel die Schlüsselressourcen-ID angezeigt.
Cloud KMS-Schlüssel für eine BigQuery-Tabelle ändern
Sie können eine ALTER TABLE
-Abfrage ausführen, die API oder das bq
-Befehlszeilentool verwenden, um den Cloud KMS-Schlüssel einer vorhandenen durch einen CMEK geschützten Tabelle zu ändern.
Es gibt zwei Möglichkeiten, den Cloud KMS-Schlüssel mithilfe der API und des bq
-Befehlszeilentools zu ändern: update
oder cp
.
Wenn Sie update
verwenden, können Sie den für eine CMEK-geschützte Tabelle genutzten Cloud KMS-Schlüssel ändern.
Mit cp
haben Sie die Möglichkeit, den für eine CMEK-geschützte Tabelle genutzten Cloud KMS-Schlüssel zu ändern. Sie können auch eine Tabelle von der Standardverschlüsselung in den CMEK-Schutz oder eine Tabelle vom CMEK-Schutz in die Standardverschlüsselung umwandeln.
Ein Vorteil von update
ist, dass es schneller als cp
verarbeitet wird und die Verwendung von Tabellen-Decorators ermöglicht.
SQL
Mit der Anweisung ALTER TABLE SET OPTIONS
können Sie das Feld kms_key_name
für eine Tabelle aktualisieren:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
ALTER TABLE DATASET_ID.mytable SET 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 Abfragen ausführen.
bq
Sie können den Schlüssel für eine Cloud KMS-geschützte Tabelle mit dem Befehl bq cp
und dem Flag --destination_kms_key
ändern. Das Flag --destination_kms_key
gibt die Ressourcen-ID des Schlüssels an, der mit der Tabelle verwendet werden soll.
bq update \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ -t DATASET_ID.TABLE_ID
Go
Java
Python
Ändern Sie den vom Kunden verwalteten Verschlüsselungsschlüssel für eine Tabelle. Legen Sie dazu das Attribut Table.encryption_configuration auf ein neues EncryptionConfiguration-Objekt fest und aktualisieren Sie die Tabelle.
Standardschlüssel für Dataset festlegen
Sie können einen Dataset-weiten Cloud KMS-Standardschlüssel festlegen, der für alle neu erstellten Tabellen im Dataset gilt, sofern beim Erstellen der Tabelle kein anderer Cloud KMS-Schlüssel angegeben wird. Der Standardschlüssel gilt nicht für vorhandene Tabellen. Das Ändern des Standardschlüssels wirkt sich nicht auf vorhandene Tabellen aus und betrifft nur neue Tabellen, die nach der Änderung erstellt werden.
Sie können den Standardschlüssel für ein Dataset mit den folgenden Methoden anwenden, ändern oder entfernen:
Standardschlüssel beim Aufrufen der Methode
datasets.insert
oderdatasets.patch
im FeldEncryptionConfiguration.kmsKeyName
angebenStandardschlüssel beim Ausführen des Befehls
bq mk --dataset
im Flag--default_kms_key
angebenbq mk \ --default_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ --dataset DATASET_ID
bq update \ --default_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ --dataset DATASET_ID
Projekt-Standardschlüssel festlegen
Sie können einen projektweiten Cloud KMS-Standardschlüssel festlegen, der für alle Abfrageergebnisse und neu erstellte Tabellen im Projekt gilt, sofern Sie keinen anderen Cloud KMS-Schlüssel angeben. Der Standardschlüssel gilt nicht für vorhandene Tabellen. Das Ändern des Standardschlüssels wirkt sich nicht auf vorhandene Tabellen aus und betrifft nur neue Tabellen, die nach der Änderung erstellt werden.
SQL
Mit der Anweisung ALTER PROJECT SET OPTIONS
können Sie das Feld default_kms_key_name
für ein Projekt aktualisieren. Sie finden den Ressourcennamen für den Schlüssel auf der Cloud KMS-Seite.
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
ALTER PROJECT PROJECT_ID SET OPTIONS (
region-us.default_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 Abfragen ausführen.
bq
Mit dem bq
-Befehl können Sie eine ALTER PROJECT SET OPTIONS
-Anweisung ausführen, um das default_kms_key_name
-Feld für ein Projekt zu aktualisieren:
bq query --nouse_legacy_sql \
'ALTER PROJECT PROJECT_ID
SET OPTIONS (
`region-us.default_kms_key_name`
="projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY");'
Zugriff von BigQuery auf den Cloud KMS-Schlüssel sperren
Sie können den Zugriff von BigQuery auf den Cloud KMS-Schlüssel jederzeit sperren. Dazu widerrufen Sie die IAM-Berechtigung (Identity and Access Management) für diesen Schlüssel.
Wenn BigQuery keinen Zugriff mehr auf den Cloud KMS-Schlüssel erhält, kann die Benutzerfreundlichkeit erheblich leiden und Datenverluste können auftreten:
Auf Daten in diesen durch einen CMEK geschützten Tabellen kann nicht mehr zugegriffen werden. Die Befehle
query
,cp
,extract
undtabledata.list
schlagen fehl.Diesen CMEK-geschützten Tabellen können keine neuen Daten hinzugefügt werden.
Nachdem der Zugriff wieder gewährt wird, können für diese Tabellen ausgeführte Abfragen mehrere Tage lang beeinträchtigt werden.
CMEK-Nutzung mit Organisationsrichtlinie steuern
BigQuery lässt sich in CMEK-Organisationsrichtlinieneinschränkungen einbinden, um Anforderungen für die Verschlüsselungscompliance für BigQuery-Ressourcen in Ihrer Organisation anzugeben.
Durch diese Einbindung haben Sie folgende Möglichkeiten:
CMEKs für alle BigQuery-Ressourcen in einem Projekt anfordern.
Schränken Sie ein, welche Cloud KMS-Schlüssel zum Schutz von Ressourcen in einem Projekt verwendet werden können.
CMEKs für alle Ressourcen anfordern
Eine gängige Richtlinie sieht vor, dass CMEKs zum Schutz aller Ressourcen in einem bestimmten Projektsatz erforderlich sind. Mit der constraints/gcp.restrictNonCmekServices
-Einschränkung können Sie diese Richtlinie in BigQuery erzwingen.
Ist diese Richtlinie festgelegt, schlagen alle Anfragen zur Ressourcenerstellung ohne angegebenen Cloud KMS-Schlüssel fehl.
Nachdem Sie diese Richtlinie festgelegt haben, gilt sie nur für neue Ressourcen im Projekt. Alle vorhandenen Ressourcen, für die keine Cloud KMS-Schlüssel festgelegt sind, bleiben bestehen und sind problemlos zugänglich.
Console
Öffnen Sie die Seite Organisationsrichtlinien.
Geben Sie im Feld Filter
constraints/gcp.restrictNonCmekServices
ein und klicken Sie dann auf Einschränken, welche Dienste Ressourcen ohne CMEK erstellen können.Klicken Sie auf
Bearbeiten.Wählen Sie Anpassen, Ersetzen und dann Regel hinzufügen aus.
Wählen Sie Benutzerdefiniert aus und klicken Sie auf Ablehnen.
Geben Sie im Feld Benutzerdefinierter Wert
is:bigquery.googleapis.com
ein.Klicken Sie auf Fertig und anschließend auf Speichern.
gcloud
gcloud resource-manager org-policies --project=PROJECT_ID \ deny gcp.restrictNonCmekServices is:bigquery.googleapis.com
Wenn Sie prüfen möchten, ob die Richtlinie erfolgreich angewendet wurde, können Sie versuchen, eine Tabelle im Projekt zu erstellen. Der Vorgang schlägt fehl, sofern Sie keinen Cloud KMS-Schlüssel angeben.
Diese Richtlinie gilt auch für Abfrageergebnistabellen im Projekt. Sie können einen Projektstandardschlüssel angeben, sodass Nutzer nicht jedes Mal manuell einen Schlüssel angeben müssen, wenn sie eine Abfrage im Projekt ausführen.
Cloud KMS-Schlüssel für ein BigQuery-Projekt einschränken
Mit der constraints/gcp.restrictCmekCryptoKeyProjects
-Einschränkung können Sie die Cloud KMS-Schlüssel einschränken, mit denen eine Ressource in einem BigQuery-Projekt geschützt werden kann.
Sie können eine Regel angeben, z. B. "Für alle BigQuery-Ressourcen in projects/my-company-data-project müssen die in diesem Projekt verwendeten Cloud KMS-Schlüssel von projects/my-company-central-keys ODER projects/team-spezific-keys stammen".
Console
Öffnen Sie die Seite Organisationsrichtlinien.
Geben Sie im Feld Filter
constraints/gcp.restrictCmekCryptoKeyProjects
ein und klicken Sie dann auf Beschränken, welche Projekte KMS-CryptoKeys für CMEK bereitstellen können.Klicken Sie auf
Bearbeiten.Wählen Sie Anpassen, Ersetzen und dann Regel hinzufügen aus.
Wählen Sie Benutzerdefiniert und klicken Sie dann auf Zulassen.
Geben Sie im Feld Benutzerdefinierter Wert
under:projects/<var>KMS_PROJECT_ID</var>
ein.Klicken Sie auf Fertig und anschließend auf Speichern.
gcloud
gcloud resource-manager org-policies --project=PROJECT_ID \ allow gcp.restrictCmekCryptoKeyProjects under:projects/KMS_PROJECT_ID
Wenn Sie prüfen möchten, ob die Richtlinie erfolgreich angewendet wurde, können Sie versuchen, eine Tabelle mit einem Cloud KMS-Schlüssel aus einem anderen Projekt zu erstellen. Der Vorgang schlägt fehl.
Einschränkungen von Organisationsrichtlinien
Das Festlegen von Organisationsrichtlinien unterliegt Einschränkungen.
Weitergabeverzögerung
Nachdem Sie eine Organisationsrichtlinie festgelegt oder aktualisiert haben, kann es bis zu 15 Minuten dauern, bis die neue Richtlinie wirksam wird. BigQuery speichert Richtlinien im Cache, um Latenzen bei Abfragen und Tabellen nicht negativ zu beeinträchtigen.
Erforderliche Berechtigungen zum Festlegen einer Organisationsrichtlinie
Die Berechtigung zum Festlegen oder Aktualisieren der Organisationsrichtlinie kann zu Testzwecken schwierig besorgbar sein. Sie benötigen die Rolle "Administrator für Organisationsrichtlinien“, die nur auf Organisationsebene (und nicht auf Projekt- oder Ordnerebene) gewährt werden kann.
Obwohl die Rolle auf Organisationsebene gewährt werden muss, kann eine Richtlinie angegeben werden, die nur für ein bestimmtes Projekt oder einen bestimmten Ordner gilt.
Auswirkung der Cloud KMS-Schlüsselrotation
In BigQuery wird ein Tabellenverschlüsselungsschlüssel nicht automatisch rotiert, wenn der mit der Tabelle verknüpfte Cloud KMS-Schlüssel rotiert wird. Alle Daten in den vorhandenen Tabellen sind weiterhin durch die Schlüsselversion geschützt, mit der sie erstellt wurden.
Alle neu erstellten Tabellen verwenden die Primärschlüsselversion zur Zeit der Erstellung.
Wenn Sie eine Tabelle auf die neueste Schlüsselversion aktualisieren möchten, ändern Sie die Tabelle in einen anderen Cloud KMS-Schlüssel und wechseln dann zum ursprünglichen zurück.
Auswirkungen auf die Cloud KMS-Abrechnung
Wenn Sie eine CMEK-geschützte Tabelle erstellen oder kürzen, generiert BigQuery einen Zwischenschlüsselverschlüsselungsschlüssel, der dann mit dem angegebenen Cloud KMS-Schlüssel verschlüsselt wird.
Zu Abrechnungszwecken bedeutet dies, dass weder Ihre Cloud KMS-Aufrufe noch die zugehörigen Kosten mit der Tabellengröße skaliert werden. Bei CMEK-geschützten Tabellen können Sie einen Aufruf von Cloud KMS cryptoKeys.encrypt
für jede Tabellenerstellung oder -kürzung und einen Aufruf von Cloud KMS cryptoKeys.decrypt
für jede an einer Abfrage beteiligte Tabelle erwarten. Beide Methoden gehören zur Kategorie Schlüsselvorgänge: Kryptografisch, die unter Cloud KMS-Preise aufgeführt sind.
Liest oder schreibt in eine vorhandene CMEK-geschützte Tabelle Cloud KMS cryptoKeys.decrypt
, da der Zwischenschlüssel entschlüsselt werden muss.
Beschränkungen
BigQuery-Zugriff auf den Cloud KMS-Schlüssel
Ein Cloud KMS-Schlüssel gilt in BigQuery unter folgenden Voraussetzungen als verfügbar und zugänglich:
- Wenn der Schlüssel aktiviert ist
- Wenn das BigQuery-Dienstkonto Berechtigungen zum Verschlüsseln und Entschlüsseln des Schlüssels hat
In den folgenden Abschnitten werden Auswirkungen auf das Streaming von Insert-Anweisungen und langfristig nicht zugänglichen Daten beschrieben, wenn ein Schlüssel nicht zugänglich ist.
Auswirkungen auf Streaming-Insert-Anweisungen
Der Cloud KMS-Schlüssel muss innerhalb von 48 Stunden nach einer Streaming-Insert-Anweisung für mindestens 24 aufeinanderfolgende Stunden verfügbar und zugänglich sein. Ist das nicht der Fall, werden die gestreamten Daten unter Umständen nicht vollständig beibehalten und können verloren gehen. Weitere Informationen zu Streaming-Insert-Anweisungen finden Sie unter