VPC Service Controls konfigurieren
VPC Service Controls ist ein Google Cloud-Feature, mit dem Sie einen sicheren Perimeter einrichten können, der vor Daten-Exfiltration schützt. In dieser Anleitung erfahren Sie, wie Sie VPC-Service Controls mit Cloud Run Functions verwenden können, um Ihre Funktionen noch sicherer zu machen.
Einschränkungen bei dieser Einbindung finden Sie in der Dokumentation zu VPC Service Controls.
Einrichtung auf Organisationsebene
Wenn Sie VPC Service Controls mit Cloud Run Functions 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 Functions 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
Zum Einrichten eines Dienstperimeters benötigen Sie die Rollen Organisationsbetrachter (roles/resourcemanager.organizationViewer
) und Access Context Manager-Bearbeiter (roles/accesscontextmanager.policyEditor
).
In der Kurzanleitung zu VPC Service Controls sind folgende Schritte beschrieben:
Dienstperimeter erstellen
Dem Perimeter ein oder mehrere Projekte hinzufügen
Schränken Sie die Cloud Functions API und die Cloud Run Admin API ein.
Nach der Einrichtung Ihres Dienstperimeters werden alle Aufrufe der eingeschränkten API geprüft, um sicherzustellen, dass die Aufrufe aus dem gleichen Perimeter stammen.
Optional: Perimeterzugriff für Entwicklungsmaschinen aktivieren
Da VPC Service Controls-Prüfungen für die Cloud Functions API erzwungen werden, schlagen Aufrufe an die Cloud Functions API fehl, sofern sie nicht aus dem Dienstperimeter stammen. Wählen Sie eine der folgenden Optionen aus, um Funktionen mit der Cloud Functions API, mit der Cloud Run Functions-UI in der Google Cloud Console oder mit der Google Cloud CLI zu verwalten:
Einen Computer innerhalb des VPC Service Controls-Perimeters verwenden. Sie können beispielsweise eine Compute Engine-VM oder einen lokalen Computer verwenden, der per VPN mit Ihrem VPC-Netzwerk verbunden ist.
Funktionsentwicklern Zugriff auf den Perimeter gewähren. Sie können beispielsweise Zugriffsebenen erstellen, die den Perimeterzugriff anhand der IP-Adresse oder der Nutzeridentität ermöglichen. Weitere Informationen finden Sie unter Zugriff auf geschützte Ressourcen von außerhalb eines Perimeters zulassen.
Organisationsrichtlinien einrichten
Zum Verwalten von Organisationsrichtlinien müssen Sie die Rolle Administrator für Unternehmensrichtlinien (roles/orgpolicy.policyAdmin
) haben.
Für Compliance mit VPC Service Controls und zum Schutz vor Daten-Exfiltration richten Sie die folgenden Organisationsrichtlinien ein, die die zulässigen Netzwerkeinstellungen für Cloud Run Functions im Dienstperimeter steuern.
Einstellungen für eingehenden Traffic beschränken
Die Organisationsrichtlinie run.allowedIngress
steuert die Einstellungen für eingehenden Traffic, die Entwickler für Cloud Run Functions verwenden dürfen. Legen Sie diese Organisationsrichtlinie so fest, dass Entwickler den internen Wert verwenden müssen:
Console
Rufen Sie in der Google Cloud Console die Richtlinienseite Einstellungen für eingehenden Traffic auf:
Klicken Sie auf Richtlinie verwalten.
Wählen Sie auf der Seite Richtlinie 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.Klicken Sie auf Richtlinie festlegen.
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.
Nach Einrichtung dieser Organisationsrichtlinie müssen alle Funktionen den Wert internal
für ihre Einstellungen für eingehenden Traffic verwenden. Dies bedeutet, dass HTTP-Funktionen nur Traffic entgegennehmen können, der von einem VPC-Netzwerk innerhalb des Dienstperimeters stammt. Funktionsbereitstellungen, die einen anderen Wert angeben, schlagen fehl.
Einstellungen für ausgehenden Traffic des VPC-Connectors beschränken
Die Organisationsrichtlinie run.allowedVPCEgress
steuert die Einstellungen für ausgehenden Traffic, die Entwickler für Cloud Run Functions 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 Traffic des VPC-Connectors auf:
Klicken Sie auf Richtlinie verwalten.
Wählen Sie auf der Seite Richtlinie 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 Richtlinie festlegen.
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.
Nach Einrichtung dieser Organisationsrichtlinie müssen alle Funktionen den Wert all-traffic
für ihre Einstellungen für ausgehenden Traffic verwenden. Dies bedeutet, dass die Funktionen den gesamten ausgehenden Traffic über Ihr VPC-Netzwerk weiterleiten müssen. Funktionsbereitstellungen, die einen anderen Wert angeben, schlagen fehl.
In Kombination mit der Organisationsrichtlinie cloudfunctions.requireVPCConnector
wird dadurch der gesamte ausgehende Traffic durch das VPC-Netzwerk geleitet, in dem es den konfigurierten Firewall- und Routingregeln unterliegt.
Einrichtung auf Projektebene
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
Wenn Sie auf Google APIs und Google-Dienste zugreifen und gleichzeitig die Risiken der Daten-Exfiltration minimieren möchten, sollten Anfragen an den eingeschränkten virtuellen IP-Bereich (VIP) gesendet werden: 199.36.153.4/30
(restricted.googleapis.com
).
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:
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.
Konfigurieren Sie das DNS, um
*.googleapis.com
bisrestricted.googleapis.com
aufzulösen.Konfigurieren Sie das DNS mit einer A-Eintragszuordnung
*.cloudfunctions.net
zum IP-Bereich199.36.153.4/30
. Sie können hierfür Cloud DNS verwenden.gcloud dns managed-zones create ZONE_NAME \ --visibility=private \ --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/networks/VPC_NAME \ --description=none \ --dns-name=cloudfunctions.net gcloud dns record-sets transaction start --zone=ZONE_NAME gcloud dns record-sets transaction add --name=*.cloudfunctions.net. \ --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \ --zone=ZONE_NAME \ --ttl=300 gcloud dns record-sets transaction execute --zone=ZONE_NAME
Aktivieren Sie den privaten Google-Zugriff für das Subnetz Ihres VPC-Connectors.
Anfragen, die aus dem VPC-Netzwerk stammen, haben nun folgende Eigenschaften:
- Sie können das VPC-Netzwerk nicht verlassen und ausgehender Traffic außerhalb des Dienstperimeters wird verhindert.
- Sie können nur Google APIs und Google-Dienste erreichen, die VPC Service Controls prüfen, wodurch eine Daten-Exfiltration über Google APIs verhindert wird.
Dem Cloud Build-Dienstkonto Zugriff auf den Perimeter der VPC Service Controls gewähren
Cloud Run Functions verwendet Cloud Build, um Ihren Quellcode in einem ausführbaren Container zu erstellen. Wenn Sie Cloud Run Functions mit VPC Service Controls verwenden möchten, müssen Sie Ihr Cloud Build-Dienstkonto (Standard- oder benutzerdefiniertes) so konfigurieren, dass es Zugriff auf Ihren Dienstperimeter hat.
Nach dem Namen des Dienstkontos suchen
Wenn Sie das standardmäßige Cloud Build-Dienstkonto verwenden, können Sie den Namen so ermitteln:
Verwenden Sie die IAM-Seite in der Google Cloud Console, um das Cloud Build-Dienstkonto zu finden.
Prüfen Sie, ob im Drop-down-Menü des Projekts das richtige Projekt ausgewählt ist.
Suchen Sie nach
cloudbuild.gserviceaccount.com
. Die E-Mail-Adresse im FormatPROJECT_NUMBER@cloudbuild.gserviceaccount.com
ist der Name des Dienstkontos.
Wenn Sie ein benutzerdefiniertes Cloud Build-Dienstkonto haben, verwenden Sie stattdessen diesen Namen.
Dienstkonto Zugriff auf den Dienstperimeter gewähren
Sobald Sie den Namen des Dienstkontos haben, folgen Sie der Anleitung unter Zugriff nach Nutzern oder Dienstkonten beschränken, um eine Zugriffsebene für das Dienstkonto zu erstellen. Folgen Sie dann der Anleitung unter Zugriffsebene zu einem vorhandenen Perimeter hinzufügen, um Ihrem Dienstperimeter eine Zugriffsebene hinzuzufügen.
Funktionen bereitstellen, die mit VPC Service Controls kompatibel sind
Nachdem VPC Service Controls für Cloud Run Functions konfiguriert wurde, müssen Sie prüfen, ob alle innerhalb des Dienstperimeters bereitgestellten Funktionen den festgelegten Organisationsrichtlinien entsprechen. Das bedeutet:
- Alle Funktionen müssen einen Connector für serverlosen VPC-Zugriff verwenden. Weitere Informationen finden Sie unter Verbindung zu einem VPC-Netzwerk herstellen.
- Alle Funktionen dürfen nur Zugriffe aus internen Quellen zulassen. Weitere Informationen finden Sie unter Einstellungen für eingehenden Traffic.
- Alle Funktionen müssen den gesamten ausgehenden Traffic durch das VPC-Netzwerk leiten. Weitere Informationen finden Sie unter Einstellungen für ausgehenden Traffic.
Funktionsbereitstellungen, die diese Kriterien nicht erfüllen, schlagen fehl.
Vorhandene Funktionen auf Compliance mit VPC Service Controls überprüfen
Nach Einrichtung von VPC Service Controls werden neue Funktionen, die in Projekten innerhalb des Dienstperimeters erstellt wurden, automatisch auf Compliance geprüft. Damit bestehende Arbeitslasten nicht unterbrochen werden, funktionieren vorhandene Funktionen weiterhin. Sie entsprechen möglicherweise jedoch nicht den Organisationsrichtlinien.
Es wird empfohlen, vorhandene Funktionen zu prüfen und Funktionen nach Bedarf zu aktualisieren oder neu bereitzustellen. Zur Vereinfachung dieses Vorgangs können Sie ein Skript erstellen, das die Cloud Functions API verwendet, um Ihre Funktionen aufzulisten und diejenigen hervorzuheben, bei denen nicht die richtigen Netzwerkeinstellungen angegeben sind.
VPC Service Controls mit Funktionen außerhalb eines Perimeters verwenden
Die vorherigen Abschnitte gelten für das Szenario, in dem Sie Cloud Run Functions in einem VPC Service Controls-Dienstperimeter bereitstellen.
Wenn Sie eine Funktion außerhalb eines Dienstperimeters bereitstellen müssen, die Funktion jedoch Zugriff auf Ressourcen innerhalb eines Perimeters benötigt, verwenden Sie die folgende Konfiguration:
- Dem Cloud Build-Dienstkonto Zugriff auf den Perimeter der VPC Service Controls gewähren
- Gewähren Sie dem Laufzeitdienstkonto der Funktion Zugriff auf den Perimeter. Dazu erstellen Sie entweder eine Zugriffsebene und fügen die Zugriffsebene zum Dienstperimeter hinzu oder erstellen eine Ingress-Richtlinie für den Perimeter.
- Funktion mit einem VPC-Netzwerk verbinden
- Leiten Sie den gesamten ausgehenden Traffic von der Funktion über das VPC-Netzwerk weiter. Weitere Informationen finden Sie unter Einstellungen für ausgehenden Traffic.
Nachdem Sie diese Konfiguration abgeschlossen haben, kann die Funktion Ressourcen erreichen, die durch den Perimeter geschützt sind.