Daten mit CMEK schützen

Auf dieser Seite finden Sie zusätzliche Informationen zum Schutz Ihrer Daten mit vom Kunden verwalteten Verschlüsselungsschlüsseln (Customer-Managed Encryption Keys, CMEK) für Funktionen, die mit gcloud functions-Befehlen oder der Cloud Functions v2 API erstellt wurden.

Eine ausführliche Beschreibung von CMEK, einschließlich manueller Einrichtung, Verwendung von Autokey und Testen des CMEK-Schutzes, finden Sie in der Cloud Run-Dokumentation.

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.

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 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 im Kundenprojekt oder alle Dienste, die von Ihren Funktionen verwendet werden.

Hinweise

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

  • 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 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 Dienstkonten oben ein, um allen drei Konten gleichzeitig Berechtigungen zuzuweisen.

  6. Wählen Sie im Menü Rolle auswählen 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.

Führen Sie den folgenden Befehl aus, um CMEK für eine Funktion zu aktivieren:

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

Ersetzen Sie 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 Functions-Funktion bereitstellen.

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

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.