VPC Service Controls (VPC SC) verwenden

VPC Service Controls ist ein Google Cloud-Feature, mit dem Sie einen sicheren Perimeter einrichten können, der vor Daten-Exfiltration schützt. Sowohl die standardmäßige URL run.app als auch die benutzerdefinierten Domains unterliegen den VPC Service Controls. In dieser Anleitung erfahren Sie, wie Sie VPC Service Controls mit Cloud Run verwenden können, um Ihre Dienste noch sicherer zu machen.

Beschränkungen und Hinweise

  • Für Artifact Registry oder Container Registry:

    • Die Registry, in der Sie den Container speichern, muss sich im selben VPC Service Controls-Dienstperimeter wie das Projekt befinden, für das Sie die Bereitstellung durchführen.
    • Der erstellte Code muss sich im selben Perimeter wie die Registry befinden, in die der Container übertragen wird.
  • Die Funktion für kontinuierliche Bereitstellung ist nicht für Projekte innerhalb eines VPC Service Controls-Perimeters verfügbar.

  • Wenn Cloud Run-Dienste aufgerufen werden, verwendet die VPC Service Controls-Richtlinienerzwingung nicht die IAM-Authentifizierungsinformationen des Clients. Solche Anfragen unterliegen den folgenden Einschränkungen:

    • VPC Service Controls-Regeln für eingehenden Traffic, die IAM-Hauptkonten verwenden, werden nicht unterstützt.
    • Zugriffsebenen für VPC Service Controls-Perimeter, die IAM-Hauptkonten verwenden, werden nicht unterstützt.

Organisation zur Unterstützung von VPC Service Controls einrichten

Wenn Sie VPC Service Controls mit Cloud Run verwenden möchten, können Sie einen Dienstperimeter auf Organisationsebene konfigurieren. Durch die Konfiguration geeigneter Organisationsrichtlinien können Sie dafür sorgen, dass VPC Service Controls-Prüfungen bei der Verwendung von Cloud Run erzwungen werden. Außerdem können Entwickler nur Dienste bereitstellen, die mit VPC Service Controls kompatibel sind. Weitere Informationen zur Übernahme und zu Verstößen beim Festlegen einer Organisationsrichtlinie.

VPC Service Controls-Perimeter einrichten

In den folgenden Schritten wird gezeigt, wie Sie einen VPC Service Controls-Perimeter einrichten.

  1. Prüfen Sie, ob Sie die erforderlichen Rollen für die Verwaltung von VPC Service Controls haben.

  2. Rufen Sie in der Google Cloud Console die Seite VPC Service Controls auf.

    Zur Seite „VPC Service Controls”

  3. Wählen Sie Ihre Organisation aus, wenn Sie dazu aufgefordert werden.

  4. Klicken Sie auf Neuer Perimeter. Geben Sie einen Namen für den Perimeter ein.

  5. Wählen Sie die Projekte aus, die Sie im Perimeter sichern möchten.

    1. Klicken Sie auf Projekte.

    2. Wählen Sie im Fenster Projekte hinzufügen die Projekte aus, die Sie hinzufügen möchten.

      Wenn Sie eine freigegebene VPC nutzen, müssen Sie das Hostprojekt und die Dienstprojekte hinzufügen.

    3. Klicken Sie auf die Schaltfläche Projekte hinzufügen.

  6. Wählen Sie Cloud Run als den Dienst aus, den Sie im Perimeter sichern möchten.

    1. Klicken Sie auf Eingeschränkte Dienste.

    2. Klicken Sie auf Dienste hinzufügen.

    3. Suchen Sie nach "Cloud Run". Wählen Sie dann Cloud Run Admin API aus.

    4. Klicken Sie auf Cloud Run Admin API hinzufügen.

  7. Zugriff für Entwickler aktivieren.

    Durch Aktivieren von VPC Service Controls für Cloud Run wird der gesamte Zugriff von außerhalb des Perimeters verhindert. Dazu gehört auch das Aufrufen und Bereitstellen von Diensten von Rechnern, die sich nicht im Perimeter befinden, z. B. Laptops von Unternehmen. Damit Entwickler und Anwendungsoperatoren Ressourcen innerhalb des Perimeters aufrufen und bereitstellen können, müssen Sie die Richtlinie für Perimeter-Ingress konfigurieren:

    1. Klicken Sie auf Richtlinie für eingehenden Traffic.

    2. Geben Sie Quelle, Identität, Projekt und Dienste an.

    3. Klicken Sie auf Add Rule (Regel hinzufügen).

    Wenn Ihre Organisation Access Context Manager verwendet, können Sie auch den Zugriff für Entwickler aktivieren, indem Sie Zugriffsebenen festlegen.

  8. Klicken Sie auf Perimeter erstellen.

Nach Abschluss dieser Schritte werden alle Aufrufe an die Cloud Run Admin API geprüft, um sicherzustellen, dass sie aus dem gleichen Perimeter stammen.

Organisationsrichtlinien einrichten

Zum Verwalten von Organisationsrichtlinien müssen Sie die Rolle Administrator für Unternehmensrichtlinien (roles/orgpolicy.policyAdmin) haben.

Zur Einhaltung von VPC Service Controls und zum Schutz vor Daten-Exfiltration richten Sie die folgenden Organisationsrichtlinien ein, die die zulässigen Einstellungen für Cloud Run im Dienstperimeter für eingehenden und ausgehenden Traffic steuern.

Erlaubte Einstellungen für eingehenden Traffic einschränken

Die Organisationsrichtlinie run.allowedIngress steuert die Einstellungen für eingehenden Traffic, die Entwickler für Cloud Functions verwenden dürfen. Legen Sie diese Organisationsrichtlinie so fest, dass Entwickler den Wertinternal Wenn Sie nur interne Anfragen zulassen möchten, oderinternal-and-cloud-load-balancing Wenn Sie Anfragen über einen externen Application Load Balancer mit den von Cloud Load Balancing verwalteten Zugriffssteuerungen zulassen möchten.

Weitere Informationen zu diesen Einstellungen finden Sie unter Eingehenden Traffic für Cloud Run einschränken.

Console

  1. Rufen Sie in der Google Cloud Console die Richtlinienseite Erlaubte Einstellungen für eingehenden Traffic (Cloud Run) auf:

    Öffnen Sie die Seite „Organisationsrichtlinien“.

  2. Klicken Sie auf Bearbeiten.

  3. Wählen Sie auf der Seite Bearbeiten die Option Anpassen aus.

  4. Wählen Sie unter Richtlinienerzwingung die Option Ersetzen aus.

  5. Wählen Sie unter Richtlinienwerte die Option Benutzerdefiniert aus.

  6. Wählen Sie unter Richtlinientyp Zulassen aus.

  7. Geben Sie unter Benutzerdefinierte Werte internal ein. Wenn Sie auch Cloud Load Balancing-Traffic zulassen möchten, klicken Sie auf Neuer Richtlinienwert und geben Sie internal-and-cloud-load-balancing ein.

  8. Klicken Sie auf Speichern.

gcloud

Führen Sie den Befehl gcloud resource-manager org-policies allow aus:

gcloud resource-manager org-policies allow \
  run.allowedIngress internal \
  --organization ORGANIZATION_ID

ORGANIZATION_ID ist Ihre Organisations-ID. Wenn Sie auch Cloud Load Balancing-Traffic zulassen möchten, ersetzen Sie run.allowedIngress internal durch run.allowedIngress internal-and-cloud-load-balancing.

Nach Einrichtung dieser Organisationsrichtlinie müssen alle Dienste die zulässigen Werte für ihre Einstellungen für eingehenden Traffic verwenden. Dies bedeutet, dass Cloud Run-Dienste nur Traffic entgegennehmen können, der von einem VPC-Netzwerk innerhalb des Dienstperimeters stammt. Versuche, eingehenden Traffic auf einen anderen Wert festzulegen, werden durch die Organisationsrichtlinie blockiert.

Einstellungen für ausgehenden Traffic des VPC-Connectors einschränken

Die Organisationsrichtlinie run.allowedVPCEgress steuert die Einstellungen für ausgehenden Traffic, die Entwickler für Cloud Run verwenden dürfen. Legen Sie diese Organisationsrichtlinie so fest, dass nur der Wert all-traffic zulässig ist:

Console

  1. Rufen Sie in der Google Cloud Console die Richtlinienseite Erlaubte Einstellungen für ausgehenden VPC-Traffic (Cloud Run) auf:

    Öffnen Sie die Seite „Organisationsrichtlinien“.

  2. Klicken Sie auf Bearbeiten.

  3. Wählen Sie auf der Seite Bearbeiten die Option Anpassen aus.

  4. Wählen Sie unter Richtlinienerzwingung die Option Ersetzen aus.

  5. Wählen Sie unter Richtlinienwerte die Option Benutzerdefiniert aus.

  6. Wählen Sie unter Richtlinientyp Zulassen aus.

  7. Geben Sie unter Benutzerdefinierte Werte all-traffic ein.

  8. Klicken Sie auf Speichern.

gcloud

Führen Sie den Befehl gcloud resource-manager org-policies allow aus:

gcloud resource-manager org-policies allow \
  run.allowedVPCEgress all-traffic \
  --organization ORGANIZATION_ID

ORGANIZATION_ID ist Ihre Organisations-ID.

Verhalten nach Festlegen der Organisationsrichtlinie

Nach Einrichtung der Organisationsrichtlinie müssen alle neuen Überarbeitungen einen VPC-Connector und den Wert all-traffic in ihren Einstellungen für ausgehenden Traffic verwenden. Diese Kombination von Einstellungen leitet den gesamten ausgehenden Traffic von diesen Überarbeitungen über ein VPC-Netzwerk weiter, wodurch dieser Traffic den Firewallregeln und anderen Einstellungen des VPC-Netzwerks unterliegt. Neue Überarbeitungsbereitstellungen mit einem anderen Wert werden von der Organisationsrichtlinie blockiert.

Migrationen von Organisationsrichtlinien und Traffic

Bei Diensten, die vor der Festlegung der Organisationsrichtlinie vorhanden waren, können Sie den Traffic weiterhin zu nicht konformen Überarbeitungen migrieren, bis alle Überarbeitungen, die Traffic verarbeiten, konform sind.

Dieses Verhalten ermöglicht es Ihnen neue Überarbeitungen, die der Richtlinie entsprechen, zu testen und schrittweise bereitzustellen. Sobald alle Überarbeitungen, die Traffic verarbeiten, mit der Richtlinie kompatibel sind, wird jeder Versuch, Traffic in nicht konforme Überarbeitungen zu verschieben, von der Organisationsrichtlinie blockiert.

Projekt für die Unterstützung von VPC Service Controls einrichten

Für einzelne Projekte innerhalb des Dienstperimeters müssen Sie zusätzliche Konfigurationen vornehmen, um VPC Service Controls verwenden zu können.

VPC-Netzwerke konfigurieren

In diesem Abschnitt wird gezeigt, wie Sie Ihr VPC-Netzwerk so konfigurieren, dass Anfragen an die reguläre virtuelle googleapis.com-IP-Adresse automatisch an den eingeschränkten VIP-Bereich 199.36.153.4/30 (restricted.googleapis.com ) geleitet werden, wo Ihr Cloud Run-Dienst die Bereitstellung durchführt. Es sind keine Codeänderungen erforderlich.

Führen Sie für jedes VPC-Netzwerk in einem Projekt die folgenden Schritte aus, um den ausgehenden Traffic mit Ausnahme des Traffics für den eingeschränkten VIP-Bereich zu blockieren:

  1. Aktivieren Sie den privaten Google-Zugriff in den Subnetzen, die Ihre VPC-Netzwerkressourcen hosten.

  2. Konfigurieren Sie Firewallregeln, um zu verhindern, dass Daten das VPC-Netzwerk verlassen:

    • Erstellen Sie eine Regel, die ausgehenden Traffic blockiert.

    • Erstellen Sie eine Regel, die ausgehenden Traffic auf 199.36.153.4/30 an TCP-Port 443 zulässt. Achten Sie darauf, dass die Regel Priorität vor der Regel zum Blockieren des ausgehenden Traffics hat, die Sie soeben erstellt haben. Dadurch wird ausgehender Traffic ausschließlich auf den eingeschränkten VIP-Bereich zugelassen.

  3. Erstellen Sie eine Cloud DNS-Antwortrichtlinie.

    gcloud dns response-policies create RESPONSE_POLICY \
    --networks=NETWORK \
    --description=DESCRIPTION
    

    Dabei gilt:

    • RESPONSE_POLICY: ein Name für Ihre Antwortrichtlinie.
    • NETWORK: der Name des Netzwerks, das mit dieser Richtlinie verknüpft werden soll. Wenn Sie mehrere Netzwerke angeben möchten, trennen Sie die Namen der Netzwerke durch Kommas. Beispiel: network1,network2.
    • DESCRIPTION: eine Beschreibung der Antwortrichtlinie, z. B. Cloud Run VPC Service Controls response policy.
  4. Fügen Sie der Antwortrichtlinie eine Regel hinzu, um *.googleapis.com in restricted.googleapis.com aufzulösen. Der IP-Adressbereich für restricted.googleapis.com ist 199.36.153.4/30.

    gcloud dns response-policies rules create RESPONSE_POLICY_RULE \
    --response-policy=RESPONSE_POLICY \
    --dns-name=*.googleapis.com. \
    --local-data=name="restricted.googleapis.com.",type="A",ttl=300,rrdatas="199.36.153.4|199.36.153.5|199.36.153.6|199.36.153.7"
    

    Dabei gilt:

    • RESPONSE_POLICY_RULE: ein Name für Ihre Antwortrichtlinienregel.
    • RESPONSE_POLICY: der Name der Antwortrichtlinie, die Sie im vorherigen Schritt erstellt haben, in Anführungszeichen.
  5. Fügen Sie der Antwortrichtlinie eine Regel hinzu, um *.run.app in restricted.googleapis.com aufzulösen. Der IP-Adressbereich für restricted.googleapis.com ist 199.36.153.4/30.

    gcloud dns response-policies rules create RESPONSE_POLICY_RULE \
    --response-policy=RESPONSE_POLICY \
    --dns-name=*.run.app. \
    --local-data=name="restricted.googleapis.com.",type="A",ttl=300,rrdatas="199.36.153.4|199.36.153.5|199.36.153.6|199.36.153.7"
    

    Dabei gilt:

    • RESPONSE_POLICY_RULE: ein Name für Ihre Antwortrichtlinienregel.
    • RESPONSE_POLICY: der Name der Antwortrichtlinie, die Sie im vorherigen Schritt angegeben haben, in Anführungszeichen.

Nun können Anfragen, die aus dem VPC-Netzwerk stammen:

  • Das VPC-Netzwerk nicht verlassen und ausgehender Traffic außerhalb des Dienstperimeters wird verhindert.
  • Nur Google APIs und Google-Dienste erreichen, die VPC Service Controls überprüfen, wodurch eine Daten-Exfiltration über Google APIs verhindert wird.

VPC Service Controls-konforme Cloud Run-Dienste bereitstellen

Nachdem VPC Service Controls für Cloud Run konfiguriert wurde, müssen Sie prüfen, ob alle innerhalb des Dienstperimeters bereitgestellten Dienste VPC Service Controls aktivieren. Das bedeutet:

Vorhandene Dienste auf Compliance mit VPC Service Controls prüfen

Nach Einrichtung von VPC Service Controls werden neue Dienste, die in Projekten innerhalb des Dienstperimeters erstellt wurden, automatisch auf Compliance geprüft. Damit bestehende Arbeitslasten nicht unterbrochen werden, funktionieren vorhandene Dienste weiterhin. Sie entsprechen möglicherweise jedoch nicht den Organisationsrichtlinien.

Google empfiehlt, dass Sie Ihre Dienste regelmäßig überprüfen, um sicherzustellen, dass Ihre Einstellungen für eingehenden und ausgehenden Traffic die Anforderungen erfüllen und Dienste nach Bedarf aktualisieren oder neu bereitstellen. Beispielsweise können Sie ein Skript erstellen, das die Cloud Run Admin API verwendet, um Ihre Dienste aufzulisten und diejenigen hervorzuheben, bei denen nicht die richtigen Netzwerkeinstellungen angegeben sind.