Managed Airflow (Gen 3) | Managed Airflow (Gen 2) | Managed Airflow (Legacy Gen 1)
Auf dieser Seite wird beschrieben, wie Sie vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) verwenden, um Managed Airflow-Umgebungen zu schützen.
Informationen zu vom Kunden verwalteten Verschlüsselungsschlüsseln (Customer-Managed Encryption Keys, CMEK)
Managed Service for Apache Airflow verschlüsselt ruhende Kundeninhalte standardmäßig. Die Verschlüsselung wird von Managed Airflow übernommen. Weitere Maßnahmen Ihrerseits sind nicht erforderlich. Diese Option heißt Google-Standardverschlüsselung.
Wenn Sie Ihre Verschlüsselungsschlüssel selbst verwalten möchten, können Sie kundenverwaltete Verschlüsselungsschlüssel (CMEKs, Customer-Managed Encryption Keys) in Cloud KMS mit CMEK-integrierten Diensten wie Managed Airflow verwenden. Mit Cloud KMS-Schlüsseln haben Sie die Kontrolle über Schutzlevel, Speicherort, Rotationszeitplan, Nutzungs- und Zugriffsberechtigungen sowie über kryptografische Grenzen. Mit Cloud KMS können Sie außerdem Audit-Logs aufrufen und den Lebenszyklus von Schlüsseln steuern. Statt es Google zu überlassen, die symmetrischen Schlüsselverschlüsselungsschlüssel (Key Encryption Keys, KEKs) zum Schutz Ihrer Daten zu besitzen und zu verwalten, können Sie diese auch über Cloud KMS steuern und verwalten.
Nachdem Sie Ihre Ressourcen mit CMEKs eingerichtet haben, ähnelt der Zugriff auf Ihre verwalteten Airflow-Ressourcen der Verwendung der Google-Standardverschlüsselung. Weitere Informationen zu Ihren Verschlüsselungsoptionen finden Sie unter Kundenverwaltete Verschlüsselungsschlüssel (CMEK).
Mit CMEK-Verschlüsselung geschützte Daten
Managed Airflow schützt die folgenden Daten mit CMEK-Verschlüsselung:
- Inhalte und Schema der Airflow-Datenbank
- Umgebungs- und Airflow-Aufgabenlogs in Cloud Logging
- Inhalt des Buckets der Umgebung
- Im Cluster der Umgebung gespeicherte Secrets
- Nichtflüchtige Speicher, die von der Aufgabenwarteschlange verwendet werden
- Container-Images von Umgebungskomponenten, die in Artifact Registry-Repositories gespeichert sind
Weitere Informationen zur Datenverschlüsselung finden Sie unter:
- Informationen zu vom Kunden verwalteten Verschlüsselungsschlüsseln (Customer-managed Encryption Keys, CMEK) in der Cloud SQL-Dokumentation.
- Kundenverwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) verwenden und Secrets auf Anwendungsebene verschlüsseln in der Google Kubernetes Engine-Dokumentation.
- Kundenverwaltete Verschlüsselungsschlüssel in der Cloud Storage-Dokumentation.
- CMEK für Cloud Logging konfigurieren in der Cloud Logging-Dokumentation.
Daten, die nicht mit CMEK-Verschlüsselung geschützt sind
Cloud Monitoring unterstützt keine CMEK-Verschlüsselung. Der Name Ihrer Umgebung und die Namen von DAGs werden in der Monitoring-Datenbank in verschlüsselter Form mit Google-owned and Google-managed encryption keysgespeichert.
In Managed Airflow werden die folgenden Informationen gespeichert, die mitGoogle-owned and Google-managed encryption keysund nicht mit kundenverwalteten Schlüsseln geschützt sind:
- Name der Umgebung
- Airflow-Konfigurationsüberschreibungen
Umgebungsvariablen
Labels
Die Namen einiger von Managed Airflow gespeicherter Parameter können einen Teil des Namens der Umgebung enthalten.
Rotation von CMEK-Schlüsseln für Managed Airflow
Nachdem Sie die Verschlüsselung in Ihrer Umgebung mit CMEK-Schlüsseln konfiguriert haben, sollten Sie 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 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 Daten.
- Alle anderen Datenobjekte, die mit CMEK in der verwalteten Airflow-Umgebung verschlüsselt sind.
- Container-Images von Umgebungskomponenten, die in Artifact Registry-Repositories gespeichert sind.
Kundenverwalteten Verschlüsselungsschlüssel für Ihre Umgebung verwenden
Hinweis
Sie können CMEK nur beim Erstellen einer Umgebung konfigurieren. CMEK kann nicht für eine vorhandene Umgebung aktiviert werden.
Managed Airflow unterstützt die CMEK-Verschlüsselung mit Schlüsseln, die in externen Schlüsselmanagern 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 in einem VPC Service Controls-Perimeter ausgeführt werden soll, müssen Sie die Cloud Key Management Service API hinzufügen.
Schritt 1: Kundenverwalteten Verschlüsselungsschlüssel erstellen
Folgen Sie der Anleitung unter Symmetrische Verschlüsselungsschlüssel erstellen, um einen Schlüssel in der Region zu erstellen, 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
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 Nummer Ihres Projekts.
| Name des Dienst-Agents | E-Mail-Adresse des Dienstkontos | API-Dienstname |
|---|---|---|
| Managed Airflow Service Agent | service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com | composer.googleapis.com |
| Cloud Storage-Dienst-Agent | service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com | Berechtigungen zum Verschlüsseln und Entschlüsseln mit gcloud storage service-agent --authorize-cmek erteilen |
(Falls erforderlich) Wenn einige dieser Dienstkonten in Ihrem Projekt nicht vorhanden sind, bedeutet das, dass noch keine Identität für diesen Dienst erstellt wurde. Das kann beispielsweise passieren, wenn Sie noch keine Managed Airflow-Umgebungen in Ihrem Projekt erstellt haben.
Um diese Dienstkonten hinzuzufügen, erstellen Sie mit dem folgenden Befehl Identitäten für die aufgeführten Dienste:
gcloud beta services identity create \ --service=API_SERVICE_NAMEErsetzen Sie
API_SERVICE_NAMEdurch den API-Dienstnamen eines Dienstes, der kein Dienstkonto in Ihrem Projekt hat.Beispiel:
gcloud beta services identity create \ --service=composer.googleapis.comBerechtigungen für Dienst-Agents erteilen:
Weisen Sie dem Managed Airflow-Dienst-Agent die Rolle zu:
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_IDErteilen Sie dem Cloud Storage-Dienst-Agent Berechtigungen zum Verschlüsseln und Entschlüsseln. Sie können diesen Schritt überspringen, wenn Sie den Bucket einer benutzerdefinierten Umgebung verwenden.
gcloud storage service-agent \ --authorize-cmek=projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
Ersetzen Sie:
PROJECT_IDdurch die ID Ihres Projekts.KEY_PROJECT_IDdurch 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_NUMBERdurch die Nummer Ihres Projekts.KEY_LOCATIONdurch den Speicherort Ihres vom Kunden verwalteten Schlüssels. Dieser Standort muss mit dem Standort Ihrer Umgebung übereinstimmen.- Ersetzen Sie
KEY_NAMEdurch den Namen Ihres vom Kunden verwalteten Schlüssels. KEY_RING_NAMEmit dem Schlüsselbund, in dem Ihr vom Kunden verwalteter Schlüssel gespeichert ist.
Sie können die Befehle
gcloud projects describe,gcloud kms keyrings listundgcloud kms keys describeausführen, um diese Werte zu erhalten.
Schritt 3: Umgebung mit CMEK erstellen
Nachdem Sie einen kundenverwalteten Verschlüsselungsschlüssel erstellt haben, können Sie ihn zum Erstellen von Managed Airflow-Umgebungen verwenden.
Console
Wenn Sie eine Umgebung erstellen, gilt Folgendes:
Maximieren Sie den Abschnitt Erweiterte Konfiguration. Wählen Sie im Abschnitt Datenverschlüsselung die Option Cloud Key Management Service-Schlüssel aus.
Wählen Sie in der Drop-down-Liste Cloud Key Management Service-Schlüssel auswählen Ihren Schlüssel aus.
Wenn eine zusätzliche Einrichtung erforderlich ist, wird eine Meldung angezeigt. In diesem Fall:
Klicken Sie auf Assistenten öffnen.
Sehen Sie sich im Dialogfeld CMEK-Schlüssel für die Verwendung in Managed Airflow vorbereiten die Liste der Dienst-Agents an, die die Rolle Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler für den Schlüssel haben müssen.
Klicken Sie auf Gewähren, um die erforderlichen Rollen und Berechtigungen zu erteilen.
gcloud
Mit dem Argument --kms-key wird ein vom Kunden verwalteter Verschlüsselungsschlüssel für Ihre Umgebung angegeben.
Weitere Informationen zum Erstellen von Umgebungen finden Sie unter Umgebungen erstellen. Möglicherweise möchten Sie 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_NAMEdurch den Namen der Umgebung.IMAGE_VERSIONdurch den Namen des Managed Airflow-Images.KEY_PROJECT_IDdurch 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.LOCATIONdurch die Region, in der sich die Umgebung befindet.KEY_LOCATIONdurch den Speicherort Ihres vom Kunden verwalteten Schlüssels. Dieser Standort muss mit dem Standort Ihrer Umgebung übereinstimmen.- Ersetzen Sie
KEY_NAMEdurch den Namen Ihres vom Kunden verwalteten Schlüssels. KEY_RING_NAMEmit dem 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-3-airflow-2.10.5-build.34 \
--kms-key projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key
Verschlüsselungskonfiguration der Umgebung ansehen
So rufen Sie die Verschlüsselungskonfiguration für eine vorhandene Umgebung auf:
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 aufzurufen.
gcloud composer environments describe \
ENVIRONMENT_NAME \
--location LOCATION \
--format="value(config.encryptionConfig)"
Ersetzen Sie:
ENVIRONMENT_NAMEdurch den Namen der Umgebung.LOCATIONdurch 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 Managed Airflow-Logs verwenden
Cloud Logging unterstützt die Verschlüsselung von Log-Speicher mit CMEK-Schlüsseln. Wir empfehlen, das Standard-CMEK-Verfahren zum Verschlüsseln von Logs mit CMEK-Schlüsseln zu verwenden.
Wenn Sie Logs mit CMEK-Schlüsseln verschlüsseln möchten, folgen Sie der Anleitung unter Schlüssel zum Schutz von Logging-Speicherdaten verwalten.
Managed Airflow-Logs an einen CMEK-verschlüsselten Cloud Storage-Bucket weiterleiten
Wenn Sie erwarten, dass Ihre Logs sensible Daten enthalten, sollten Sie Managed Airflow-Logs mit dem Log-Router an einen CMEK-verschlüsselten Cloud Storage-Bucket weiterleiten. Dadurch wird verhindert, dass Ihre Logs an Monitoring gesendet werden.
Wenn Sie Unterstützung von Cloud Customer Care benötigen, müssen Sie möglicherweise Google-Supporttechnikern Zugriff auf die in Cloud Storage gespeicherten Managed Airflow-Logs gewähren.
gcloud
Erstellen Sie einen neuen Cloud Storage-Bucket zum Speichern der Logs.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATIONErsetzen Sie:
LOCATIONdurch die Region, in der sich die Umgebung befindet.BUCKET_NAMEdurch den Namen des Buckets.
Beispiel:
gcloud storage buckets create gs://composer-logs-us-central1-example-environment --location=us-central1Verschlüsseln Sie den Bucket mit Ihrem CMEK-Schlüssel.
gcloud storage buckets update gs://BUCKET_NAME \ --default-encryption-key=projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAMEErsetzen Sie:
KEY_PROJECT_IDdurch 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_LOCATIONdurch den Speicherort Ihres vom Kunden verwalteten Schlüssels. Dieser Standort muss mit dem Standort Ihrer Umgebung übereinstimmen.KEY_RING_NAMEmit dem Schlüsselbund, in dem Ihr vom Kunden verwalteter Schlüssel gespeichert ist.- Ersetzen Sie
KEY_NAMEdurch den Namen Ihres vom Kunden verwalteten Schlüssels. BUCKET_NAMEdurch den Namen des Buckets.
Beispiel:
gcloud storage buckets update gs://composer-logs-us-central1-example-environment \ --default-encryption-key=projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-keyErstellen 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_NAMEdurch den Namen der Umgebung.LOCATIONdurch die Region, in der sich die Umgebung befindet.BUCKET_NAMEdurch 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-Objekt-Ersteller 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=NoneErsetzen Sie:
PROJECT_IDdurch die Projekt-ID.LOGGING_SERVICE_AGENTdurch das Logging-Dienstkonto 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=NoneSchließen Sie die Logs für die neue Umgebung vom 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_NAMEdurch den Namen der Umgebung.LOCATIONdurch 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_IDgcloud 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_NAMEgcloud 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_NAMEErsetzen Sie:
ORGANIZATION_IDdurch Ihre Organisations-ID.KEY_PROJECT_IDdurch 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_NAMEmit dem Schlüsselbund, in dem Ihr vom Kunden verwalteter Schlüssel gespeichert ist.KEY_LOCATIONdurch den Speicherort Ihres vom Kunden verwalteten Schlüssels. Dieser Standort muss mit dem Standort Ihrer Umgebung übereinstimmen.- Ersetzen Sie
KEY_NAMEdurch den Namen Ihres vom Kunden verwalteten Schlüssels.