Beschränkungen von Ressourcenstandorten konfigurieren

Managed Airflow (Gen 3) | Managed Airflow (Gen 2) | Managed Airflow (Legacy Gen 1)

Auf dieser Seite wird gezeigt, wie Sie Einschränkungen für Ressourcenstandorte konfigurieren, um dafür zu sorgen, dass Ihre von Managed Airflow gespeicherten Daten an den von Ihnen angegebenen Speicherorten liegen.

Funktionsweise von Standortbeschränkungen

Standortbeschränkungen für Managed Airflow werden anhand der Organisationsrichtlinie festgelegt, die auf das Projekt angewendet wird, in dem die Managed Airflow-Umgebung erstellt wird. Diese Richtlinie wird entweder innerhalb des Projekts zugewiesen oder von der Organisation übernommen.

Bei aktivierten Standortbeschränkungen ist es nicht möglich, eine Umgebung in einer Region zu erstellen, die durch die Richtlinie verboten ist. Wenn eine Region in der Sperrliste aufgeführt oder nicht in der Zulassungsliste" aufgeführt ist, können Sie in dieser Region keine Umgebungen erstellen.

Damit die Erstellung von Umgebungen möglich ist, muss die Richtlinie die gesamte Region und nicht nur eine bestimmte Zone innerhalb dieser Region zulassen. Beispielsweise muss die Region europe-west3 von der Richtlinie zugelassen werden, um Managed Airflow-Umgebungen in dieser Region zu erstellen.

Managed Airflow prüft die Standortbeschränkungen unter:

  • Umgebung erstellen
  • Umgebungsupgrade, falls während des Vorgangs zusätzliche Ressourcen erstellt werden
  • Aktualisierung der Umgebung für ältere Umgebungen, die keine Standorteinschränkungen für Managed Airflow-Abhängigkeiten erzwingen

Neben den Standortbeschränkungen führt Managed Airflow folgende Schritte aus:

  • Benutzerdefinierte Airflow-Images in regionalen Artifact Registry-Repositories speichern Solche Images werden beispielsweise erstellt, wenn Sie benutzerdefinierte PyPI-Images in Ihrer Umgebung installieren.
  • Wenn die US Multiregion durch die Richtlinie explizit verboten ist, ist die Verwendung von Cloud Build deaktiviert. In diesem Fall werden in Ihrem Umgebungscluster benutzerdefinierte Airflow-Images erstellt.

Python-Abhängigkeit in einer privaten IP-Umgebung mit Einschränkungen für Ressourcenstandorte installieren

Wenn Sie für Ihr Projekt Einschränkungen für den Ressourcenstandort festlegen, kann Cloud Build nicht zum Installieren von Python-Paketen verwendet werden. Daher ist der direkte Zugriff auf Repositories im öffentlichen Internet deaktiviert.

Wenn Sie Python-Abhängigkeiten in einer privaten IP-Umgebung installieren möchten, wenn Ihre Standortbeschränkungen die US Multiregion nicht zulassen, verwenden Sie eine der folgenden Optionen:

  • Verwenden Sie ein privates PyPI-Repository, das in Ihrem VPC-Netzwerk gehostet wird.

  • Stellen Sie mit einem Proxyserver in Ihrem VPC-Netzwerk eine Verbindung zu einem PyPI-Repository im öffentlichen Internet her. Geben Sie die Proxyadresse in der Datei /config/pip/pip.conf im Cloud Storage-Bucket an.

  • Wenn Ihre Sicherheitsrichtlinie den Zugriff auf Ihr VPC-Netzwerk von externen IP-Adressen aus zulässt, können Sie Cloud NAT konfigurieren.

  • Speichern Sie die Python-Abhängigkeiten im Ordner dags im Cloud Storage-Bucket, um sie als lokale Bibliotheken zu installieren. Dies ist möglicherweise keine gute Option, wenn die Abhängigkeitsstruktur groß ist.

Standorte für Managed Airflow-Logs einschränken

Wenn Ihre Managed Airflow-Logs sensible Daten enthalten, sollten Sie Managed Airflow-Logs an einen regionalen Cloud Storage-Bucket weiterleiten. Verwenden Sie dazu eine Logsenke. Nachdem Sie Logs an einen Cloud Storage-Bucket weitergeleitet haben, werden Ihre Logs nicht an Cloud Logging gesendet.

gcloud

  1. Erstellen Sie einen neuen Cloud Storage-Bucket.

    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION
    

    Ersetzen Sie:

    • LOCATION durch die Region, in der sich die Umgebung befindet.
    • BUCKET_NAME durch den Namen des Buckets. Beispiel: composer-logs-us-central1-example-environment
  2. 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.
    • BUCKET_NAME durch den Namen des Buckets.
    • LOCATION durch die Region, in der sich die Umgebung befindet.
  3. Die Ausgabe des vorherigen Befehls enthält die Dienstkontonummer. Weisen Sie diesem Dienstkonto die Rolle Storage-Objekt-Ersteller zu:

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="serviceAccount:SA_NUMBER@gcp-sa-logging.iam.gserviceaccount.com" \
    --role='roles/storage.objectCreator' \
    --condition=None
    

    Ersetzen Sie:

    • PROJECT_ID durch die Projekt-ID.
    • SA_NUMBER mit der Dienstkontonummer, die im vorherigen Schritt durch den Befehl gcloud logging sinks create bereitgestellt wurde.
  4. Schließen Sie die Logs für Ihre Umgebung vom Logging aus.

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

Nächste Schritte