Daten mit CMEK schützen

Sie können vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) für den Cloud Key Management Service verwenden, um Cloud Functions und zugehörige inaktive Daten zu schützen. Solche Schlüssel werden über Cloud KMS erstellt und verwaltet und als Softwareschlüssel in einem HSM-Cluster oder extern gespeichert.

Durch das Bereitstellen einer Funktion mit einem CMEK werden die damit verknüpften Daten mithilfe eines Verschlüsselungsschlüssels geschützt, der in Ihrer Kontrolle liegt. Mit dieser Art der Verschlüsselung können Sie Complianceanforderungen in bestimmten Branchen wie Finanzdienstleistungen erfüllen. Da Ihnen der Schlüssel gehört und nicht von Google gesteuert wird, kann niemand (einschließlich Sie) auf die Daten zugreifen, die durch diese Verschlüsselungsschlüssel geschützt sind, wenn die Schlüssel deaktiviert oder gelöscht werden.

Die folgenden Arten von Cloud Functions-Daten werden bei der Verwendung eines CMEK verschlüsselt:

  • Der Funktionsquellcode, für die Bereitstellung hochgeladen und von Google in Cloud Storage gespeichert, wird für den Build-Prozess verwendet.
  • Die Ergebnisse des Funktions-Build-Prozesses, einschließlich:
    • Das Container-Image, das aus Ihrem Funktionsquellcode erstellt wurde.
    • Jede Instanz der Funktion, die bereitgestellt wird.
  • Ruhende Daten für interne Ereignistransportkanäle (nur 1. Generation).

Der Funktions-Build-Prozess selbst wird durch einen sitzungsspezifischen Schlüssel geschützt, der für jeden Build eindeutig generiert wird. Weitere Informationen finden Sie unter CMEK-Compliance in Cloud Build. Beachten Sie außerdem Folgendes:

  • Dateimetadaten wie Dateisystempfade oder Änderungszeitstempel sind nicht verschlüsselt.

  • Wenn ein CMEK-Schlüssel deaktiviert ist, kann das Container-Image nicht bereitgestellt werden und neue Instanzen können nicht gestartet werden.

  • Der CMEK-Schutz von Cloud Functions-Funktionen gilt nur für von Google verwaltete Cloud Functions-Ressourcen. Sie sind für den Schutz von Daten und Ressourcen verantwortlich, die von Ihnen verwaltet werden, z. B. Ihre Quellcode-Repositories, Ereigniskanäle, die im Kundenprojekt vorhanden sind (nur 2. Generation) oder Dienste, die von Ihren Funktionen verwendet werden.

Das Einrichten von CMEK für Cloud Functions umfasst Folgendes:

  • Den erforderlichen Dienstkonten Zugriff auf den Schlüssel gewähren:

    • Für alle Funktionen müssen Sie den Cloud Functions-, Artifact Registry- und Cloud Storage-Dienstkonten Zugriff auf den Schlüssel gewähren.

    • Für ereignisgesteuerte Cloud Functions-Funktionen der 2. Generation müssen Sie auch die CMEK-Einrichtung für Cloud Run und Eventarc abschließen.

  • CMEK-geschütztes Artifact Registry-Repository zum Speichern Ihrer Funktions-Images erstellen

  • CMEK für die Funktion aktivieren

  • Optional können Sie Organisationsrichtlinien für CMEK aktivieren, um zu erzwingen, dass alle neuen Funktionen CMEK-konform sind.

Diese Schritte werden unten genauer beschrieben.

Hinweis

  1. Erstellen Sie einen Schlüssel für eine einzelne Region, um Ihre Funktionen zu verschlüsseln. Informationen zum Erstellen eines Schlüssels finden Sie unter Symmetrische Verschlüsselungsschlüssel erstellen.

  2. Erstellen Sie ein Artifact Registry-Repository mit aktiviertem CMEK. Sie müssen für das Artifact Registry-Repository denselben Schlüssel verwenden wie für das Aktivieren von CMEK für eine Funktion.

  3. Führen Sie für ereignisgesteuerte Funktionen der 2. Generation die zusätzlichen Einrichtungsschritte aus, die unter CMEK für einen Google-Kanal aktivieren beschrieben werden.

Dienstkonten Zugriff auf den Schlüssel gewähren

Für alle Funktionen müssen Sie den folgenden Dienstkonten Zugriff auf den Schlüssel gewähren:

  • Cloud Functions-Dienst-Agent (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com)

  • Artifact Registry-Dienst-Agent (service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com)

  • Cloud Storage-Dienst-Agent (service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)

Nur für die 2. Generation müssen Sie außerdem den folgenden Dienstkonten Zugriff auf den Schlüssel gewähren:

  • Cloud Run-Dienst-Agent (service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com)

  • Eventarc-Dienst-Agent (service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com)

Wenn Sie diesen Dienstkonten Zugriff auf den Schlüssel gewähren möchten, fügen Sie jedes Dienstkonto als Hauptkonto des Schlüssels hinzu und weisen Sie dem Dienstkonto dann die Rolle Cloud KMS CryptoKey Encrypter/Decrypter zu:

Console

  1. Rufen Sie in der Google Cloud Console die Seite „Cloud Key Management Service” auf:
    Zur Cloud KMS-Seite

  2. Klicken Sie auf den Namen des Schlüsselbunds, der den gewünschten Schlüssel enthält.

  3. Klicken Sie auf den Namen des Schlüssels, um die Schlüsseldetails aufzurufen.

  4. Klicken Sie im Tab Berechtigungen auf Zugriff erlauben.

  5. Geben Sie im Feld Neue Hauptkonten die E-Mail-Adressen aller drei Dienstkonten oben ein, um allen drei Konten gleichzeitig Berechtigungen zuzuweisen.

  6. Wählen Sie im Drop-down-Menü Rolle auswählen die Option Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler aus.

  7. Klicken Sie auf Speichern.

gcloud

Führen Sie für jedes obige Dienstkonto den folgenden Befehl aus:

gcloud kms keys add-iam-policy-binding KEY \
--keyring KEY_RING \
--location LOCATION \
--member serviceAccount:SERVICE_AGENT_EMAIL \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter

Dabei gilt:

  • KEY: der Name des Schlüssels Beispiel: my-key.

  • KEY_RING: der Name des Schlüsselbunds Beispiel: my-keyring

  • LOCATION: der Speicherort des Schlüssels Beispiel: us-central1

  • SERVICE_AGENT_EMAIL: die E-Mail-Adresse des Dienstkontos

CMEK für eine Funktion aktivieren

Nachdem Sie ein Artifact Registry-Repository mit aktiviertem CMEK eingerichtet und Cloud Functions Zugriff auf Ihren Schlüssel gewährt haben, können Sie CMEK für Ihre Funktion aktivieren.

So aktivieren Sie CMEK für eine Funktion:

Console

  1. Rufen Sie die Seite „Cloud Functions“ in der Google Cloud Console auf:
    Zur Seite „Cloud Functions“

  2. Klicken Sie auf den Namen der Funktion, für die Sie CMEK aktivieren möchten.

  3. Klicken Sie auf Bearbeiten.

  4. Klicken Sie auf Laufzeit, Build..., um die erweiterten Konfigurationsoptionen zu maximieren.

  5. Wählen Sie den Tab Sicherheit und Image-Repository aus.

  6. Wählen Sie im Abschnitt Verschlüsselung die Option Vom Kunden verwalteter Verschlüsselungsschlüssel (CMEK) aus.

  7. Wählen Sie den ausgewählten Schlüssel aus der Drop-down-Liste aus.

  8. Wählen Sie unter Container-Speicherort die Option Vom Kunden verwaltete Artifact Registry aus.

  9. Wählen Sie im Drop-down-Menü Artifact Registry das CMEK-geschützte Repository aus.

  10. Klicken Sie auf Next (Weiter).

  11. Klicken Sie auf Bereitstellen.

gcloud

Führen Sie den folgenden Befehl aus:

gcloud functions deploy FUNCTION \
[--gen2] \
--kms-key=KEY \
--docker-repository=REPOSITORY \
--source=YOUR_SOURCE_LOCATION
FLAGS...

Dabei gilt:

  • FUNCTION: Name der Funktion, für die CMEK aktiviert werden soll Beispiel: cmek-function.

  • KEY: der voll qualifizierte Schlüsselname im folgenden Format: projects/PROJECT_NAME/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME.

  • REPOSITORY: Der voll qualifizierte Artifact Registry-Repository-Name im folgenden Format: projects/PROJECT_NAME/locations/LOCATION/repositories/REPOSITORY.

  • YOUR_SOURCE_LOCATION: Wenn Sie CMEK für eine bereits vorhandene Funktion aktivieren, müssen Sie darauf achten, dass der vorgesehene Quellcode neu bereitgestellt wird. Geben Sie dazu diesen Parameter explizit an.

  • FLAGS...: Zusätzliche Flags sind unter Umständen erforderlich, um die Funktion bereitzustellen, insbesondere zum Erstellen von Bereitstellungen. Weitere Informationen finden Sie unter Cloud Functions-Funktion bereitstellen.

CMEK ist für die Funktion aktiviert.

Beachten Sie, dass Cloud Functions immer die primäre Version eines Schlüssels für den CMEK-Schutz verwendet. Sie können keine bestimmte Schlüsselversion angeben, die beim Aktivieren von CMEK für die Funktionen verwendet werden soll.

Wenn ein Schlüssel gelöscht oder deaktiviert wird oder die erforderlichen Berechtigungen widerrufen werden, werden aktive Instanzen von Funktionen, die durch diesen Schlüssel geschützt sind, nicht heruntergefahren. Funktionsausführungen, die bereits ausgeführt werden, werden auch weiterhin ausgeführt, aber neue Ausführungen schlagen fehl, solange Cloud Functions keinen Zugriff auf den Schlüssel hat.

CMEK-Schutz testen

Wenn Sie prüfen möchten, ob der CMEK-Schutz funktioniert, können Sie den Schlüssel deaktivieren, den Sie zum Aktivieren von CMEK für eine Funktion verwendet haben. Versuchen Sie dann, die Funktion auszulösen:

  1. Deaktivieren Sie den CMEK-Schlüssel, der zum Schutz Ihrer Funktion verwendet wird.

  2. Versuchen Sie, den mit dieser Funktion verknüpften Quellcode aufzurufen. Der Versuch sollte fehlschlagen.

  3. Versuchen Sie, die CMEK-geschützte Funktion auszulösen. Der Versuch sollte fehlschlagen.

  4. Nachdem Sie geprüft haben, ob der CMEK-Schutz funktioniert, aktivieren Sie den Schlüssel.

Der CMEK-Schutz der Funktion wird jetzt bestätigt.

Nächste Schritte