Regeln für ein- und ausgehenden Traffic

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 ein- und ausgehenden Traffic, um den Zugriff auf und von den Ressourcen und Clients zu erlauben, 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

  1. 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.
  2. 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:
    1. 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.
    2. 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.
  3. Minimieren Sie das Risiko der Daten-Exfiltration, indem Sie die genauen Dienste, Methoden, Google Cloud-Projekte, VPC-Netzwerke und Identitäten einschränken, die zum Ausführen des Datenaustauschs verwendet werden.
  4. Sie können schreibgeschützten Zugriff auf externe Datasets und Images gewähren, die nicht von Ihnen verwaltet werden.
  5. 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.
  6. 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.

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, die 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).
  • Ein Compute Engine-Client außerhalb des Perimeters, der mit einem Cloud KMS-Schlüssel innerhalb des Perimeters ein Compute Engine-Laufwerk außerhalb des Perimeters erstellt.

In den BigQuery- und Compute Engine-Beispielen reicht eine Eingangsregel nicht aus, da sich der BigQuery-Job oder das Compute Engine-Laufwerk außerhalb des Perimeters befindet. Eine Regel für ausgehenden Traffic ist erforderlich, um eine API-Anfrage mit einer Google Cloud-Ressource innerhalb des Perimeters (BigQuery-Dataset oder Cloud KMS-Schlüssel) und einer Ressource außerhalb des Perimeters (der BigQuery-Job oder das Compute Engine-Laufwerk) zuzulassen.

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-Bucket b zu ermöglichen
  • Eine Regel für ausgehenden Traffic im Perimeter B, um Zugriff auf den Cloud Storage-Bucket a 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 Perimeters B befindet.

Referenz zu Regeln für eingehenden Traffic

Regeln für eingehenden Traffic können mit der Google Cloud Console, einer JSON- oder einer YAML-Datei konfiguriert werden. Im folgenden Beispiel wird das .yaml-Format verwendet:

- ingressFrom:
    identityType: ANY_IDENTITY | ANY_USER_ACCOUNT | ANY_SERVICE_ACCOUNT
    *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 den from-Block, in dem zulässige Quellen und Identitäten außerhalb des Perimeters aufgeführt werden.

  • identityType: – (Dieses oder das identities-Attribut muss verwendet werden.) Dieses Attribut definiert die Arten von Identitäten, die aus den angegebenen sources 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 das identityType-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. Eingehender Traffic nach Identitäten der Workload Identity-Fö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 Attribut accessLevel 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 von einem VPC-Netzwerk, das zum Projekt gehört.

  • - resource:: (Verwenden Sie dieses Attribut oder das Attribut accessLevel.) 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 das folgende Format, um ein VPC-Netzwerk anzugeben: //compute.googleapis.com/projects/<project-id>/global/networks/<network_name>.

  • - accessLevel: - (Es muss dieses oder das Attribut resource verwendet werden.) Gibt die Zugriffsebene von außerhalb des Perimeters an, auf den der Zugriff gewährt wird. Wenn Sie das Attribut accessLevel auf \"*\" setzen, erlaubt die Richtlinie für eingehenden Traffic den Zugriff von jedem Netzwerkursprung.

  • ingressTo:: (Erforderlich) Startet den to-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 die from-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ültiger serviceName. Eine Liste der verfügbaren Dienste finden Sie unter Unterstützte Produkte.

  • methodSelectors: (erforderlich, wenn serviceName nicht \"*\" ist) Der Anfang einer Liste von Methoden, auf die ein Client, der die Blockbedingungen from erfüllt, zugreifen darf. Eine Liste der einsetzbaren Methoden und Berechtigungen für Dienste finden Sie unter Einschränkungen für unterstützte Dienstmethoden.

  • - method: - (Dieses oder das Attribut permission 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 Attribut methodmuss 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 im selben Vorgang angeben, damit die Eingangsregel funktioniert. Wenn beispielsweise eine Anfrage an eine BigQuery-Ressource die Berechtigungen bigquery.jobs.create und bigquery.tables.create erfordert, müssen Sie beide Berechtigungen im selben Vorgang angeben. Wenn Sie die Berechtigungen für dieselbe Ressource in der Google Cloud Console mehrmals angeben, werden die Berechtigungen nicht im selben Vorgang erstellt. Geben Sie alle Berechtigungen für die Ressource auf einmal 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 ein accessLevel oder resource (Google Cloud-Projekt oder VPC-Netzwerk) angeben oder das Attribut accessLevel auf \"*\" setzen.
  • Attribut identityType oder identities
  • resources Attribut
  • serviceName 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- 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 | ANY_USER_ACCOUNT | ANY_SERVICE_ACCOUNT
    *OR*
    identities:
    - serviceAccount:service-account
    - user:user-account
  • - egressTo:: (Erforderlich) Startet den to-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 die from-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, wenn serviceName nicht \"*\" ist) Der Anfang einer Liste von Methoden, auf die ein Client, der die Blockbedingungen from erfüllt, zugreifen darf. Eine Liste der einsetzbaren Methoden und Berechtigungen für Dienste finden Sie unter Einschränkungen für unterstützte Dienstmethoden.

  • - method: - (Es muss dieses oder das Attribut permission 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 Attribut method 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 an eine Ressource mehrere Berechtigungen erfordert, müssen Sie alle erforderlichen Berechtigungen unter demselben Vorgang angeben, damit die Ausgangsregel funktioniert. Wenn beispielsweise eine Anfrage an eine BigQuery-Ressource die Berechtigungen bigquery.jobs.create und bigquery.tables.create erfordert, müssen Sie beide Berechtigungen im selben Vorgang angeben. Wenn Sie die Berechtigungen für dieselbe Ressource in der Google Cloud Console mehrmals angeben, werden die Berechtigungen nicht im selben Vorgang erstellt. Geben Sie alle Berechtigungen für die Ressource auf einmal an, um dieses Problem zu vermeiden.

  • resources:: Dieses Attribut ist eine Liste von Google Cloud-Ressourcen, die von ihren Projekten angegeben werden und auf die Clients innerhalb eines Perimeters zugreifen können. Sie können dieses Feld auf \"*\" setzen, um ausgehenden Zugriff auf jede Google Cloud-Ressource zuzulassen.

  • externalResources:: Dieses Attribut wird nur verwendet, um BigQuery Omni-Ressourcen anzugeben. Dieses Attribut ist eine Liste externer Ressourcen, die von BigQuery Omni unterstützt werden und auf die Clients innerhalb eines Perimeters zugreifen können. Sie können nur Amazon S3- oder Azure Blob Storage-Ressourcen angeben. Für Amazon S3 wird das Format s3://BUCKET_NAME unterstützt. Für Azure Storage ist das unterstützte Format azure://myaccount.blob.core.windows.net/CONTAINER_NAME.

  • egressFrom: (erforderlich): Startet den from-Block, der zulässige Quellen und Identitäten im Perimeter auflistet.

  • identityType: - (Es muss dieses oder das Attribut identities 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 Attribut identityType 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 Arbeitslastidentitätsfö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:

  1. Google Cloud-Ressourcen anhand von Labels anstelle von Projekten identifizieren.
  2. Gruppen werden im Feld identities einer from-Regel für ein-/ausgehenden Traffic angegeben.
  3. Nicht alle Dienste unterstützen Regeln für ein-/ausgehenden Traffic. Siehe Unterstützte Einschränkungen für Dienstmethoden.
  4. Die Identitätstypen ANY_SERVICE_ACCOUNT und ANY_USER_ACCOUNT können nicht für das Erlauben der folgenden Vorgänge verwendet werden:

Beschränkungen

Informationen zu Beschränkungen für eingehenden und ausgehenden Traffic finden Sie unter Kontingente und Beschränkungen.