Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Auf dieser Seite wird beschrieben, wie Sie Zu schützende vom Kunden verwaltete Verschlüsselungsschlüssel (CMEKs) Cloud Composer-Umgebungen. Vom Kunden verwaltete Verschlüsselungsschlüssel sind zum Verschlüsseln/Entschlüsseln von Nutzerdaten in der Umgebung.
Hinweise
Sie können CMEK nur beim Erstellen einer Umgebung konfigurieren. Es ist nicht CMEK für eine vorhandene Umgebung aktiviert werden kann.
Cloud Composer unterstützt die CMEK-Verschlüsselung mit Schlüssel, die in externen Schlüsselverwaltungssystemen gespeichert sind.
Sie müssen einen CMEK-Schlüssel in derselben Region erstellen, in der sich Ihre Umgebungen befinden befinden. Sie können keine multiregionalen oder globalen Schlüssel verwenden.
Wenn Ihre Umgebung in einem VPC Service Controls-Perimeter definieren, müssen Sie die Cloud Key Management Service API hinzufügen und die Artifact Registry API auf den Perimeter übertragen.
Aktivieren Sie die Artifact Registry API.
Console
Artifact Registry API aktivieren.
gcloud
Aktivieren Sie die 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 Ihres und die Namen der DAGs im in verschlüsselter Form mit Schlüsseln, die Google gehören und von Google verwaltet werden.
Cloud Composer speichert die folgenden Informationen geschützt mit Google-eigene und von Google verwaltete Schlüssel, keine vom Kunden verwalteten Schlüssel:
- Name der Umgebung
- Airflow-Konfigurationsüberschreibungen
- Umgebungsvariablen
- Beschreibungen der zulässigen IP-Bereiche
- IP-Bereiche
- Labels
- Die Namen einiger von Cloud Composer gespeicherter Parameter können Folgendes enthalten: Teilzeichenfolge des Umgebungsnamens.
Vom Kunden verwalteten Verschlüsselungsschlüssel für Ihre Umgebung verwenden
Schritt 1: Vom Kunden verwalteten Verschlüsselungsschlüssel erstellen
Befolgen Sie die Schritte in Sympathische Verschlüsselungsschlüssel erstellen, um einen Schlüssel im Region, in der sich Ihre Umgebung befindet.
Schritt 2: Dienst-Agents Rollen zuweisen
Console
Diesen Schritt überspringen. Sie erteilen Berechtigungen für Dienst-Agents, wenn Sie einen Schlüssel für Ihre Umgebung angeben.
gcloud
Für die folgenden Dienst-Agents müssen folgende Voraussetzungen erfüllt sein: Cloud KMS CryptoKey Encrypter/Decrypter für den Schlüssel, den Sie für Ihre Umgebung verwenden.
Ersetzen Sie PROJECT_NUMBER
durch Ihren
Nummer des Projekts.
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 nicht in Ihrem wird für diesen Dienst noch keine Identität erstellt. Das kann z. B. passieren, wenn Sie noch keine Cloud Composer-Umgebungen in Ihrem Projekt.
Erstellen Sie Identitäten für die aufgeführten Dienste, um diese Dienstkonten hinzuzufügen mit dem folgenden Befehl:
gcloud beta services identity create \ --service=API_SERVICE_NAME
Ersetzen Sie
API_SERVICE_NAME
durch den API-Dienstname eines Dienstes für die in Ihrem Projekt kein Dienstkonto vorhanden ist.Beispiel:
gcloud beta services identity create \ --service=composer.googleapis.com
Gewähren Sie Dienst-Agents Berechtigungen:
Gewähren Sie dem Cloud Composer-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@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 dem GKE-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@container-engine-robot.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KEY_PROJECT_ID
Gewähren Sie dem Pub/Sub-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-pubsub.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KEY_PROJECT_ID
Gewähren Sie dem Compute Engine-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@compute-system.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KEY_PROJECT_ID
Gewähren Sie Berechtigungen zum Verschlüsseln/Entschlüsseln für Cloud Storage-Dienst-Agent. Sie können diesen Schritt überspringen, wenn Sie Bucket einer benutzerdefinierten Umgebung
gsutil kms authorize -k \ projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
Ersetzen Sie:
PROJECT_ID
mit deinem Projekt-ID.KEY_PROJECT_ID
durch die ID des Projekts, in dem Ihr vom Kunden verwalteten Schlüssel. Wenn Sie einen Schlüssel aus einem anderen Projekt verwenden, unterscheidet sich von der Projekt-ID. Wenn Sie einen Schlüssel aus der Projekt identisch ist, ist dieser Wert die ID Ihres Projekts.PROJECT_NUMBER
mit deinem Nummer des Projekts.KEY_LOCATION
durch den vom Kunden verwalteten Speicherort des Schlüssels. Dieser Standort muss mit dem Standort Ihrer Umgebung übereinstimmen.KEY_NAME
durch den vom Kunden verwalteten Schlüsselnamen.KEY_RING_NAME
durch den Schlüsselbund, der Ihren vom Kunden verwalteten Schlüssel speichert.
Zum Abrufen dieser Werte können Sie
gcloud projects describe
ausführen,gcloud kms keyrings list
- undgcloud kms keys describe
-Befehle.
Schritt 3: Umgebung mit CMEK erstellen
Nachdem Sie einen vom Kunden verwalteten Verschlüsselungsschlüssel erstellt haben, können Sie Folgendes verwenden: um Cloud Composer-Umgebungen zu erstellen.
Console
Wenn Sie eine Umgebung erstellen:
Wählen Sie im Bereich Datenverschlüsselung Vom Kunden verwalteter Verschlüsselungsschlüssel (CMEK).
Wählen Sie in der Drop-down-Liste Wählen Sie einen vom Kunden verwalteten Schlüssel aus Ihren Schlüssel aus.
Falls eine zusätzliche Einrichtung erforderlich ist, werden Sie in einer Meldung darüber informiert. In diesem Fall:
Klicken Sie auf Assistenten öffnen.
Legen Sie im Abschnitt CMEK-Schlüssel für die Verwendung in Cloud Composer vorbereiten fest. Dialogfeld, um die Liste der Dienst-Agents anzusehen die die Rolle Cloud KMS CryptoKey Encrypter/Decrypter haben müssen auf dem Schlüssel.
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 Ihr
zu verbessern.
Weitere Informationen zum Erstellen von Umgebungen finden Sie unter Umgebungen erstellen. Beispielsweise können Sie 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 Ihrem Projekt-ID. Wenn Sie einen Schlüssel aus demselben Projekt verwenden, ist dieser Wert Ihr Projekt-ID.LOCATION
durch die Region, in der sich die Umgebung befindet.KEY_LOCATION
durch den Speicherort Ihres vom Kunden verwalteten Schlüssels. Dieses Standort muss mit dem Standort Ihrer Umgebung übereinstimmen.KEY_NAME
durch den vom Kunden verwalteten Schlüsselnamen.KEY_RING_NAME
durch den Schlüsselbund, der Ihren vom Kunden verwalteten Schlüssel speichert.
Beispiel:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-2.8.6-airflow-2.7.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 im Abschnitt 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, So verwenden Sie das Standard-CMEK-Verfahren zum Verschlüsseln von Logs mit CMEK-Schlüsseln.
Zum Verschlüsseln von Logs mit CMEK-Schlüsseln folgen Sie der Anleitung unter Schlüssel zum Schutz der Speicherdaten in Logging verwalten
Cloud Composer-Logs an einen CMEK-verschlüsselten Cloud Storage-Bucket weiterleiten
Wenn Sie davon ausgehen, dass die Logs sensible Daten enthalten, sollten Sie Cloud Composer-Logs an einen CMEK-verschlüsselten weiterleiten Cloud Storage-Bucket mithilfe von Logrouter. Andernfalls wird Ihre Logs an Monitoring gesendet werden.
Wenn Sie Support von Cloud Customer Care benötigen, müssen Sie möglicherweise Google Supportentwickler auf die Cloud Composer-Logs zugreifen, die in Cloud Storage
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 Ihre Projekt-ID ein. Wenn Sie einen Schlüssel aus demselben Projekt verwenden, ist die ID Ihres Projekts.KEY_LOCATION
durch den Speicherort Ihres vom Kunden verwalteten Schlüssels. Dieses Standort muss mit dem Standort Ihrer Umgebung übereinstimmen.KEY_RING_NAME
durch den Schlüsselbund, der Ihren vom Kunden verwalteten Schlüssel speichert.KEY_NAME
durch den vom Kunden verwalteten Schlüsselnamen.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 hierfür die Rolle Storage Object Creator zu. Bucket. Das Dienstkonto wird im Ergebnis der vorherigen .
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
mit dem Logging-Dienst Agent-Konto für diesen Bucket. Der Name dieses Kontos wird abgerufen zum vorherigen Schritt.
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
Logs für die neue Umgebung ausschließen von Monitoring
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
mit deinem 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 Ihre Projekt-ID ein. Wenn Sie einen Schlüssel aus demselben Projekt verwenden, ist die ID Ihres Projekts.KEY_RING_NAME
durch den Schlüsselbund, der Ihren vom Kunden verwalteten Schlüssel speichert.KEY_LOCATION
durch den Speicherort Ihres vom Kunden verwalteten Schlüssels. Dieses Standort muss mit dem Standort Ihrer Umgebung übereinstimmen.KEY_NAME
durch den vom Kunden verwalteten Schlüsselnamen.
Rotation von CMEK-Schlüsseln für Cloud Composer
Nachdem Sie die Verschlüsselung in Ihrer Umgebung mit CMEK-Schlüsseln konfiguriert haben, diese Schlüssel auch regelmäßig rotieren, in der KMS-Dokumentation.
Wenn Sie einen CMEK-Schlüssel rotieren, werden mit vorherigen Schlüsselversionen verschlüsselte Daten mit der neuen Schlüsselversion nicht automatisch neu verschlüsselt. Weitere Informationen finden Sie unter Daten neu verschlüsseln.
Dies gilt insbesondere für:
- Objekte, die im Bucket der Umgebung gespeichert sind.
- In der Airflow-Datenbank gespeicherte Kataloge.
- In Artifact Registry-Repositories gespeicherte Container-Images.
- Alle anderen Datenobjekte, die mit CMEK in der Cloud Composer-Umgebung.