VPC Service Controls konfigurieren

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

Mit VPC Service Controls können Organisationen Perimeter für Google Cloud-Ressourcen definieren, um das Risiko einer Daten-Exfiltration zu minimieren.

Cloud Composer-Umgebungen können innerhalb eines Dienstperimeters bereitgestellt werden. Durch die Konfiguration Ihrer Umgebung mit VPC Service Controls können Sie vertrauliche Daten schützen und gleichzeitig die vollständig verwalteten Workflow-Orchestrierungsfunktionen von Cloud Composer nutzen.

Die VPC Service Controls-Unterstützung für Cloud Composer bedeutet:

  • Cloud Composer kann jetzt als sicherer Dienst innerhalb von VPC Service Controls-Perimetern ausgewählt werden.
  • Alle von Cloud Composer verwendeten unterliegenden Ressourcen sind so konfiguriert, dass sie die VPC Service Controls-Architektur unterstützen und den relevanten Regeln entsprechen.

Ihre Vorteile bei der Bereitstellung von Cloud Composer-Umgebungen mit VPC Service Controls sind:

  • Geringeres Risiko der Daten-Exfiltration.
  • Schutz vor Datenweitergabe aufgrund falsch konfigurierter Zugriffskontrollen.
  • Reduziertes Risiko, dass böswillige Nutzer Daten in nicht autorisierte Google Cloud-Ressourcen kopieren oder dass externe Angreifer über das Internet auf Google Cloud-Ressourcen zugreifen.

Airflow-Webserver im VPC Service Controls-Modus

Im VPC Service Controls-Modus führt Cloud Composer zwei Instanzen des Airflow-Webservers aus. Der Identity-Aware Proxy verteilt den Traffic zwischen diesen Instanzen auf den Load-Balancer. Airflow-Webserver werden im schreibgeschützten Modus ausgeführt, d. h.:

  • Die DAG-Serialisierung ist aktiviert. Daher parst der Airflow-Webserver keine DAG-Definitionsdateien.

  • Plug-ins werden nicht mit dem Webserver synchronisiert, sodass Sie die Webserverfunktionalität nicht mit Plug-ins ändern oder erweitern können.

  • Der Airflow-Webserver verwendet ein Container-Image, das vom Cloud Composer-Dienst vorinstalliert ist. Wenn Sie PyPI-Images in Ihrer Umgebung installieren, werden diese Images nicht auf dem Webserver-Container-Image installiert.

Dienstperimeter erstellen

Informationen zum Erstellen und Konfigurieren von Dienstperimetern finden sich unter Dienstperimeter erstellen. Wählen Sie Cloud Composer als einen der im Perimeter gesicherten Dienste aus.

Umgebungen in einem Perimeter erstellen

Es sind zusätzliche Schritte erforderlich, um Cloud Composer in einem Perimeter bereitzustellen. Beim Erstellen einer Cloud Composer-Umgebung gilt Folgendes:

  1. Aktivieren Sie die Access Context Manager API und die Cloud Composer API für Ihr Projekt. Weitere Informationen finden sich unter APIs aktivieren.

  2. Achten Sie darauf, dass Ihr Dienstperimeter die folgenden über VPC zugänglichen Dienste enthält. Andernfalls kann Ihre Umgebung möglicherweise nicht erstellt werden:

    • Cloud Composer API (composer.googleapis.com)
    • Compute Engine API (compute.googleapis.com)
    • Kubernetes Engine API (container.googleapis.com)
    • Container Registry API (containerRegistry.googleapis.com)
    • Artifact Registry API (Artifact Registry.googleapis.com)
    • Cloud Storage API (storage.googleapis.com)
    • Cloud SQL Admin API (sqladmin.googleapis.com)
    • Cloud Build API (cloudbuild.googleapis.com)
    • Cloud Logging API (logging.googleapis.com)
    • Cloud Monitoring API (monitoring.googleapis.com)
    • Cloud Pub/Sub API (pubsub.googleapis.com)
    • Cloud Cloud Resource Manager API (cloudresourcemanager.googleapis.com)
    • Service Directory API (servicedirectory.googleapis.com)
    • Cloud Key Management Service API (cloudkms.googleapis.com), wenn Sie Cloud KMS- oder CMEK-Schlüssel verwenden
    • Secret Manager API (secretmanager.googleapis.com), wenn Sie Secret Manager als Secret-Back-End verwenden
  3. Verwenden Sie die Version composer-1.10.4 oder höher.

  4. Achten Sie darauf, dass die DAG-Serialisierung aktiviert ist. Wenn Ihre Umgebung Cloud Composer Version 1.15.0 und höher verwendet, ist die Serialisierung standardmäßig aktiviert.

  5. Erstellen Sie eine neue Cloud Composer-Umgebung mit aktivierter privater IP. Beachten Sie, dass diese Einstellung während der Erstellung der Umgebung konfiguriert werden muss.

  6. Denken Sie beim Erstellen Ihrer Umgebung daran, den Zugriff auf den Airflow-Webserver zu konfigurieren. Für maximale Sicherheit sollten Sie den Zugriff auf den Webserver nur von bestimmten IP-Bereichen zulassen. Weitere Informationen finden Sie unter Netzwerkzugriff auf Webserver konfigurieren.

Vorhandene Umgebungen mit VPC Service Controls konfigurieren

Sie können das Projekt, das Ihre Umgebung enthält, in den Perimeter einfügen, wenn:

PyPI-Pakete installieren

In der standardmäßigen VPC Service Controls-Konfiguration unterstützt Cloud Composer nur die Installation von PyPI-Paketen aus privaten Repositories, die über den privaten IP-Adressbereich des VPC-Netzwerks erreichbar sind. Die empfohlene Konfiguration für diesen Prozess besteht darin, ein privates PyPI-Repository einzurichten, es mit geprüften Paketen zu versehen, die von Ihrer Organisation verwendet werden und anschließend Cloud Composer zu konfigurieren, um Python-Abhängigkeiten aus einem privaten Repository zu installieren.

Es ist auch möglich, PyPI-Pakete aus Repositories außerhalb des privaten IP-Bereichs zu installieren. Gehen Sie so vor:

  1. Konfigurieren Sie Cloud NAT so, dass Cloud Composer im privaten IP-Bereich eine Verbindung zu externen PyPI-Repositories herstellen kann.
  2. Konfigurieren Sie Ihre Firewallregeln so, dass ausgehende Verbindungen vom Composer-Cluster zum Repository zugelassen werden.

Wenn Sie diese Einrichtung verwenden, stellen Sie sicher, dass Sie die Risiken der Verwendung externer Repositories verstehen. Vergewissern Sie sich, dass Sie dem Inhalt und der Integrität aller externen Repositories vertrauen, da diese Verbindungen möglicherweise als Exfiltrationsvektor verwendet werden können.

Verbindung zu Google APIs und Google-Diensten konfigurieren

Konfigurieren Sie in einer VPC Service Controls-Konfiguration den Zugriff auf Google APIs und Google-Dienste über die restricted.googleapis.com, um den Netzwerktraffic zu steuern. Diese Domain blockiert den Zugriff auf Google APIs und Google-Dienste, die VPC Service Controls nicht unterstützen.

Cloud Composer-Umgebungen verwenden die folgenden Domains:

  • *.googleapis.com wird für den Zugriff auf andere Google-Dienste verwendet.

  • *.pkg.dev wird zum Abrufen von Umgebungs-Images verwendet, z. B. beim Erstellen oder Aktualisieren einer Umgebung.

  • *.gcr.io GKE erfordert eine Verbindung zur Container Registry-Domain unabhängig von der Cloud Composer-Version.

Konfigurieren Sie die Verbindung zum restricted.googleapis.com-Endpunkt.

Domain DNS-Name CNAME-Eintrag A-Eintrag
*.googleapis.com googleapis.com. DNS-Name: *.googleapis.com.
Ressourceneintragstyp: CNAME
Kanonischer Name: googleapis.com.
Ressourceneintragstyp: A
IPv4-Adressen: 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7
*.pkg.dev pkg.dev. DNS-Name: *.pkg.dev.
Ressourceneintragstyp: CNAME
Kanonischer Name: pkg.dev.
Ressourceneintragstyp: A
IPv4-Adressen: 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7
*.gcr.io gcr.io. DNS-Name: *.gcr.io.
Ressourceneintragstyp: CNAME
Kanonischer Name: gcr.io.
Ressourceneintragstyp: A
IPv4-Adressen: 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7

So erstellen Sie eine DNS-Regel:

  1. Erstellen Sie eine neue DNS-Zone und verwenden Sie DNS-Name als DNS-Namen für diese Zone.

    Beispiel: pkg.dev.

  2. Fügen Sie einen Eintrag für den CNAME-Eintrag hinzu.

    Beispiel:

    • DNS-Name: *.pkg.dev.
    • Ressourceneintragstyp: CNAME
    • Kanonischer Name: pkg.dev.
  3. Fügen Sie einen Eintrag für A-Eintrag hinzu:

    Beispiel:

    • Ressourceneintragstyp: A
    • IPv4-Adressen: 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7

Weitere Informationen finden Sie unter Private Verbindung zu Google APIs und Google-Diensten einrichten.

Firewallregeln konfigurieren

Wenn Ihr Projekt nicht standardmäßige Firewallregeln enthält, z. B. Regeln, die implizierte Firewallregeln überschreiben, oder vorkonfigurierte Regeln im Standardnetzwerk ändern, prüfen Sie, ob die folgenden Firewallregeln konfiguriert sind.

Beispielsweise kann Cloud Composer keine Umgebung erstellen, wenn Sie eine Firewallregel haben, die den gesamten ausgehenden Traffic ablehnt. Definieren Sie zur Vermeidung von Problemen selektive allow-Regeln, die der Liste folgen und eine höhere Priorität als die globale deny-Regel haben.

Konfigurieren Sie Ihr VPC-Netzwerk so, dass Traffic aus Ihrer Umgebung zugelassen wird:

  • Unter Firewallregeln verwenden erfahren Sie, wie Sie Regeln für Ihr VPC-Netzwerk prüfen, hinzufügen und aktualisieren.
  • Überprüfen Sie die Konnektivität zwischen IP-Bereichen mit dem Verbindungstool.
  • Sie können Netzwerk-Tags verwenden, um den Zugriff weiter einzuschränken. Sie können diese Tags beim Erstellen einer Umgebung festlegen.
Beschreibung Richtung Vorgang Quelle oder Ziel Protokolle Ports
DNS

Konfigurieren Sie die Konfiguration wie unter Unterstützung von VPC Service Controls für Cloud DNS beschrieben.
- - - - -
Google APIs und Google-Dienste Ausgehender Traffic Zulassen IPv4-Adressen von restricted.googleapis.com, die Sie für Google APIs und Google-Dienste verwenden. TCP 443
Clusterknoten der Umgebung Ausgehender Traffic Zulassen Primärer IP-Adressbereich des Subnetzwerks der Umgebung TCP, UDP alle
Cluster-Pods der Umgebung Ausgehender Traffic Zulassen Sekundärer IP-Adressbereich für Pods im Subnetzwerk der Umgebung TCP, UDP alle
Steuerungsebene des Clusters der Umgebung Ausgehender Traffic Zulassen IP-Bereich der GKE-Steuerungsebene TCP, UDP alle
Webserver Ausgehender Traffic Zulassen Netzwerk-IP-Bereich des Webservers TCP 3306, 3307

So rufen Sie IP-Bereiche ab:

  • Pod-, Dienst- und Steuerungsebenen-Adressbereiche sind auf der Seite Cluster des Clusters Ihrer Umgebung verfügbar:

    1. Rufen Sie in der Google Cloud Console die Seite Umgebungen auf.

      Zur Seite Umgebungen“

    2. Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Umgebungsdetails wird geöffnet.

    3. Rufen Sie den Tab Umgebungskonfiguration auf.

    4. Klicken Sie auf den Link Clusterdetails ansehen.

  • Den IP-Bereich des Webservers der Umgebung sehen Sie auf dem Tab Umgebungskonfiguration.

  • Sie können die Netzwerk-ID der Umgebung auf dem Tab Umgebungskonfiguration einsehen. Rufen Sie zum Abrufen von IP-Bereichen für ein Subnetzwerk die Seite VPC-Netzwerke auf und klicken Sie auf den Namen des Netzwerks, um Details aufzurufen:

    Zur Seite VPC-Netzwerke

VPC Service Controls-Logs

Beim Beheben von Problemen bei der Erstellung der Umgebung können Sie die von VPC Service Controls generierten Audit-Logs analysieren.

Zusätzlich zu anderen Logeinträgen können Sie Logs auf Informationen zu cloud-airflow-prod@system.gserviceaccount.com- und service-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com-Dienstkonten prüfen, die Komponenten Ihrer Umgebungen konfigurieren.

Der Cloud Composer-Dienst verwendet das Dienstkonto cloud-airflow-prod@system.gserviceaccount.com, um Mandantenprojektkomponenten Ihrer Umgebungen zu verwalten.

Das Dienstkonto service-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com, auch als Composer Service Agent Service Account bezeichnet, verwaltet Umgebungskomponenten in Dienst- und Hostprojekten.

Beschränkungen

  • Alle Netzwerkeinschränkungen der VPC Service Controls gelten auch für Ihre Cloud Composer-Umgebungen. Weitere Informationen finden sich in der Dokumentation zu VPC Service Controls.
  • Das Anzeigen einer gerenderten Vorlage mit Funktionen in der Web-UI mit aktivierter DAG-Serialisierung wird für Umgebungen unterstützt, auf denen Cloud Composer Version 1.12.0 oder höher und die Airflow-Version 1.10.9 oder höher ausgeführt werden.

  • Das Flag async_dagbag_loader kann nicht auf True gesetzt werden, wenn die DAG-Serialisierung aktiviert ist.

  • Durch das Aktivieren der DAG-Serialisierung werden alle Airflow-Webserver-Plug-ins deaktiviert, da sie die Sicherheit des VPC-Netzwerks beeinträchtigen können, in dem Cloud Composer bereitgestellt wird. Dies wirkt sich nicht auf das Verhalten von Planer- oder Worker-Plug-ins, einschließlich Airflow-Operatoren und Sensoren, aus.

  • Wenn Cloud Composer in einem Perimeter ausgeführt wird, ist der Zugriff auf öffentliche PyPI-Repositories eingeschränkt. Informationen zum Installieren von PyPi-Modulen im privaten IP-Modus finden sich unter Python-Abhängigkeiten installieren.

Nächste Schritte