Auf dieser Seite werden die Regeln für ein- und ausgehenden Traffic für VPC Service Controls erläutert. VPC Service Controls verwendet Regeln für eingehenden und ausgehenden Traffic, um den Zugriff auf und von den Ressourcen und Clients zu ermöglichen, die durch Dienstperimeter geschützt sind.
Die Eingangsregeln für eingehenden und ausgehenden Traffic geben die Richtung des zulässigen Zugriffs auf und von verschiedenen Identitäten und Ressourcen an. Regeln für ein- und ausgehenden Traffic können Anwendungsfälle ersetzen und vereinfachen, für die zuvor eine oder mehrere Perimeter-Bridges erforderlich waren.
Informationen zum Anwenden von Richtlinien für ein- und ausgehenden Traffic finden Sie unter Richtlinien für ein- und ausgehenden Traffic konfigurieren.
Eine Liste sicherer Anwendungsfälle und Beispiele für den Datenaustausch finden Sie unter Sicherer Datenaustausch mit Regeln für ein- und ausgehenden Traffic.
Eine Liste der Anwendungsfälle und Beispiele für den kontextsensitiven Zugriff finden Sie unter Kontextsensitiver Zugriff mit Regeln für eingehenden Traffic.
Vorteile von Regeln für ein- und ausgehenden Traffic
- Mit Regeln für ein- und ausgehenden Traffic können Sie Daten mithilfe von Google Cloud-Dienst-APIs privat und effizient innerhalb von Organisationen austauschen.
- Mit Regeln für ein- und ausgehenden Traffic können Sie den Zugriff auf Google Cloud-Ressourcen in einem Perimeter basierend auf dem Kontext der API-Anfrage gewähren:
- Sie können Identitätstypen oder Identitäten beschränken, die im Rahmen eines Quellnetzwerks, einer IP-Adresse oder eines Geräts verwendet werden können.
- Sie können Google Cloud APIs und -Methoden beschränken, auf die mit dem Quellnetzwerk, der IP-Adresse, dem Gerät und dem Identitätstyp zugegriffen werden kann.
- Minimieren Sie das Risiko der Daten-Exfiltration, indem Sie den Dienst, die Methoden, Google Cloud-Projekte, VPC-Netzwerke und Identitäten, die zum Ausführen des Datenaustauschs verwendet werden, einschränken.
- Sie können schreibgeschützten Zugriff auf externe Datasets und Images gewähren, die nicht von Ihnen verwaltet werden.
- Sie können dafür sorgen, dass Clients in weniger privilegierten Segmenten keinen Zugriff auf Google Cloud-Ressourcen in mehr privilegierten Segmenten haben, während der Zugang in die andere Richtung ermöglicht wird.
- Sie können die Konfigurationen vereinfachen, für die zuvor eine oder mehrere Perimeter-Bridges erforderlich waren.
Definition von ein- und ausgehendem Traffic
Definitionen für ein- und ausgehenden Traffic sind unabhängig von dem Vorgang, der für die Ressource aufgerufen wird. Daher beziehen sich die Definitionen auf die Richtung der Anfrage und nicht auf die Richtung der Datenbewegung.
Eingehender Traffic: Bezieht sich auf den Zugriff von einem API-Client von außerhalb des Dienstperimeters auf Ressourcen innerhalb eines Dienstperimeters. Beispiel:
- Ein Cloud Storage-Client außerhalb eines Dienstperimeters, der Lese-, Schreib- oder Kopiervorgänge von Cloud Storage für eine Cloud Storage-Ressource innerhalb des Perimeters aufruft
Ausgehender Traffic: Bezieht sich auf alle Zugriffe, bei denen ein API-Client oder Ressourcen innerhalb des Dienstperimeters und Ressourcen außerhalb eines Dienstperimeters genutzt werden. Beispiele:
- Ein Compute Engine-Client innerhalb eines Dienstperimeters ruft einen
create
-Vorgang von Compute Engine auf, wobei sich die Image-Ressource außerhalb des Perimeters befindet. - Ein Cloud Storage-Client, innerhalb oder außerhalb des Perimeters, der einen
copy
-Befehl aufruft, wobei sich ein Bucket innerhalb des Perimeters und der andere Bucket außerhalb des Perimeters befindet.
- Ein Compute Engine-Client innerhalb eines Dienstperimeters ruft einen
Richtlinienmodell
Eine Regel für ein- und ausgehenden Traffic besteht aus from
und to
-Blöcken, in denen:
from
auf die Attribute des API-Clients verweist.to
auf die Attribute von Google Cloud-Diensten und -Ressourcen verweist.
Einem Dienstperimeter können mehrere Regeln für ein- und ausgehenden Traffic zugeordnet werden. Ein Google Cloud-Dienstaufruf wird basierend auf den folgenden semantischen Methoden zugelassen oder abgelehnt:
- Eine Anfrage von einem Client außerhalb des Perimeters an eine Google Cloud-Ressource innerhalb des Perimeters ist zulässig, wenn die Bedingungen der erforderlichen Eingangsregel erfüllt sind.
- Eine Anfrage von einem Client innerhalb des Perimeters an eine Google Cloud-Ressource außerhalb des Perimeters ist zulässig, wenn die Bedingungen der erforderlichen Ausgangsregel erfüllt sind.
- Ein API-Aufruf, der eine Google Cloud-Ressource innerhalb des Perimeters und eine Google Cloud-Ressource außerhalb des Perimeters umfasst, ist zulässig, wenn eine Regel für eingehenden Traffic vorhanden ist, die der Client erfüllt (wenn sich der Client nicht innerhalb des Perimeters befindet) und eine Regel für ausgehenden Traffic, die die externe Ressource erfüllt.
Beispiele für API-Anfragen, die durch Regeln für eingehenden Traffic zugelassen sind
- Ein Cloud Storage-Client außerhalb des Perimeters, der Objekte aus einem Cloud Storage-Bucket innerhalb des Perimeters auf die lokale Maschine herunterlädt (z. B. mit dem Befehl
gsutil cp
). - Ein BigQuery-Client außerhalb des Perimeters der mithilfe eines BigQuery-Jobs in einem Projekt innerhalb des Perimeters, ein BigQuery-Dataset innerhalb des Perimeters abfrägt (z. B. mit dem Befehl
bq query
). - Eine Compute Engine-VM in einem VPC-Netzwerk, das sich außerhalb des Perimeters befindet, schreibt in einen Cloud Storage-Bucket innerhalb des Perimeters.
Beispiele für API-Anfragen, die durch Regeln für ausgehenden Traffic zugelassen werden
- Ein Cloud Storage-Client innerhalb des Perimeters, der Objekte zwischen einem Cloud Storage-Bucket außerhalb des Perimeters und einem Bucket innerhalb des Perimeters kopiert (z. B. mit dem Befehl
gsutil cp
).
- Ein BigQuery-Client innerhalb des Perimeters der mithilfe eines BigQuery-Jobs in einem Projekt außerhalb des Perimeters, ein BigQuery-Dataset innerhalb des Perimeters abfrägt (z. B. mit dem Befehl
bq query
).
Beispiele für API-Anfragen, die durch eine Kombination aus Regeln für eingehenden und ausgehenden Traffic zugelassen werden
- Ein Cloud Storage-Client außerhalb des Perimeters, der Objekte zwischen einem Cloud Storage-Bucket außerhalb des Perimeters und einem Bucket innerhalb des Perimeters kopiert (z. B. mit dem Befehl
gsutil cp
). - Ein BigQuery-Client außerhalb des Perimeters der mithilfe eines BigQuery-Jobs in einem Projekt außerhalb des Perimeters, ein BigQuery-Dataset innerhalb des Perimeters abfrägt (z. B. mit dem Befehl
bq query
).
API-Anfragen mit mehreren Dienstperimetern
Wenn die aufgerufenen Ressourcen und/oder der API-Client zu verschiedenen Dienstperimetern gehören, müssen die Richtlinien aller betroffenen Perimeter die API-Anfrage zulassen. Beispiel: Ein Cloud Storage-Client und ein Bucket a
in einem Dienstperimeter A
und ein Bucket b
innerhalb eines Dienstperimeters B
. In diesem Beispiel kopiert der Cloud Storage-Client Objekte aus dem Bucket a
in den Bucket b
und aus dem Bucket b
in den Bucket a
. Dazu sind die folgenden Regeln für ein- und ausgehenden Traffic erforderlich:
- Eine Regel für ausgehenden Traffic im Perimeter
A
, um Zugriff auf den Cloud Storage-Bucketb
zu ermöglichen - Eine Regel für ausgehenden Traffic im Perimeter
B
, um Zugriff auf den Cloud Storage-Bucketa
zu ermöglichen - Eine Regel für eingehenden Traffic im Perimeter
B
, um Zugriff für den Cloud Storage-Client zu ermöglichen, der sich außerhalb des PerimetersB
befindet.
Referenz zu Regeln für eingehenden Traffic
Regeln für eingehenden Traffic können über die Google Cloud Console, eine JSON-Datei oder eine YAML-Datei konfiguriert werden. Im folgenden Beispiel wird das .yaml
-Format verwendet:
- ingressFrom: identityType: ANY_IDENTITY *OR* identities: - serviceAccount:service-account - user:user-account sources: - resource: resource *OR* - accessLevel: access-level ingressTo: operations: - serviceName: service methodSelectors: - method: method *OR* - permission: permission resources: - projects/project
- ingressFrom:
– (Erforderlich) Startet denfrom
-Block, in dem zulässige Quellen und Identitäten außerhalb des Perimeters aufgeführt werden.identityType:
– (Dieses oder dasidentities
-Attribut muss verwendet werden.) Dieses Attribut definiert die Arten von Identitäten, die aus den angegebenensources
verwendet werden können (Netzwerkursprung). Zulässige Werte:ANY_IDENTITY
,ANY_USER_ACCOUNT
,ANY_SERVICE_ACCOUNT
.ANY_IDENTITY
erlaubt alle Identitäten.ANY_USER_ACCOUNT
erlaubt alle menschlichen Nutzer.ANY_SERVICE_ACCOUNT
erlaubt alle Dienstkonten.identities:
– (Dieses oder dasidentityType
-Attribut muss verwendet werden.) Mit diesem Attribut wird eine Liste von Dienstkonten erstellt, die auf die angegebenen Ressourcen außerhalb des Perimeters zugreifen können. Das Ingress-Objekt der Identität einer Arbeitslastidentitätsföderation wird nicht unterstützt.serviceAccount
: Ein Dienstkonto, dem Zugriff auf Ressourcen im Perimeter gewährt wird.user
: Ein Nutzerkonto, dem Zugriff auf Ressourcen im Perimeter gewährt wird.sources:
: (Erforderlich) Dieses Attribut bezieht sich auf eine Liste mit Netzwerkursprüngen. Jeder Wert in der Liste ist entweder eine Zugriffsebene oder ein Google Cloud-Projekt. Wenn Sie das AttributaccessLevel
auf\"*\"
setzen, erlaubt die Richtlinie für eingehenden Traffic den Zugriff von jedem Netzwerkursprung. Wenn Sie dieses Attribut auf ein Google Cloud-Projekt festlegen, erlaubt die Richtlinie für eingehenden Traffic den Zugriff über ein VPC-Netzwerk, das zu dem Projekt gehört.- resource:
(dieses Attribut oder das AttributaccessLevel
). Gibt ein Projekt oder VPC-Netzwerk außerhalb des Perimeters an, auf das Sie Zugriff gewähren möchten. Verwenden Sie das folgende Format, um ein Projekt anzugeben:projects/<project_number>
. Verwenden Sie zum Angeben eines VPC-Netzwerk das folgende Format://compute.googleapis.com/projects/<project-id>/global/networks/<network_name>
.- accessLevel:
- (Es muss dieses oder das Attributresource
verwendet werden.) Gibt die Zugriffsebene von außerhalb des Perimeters an, auf den der Zugriff gewährt wird. Wenn Sie das AttributaccessLevel
auf\"*\"
setzen, erlaubt die Richtlinie für eingehenden Traffic den Zugriff von jedem Netzwerkursprung.ingressTo:
: (Erforderlich) Startet dento
-Block, mit dem zugelassene Dienstvorgänge für angegebene Google Cloud-Ressourcen innerhalb des Perimeters aufgeführt werden.operations:
: (Erforderlich) Markiert den Anfang der Liste der zugänglichen Dienste und Aktionen/Methoden, auf die ein Client zugreifen darf, der diefrom
-Block-Bedingungen erfüllt.- serviceName:
: (Erforderlich) Dieses Feld kann ein gültiger Dienstname sein oder auf\"*\"
gesetzt sein, um den Zugriff auf alle Dienste zu ermöglichen. Beispiel:bigquery.googleapis.com
ist ein gültigerserviceName
. Eine Liste der verfügbaren Dienste finden Sie unter Unterstützte Produkte.methodSelectors:
: (Erforderlich) Der Anfang einer Liste von Methoden, auf die ein Client zugreifen kann, der diefrom
-Block-Bedingungen erfüllt. Eine Liste der Methoden und Berechtigungen für Dienste finden Sie unter Unterstützte Einschränkungen für Dienstmethoden.- method:
- (Dieses oder das Attributpermission
muss verwendet werden.) Dieses Feld kann eine gültige Dienstmethode sein oder auf\"*\"
gesetzt werden, um Zugriff auf alle Methoden des angegebenen Diensts zu gewähren.- permission:
- (Dieses oder das Attributmethod
muss verwendet werden.) Dieses Feld muss eine gültige Dienstberechtigung enthalten. Der Zugriff auf die Ressourcen innerhalb des Perimeters wird für die Vorgänge zugelassen, die die Berechtigung benötigen.Wenn eine Anfrage an eine Ressource mehrere Berechtigungen erfordert, müssen Sie alle erforderlichen Berechtigungen unter demselben Vorgang angeben, damit die Regel für eingehenden Traffic funktioniert. Wenn eine Anfrage an eine BigQuery-Ressource beispielsweise die Berechtigungen
bigquery.jobs.create
undbigquery.tables.create
erfordert, müssen Sie beide Berechtigungen unter demselben Vorgang angeben. Wenn Sie die Berechtigungen für dieselbe Ressource mehrmals mit der Google Cloud Console angeben, werden die Berechtigungen nicht im selben Vorgang erstellt. Geben Sie alle Berechtigungen für die Ressource gleichzeitig an, um dieses Problem zu vermeiden.resources:
: (Erforderlich.) Dieses Attribut gibt die Liste der Google Cloud-Ressourcen im Dienstperimeter an, auf die der Client außerhalb des Perimeters zugreifen kann. Dieses Feld kann auf\"*\"
gesetzt werden, um eingehenden Zugriff auf alle Google Cloud-Ressourcen innerhalb des Perimeters zu ermöglichen.
Um eine funktionsfähige Regel für eingehenden Traffic zu erstellen, müssen Sie die folgenden Attribute angeben:
- Attribut
sources
. Sie müssen einaccessLevel
oder einresource
(Google Cloud-Projekt oder VPC-Netzwerk) angeben oder dasaccessLevel
-Attribut auf\"*\"
festlegen.
- Attribut
identityType
oderidentities
resources
AttributserviceName
Attribut
Wenn Sie die Konfiguration Ihrer Richtliniendatei für eingehenden Traffic abgeschlossen haben, finden Sie unter Richtlinien für ein- und ausgehenden Traffic aktualisieren Anweisungen zum Anwenden Ihrer Richtliniendatei für eingehenden Traffic auf Ihren Dienstbereich.
Referenz zu Regeln für ausgehenden Traffic
Regeln für ausgehenden Traffic können mit der Google Cloud Console, einer JSON-Datei oder einer YAML-Datei konfiguriert werden. Im folgenden Beispiel wird das .yaml
-Format verwendet:
- egressTo: operations: - serviceName: service-name methodSelectors: - method: method *OR* - permission: permission resources: - projects/project *OR* externalResources: - external-resource-path egressFrom: identityType: ANY_IDENTITY *OR* identities: - serviceAccount:service-account - user:user-account
- egressTo:
: (Erforderlich) Startet dento
-Block, mit dem zugelassene Dienstvorgänge in Google Cloud-Ressourcen in angegebenen Projekten außerhalb des Perimeters aufgeführt werden.operations:
: (Erforderlich) Markiert den Anfang der Liste der zugänglichen Dienste und Aktionen/Methoden, auf die ein Client zugreifen darf, der diefrom
-Block-Bedingungen erfüllt.- serviceName:
: (Erforderlich) Dieses Feld kann ein gültiger Dienstname sein oder auf\"*\"
gesetzt sein, um den Zugriff auf alle Dienste zu ermöglichen. Eine Liste der verfügbaren Dienste finden Sie unter Unterstützte Produkte.methodSelectors:
: (Erforderlich) Der Anfang einer Liste von Methoden, auf die ein Client zugreifen kann, der diefrom
-Block-Bedingungen erfüllt. Eine Liste der Methoden und Berechtigungen für Dienste finden Sie unter Unterstützte Einschränkungen für Dienstmethoden.- method:
- (Es muss dieses oder das Attributpermission
verwendet werden.) Dieses Feld kann eine gültige Dienstmethode sein oder auf\"*\"
gesetzt werden, um den Zugriff auf alle Methoden des angegebenen Dienstes zu ermöglichen.- permission:
- (Es muss dieses oder das Attributmethod
verwendet werden.) Dieses Feld muss eine gültige Dienstberechtigung sein. Der Zugriff auf die angegebenen Ressourcen außerhalb des Perimeters wird für Vorgänge zugelassen, für die diese Berechtigung erforderlich ist.Wenn eine Anfrage für eine Ressource mehrere Berechtigungen erfordert, müssen Sie alle erforderlichen Berechtigungen unter demselben Vorgang angeben, damit die Regel für ausgehenden Traffic funktioniert. Wenn eine Anfrage an eine BigQuery-Ressource beispielsweise die Berechtigungen
bigquery.jobs.create
undbigquery.tables.create
erfordert, müssen Sie beide Berechtigungen unter demselben Vorgang angeben. Wenn Sie die Berechtigungen für dieselbe Ressource mehrmals mit der Google Cloud Console angeben, werden die Berechtigungen nicht im selben Vorgang erstellt. Geben Sie alle Berechtigungen für die Ressource gleichzeitig an, um dieses Problem zu vermeiden.resources:
: Dieses Attribut ist eine Liste von Google Cloud-Ressourcen, die von seinen Projekten angegeben werden, auf die Clients in einem Perimeter zugreifen können. Sie können dieses Feld auf\"*\"
setzen, um ausgehenden Zugriff auf alle Google Cloud-Ressourcen zu erlauben.externalResources:
: Dieses Attribut wird nur zum Angeben von BigQuery Omni-Ressourcen verwendet. Dieses Attribut ist eine Liste externer Ressourcen, die von BigQuery Omni unterstützt werden und auf die Clients in einem Perimeter zugreifen können. Sie können nur Amazon S3- oder Azure Blob Storage-Ressourcen angeben. Bei Amazon S3 wirds3://BUCKET_NAME
unterstützt. Bei Azure Storage ist das unterstützte Formatazure://myaccount.blob.core.windows.net/CONTAINER_NAME
.egressFrom:
(erforderlich): Startet denfrom
-Block, in dem zulässige Quellen und Identitäten im Perimeter aufgelistet werden.identityType:
- (Es muss dieses oder das Attributidentities
verwendet werden.) Dieses Attribut definiert die Identitätstypen, die für den Zugriff auf die angegebenen Ressourcen außerhalb des Perimeters verwendet werden können. Zulässige Werte:ANY_IDENTITY
,ANY_USER_ACCOUNT
,ANY_SERVICE_ACCOUNT
.ANY_IDENTITY
erlaubt alle Identitäten.ANY_USER_ACCOUNT
erlaubt alle menschlichen Nutzer.ANY_SERVICE_ACCOUNT
erlaubt alle Dienstkonten.identities:
- (Es muss dieses oder das AttributidentityType
verwendet werden.) Dieses Attribut startet eine Liste von Dienstkonten oder Nutzerkonten, die auf die angegebenen Ressourcen außerhalb des Perimeters zugreifen können. Ausgehender Traffic nach Identitäten der Workload Identity-Föderation wird nicht unterstützt.serviceAccount
: Ein Dienstkonto, das außerhalb des Perimeters auf die angegebenen Ressourcen zugreifen kann.user
– Ein Nutzerkonto, das außerhalb des Perimeters auf die angegebenen Ressourcen zugreifen kann.
Wenn Sie die Konfiguration Ihrer Richtliniendatei für ausgehenden Traffic abgeschlossen haben, finden Sie unter Richtlinien für ein- und ausgehenden Traffic aktualisieren Anweisungen zum Anwenden Ihrer Richtliniendatei für ausgehenden Traffic auf Ihren Dienstbereich.
Mit dem Probelaufmodus Richtlinien für ein-/ausgehenden Traffic testen
Wenn Sie keinen Zugriff auf alle Methoden eines Dienstes gewähren möchten, ist es manchmal schwierig, die genaue Liste der zulässigen Methoden zu bestimmen. Dies kann auftreten, wenn eine bestimmte Methode für einen Dienst dazu führen kann, dass eine andere Methode in einem separaten Google Cloud-Dienst aufgerufen wird. BigQuery lädt beispielsweise eine Tabelle aus einem Cloud Storage-Bucket, um eine Abfrage auszuführen.
Zur Bestimmung der richtigen Methoden können Sie den Probelaufmodus von VPC Service Controls verwenden. Aktivieren Sie dazu zuerst einen Perimeter im Probelaufmodus ohne Richtlinien für ein- oder ausgehenden Traffic und erfassen Sie die Liste der Methoden, die im Audit-Log aufgerufen werden. Anschließend fügen Sie diese Methoden schrittweise den Richtlinien für ein-/ausgehenden Traffic im Probelaufmodus hinzu, bis alle Verstöße behoben sind. An dieser Stelle kann die Konfiguration vom Probelaufmodus in den erzwungenen Modus verschoben werden.
Nicht unterstützte Funktionen
Die folgenden Features werden derzeit für die Regeln für ein- und ausgehenden Traffic nicht unterstützt:
- Google Cloud-Ressourcen anhand von Labels anstelle von Projekten identifizieren.
- Gruppen werden im Feld
identities
einerfrom
-Regel für ein-/ausgehenden Traffic angegeben. - Nicht alle Dienste unterstützen Regeln für ein-/ausgehenden Traffic. Siehe Unterstützte Einschränkungen für Dienstmethoden.
- Die Identitätstypen
ANY_SERVICE_ACCOUNT
undANY_USER_ACCOUNT
können nicht für das Erlauben der folgenden Vorgänge verwendet werden:- Alle Container Registry-Vorgänge.
- Alle Notebooks.googleapis.com-Dienstvorgänge.
- Cloud Storage-Vorgänge mit signierten URLs.
- Bei Cloud Functions: die Bereitstellung einer Cloud Functions-Funktion vom lokalen Rechner aus.
- Logs aus einer Cloud Logging-Senke in eine Cloud Storage-Ressource exportieren.
Beschränkungen
Informationen zu Beschränkungen für eingehenden und ausgehenden Traffic finden Sie unter Kontingente und Beschränkungen.