Daten mit CMEK schützen (1. Generation)

Sie können vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) für den Cloud Key Management Service verwenden, um Cloud Run 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 Compliance-Anforderungen in bestimmten Branchen wie z. B. 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 Run 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.
  • Inaktive Daten für interne Ereignistransportkanäle.

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 Run Functions gilt nur für von Google verwaltete Cloud Run-Funktionsressourcen. Sie sind für den Schutz von Daten und Ressourcen verantwortlich, die von Ihnen verwaltet werden, so z. B. für Ihre Quellcode-Repositories und für alle Dienste, die von Ihren Funktionen verwendet werden.

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

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

    • Für alle Funktionen müssen Sie den Cloud Run Functions-, Artifact Registry- und Cloud Storage-Dienstkonten Zugriff auf den Schlüssel gewähren.
  • CMEK-geschütztes Artifact Registry-Repository zum Speichern Ihrer Funktions-Images erstellen

  • CMEK für die Funktion aktivieren

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

Diese Schritte werden unten genauer beschrieben.

Vorbereitung

  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.

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 Run 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)

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 ausgewählten 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 zuvor gezeigter Dienstkonten 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 der oben genannten Dienstkonten 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

Ersetzen Sie dabei Folgendes:

  • 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 Run 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 in der Google Cloud Console die Seite „Cloud Run-Funktionen“ auf:
    Zur Seite „Cloud Run-Funktionen“

  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 Weiter.

  11. Klicken Sie auf Bereitstellen.

gcloud

Führen Sie den folgenden Befehl aus:

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

Ersetzen Sie dabei Folgendes:

  • 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, achten Sie darauf, dass der gewünschte Quellcode neu bereitgestellt wird, indem Sie diesen Parameter explizit angeben.

  • FLAGS...: Zusätzliche Flags, die möglicherweise zur Bereitstellung der Funktion erforderlich sind, insbesondere für Bereitstellungen vom Typ „Erstellen“. Weitere Informationen finden Sie unter Cloud Run-Funktion bereitstellen.

CMEK ist für die Funktion aktiviert.

Beachten Sie, dass Cloud Run 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 Run 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