Cloud Composer 1 Cloud Composer 2
Auf dieser Seite wird beschrieben, wie Sie vom Kunden verwaltete Verschlüsselungsschlüssel (Customer Managed Encryption Keys, CMEK) zum Schutz von Cloud Composer-Umgebungen verwenden. Vom Kunden verwaltete Verschlüsselungsschlüssel werden zum Verschlüsseln/Entschlüsseln von Nutzerdaten in der Umgebung verwendet.
Hinweise
Sie können CMEK nur beim Erstellen einer Umgebung konfigurieren. Es ist nicht möglich, CMEK für eine vorhandene Umgebung zu aktivieren.
Cloud Composer unterstützt die CMEK-Verschlüsselung mit Schlüsseln, die in External Key Managers gespeichert sind.
Sie müssen einen CMEK-Schlüssel in derselben Region erstellen, in der sich Ihre Umgebungen befinden. Sie können keine multiregionalen oder globalen Schlüssel verwenden.
Wenn Ihre Umgebung innerhalb eines VPC Service Controls-Perimeters ausgeführt werden soll, müssen Sie dem Perimeter die Cloud Key Management Service API und die Artifact Registry API hinzufügen.
Aktivieren Sie die Artifact Registry API.
Console
Enable the Artifact Registry API.
gcloud
Enable the Artifact Registry API:
gcloud services enable artifactregistry.googleapis.com
Nutzerinformationen nicht durch CMEK-Verschlüsselung geschützt
Cloud Monitoring unterstützt keine CMEK-Verschlüsselung. Der Name der Umgebung und die Namen der DAGs werden in der Monitoring-Datenbank in verschlüsselter Form mit von Google verwalteten Verschlüsselungsschlüsseln gespeichert.
Cloud Composer speichert die folgenden Informationen, die mit von Google und nicht vom Kunden verwalteten Schlüsseln geschützt sind:
- Name der Umgebung
- Airflow-Konfigurationsüberschreibungen
- Umgebungsvariablen
- Beschreibungen der zulässigen IP-Bereiche
- IP-Bereiche
- Labels
- Die Namen einiger von Cloud Composer gespeicherten Parameter können einen Teilstring des Umgebungsnamens enthalten.
Vom Kunden verwalteten Verschlüsselungsschlüssel für Ihre Umgebung verwenden
Schritt 1: Vom Kunden verwalteten Verschlüsselungsschlüssel erstellen
Erstellen Sie anhand der Anleitung unter Symmetrische Verschlüsselungsschlüssel erstellen einen Schlüssel in der Region, in der sich Ihre Umgebung befindet.
Schritt 2: Dienst-Agents Rollen zuweisen
Console
Diesen Schritt überspringen. Sie erteilen Dienst-Agents Berechtigungen, wenn Sie einen Schlüssel für Ihre Umgebung angeben.
gcloud
Die folgenden Dienst-Agents müssen die Rolle Cloud KMS CryptoKey Encrypter/Decrypter für den Schlüssel haben, den Sie für Ihre Umgebung verwenden.
Ersetzen Sie PROJECT_NUMBER
durch die Projektnummer.
Name des Dienst-Agents | E-Mail-Adresse des Dienstkontos | API-Dienstname |
---|---|---|
Cloud Composer-Dienst-Agent | service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com | composer.googleapis.com |
Artifact Registry-Dienst-Agent | service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com | artifactregistry.googleapis.com |
Kubernetes Engine-Dienst-Agent | service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com | container.googleapis.com |
Pub/Sub-Dienst-Agent | service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com | pubsub.googleapis.com |
Compute Engine-Dienst-Agent | service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com | compute.googleapis.com |
Cloud Storage-Dienst-Agent | service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com | Berechtigungen zum Verschlüsseln/Entschlüsseln mit gsutil kms authorize gewähren |
(Falls erforderlich) Wenn einige dieser Dienstkonten in Ihrem Projekt nicht vorhanden sind, wurde für diesen Dienst noch keine Identität erstellt. Dies kann beispielsweise passieren, wenn Sie in Ihrem Projekt noch keine Cloud Composer-Umgebungen erstellt haben.
Erstellen Sie mit dem folgenden Befehl Identitäten für die aufgeführten Dienste, um diese Dienstkonten hinzuzufügen:
gcloud beta services identity create \ --service=API_SERVICE_NAME
Ersetzen Sie
API_SERVICE_NAME
durch den API-Dienstnamen eines Dienstes, für den es im Projekt kein Dienstkonto gibt.Beispiel:
gcloud beta services identity create \ --service=composer.googleapis.com
Gewähren Sie Dienst-Agents Berechtigungen:
Gewähren Sie die Rolle dem Cloud Composer-Dienst-Agent:
gcloud kms keys add-iam-policy-binding KEY_NAME \ --location KEY_LOCATION \ --keyring KEY_RING_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KEY_PROJECT_ID
Gewähren Sie dem Artifact Registry-Dienst-Agent die Rolle:
gcloud kms keys add-iam-policy-binding KEY_NAME \ --location KEY_LOCATION \ --keyring KEY_RING_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KEY_PROJECT_ID
Gewähren Sie die Rolle dem GKE-Dienst-Agent:
gcloud kms keys add-iam-policy-binding KEY_NAME \ --location KEY_LOCATION \ --keyring KEY_RING_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KEY_PROJECT_ID
Gewähren Sie die Rolle dem Pub/Sub-Dienst-Agent:
gcloud kms keys add-iam-policy-binding KEY_NAME \ --location KEY_LOCATION \ --keyring KEY_RING_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KEY_PROJECT_ID
Gewähren Sie die Rolle dem Compute Engine-Dienst-Agent:
gcloud kms keys add-iam-policy-binding KEY_NAME \ --location KEY_LOCATION \ --keyring KEY_RING_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KEY_PROJECT_ID
Gewähren Sie dem Cloud Storage-Dienst-Agent Berechtigungen zum Verschlüsseln/Entschlüsseln.
gsutil kms authorize -k \ projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
Ersetzen Sie:
PROJECT_ID
durch die Projekt-ID.KEY_PROJECT_ID
durch die ID des Projekts, in dem Ihr vom Kunden verwalteter Schlüssel gespeichert ist. Wenn Sie einen Schlüssel aus einem anderen Projekt verwenden, unterscheidet sich dieser Wert von der ID Ihres Projekts. Wenn Sie einen Schlüssel aus demselben Projekt verwenden, ist dieser Wert die ID Ihres Projekts.PROJECT_NUMBER
durch die Projektnummer.KEY_LOCATION
durch den Speicherort des vom Kunden verwalteten Schlüssels. Dieser Speicherort muss mit dem Standort Ihrer Umgebung übereinstimmen.KEY_NAME
durch den Namen des vom Kunden verwalteten Schlüssels.KEY_RING_NAME
durch den Schlüsselbund, in dem Ihr vom Kunden verwalteter Schlüssel gespeichert ist.
Zum Abrufen dieser Werte können Sie die Befehle
gcloud projects describe
,gcloud kms keyrings list
undgcloud kms keys describe
ausführen.
Schritt 3: Umgebung mit CMEK erstellen
Nachdem Sie einen vom Kunden verwalteten Verschlüsselungsschlüssel erstellt haben, können Sie damit Cloud Composer-Umgebungen erstellen.
Console
Wenn Sie eine Umgebung erstellen:
Maximieren Sie den Abschnitt Netzwerk, Airflow-Konfigurationsüberschreibungen und zusätzliche Features. Wählen Sie im Abschnitt Datenverschlüsselung die Option Vom Kunden verwalteter Verschlüsselungsschlüssel (CMEK) aus.
Wählen Sie aus der Drop-down-Liste Wählen Sie einen vom Kunden verwalteten Schlüssel aus Ihren Schlüssel aus.
Falls zusätzliche Einrichtungen erforderlich sind, werden Sie in einer Meldung darüber informiert. In diesem Fall gilt:
Klicken Sie auf Assistenten öffnen.
Rufen Sie im Dialogfeld CMEK-Schlüssel für die Verwendung in Cloud Composer vorbereiten die Liste der Dienst-Agents auf, die die Rolle Cloud KMS CryptoKey Encrypter/Decrypter für den Schlüssel haben müssen.
Klicken Sie auf Erteilen, um die erforderlichen Rollen und Berechtigungen zu gewähren.
gcloud
Das Argument --kms-key
gibt einen vom Kunden verwalteten Verschlüsselungsschlüssel für die Umgebung an.
Weitere Informationen zum Erstellen von Umgebungen finden Sie unter Umgebungen erstellen. Sie können beispielsweise andere Parameter für Ihre Umgebung angeben.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version IMAGE_VERSION \
--kms-key projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
Ersetzen Sie:
ENVIRONMENT_NAME
durch den Namen der Umgebung.IMAGE_VERSION
durch den Namen des Cloud Composer-Images.KEY_PROJECT_ID
durch die ID des Projekts, in dem sich der Schlüssel befindet. Wenn Sie einen Schlüssel aus einem anderen Projekt verwenden, unterscheidet sich dieser Wert von der ID Ihres Projekts. Wenn Sie einen Schlüssel aus demselben Projekt verwenden, ist dieser Wert die ID Ihres Projekts.LOCATION
durch die Region, in der sich die Umgebung befindet.KEY_LOCATION
durch den Speicherort Ihres vom Kunden verwalteten Schlüssels. Dieser Standort muss mit dem Standort Ihrer Umgebung übereinstimmen.KEY_NAME
durch den Namen des vom Kunden verwalteten Schlüssels.KEY_RING_NAME
durch den Schlüsselbund, in dem Ihr vom Kunden verwalteter Schlüssel gespeichert ist.
Beispiel:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-2.6.6-airflow-2.6.3 \
--kms-key projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key
Verschlüsselungskonfiguration der Umgebung ansehen
Sie können die Verschlüsselungskonfiguration für eine vorhandene Umgebung aufrufen:
Console
Rufen Sie in der Google Cloud Console die Seite Umgebungen auf.
Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Umgebungsdetails wird geöffnet.
Rufen Sie den Tab Umgebungskonfiguration auf.
Details zur Verschlüsselung finden Sie unter Datenverschlüsselungsschlüssel.
gcloud
Führen Sie den folgenden gcloud
-Befehl aus, um die Verschlüsselungskonfiguration anzusehen
gcloud composer environments describe \
ENVIRONMENT_NAME \
--location LOCATION \
--format="value(config.encryptionConfig)"
Ersetzen Sie:
ENVIRONMENT_NAME
durch den Namen der Umgebung.LOCATION
durch die Region, in der sich die Umgebung befindet.
Beispiel:
gcloud composer environments describe \
example-environment \
--location us-central1 \
--format="value(config.encryptionConfig)"
CMEK für Cloud Composer-Logs verwenden
Cloud Logging unterstützt die Verschlüsselung von Logspeicher mit CMEK-Schlüsseln. Wir empfehlen, das Standard-CMEK-Verfahren zum Verschlüsseln von Logs mit CMEK-Schlüsseln zu verwenden.
Folgen Sie der Anleitung unter Schlüssel verwalten, die Logging-Speicherdaten schützen, um Logs mit CMEK-Schlüsseln zu verschlüsseln.
Cloud Composer-Logs an einen CMEK-verschlüsselten Cloud Storage-Bucket weiterleiten
Wenn Sie davon ausgehen, dass Ihre Logs sensible Daten enthalten, können Sie Cloud Composer-Logs mit Log Router an einen CMEK-verschlüsselten Cloud Storage-Bucket weiterleiten. Andernfalls werden Ihre Logs nicht an Monitoring gesendet.
Wenn Sie Support von Cloud Customer Care benötigen, müssen Sie möglicherweise Google-Supporttechnikern Zugriff auf die in Cloud Storage gespeicherten Cloud Composer-Logs gewähren.
gcloud
Erstellen Sie einen neuen Cloud Storage-Bucket zum Speichern der Logs.
gsutil mb -l LOCATION gs://BUCKET_NAME
Ersetzen Sie:
LOCATION
durch die Region, in der sich die Umgebung befindet.BUCKET_NAME
durch den Namen des Buckets.
Beispiel:
gsutil mb -l us-central1 gs://composer-logs-us-central1-example-environment
Verschlüsseln Sie den Bucket mit Ihrem CMEK-Schlüssel.
gsutil kms encryption \ -k projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME \ gs://BUCKET_NAME
Ersetzen Sie:
KEY_PROJECT_ID
durch die ID des Projekts, in dem sich der Schlüssel befindet. Wenn Sie einen Schlüssel aus einem anderen Projekt verwenden, unterscheidet sich dieser Wert von der ID Ihres Projekts. Wenn Sie einen Schlüssel aus demselben Projekt verwenden, ist dieser Wert die ID Ihres Projekts.KEY_LOCATION
durch den Speicherort Ihres vom Kunden verwalteten Schlüssels. Dieser Standort muss mit dem Standort Ihrer Umgebung übereinstimmen.KEY_RING_NAME
durch den Schlüsselbund, in dem Ihr vom Kunden verwalteter Schlüssel gespeichert ist.KEY_NAME
durch den Namen des vom Kunden verwalteten Schlüssels.BUCKET_NAME
durch den Namen des Buckets.
Beispiel:
gsutil kms encryption \ -k projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key \ gs://composer-logs-us-central1-example-environment
Erstellen Sie eine neue Logsenke.
gcloud logging sinks create \ composer-log-sink-ENVIRONMENT_NAME \ storage.googleapis.com/BUCKET_NAME \ --log-filter "resource.type=cloud_composer_environment AND resource.labels.environment_name=ENVIRONMENT_NAME AND resource.labels.location=LOCATION"
Ersetzen Sie:
ENVIRONMENT_NAME
durch den Namen der Umgebung.LOCATION
durch die Region, in der sich die Umgebung befindet.BUCKET_NAME
durch den Namen des Buckets.
Beispiel:
gcloud logging sinks create \ composer-log-sink-example-environment \ storage.googleapis.com/composer-logs-us-central1-example-environment \ --log-filter "resource.type=cloud_composer_environment AND resource.labels.environment_name=example-environment AND resource.labels.location=us-central1"
Weisen Sie dem Dienstkonto für diesen Bucket die Rolle Storage Object Creator zu. Das Dienstkonto wird im Ergebnis des vorherigen Befehls angezeigt.
gcloud projects add-iam-policy-binding \ PROJECT_ID \ --member="serviceAccount:LOGGING_SERVICE_AGENT" \ --role="roles/storage.objectCreator" \ --condition=None
Ersetzen Sie:
PROJECT_ID
durch die Projekt-ID.LOGGING_SERVICE_AGENT
durch das Logging-Dienst-Agent-Konto für diesen Bucket. Der Name dieses Kontos wird im vorherigen Schritt abgerufen.
Beispiel:
gcloud projects add-iam-policy-binding \ example-project \ --member="serviceAccount:example-sa@gcp-sa-logging.iam.gserviceaccount.com" \ --role="roles/storage.objectCreator" \ --condition=None
Schließen Sie die Logs für die neue Umgebung von Monitoring aus.
gcloud beta logging sinks update _Default \ --add-exclusion name=ENVIRONMENT_NAME-exclusion,filter="resource.type=cloud_composer_environment AND resource.labels.environment_name=ENVIRONMENT_NAME AND resource.labels.location=LOCATION"
Ersetzen Sie:
ENVIRONMENT_NAME
durch den Namen der Umgebung.LOCATION
durch die Region, in der sich die Umgebung befindet.
Beispiel:
gcloud beta logging sinks update _Default \ --add-exclusion name=example-environment-exclusion,filter="resource.type=cloud_composer_environment AND resource.labels.environment_name=example-environment AND resource.labels.location=us-central1"
Fügen Sie dem Log-Router die CMEK-Verschlüsselung auf Organisationsebene hinzu.
gcloud logging cmek-settings describe \ --organization=ORGANIZATION_ID
gcloud kms keys add-iam-policy-binding \ --project=KEY_PROJECT_ID \ --member LOGGING_SERVICE_AGENT \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --location=KEY_LOCATION \ --keyring=KEY_RING_NAME \ KEY_NAME
gcloud logging cmek-settings update \ --organization=ORGANIZATION_ID \ --kms-project=KEY_PROJECT_ID \ --kms-keyring=KEY_RING_NAME \ --kms-location=KEY_LOCATION \ --kms-key-name=KEY_NAME
Ersetzen Sie:
ORGANIZATION_ID
durch Ihre Organisations-ID.KEY_PROJECT_ID
durch die ID des Projekts, in dem sich der Schlüssel befindet. Wenn Sie einen Schlüssel aus einem anderen Projekt verwenden, unterscheidet sich dieser Wert von der ID Ihres Projekts. Wenn Sie einen Schlüssel aus demselben Projekt verwenden, ist dieser Wert die ID Ihres Projekts.KEY_RING_NAME
durch den Schlüsselbund, in dem Ihr vom Kunden verwalteter Schlüssel gespeichert ist.KEY_LOCATION
durch den Speicherort Ihres vom Kunden verwalteten Schlüssels. Dieser Standort muss mit dem Standort Ihrer Umgebung übereinstimmen.KEY_NAME
durch den Namen des vom Kunden verwalteten Schlüssels.
Rotation des CMEK-Schlüssels für Cloud Composer
Nachdem Sie die Verschlüsselung in Ihrer Umgebung mit CMEK-Schlüsseln konfiguriert haben, sollten Sie auch diese Schlüssel regelmäßig rotieren, wie in der KMS-Dokumentation beschrieben.
Wenn Sie einen CMEK-Schlüssel rotieren, werden Daten, die mit früheren Schlüsselversionen verschlüsselt sind, nicht automatisch mit der neuen Schlüsselversion neu verschlüsselt. Weitere Informationen zur Neuverschlüsselung von Daten finden Sie hier. Das gilt insbesondere für folgende Produkte:
Im Bucket der Umgebung gespeicherte Objekte
In der Airflow-Metadatendatenbank gespeicherte Daten
In Artifact Registry-Repositories gespeicherte Container-Images
und alle anderen Datenobjekte, die in der Cloud Composer-Umgebung mit CMEK verschlüsselt wurden.