In diesem Leitfaden wird die Verwendung von CMEK für Dataform beschrieben. Außerdem wird erläutert, wie Sie die CMEK-Verschlüsselung von Dataform-Repositories aktivieren.
In Dataform werden inaktive Kundeninhalte standardmäßig verschlüsselt. Die Verschlüsselung wird von Dataform durchgeführt. Sie müssen nichts weiter tun. Diese Option wird Google-Standardverschlüsselung genannt.
Wenn Sie Ihre Verschlüsselungsschlüssel selbst verwalten möchten, können Sie vom Kunden verwaltete Verschlüsselungsschlüssel (CMEKs, Customer-Managed Encryption Keys) in Cloud KMS mit CMEK-integrierten Diensten wie Dataform verwenden. Mit Cloud KMS-Schlüsseln haben Sie die Kontrolle über Schutzlevel, Speicherort, Rotationszeitplan, Nutzungs- und Zugriffsberechtigungen sowie über kryptografische Grenzen. Mit Cloud KMS können Sie außerdem die Schlüsselnutzung im Blick behalten, Audit-Logs aufrufen und den Lebenszyklus von Schlüsseln steuern. Statt es Google zu überlassen und zu verwalten, das die symmetrischen Schlüsselverschlüsselungsschlüssel (Key Encryption Keys, KEKs) zum Schutz Ihrer Daten enthält, können Sie diese auch über Cloud KMS steuern und verwalten.
Nachdem Sie Ihre Ressourcen mit CMEKs eingerichtet haben, ähnelt der Zugriff auf Ihre Dataform-Ressourcen der Verwendung der Google-Standardverschlüsselung. Weitere Informationen zu den Verschlüsselungsoptionen finden Sie unter Vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK).
CMEK-Verschlüsselung von Repository-Daten
Wenn Sie die CMEK-Verschlüsselung auf ein Dataform-Repository anwenden, werden alle von Dataform verwalteten Kundendaten in diesem Repository mit dem für das Repository festgelegten CMEK-Schutzschlüssel verschlüsselt. Zu diesen Daten gehören:
- Git-Repository-Inhalte des Dataform-Repositorys und seiner Arbeitsbereiche
- Kompilierte SQL-Abfragen und Kompilierungsfehler
- Gespeicherte SQL-Abfragen von Workflow-Aktionen
- Fehlerdetails zu ausgeführten Workflow-Aktionen
Dataform verwendet CMEK-Schlüssel zum Schutz in den folgenden Fällen:
- Bei jedem Vorgang, der die Entschlüsselung von ruhenden Kundendaten erfordert.
Zu diesen Vorgängen gehören unter anderem:
- Antworten auf eine Nutzerabfrage, z. B.
compilationResults.query
. - Erstellen von Dataform-Ressourcen, für die zuvor erstellte verschlüsselte Repository-Daten erforderlich sind, z. B. Workflowaufrufe.
- Git-Vorgänge zum Aktualisieren des Remote-Repositories, z. B. Pushen eines Git-Commits.
- Antworten auf eine Nutzerabfrage, z. B.
- Bei jedem Vorgang, bei dem Kundendaten im Ruhezustand gespeichert werden müssen.
Zu diesen Vorgängen gehören unter anderem:
- Antworten auf eine Nutzerabfrage, z. B.
compilationResults.create
. - Git-Vorgänge für einen Arbeitsbereich, z. B. Pull-Vorgänge für Git-Commits
- Antworten auf eine Nutzerabfrage, z. B.
Dataform verwaltet die Verschlüsselung von Kundendaten, die nur mit Dataform-Ressourcen verknüpft sind. Dataform verwaltet nicht die Verschlüsselung von Kundendaten, die in BigQuery durch die Ausführung von Dataform-Workflows erstellt werden. Wenn Sie in BigQuery erstellte und gespeicherte Daten verschlüsseln möchten, konfigurieren Sie CMEK für BigQuery.
Unterstützte Schlüssel
Dataform unterstützt die folgenden CMEK-Schlüsseltypen:
- Cloud KMS-Softwareschlüssel
- Cloud HSM-Schlüssel (Hardware Security Module)
- Cloud External Key Manager (Cloud EKM)-Schlüssel
Die Verfügbarkeit von Schlüsseln variiert je nach Schlüsseltyp und Region. Weitere Informationen zur geografischen Verfügbarkeit von CMEK-Schlüsseln finden Sie unter Cloud KMS-Standorte.
Beschränkungen
Dataform unterstützt CMEK mit den folgenden Einschränkungen:
- Die maximale Größe eines CMEK-verschlüsselten Repositories beträgt 512 MB.
- Die maximale Größe eines Arbeitsbereichs in einem CMEK-verschlüsselten Repository beträgt 512 MB.
- Sie können einen CMEK-Schlüssel nicht mehr auf ein Repository anwenden, nachdem es erstellt wurde. Sie können die CMEK-Verschlüsselung nur beim Erstellen des Repositories anwenden.
- Sie können einen CMEK-Schutzschlüssel nicht aus einem Repository entfernen.
- Sie können den CMEK-Schlüssel für ein Repository nicht ändern.
- Wenn Sie einen Standard-CMEK-Schlüssel für Dataform für Ihr Google Cloud-Projekt festlegen, müssen alle neuen Repositories, die am Speicherort des Google Cloud-Projekts erstellt werden, mit CMEK verschlüsselt werden. Wenn Sie ein neues Repository im Google Cloud-Projektspeicherort erstellen, können Sie den standardmäßigen Dataform-CMEK-Schlüssel oder einen anderen CMEK-Schlüssel anwenden. Die Standardverschlüsselung im Ruhezustand kann jedoch nicht angewendet werden.
- Wenn Sie den Wert eines Standard-CMEK-Schlüssels für Dataform ändern, gilt der vorherige Wert für bereits vorhandene Repositories und der aktualisierte Wert für Repositories, die nach der Änderung erstellt wurden.
- Sie können nur einen Standard-CMEK-Schlüssel für Dataform pro Speicherort der Google Cloud-Projekt-Repositories festlegen.
- CMEK-Organisationsrichtlinien sind nicht verfügbar.
- Die Verwendung von Cloud HSM- und Cloud EKM-Schlüsseln ist von der Verfügbarkeit abhängig. Weitere Informationen zur Verfügbarkeit von Schlüsseln an verschiedenen Standorten finden Sie unter Cloud KMS-Standorte.
Cloud KMS-Kontingente und Dataform
Sie können Cloud HSM- und Cloud EKM-Schlüssel mit Dataform verwenden. Wenn Sie CMEK in Dataform verwenden, können Ihre Projekte Kontingente für kryptografische Cloud KMS-Anfragen verbrauchen. CMEK-verschlüsselte Dataform-Repositories können diese Kontingente beispielsweise pro Änderung am Repository-Inhalt verbrauchen. Ver- und Entschlüsselungsvorgänge über CMEK-Schlüssel wirken sich nur dann auf Cloud KMS-Kontingente aus, wenn Sie Hardware- (Cloud HSM) oder externe Schlüssel (Cloud EKM) verwenden. Weitere Informationen finden Sie unter Cloud KMS-Kontingente.
Schlüssel verwalten
Verwenden Sie Cloud KMS für alle Vorgänge zur Schlüsselverwaltung. Dataform kann Schlüsseländerungen erst erkennen oder darauf reagieren, wenn sie von Cloud KMS weitergegeben wurden. Bei einigen Vorgängen, z. B. beim Deaktivieren oder Löschen eines Schlüssels, kann es bis zu drei Stunden dauern, bis Änderungen wirksam werden. Änderungen an Berechtigungen werden normalerweise viel schneller übernommen.
Nach der Erstellung des Repositories ruft Dataform Cloud KMS auf, um sicherzustellen, dass der Schlüssel bei jedem Vorgang mit verschlüsselten Repository-Daten noch gültig ist.
Wenn Dataform erkennt, dass Ihr Cloud KMS-Schlüssel deaktiviert oder gelöscht wurde, sind alle im entsprechenden Repository gespeicherten Daten nicht mehr zugänglich.
Wenn Aufrufe von Dataform an Cloud KMS erkennen, dass ein zuvor deaktivierter Schlüssel wieder aktiviert wurde, stellt Dataform den Zugriff automatisch wieder her.
Externe Schlüssel mit Cloud EKM verwenden
Alternativ zu Schlüsseln in Cloud KMS können Sie Schlüssel verwenden, die sich bei einem unterstützten Partner für die externe Schlüsselverwaltung befinden. Verwenden Sie dazu Cloud External Key Manager (Cloud EKM), um externe Schlüssel zu erstellen und zu verwalten. Das sind Verweise auf Schlüssel, die sich außerhalb von Google Cloudbefinden. Weitere Informationen finden Sie unter Cloud External Key Manager.
Nachdem Sie einen externen Schlüssel mit Cloud EKM erstellt haben, können Sie ihn auf ein neues Dataform-Repository anwenden. Geben Sie dazu beim Erstellen des Repositorys die ID dieses Schlüssels an. Dieser Vorgang entspricht dem Anwenden eines Cloud KMS-Schlüssels auf ein neues Repository.
Standard-CMEK-Schlüssel von Dataform verwenden
Wenn Sie mehrere Dataform-Repositories mit demselben CMEK-Schlüssel verschlüsseln möchten, können Sie einen standardmäßigen Dataform-CMEK-Schlüssel für Ihr Google Cloud-Projekt festlegen. Sie müssen den Speicherort des Google Cloud-Projekts für den standardmäßigen CMEK-Schlüssel von Dataform angeben. Sie können nur einen CMEK-Standardschlüssel pro Google Cloud-Projekt festlegen.
Nachdem Sie einen Standard-CMEK-Schlüssel für Dataform festgelegt haben, wendet Dataform den Schlüssel standardmäßig auf alle neuen Repositories an, die im Google Cloud-Projektspeicherort erstellt werden. Wenn Sie ein Repository erstellen, können Sie den Standardschlüssel verwenden oder einen anderen CMEK-Schlüssel auswählen.
Umgang mit einem nicht verfügbaren Schlüsselstatus
In seltenen Fällen, z. B. wenn Cloud KMS nicht verfügbar ist, kann Dataform den Status Ihres Schlüssels nicht aus Cloud KMS abrufen.
Wenn Ihr Dataform-Repository durch einen Schlüssel geschützt ist, der zu dem Zeitpunkt aktiviert ist, zu dem Dataform nicht mit Cloud KMS kommunizieren kann, sind die verschlüsselten Repository-Daten nicht mehr zugänglich.
Die verschlüsselten Repository-Daten bleiben so lange unzugänglich, bis Dataform wieder eine Verbindung zu Cloud KMS herstellen kann und Cloud KMS antwortet, dass der Schlüssel aktiv ist.
Umgekehrt, wenn Ihr Dataform-Repository durch einen Schlüssel geschützt ist, der zu dem Zeitpunkt deaktiviert ist, zu dem Dataform zum ersten Mal nicht mit Cloud KMS kommunizieren kann, bleiben die verschlüsselten Repository-Daten unzugänglich, bis eine Verbindung zu Cloud KMS wieder hergestellt werden kann und Sie den Schlüssel wieder aktiviert haben.
Logging
Sie können die Anfragen prüfen, die Dataform in Ihrem Namen an Cloud KMS sendet, in Cloud Logging, wenn Sie für Ihr Projekt die Audit-Logging-Funktion aktiviert haben. Diese Cloud KMS-Logeinträge sind in Cloud Logging sichtbar. Weitere Informationen finden Sie unter Logs ansehen.
Hinweis
Überlegen Sie sich, ob Sie Dataform und Cloud KMS in verschiedenen Projekten oder im selben Projekt ausführen möchten. Wir empfehlen die Verwendung separater Projekte, um die Berechtigungen besser verwalten zu können. Weitere Informationen zu Google Cloud-Projekt-IDs und -Projektnummern finden Sie unter Projekte identifizieren.
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 Speicherort, der dem Speicherort Ihres Dataform-Repositories entspricht:
-
Repositories müssen übereinstimmende regionale Schlüssel verwenden. Beispiel: Ein Repository in der Region
asia-northeast3
muss mit einem Schlüssel aus einem Schlüsselbund inasia-northeast3
geschützt werden. -
Die Region
global
kann nicht mit Dataform verwendet werden.
-
Repositories müssen übereinstimmende regionale Schlüssel verwenden. Beispiel: Ein Repository in der Region
CMEK aktivieren
Dataform kann in Ihrem Namen auf den Schlüssel zugreifen, nachdem Sie dem Standarddienstkonto von Dataform die Rolle Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler (roles/cloudkms.cryptoKeyEncrypterDecrypter
) zugewiesen haben.
Die ID des Standard-Dataform-Dienstkontos hat das folgende Format:
service-YOUR_PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
So weisen Sie dem standardmäßigen Dataform-Dienstkonto die Rolle „CryptoKey Encrypter/Decrypter“ zu:
Console
Öffnen Sie in der Google Cloud Console die Seite Schlüsselverwaltung.
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.
E-Mail-Adresse des Dienstkontos eingeben
- Wenn sich das Dienstkonto bereits in der Mitgliederliste befindet, enthält es Rollen. Klicken Sie auf die Drop-down-Liste der aktuellen Rolle für das Dienstkonto.
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 auf Speichern, um die Rolle auf das Dienstkonto anzuwenden.
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:SERVICE_ACCOUNT \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --location=KMS_KEY_LOCATION \ --keyring=KMS_KEY_RING \ KMS_KEY
Ersetzen Sie Folgendes:
KMS_PROJECT_ID
: die ID Ihres Google CloudProjekts, in dem Cloud KMS ausgeführt wirdSERVICE_ACCOUNT
: die E-Mail-Adresse Ihres Standarddienstkontos für DataformKMS_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.
Standard-CMEK-Schlüssel für Dataform festlegen
Wenn Sie einen standardmäßigen Dataform-CMEK-Schlüssel für Ihr Google Cloud-Projekt festlegen, können Sie mehrere Repositories mit demselben CMEK-Schlüssel verschlüsseln. Weitere Informationen finden Sie unter Standardschlüssel für Dataform-Repositories verwenden.
Wenn Sie einen Standard-CMEK-Schlüssel festlegen oder bearbeiten möchten, rufen Sie die Dataform API mit der folgenden Anfrage auf:
curl -X PATCH \
-H "Content-Type: application/json" \
-d '{"defaultKmsKeyName":"projects/PROJECT_ID/locations/PROJECT_LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KMS_KEY"}' \
https://dataform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/PROJECT_LOCATION/config
Ersetzen Sie Folgendes:
- KMS_KEY_RING: der Schlüsselbundname Ihres Cloud KMS-Schlüssels.
- KMS_KEY: der Name Ihres Cloud KMS-Schlüssels.
- PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
- PROJECT_LOCATION: Der Standortname Ihres Google Cloud-Projekts.
Standard-CMEK-Schlüssel für Dataform entfernen
Wenn Sie einen standardmäßigen Dataform-CMEK-Schlüssel aus Ihrem Google Cloud-Projekt entfernen möchten, rufen Sie die Dataform API in der folgenden Anfrage auf:
curl -X PATCH \
-H "Content-Type: application/json" \
-d '{"defaultKmsKeyName":""}' \
https://dataform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/PROJECT_LOCATION/config
Ersetzen Sie Folgendes:
- PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
- PROJECT_LOCATION: der Standortname Ihres Google Cloud-Projekts, für das Sie die Standard-CMEK aufheben möchten.
Prüfen, ob ein standardmäßiger CMEK-Schlüssel für Dataform festgelegt ist
Wenn Sie prüfen möchten, ob für Ihr Google Cloud-Projekt ein standardmäßiger Dataform-CMEK-Schlüssel festgelegt ist, rufen Sie die Dataform API mit der folgenden Anfrage auf:
curl -X GET \
-H "Content-Type: application/json" \
https://dataform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/PROJECT_LOCATION/config
Ersetzen Sie Folgendes:
- PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
- PROJECT_LOCATION: Der Standortname Ihres Google Cloud-Projekts.
CMEK auf ein Repository anwenden
Sie können den CMEK-Schutz beim Erstellen eines Dataform-Repositories anwenden.
Wenn Sie die CMEK-Verschlüsselung auf ein Dataform-Repository anwenden möchten, wählen Sie die Verschlüsselung mit dem standardmäßigen Dataform-CMEK-Schlüssel aus oder geben Sie beim Erstellen des Repositorys einen eindeutigen Cloud KMS-Schlüssel an. Eine Anleitung finden Sie unter Repository erstellen.
Der Verschlüsselungsmechanismus eines Dataform-Repositorys kann nach der Erstellung nicht mehr geändert werden.
Weitere Informationen finden Sie unter Einschränkungen.
Nächste Schritte
- Weitere Informationen zu CMEK finden Sie in der Übersicht zu CMEK.
- Weitere Informationen zu Cloud KMS-Kontingenten finden Sie unter Kontingente für Cloud KMS.
- Weitere Informationen zu den Preisen für Cloud KMS finden Sie unter Cloud KMS – Preise.
- Weitere Informationen zu Dataform-Repositories finden Sie unter Repository erstellen.