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.
Sie benötigen die erforderlichen Rollen für die Verwaltung von VPC Service Controls.
Rufen Sie in der Google Cloud Console die Seite VPC Service Controls auf.
Wählen Sie Ihre Organisation aus, wenn Sie dazu aufgefordert werden.
Klicken Sie auf Zugriffsrichtlinien verwalten. Wählen Sie eine Zugriffsrichtlinie aus oder Erstellen Sie eine. Die Zugriffsrichtlinie muss alle Projekte enthalten, die Sie der Perimeter verwenden.
Klicken Sie auf Neuer Perimeter. Geben Sie einen Namen für den Perimeter ein.
Wählen Sie die Projekte aus, die Sie im Perimeter sichern möchten.
Klicken Sie auf Projekte.
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.
Klicken Sie auf die Schaltfläche Projekte hinzufügen.
Wählen Sie Cloud Run als den Dienst aus, den Sie im Perimeter sichern möchten.
Klicken Sie auf Eingeschränkte Dienste.
Klicken Sie auf Dienste hinzufügen.
Suchen Sie nach "Cloud Run". Wählen Sie dann Cloud Run Admin API.
Klicken Sie auf Cloud Run Admin API hinzufügen.
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:
Klicken Sie auf Richtlinie für eingehenden Traffic.
Geben Sie Quelle, Identität, Projekt und Dienste an.
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.
Klicken Sie auf Perimeter erstellen.
Nachdem Sie diese Schritte ausgeführt haben, werden alle Aufrufe der Cloud Run Admin API überprüft, um sicherzustellen, dass sie aus demselben 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.
Einstellungen für eingehenden Traffic beschrä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 Wert internal
verwenden, wenn Sie nur interne Anfragen zulassen möchten, oder internal-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
Rufen Sie in der Google Cloud Console die Richtlinienseite Erlaubte Einstellungen für eingehenden Traffic (Cloud Run) auf:
Klicken Sie auf Bearbeiten.
Wählen Sie auf der Seite Bearbeiten die Option Anpassen aus.
Wählen Sie unter Richtlinienerzwingung die Option Ersetzen aus.
Wählen Sie unter Richtlinienwerte die Option Benutzerdefiniert aus.
Wählen Sie unter Richtlinientyp Zulassen aus.
Geben Sie unter Benutzerdefinierte Werte
internal
ein. Wenn Sie auch Cloud Load Balancing-Traffic zulassen möchten, klicken Sie auf Neuer Richtlinienwert und geben Sieinternal-and-cloud-load-balancing
ein.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 VPC-Traffic 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
Rufen Sie in der Google Cloud Console die Richtlinienseite Erlaubte Einstellungen für ausgehenden VPC-Traffic (Cloud Run) auf:
Klicken Sie auf Bearbeiten.
Wählen Sie auf der Seite Bearbeiten die Option Anpassen aus.
Wählen Sie unter Richtlinienerzwingung die Option Ersetzen aus.
Wählen Sie unter Richtlinienwerte die Option Benutzerdefiniert aus.
Wählen Sie unter Richtlinientyp Zulassen aus.
Geben Sie unter Benutzerdefinierte Werte
all-traffic
ein.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 direkten VPC-ausgehenden Traffic oder einen Connector für serverlosen VPC-Zugriff verwenden und den Wert all-traffic
in ihren Einstellungen für ausgehenden Traffic verwenden. Diese Kombination 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 Versionsbereitstellungen mit einem anderen Wert
werden durch die 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.
Mit diesem Verhalten können Sie neue Überarbeitungen testen und schrittweise einführen, die nicht den Richtlinien entsprechen. 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ären googleapis.com
-Domains automatisch an den eingeschränkten Bereich für virtuelle IP-Adressen (VIP) 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:
Aktivieren Sie privaten Google-Zugriff in den Subnetzen, in denen Ihre VPC-Netzwerkressourcen gehostet werden.
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.
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
.
Fügen Sie der Antwortrichtlinie eine Regel hinzu, um
*.googleapis.com
inrestricted.googleapis.com
aufzulösen. Der IP-Adressbereich fürrestricted.googleapis.com
ist199.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.
Fügen Sie der Antwortrichtlinie eine Regel hinzu, um
*.run.app
inrestricted.googleapis.com
aufzulösen. Der IP-Adressbereich fürrestricted.googleapis.com
ist199.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 und ‑Jobs bereitstellen
Nachdem VPC Service Controls für Cloud Run konfiguriert wurde, müssen Sie prüfen, ob alle innerhalb des Dienstperimeters bereitgestellten Cloud Run-Dienste und ‑Jobs VPC Service Controls aktivieren. Hierfür ist Folgendes erforderlich:
- Cloud Run-Dienste und ‑Jobs müssen direkten ausgehenden VPC-Traffic oder einen Connector für serverlosen VPC-Zugriff verwenden. Weitere Informationen finden Sie unter Verbindung zu einem VPC-Netzwerk herstellen.
- Cloud Run-Dienste und ‑Jobs müssen den gesamten ausgehenden Traffic durch das VPC-Netzwerk leiten. Weitere Informationen finden Sie unter Einstellungen für ausgehenden Traffic.
- Cloud Run-Dienste dürfen nur Traffic aus internen Quellen zulassen. Weitere Informationen finden Sie unter Einstellungen für eingehenden Traffic. Wenn Sie den eingehenden Traffic auf "Alle" festlegen, wird die Erzwingung von VPC Service Controls deaktiviert.
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.