Attributreferenz für IAM Conditions

In diesem Thema werden die in einem Bedingungsausdruck unterstützten Attribute beschrieben.

Unterstützte Bedingungsattribute

In den folgenden Abschnitten werden die unterstützten Attribute zusammengefasst, mit der Angabe, welche Google Cloud-Dienste jedes einzelne Attribut erkennen.

Ressourcenattribute

Die folgenden Attribute beziehen sich auf die Ressource, die Gegenstand der Anfrage ist.

Attribut Nutzungszusammenfassung Unterstützte Google Cloud-Dienste
Attribut "Ressourcendienst" Den Zugriff anhand des verwendeten Google Cloud-Dienstes verwalten.
  • Apigee
  • Application Integration
  • BigQuery
  • Binärautorisierung
  • Bigtable
  • Cloud Key Management Service
  • Cloud Logging
  • Spanner
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Identity-Aware Proxy
  • Integration Connectors
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager
Attribut "Ressourcentyp" Den Zugriff anhand des Ressourcentyps verwalten.
Attribut "Ressourcenname" Den Zugriff anhand des Ressourcennamens verwalten.
  • Apigee
  • Application Integration
  • BigQuery
  • Binärautorisierung
  • Bigtable
  • Cloud Key Management Service
  • Cloud Logging
  • Spanner
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Integration Connectors
  • Pub/Sub Lite
  • Secret Manager
Ressourcen-Tags Den Zugriff anhand der Tags verwalten, die der Ressource zugeordnet sind. Alle Google Cloud-Dienste (siehe Unterstützung für übernommene Bedingungen)

Weitere Informationen zu Ressourcenattributen finden Sie auf dieser Seite unter Ressourcenattribute.

Anfrageattribute

Die folgenden Attribute beziehen sich auf die Details der Anfrage.

Attribut Nutzungszusammenfassung Unterstützte Google Cloud-Dienste

Attribut „Zugriffsebenen“

Den Zugriff anhand von bestimmten Zugriffsebenen verwalten.

Eine Zugriffsebene ist ein berechnetes Attribut auf Grundlage von Standardattributen der Anfrage und des Anforderers, z. B. Quell-IP-Adresse, Geräteattribute und Uhrzeit. Für die Zugriffsebene onNetwork kann es beispielsweise erforderlich sein, dass das Gerät, von dem die Anfrage kommt, aus einem bestimmten IP-Adressbereich stammt. Zugriffsebenen werden von den Administratoren der jeweiligen Organisation festgelegt.

Identity-Aware Proxy

API-Attribute

Den Zugriff anhand von Daten verwalten, die von einer bestimmten Google Cloud API oder einem bestimmten Dienst bereitgestellt werden.

  • Identity and Access Management
  • API Gateway
  • AutoML
  • Certificate Authority Service
  • Cloud Functions
  • Cloud Healthcare API
  • Cloud IoT
  • Cloud Key Management Service
  • Cloud Run
  • Cloud Runtime Configuration API
  • Cloud Storage
  • Compute Engine
  • Artefaktanalyse
  • Dataproc
  • Earth Engine
  • Game Servers
  • Identity and Access Management
  • Identity-Aware Proxy
  • Managed Service for Microsoft Active Directory
  • Nutzerverwaltete Notebooks
  • Resource Manager
  • Secret Manager
  • Dienstverwaltung

Attribut "Datum/Uhrzeit"

Legen Sie ablaufenden, geplanten oder zeitlich begrenzten Zugriff auf Google Cloud-Ressourcen fest.

Alle Google Cloud-Dienste (siehe Unterstützung für übernommene Bedingungen)

Attribute „Ziel-IP“ und „Zielport“

Den Zugriff anhand der Ziel-IP-Adresse und/oder des Ports einer Anfrage verwalten. Beispielsweise kann eine Compute Engine-VM-Instanz eine externe IP-Adresse wie 10.0.0.2 bereitstellen, aber Port 22 kann nur für administrative Zwecke verfügbar bereitgestellt werden.

Wird für die TCP-Weiterleitung mit Cloud Identity-Aware Proxy verwendet.

Identity-Aware Proxy

Weiterleitungsregelattribute

Geben Sie die Arten von Weiterleitungsregeln an, die von einem Hauptkonto erstellt werden können. Beispielsweise können Sie einem Hauptkonto erlauben, Weiterleitungsregeln für interne Google Cloud-Load-Balancer zu erstellen, die Traffic aus einem Google Cloud-Netzwerk verarbeiten. Dies funktioniert nicht für externe Google Cloud-Load-Balancer, die Traffic aus dem Internet verarbeiten.

Attribute "URL-Pfad" und "Host"

Den Zugriff anhand des URL-Pfads und/oder des Hosts einer Anfrage verwalten. Eine Bedingung könnte zum Beispiel festlegen, dass https://example.com die Hauptanwendung ist, auf die eine allgemeine Domain von Benutzern zugreifen kann, während https://hr.example.com/admin für den Zugriff auf eine Seite in der Anwendung verwendet wird, auf die nur Administratoren der Personalabteilung zugreifen können.

  • Identity-Aware Proxy
  • Cloud Run

Weitere Informationen zu Anfrageattributen finden Sie auf dieser Seite unter Anfrageattribute.

Unterstützung für übernommene Bedingungen

Einige Arten von Google Cloud-Ressourcen lassen keine Bedingungen in ihren Richtlinien zu. Sie können jedoch bedingte Rollenbindungen auf Organisations-, Ordner- oder Projektebene hinzufügen. Andere Ressourcen übernehmen diese Rollenbindungen über die Ressourcenhierarchie. Weitere Informationen finden Sie unter Ressourcentypen, die bedingte Rollenbindungen akzeptieren.

Wenn Sie Attribute auf Organisations-, Ordner- oder Projektebene verwenden, beachten Sie, dass die meisten Attribute nur für bestimmte Ressourcentypen verfügbar sind. Wenn ein Teil einer Bedingung ein Attribut verwendet, das nicht verfügbar ist, wird dieser Teil der Bedingung nie als Gewähren von Zugriff interpretiert. Beispiel: Die Bedingung destination.port == 21 gewährt niemals Zugriff auf BigQuery-Ressourcen, da BigQuery-Ressourcen keine Ziel-IP-/Portattribute angeben.

Um dieses Problem zu vermeiden, verwenden Sie die auf dieser Seite beschriebenen Attribute Ressourcentyp und Ressourcendienst, um den Gültigkeitsbereich der Bedingung zu begrenzen. Beispielsweise wertet die folgende Bedingung für alle Ressourcentypen mit Ausnahme von Identity-Aware Proxy-Tunnelinstanzen true aus. Im Gegensatz dazu überprüft die Bedingung für Identity-Aware Proxy-Tunnelinstanzen den Zielport:

resource.type != 'iap.googleapis.com/TunnelInstance' ||
    destination.port == 21

Sie müssen den Umfang der Bedingungen, die die mit einer Ressource verknüpften Tags festlegen, nicht einschränken. Bei einer Bedingung, mit der Tag-Schlüssel und -Werte geprüft werden, können keine anderen Attribute geprüft werden, einschließlich des Ressourcentyps und des Ressourcendienstes.

Ressourcenattribute

Die Attribute „Ressourcendienst“, „Ressourcentyp“ und „Ressourcenname“ dienen in der Regel dazu, den Umfang der durch die Rollenbindung erteilten Zugriffsberechtigungen zu ändern. Wenn eine Rolle Berechtigungen enthält, die für verschiedene ressourcenspezifische Attribute gelten, können ressourcenbasierte Bedingungen verwendet werden, um für bestimmte Typen oder für bestimmte Dienste nur eine Teilmenge der Rollenberechtigungen zu gewähren.

Attribut "resource.service"

Mit dem Attribut resource.service können Sie eine Bedingung anhand des verwendeten Google Cloud-Dienstes festlegen. Sie können beispielsweise eine Bedingung festlegen, die den Zugriff eines Nutzers auf Ressourcen einschränkt, die den Dienst cloudresourcemanager.googleapis.com verwenden. Eine Liste der unterstützten Werte finden Sie unter Werte für Ressourcendienste.

Attributvariable resource.service
Attributtyp

string

Eine Liste der unterstützten Werte finden Sie unter Werte für Ressourcendienste.

Unterstützte Operatoren ,
Details Wenn Sie das Attribut resource.type in Bedingungen verwenden, prüfen Sie die genaue Gleichheit () oder die genaue Ungleichheit () mit dem Attribut. Andere Vergleiche, z. B. das Prüfen eines Präfixes oder Suffixes, können zu unerwarteten Ergebnissen führen.
Beispiel

Gibt true für Compute Engine-Ressourcen zurück:


resource.service == "compute.googleapis.com"
Unterstützte Dienste
  • Apigee
  • Application Integration
  • BigQuery
  • Binärautorisierung
  • Bigtable
  • Cloud Key Management Service
  • Cloud Logging
  • Spanner
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Identity-Aware Proxy
  • Integration Connectors
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager

Attribut "resource.type"

Mit dem Attribut resource.type können Sie eine Bedingung anhand des Ressourcentyps festlegen. Sie können beispielsweise eine Bedingung festlegen, die den Zugriff eines Nutzers auf Ressourcen des Typs storage.googleapis.com/Object einschränkt. Eine Liste der unterstützten Werte finden Sie unter Werte für Ressourcentypen.

Wenn in der Bedingung das Attribut resource.name verwendet wird, empfehlen wir dringend, das Attribut resource.type zu verwenden, um zu steuern, für welche Ressourcentypen die Bedingung gilt. Weitere Informationen finden Sie unter Attribut resource.name auf dieser Seite.

Attributvariable resource.type
Attributtyp

string

Eine Liste der unterstützten Werte finden Sie unter Werte des Ressourcentyps.

Unterstützte Operatoren ,
Details Wenn Sie das Attribut resource.type in Bedingungen verwenden, prüfen Sie die genaue Gleichheit () oder die genaue Ungleichheit () mit dem Attribut. Andere Vergleiche, z. B. das Prüfen eines Präfixes oder Suffixes, können zu unerwarteten Ergebnissen führen.
Beispiele

Gibt true zurück, es sei denn, die Ressource ist ein Compute Engine-Image:


resource.type != "compute.googleapis.com/Image"

Gibt true nur zurück, wenn die Ressource ein Compute Engine-Image oder ein nichtflüchtiger Speicher ist:


(resource.type == "compute.googleapis.com/Image" ||
 resource.type == "compute.googleapis.com/Disk")
Unterstützte Ressourcentypen
Apigee
  • API-Produktattribute
  • API-Produkte
  • API-Proxys
  • API-Proxy-Schlüssel/Wert-Zuordnungen
  • API-Proxy-Schlüssel/Wert-Zuordnungen
  • API-Proxy-Überarbeitungen
  • Caches
  • Entwickler-App-Attribute
  • Entwickler-Apps
  • Entwicklerattribute
  • Entwicklerinnen und Entwickler
  • Schlüssel/Wert-Zuordnungen von Umgebungsschlüsseln
  • Umgebungsschlüsselzuordnungen
  • Exporte
  • Ablauf-Hooks
  • Schlüsselspeicher-Aliasse
  • Schlüsselspeicher
  • Abfragen
  • Tarifpakete
  • Verweise
  • Überarbeitungen freigegebener Abläufe
  • Freigegebene Abläufe
  • Zielserver
  • Trace-/Fehlerbehebungssitzungen
BigQuery
  • Datasets
  • Modelle
  • Routinen
  • Tables
Application Integration
  • Auth-Konfigurationen
  • Ausführungen
  • Integrationsversionen
  • Integrationen
  • Standorte
  • Sperrungen
Binärautorisierung
  • Attestierer
  • Konfigurationen für kontinuierliche Validierung
  • Richtlinien
Bigtable
  • Cluster
  • Instanzen
  • Tabellen
Cloud Key Management Service
  • Versionen kryptografischer Schlüssel
  • Kryptografische Schlüssel
  • Schlüsselbunde
Cloud Logging
  • Log-Buckets
  • Logansichten
Spanner
  • Sicherungen
  • Datenbanken
  • Instanzen
Cloud SQL
  • Sicherungsausführungen
  • Instanzen
Cloud Storage
  • Buckets
  • Verwaltete Ordner
  • Objekte
Compute Engine
  • Backend-Dienste (global und regional)
  • Firewalls
  • Weiterleitungsregeln (global und regional)
  • Bilder
  • Instanzvorlagen
  • Instanzen
  • Nichtflüchtige Speicher (regional und zonal)
  • Snapshots
  • Ziel-HTTP(S)-Proxys (global und regional)
  • Ziel-SSL-Proxys
  • Ziel-TCP-Proxys
Dataform
  • Kompilierungsergebnisse
  • Standorte
  • Releasekonfigurationen
  • Repositories
  • Workflowkonfigurationen
  • Workflow-Aufrufe
  • Arbeitsbereiche
Google Cloud
  • Orte1
Google Kubernetes Engine
  • Cluster
Firestore
  • Datenbanken
Identity-Aware Proxy
  • Alle Backend-Dienste und App Engine-Anwendungen
  • Alle Tunnelressourcen
  • Alle Tunnelzonen
  • Alle Webdienste
  • App Engine-Anwendungsdienstversionen
  • App Engine-Anwendungsdienste
  • Backend-Dienste von Compute Engine
  • Tunnelinstanzen
Integration Connectors
  • Verbindungen
  • Metadaten des Verbindungsschemas
  • Endpunktanhänge
  • Ereignisabos
  • Verwaltete Zonen
Pub/Sub Lite
  • Orte
  • Abos
  • Themen
Resource Manager
  • Projekte
Secret Manager
  • Secret-Versionen
  • Secrets

1 Der Cloud Key Management Service verwendet diesen Ressourcentyp als übergeordnetes Element von Schlüsselbundressourcen.

Attribut "resource.name"

Mit dem Attribut resource.name können Sie eine Bedingung anhand eines vollständigen oder eines Teils eines Ressourcennamens festlegen. Eine Liste der Ressourcennamenformate finden Sie unter Format der Ressourcennamen.

Das Attribut resource.name ist nur für bestimmte Ressourcentypen verfügbar, die in der folgenden Tabelle aufgeführt sind. Wir empfehlen dringend, die Gültigkeit der Bedingung auf den gewünschten Ressourcentyp zu beschränken. Wenn eine Rolle Berechtigungen für einen Ressourcentyp enthält, der das Attribut resource.name nicht enthält, sollten Sie dafür sorgen, dass diese Berechtigungen nicht durch den Teil der Bedingung eingeschränkt werden, die resource.name prüft.

Das folgende Beispiel zeigt, wie dieses Verhalten sichergestellt wird. In diesem Beispiel ermöglicht die Bedingung den Zugriff auf alle Ressourcentypen mit Ausnahme von Cloud Storage-Buckets und -Objekten. Im Gegensatz dazu ermöglicht die Bedingung für Buckets und Objekte nur Zugriff auf den Bucket example-bucket und die darin enthaltenen Objekte:

(resource.type != 'storage.googleapis.com/Bucket' &&
 resource.type != 'storage.googleapis.com/Object') ||
resource.name.startsWith('projects/_/buckets/example-bucket')

Beachten Sie, dass der erste Teil der Bedingung überprüft, ob die Ressource weder ein Bucket noch ein Objekt ist. Wenn die Ressource einen anderen Typ hat, wird die gesamte Bedingung unabhängig vom Ressourcennamen als true ausgewertet.

Beachten Sie auch, dass die Bedingung das Attribut resource.type überprüft, nicht das Attribut resource.service. Die Überprüfung des Attributs resource.type hat einige Vorteile:

  • Sie beschränkt die resource.name-Prüfung auf die entsprechenden Ressourcen. Wenn Sie beispielsweise Zugriff auf Compute Engine-Instanzen mit einem bestimmten Namen gewähren möchten, ist es sinnvoll, alle Ressourcentypen mit Ausnahme von Compute Engine-Instanzen auszuschließen.
  • Dies verhindert, dass sich der Umfang der Bedingung ändert, wenn ein Dienst später neue Ressourcentypen hinzufügt.

Beachten Sie, dass die Bedingung die startsWith()-Funktion zum Bewerten des Ressourcennamens nutzt, anstatt auf Übereinstimmung mit dem -Operator zu prüfen. Da die Bedingung am Anfang des Ressourcennamens liegt, entspricht sie einem Bucket und den Objekten in diesem Bucket. Wenn auf Übereinstimmung geprüft würde, würde die Bedingung nur mit dem Bucket übereinstimmen.

Sie können keine Platzhalterzeichen wie * verwenden, um mit mehreren Ressourcennamen abzugleichen. Sie haben folgende Alternativen:

  • Mit der Funktion extract() können Sie einen Wert aus einem Ressourcennamen extrahieren. Beispielsweise können Sie eine Projekt-ID aus dem Ressourcennamen einer Compute Engine-VM-Instanz extrahieren und einen Bedingungsausdruck schreiben, der sich auf die Projekt-ID bezieht.

    Weitere Informationen finden Sie unter Werte aus Attributen extrahieren auf dieser Seite.

  • Verwenden Sie die Funktion startsWith() oder endsWith(), um eine Bedingung zu schreiben, die den Anfang oder das Ende des Ressourcennamens auswertet.

Attributvariable resource.name
Attributtyp

string

Jeder Ressourcentyp verwendet ein bestimmtes Format für den Ressourcennamen. Eine Liste der Formate finden Sie unter Ressourcennamensformat.

Unterstützte Funktionen und Operatoren startsWith(), endsWith(), extract(), ,
Details

resource.name enthält den relativen Ressourcennamen für die Zielressource in der Anfrage. Der relative Ressourcenname ist ein URI-Pfad ohne vorangestellten Schrägstrich (/).

Bei der Funktion startsWith() wird das Präfix-Stringliteral im Vergleich zu resource.name ausgewertet.

Bei der Funktion endsWith() wird das Suffix-Stringliteral im Vergleich zu resource.name ausgewertet.

Die Funktion extract() verwendet eine Extraktionsvorlage, um Teile von resource.name zu extrahieren. Weitere Informationen finden Sie auf dieser Seite unter Werte aus Ressourcennamen extrahieren.

Die Operatoren und dienen zum Vergleich mit dem gesamten resource.name oder einem extrahierten Teil des resource.name.

Beispiele

Gibt true zurück, es sei denn, der Ressourcenname identifiziert einen Cloud Storage-Bucket mit dem Namen secret-bucket-123:


resource.name != "projects/_/buckets/secret-bucket-123"

Gibt true zurück, wenn der Ressourcenname mit dem angegebenen Präfix beginnt, in dem von Compute Engine-VM-Instanzen verwendeten Format:


resource.name.startsWith("projects/project-123/zones/us-east1-b/instances/prod-")

Gibt true zurück, wenn der Ressourcenname mit dem angegebenen Präfix beginnt, in dem Format, das von Cloud Storage-Buckets verwendet wird:


resource.name.startsWith("projects/_/buckets/my_bucket/objects/test-object-")

Gibt true zurück, wenn der Ressourcenname mit dem angegebenen Suffix endet, z. B. die Dateiendung eines Cloud Storage-Objekts:


resource.name.endsWith(".jpg")

Gibt den Projektnamen oder die Projektnummer zurück, falls vorhanden:


resource.name.extract("projects/{project}/")
Unterstützte Ressourcentypen
Apigee
  • API-Produktattribute
  • API-Produkte
  • API-Proxys
  • API-Proxy-Schlüssel/Wert-Zuordnungen
  • API-Proxy-Schlüssel/Wert-Zuordnungen
  • API-Proxy-Überarbeitungen
  • Caches
  • Entwickler-App-Attribute
  • Entwickler-Apps
  • Entwicklerattribute
  • Entwicklerinnen und Entwickler
  • Schlüssel/Wert-Zuordnungen von Umgebungsschlüsseln
  • Umgebungsschlüsselzuordnungen
  • Exporte
  • Ablauf-Hooks
  • Schlüsselspeicher-Aliasse
  • Schlüsselspeicher
  • Abfragen
  • Tarifpakete
  • Verweise
  • Überarbeitungen freigegebener Abläufe
  • Freigegebene Abläufe
  • Zielserver
  • Trace-/Fehlerbehebungssitzungen
BigQuery
  • Datasets
  • Modelle
  • Routinen
  • Tables
Application Integration
  • Auth-Konfigurationen
  • Ausführungen
  • Integrationsversionen
  • Integrationen
  • Standorte
  • Sperrungen
Binärautorisierung
  • Attestierer
  • Konfigurationen für kontinuierliche Validierung
  • Richtlinien
Bigtable
  • Cluster
  • Instanzen
  • Tabellen
Cloud Key Management Service
  • Kryptografische Schlüssel
  • Versionen kryptografischer Schlüssel
  • Schlüsselbunde
Cloud Logging
  • Log-Buckets
  • Logansichten
Spanner
  • Sicherungen
  • Datenbanken
  • Instanzen
Cloud SQL
  • Sicherungsausführungen
  • Instanzen
Cloud Storage
  • Buckets
  • Verwaltete Ordner
  • Objekte
Compute Engine
  • Backend-Dienste (global und regional)
  • Firewalls
  • Weiterleitungsregeln (global und regional)
  • Bilder
  • Instanzvorlagen
  • Instanzen
  • Nichtflüchtige Speicher (regional und zonal)
  • Snapshots
  • Ziel-HTTP(S)-Proxys (global und regional)
  • Ziel-SSL-Proxys
  • Ziel-TCP-Proxys
Google Kubernetes Engine
  • Cluster
Firestore
  • Datenbanken
Dataform
  • Kompilierungsergebnisse
  • Standorte
  • Releasekonfigurationen
  • Repositories
  • Workflowkonfigurationen
  • Workflow-Aufrufe
  • Arbeitsbereiche
Integration Connectors
  • Verbindungen
  • Metadaten des Verbindungsschemas
  • Endpunktanhänge
  • Ereignisabos
  • Verwaltete Zonen
Pub/Sub Lite
  • Orte
  • Abos
  • Themen
Secret Manager
  • Secret-Versionen
  • Secrets

Ressourcen-Tags

Mit den Funktionen für Ressourcen-Tags können Sie eine Bedingung festlegen, die auf den Tags basiert, die an eine Ressource angehängt sind oder von ihr übernommen werden. Sie können beispielsweise eine Bedingung festlegen, die eine Rolle nur für Ressourcen gewährt, bei denen das Tag env: prod angehängt ist. Weitere Informationen zur Steuerung des Zugriffs mit Tags finden Sie unter Tags und Zugriffssteuerung.

Jedes Tag besteht aus einem Schlüssel und einem Wert. Es gibt verschiedene Arten von IDs für jeden Schlüssel und Wert:

  • Eine permanente ID, die global eindeutig ist und nicht wiederverwendet werden kann. Ein Tag-Schlüssel könnte beispielsweise die permanente ID tagKeys/123456789012 und ein Tag-Wert die permanente ID tagValues/567890123456 haben.
  • Kurzname: Der Kurzname für jeden Schlüssel muss innerhalb Ihrer Organisation eindeutig sein. Der Kurzname für jeden Wert muss für den zugehörigen Schlüssel eindeutig sein. Ein Tag-Schlüssel könnte beispielsweise den Kurznamen env und ein Tag-Wert den Kurznamen prod haben.
  • Ein Namespace-Name, mit dem die numerische ID Ihrer Organisation dem Kurznamen eines Tag-Schlüssels hinzugefügt wird. Ein Tag-Schlüssel könnte beispielsweise den Namespace-Namen 123456789012/env haben. Hier erfahren Sie, wie Sie Ihre Organisations-ID abrufen.

Informationen zum Auswählen der zu verwendenden ID-Art finden Sie unter Tag-Definitionen und Kennungen.

Bedingungen für Tags werden für alle Google Cloud-Dienste und Ressourcentypen unterstützt. Wie Sie Tag-Bedingungen auf Ressourcen anwenden, die sie nicht direkt unterstützen, erfahren Sie auf dieser Seite unter Unterstützung für übernommene Bedingungen.

Mit den folgenden Funktionen können Sie Bedingungen auf der Grundlage von Tags festlegen:

Funktion Beschreibung
resource.hasTagKey(
  keyName: string
)
  bool

Überprüft, ob die Ressource für die Anfrage ein Tag mit dem angegebenen Schlüssel enthält. Der Tag-Schlüssel wird anhand seines Namespace-Namens abgerufen. Verwenden Sie die Funktion resource.hasTagKeyId(), um nach einem Tag-Schlüssel mithilfe seiner permanenten ID zu suchen.

Parameter
keyName: Der Namespace-Name des Tag-Schlüssels, mit der numerischen ID der Organisation und einem Schrägstrich als Präfix. Beispiel: 123456789012/env
Beispiel

Gibt true zurück, wenn die Ressource für die Anfrage ein Tag mit dem Schlüssel env hat.


resource.hasTagKey('123456789012/env')
resource.hasTagKeyId(
  keyId: string
)
  bool

Überprüft, ob die Ressource für die Anfrage ein Tag mit dem angegebenen Schlüssel enthält. Der Tag-Schlüssel wird anhand seiner permanenten ID abgerufen. Verwenden Sie die Funktion resource.hasTagKey(), um nach einem Tag-Schlüssel mit seinem Namespace-Namen zu suchen.

Parameter
keyId: Die permanente ID des Tag-Schlüssels. Beispiel: tagKeys/123456789012
Beispiel

Gibt true zurück, wenn die Ressource für die Anfrage ein Tag mit dem Schlüssel tagKeys/123456789012 hat.


resource.hasTagKeyId('tagKeys/123456789012')
resource.matchTag(
  keyName: string,
  valueShortName: string
)
  bool

Überprüft, ob die Ressource für die Anfrage ein Tag mit dem angegebenen Schlüssel und Wert enthält. Der Schlüssel wird nach seinem Namespace-Namen gesucht. Der Wert wird nach seinem Kurznamen gesucht. Mit der Funktion resource.matchTagId() können Sie mithilfe der permanenten IDs einen Tag-Schlüssel und einen Tag-Wert prüfen.

Parameter
  • keyName: Der Namespace-Name für den Tag-Schlüssel mit der numerischen ID der Organisation und einem Schrägstrich als Präfix. Beispiel: 123456789012/env.
  • valueShortName: Der Kurzname für den Tag-Wert. Beispiel: prod.
Beispiel

Gibt true zurück, wenn die Ressource für die Anfrage ein Tag mit dem Schlüssel 123456789012/env und dem Wert prod enthält:


resource.matchTag('123456789012/env', 'prod')
resource.matchTagId(
  keyId: string,
  valueId: string
)
  bool

Überprüft, ob die Ressource für die Anfrage ein Tag mit dem angegebenen Schlüssel und Wert enthält. Der Schlüssel und der Wert werden anhand seiner permanenten IDs ermittelt. Verwenden Sie die Funktion resource.matchTag(), um nach einem Tag-Schlüssel mithilfe seines Namespace-Namens und eines Werts mithilfe seines Kurznamens zu suchen.

Parameter
  • keyId: die permanente ID des Tag-Schlüssels. Beispiel: tagKeys/123456789012
  • valueId: die permanente ID des Tag-Werts. Beispiel: tagValues/567890123456
Beispiel

Gibt true zurück, wenn die Ressource für die Anfrage ein Tag mit dem Schlüssel tagKeys/123456789012 und dem Wert tagValues/567890123456 enthält:


resource.matchTagId('tagKeys/123456789012', 'tagValues/567890123456')

Anfrageattribute

Mit Anfrageattributen können Sie Bedingungen erstellen, mit denen Details zu der Anfrage ausgewertet werden, z. B. Zugriffsebene, Datum/Uhrzeit, Ziel-IP-Adresse und Port (für IAP-TCP-Tunneling) oder der erwartete URL-Host/-Pfad (für IAP und Cloud Run).

Attribut „Zugriffsebenen“

Über das Attribut „Zugriffsebenen” können Nutzer eine Bedingung festlegen, die erfordert, dass eine Anfrage einer oder mehreren Zugriffsebenen entspricht, um autorisiert zu werden.

Das Zugriffsebenenattribut wird von Attributen der Anfrage abgeleitet, z. B. von der Quell-IP-Adresse, Geräteattribute und Uhrzeit. Beispielsweise kann eine Zugriffsebene mit dem Namen fullyTrusted voraussetzen, dass das Gerät, von dem die Anfrage gesendet wird, dem Unternehmen gehört und über eine Bildschirmsperre verfügt. Für die Zugriffsebene onNetwork kann es erforderlich sein, dass das Gerät, von dem aus die Anfrage gesendet wird, aus einem bestimmten IP-Adressbereich stammt. Weitere Informationen über Zugriffsebenen finden Sie in der Dokumentation zu Access Context Manager.

Das Attribut „Zugriffsebenen” ist nur verfügbar, wenn Sie Identity-Aware Proxy für den Zugriff auf eine Tunnelinstanz verwenden oder auf eine Webanwendung zugreifen, die in App Engine- oder Compute Engine-Backend-Diensten ausgeführt wird. Genauer gesagt ist das Attribut „Zugriffsebene“ nur für Anfragen verfügbar, die eine der folgenden Berechtigungen prüfen:

  • iap.tunnelInstances.accessViaIAP
  • iap.webServiceVersions.accessViaIAP

Sie können das Zugriffsebenenattribut verwenden, wenn Sie die folgenden vordefinierten Rollen bedingt gewähren:

  • Nutzer IAP-gesicherter Tunnel (roles/iap.tunnelResourceAccessor)

    Enthält eine einzelne Berechtigung, iap.tunnelInstances.accessViaIAP.

  • Nutzer von IAP-gesicherten Web-Apps (roles/iap.httpsResourceAccessor)

    Enthält eine einzelne Berechtigung, iap.webServiceVersions.accessViaIAP.

Sie können auch mithilfe des Attributs Zugriffsebene“ eine benutzerdefinierte Rolle, die diese Berechtigungen enthält, gewähren. Die benutzerdefinierte Rolle darf keine anderen Berechtigungen enthalten.

request.auth.access_levels Attribut

Attributvariable request.auth.access_levels
Attributtyp list<string>
Unterstützte Operatoren in
Details

Mit dem Operator in können Sie prüfen, ob eine Anfrage einer bestimmten Zugriffsebene entspricht:


ACCESS_LEVEL_FULL_NAME in request.auth.access_levels

Der vollständige Name einer Zugriffsebene hat folgendes Format:


accessPolicies/POLICY_NUMBER/accessLevels/ACCESS_LEVEL
Beispiel

Gibt true zurück, wenn die Anfrage der Zugriffsebene CorpNet entspricht:


"accessPolicies/199923665455/accessLevels/CorpNet"
    in request.auth.access_levels
Unterstützte Ressourcentypen Verfügbar für Anfragen, die mit Identity-Aware Proxy auf eine Tunnelinstanz, eine Tunnelzielgruppe, eine mit Google Cloud Load Balancing ausgeführte Webanwendung oder eine in App Engine ausgeführte Webanwendung zugreifen.

API-Attribute

API-Attribute helfen Ihnen, den Zugriff anhand von Daten zu verwalten, die von einer bestimmten Google Cloud API oder einem bestimmten Dienst bereitgestellt werden.

Wenn Sie beispielsweise Cloud Storage verwenden, um die Objekte in einem Bucket aufzulisten, können Sie in der Anfrage den Parameter prefix verwenden, um nur Objekte aufzunehmen, deren Namen mit einem bestimmten Präfix beginnen. Wenn Sie Zugriffsgrenzen für Anmeldedaten verwenden, um kurzlebige Anmeldedaten herabzustufen, können Sie eine Zugriffsgrenze für Anmeldedaten erstellen, mit der die Berechtigungen zum Auflisten von Objekten eingeschränkt werden, indem das API-Attribut storage.googleapis.com/objectListPrefix geprüft wird. Dieses API-Attribut enthält den Wert des Parameters prefix aus der Anfrage.

Beispiele für die Verwendung von API-Attributen in einer Bedingung finden Sie auf folgenden Seiten:

Nicht alle Dienste erkennen API-Attribute. In den folgenden Abschnitten wird angegeben, welche Dienste die einzelnen API-Attribute erkennen.

Funktionen für API-Attribute

Sie können die folgende Funktion verwenden, um mit API-Attributen zu arbeiten:

Funktion Beschreibung
api.getAttribute(
  attributeName: string,
  defaultValue: V<T>
)
  V<T>

Ruft das angeforderte API-Attribut ab.

Parameter
  • attributeName: das abzurufende API-Attribut. Unterstützte Werte finden Sie auf dieser Seite unter Cloud Storage API-Attribute und IAM API-Attribute.
  • defaultValue: der Standardwert (V), der verwendet werden soll, wenn das API-Attribut nicht verfügbar ist. Der Wert V ist vom Typ T, wobei T dem Typ des API-Attributwerts entspricht. Wenn der Wert des API-Attributs beispielsweise ein String ist, können Sie einen leeren String oder einen Platzhalterstring wie undefined verwenden.

Beispiel

Gibt eine der folgenden Optionen zurück:

  • Bei Anfragen zum Auflisten von Objekten in einem Cloud Storage-Bucket gibt die Funktion ihren Wert zurück, wenn die Anfrage den Parameter prefix enthält.
  • Bei Anfragen zum Auflisten von Objekten, die den Parameter prefix weglassen, und bei allen anderen Anfragetypen gibt die Funktion einen leeren String zurück.

api.getAttribute("storage.googleapis.com/objectListPrefix", "")
hasOnly(
  items: list<T>
)
  bool

Überprüft, ob eine Liste nur die zulässigen Elemente oder eine Teilmenge dieser Elemente enthält. Sie rufen die Funktion für eine Liste auf, die von api.getAttribute() zurückgegeben wird.

Parameter
items: eine Liste von Elementen mit dem Typ T. Jedes Element ist ein Wert, den das API-Attribut enthalten darf.
Beispiel

Prüft, ob die Anfrage andere Rollen als Pub/Sub-Bearbeiter (roles/pubsub.editor) oder Pub/Sub-Publisher (roles/pubsub.publisher) zulässt oder widerruft:


api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', [])
    .hasOnly(['roles/pubsub.editor', 'roles/pubsub.publisher'])

Im Folgenden sehen Sie das Ergebnis für verschiedene Anfragewerte:

Zugewiesene/Widerrufene Rollen Folge

true

Wenn keine Rollen geändert werden, gibt api.getAttribute() den Standardwert zurück. Für dieses Attribut ist der Standardwert immer eine leere Liste. Per Definition enthält eine leere Liste keine Werte, die nicht auf der Zulassungsliste stehen.

roles/pubsub.editor

true

Die Rolle ist auf der Zulassungsliste enthalten.

roles/pubsub.editor
roles/pubsub.publisher

true

Beide Rollen stehen auf der Zulassungsliste.

roles/billing.admin

false

Die Rolle ist nicht auf der Zulassungsliste enthalten.

roles/billing.admin
roles/pubsub.editor

false

Eine Rolle ist auf der Zulassungsliste, die andere jedoch nicht.

Cloud Storage API-Attribute

Cloud Storage bietet das folgende API-Attribut:

Attributvariable storage.googleapis.com/objectListPrefix
Attributtyp string
Details

Eine Anfrage zum Auflisten von Objekten in einem Bucket enthält den Wert des Parameters prefix aus der Anfrage. Wenn in der Anfrage der Parameter prefix weggelassen wird, ist das Attribut nicht definiert.

Bei anderen Arten von Anfragen ist das Attribut nicht definiert.

Dienste, die dieses Attribut erkennen: Cloud Storage

IAM API-Attribute

IAM bietet das folgende API-Attribut:

Attributvariable iam.googleapis.com/modifiedGrantsByRole
Attributtyp list<string>
Details

Bei einer Anfrage zum Festlegen der Richtlinie einer Ressource enthält dieses Attribut die Rollennamen der Rollenbindungen, die durch die Anfrage geändert werden.

Bei anderen Arten von Anfragen ist das Attribut nicht definiert.

Ressourcentypen, die dieses Attribut akzeptieren

Die folgenden Ressourcentypen akzeptieren Bedingungen mit dem Attribut modifiedGrantsByRole in den zulässigen Richtlinien:

  • Projekte
  • Ordner
  • Organisationen
Dienste, die dieses Attribut erkennen:

Die folgenden Dienste erkennen das Attribut modifiedGrantsByRole:

  • API Gateway
  • AutoML
  • Certificate Authority Service
  • Cloud Functions
  • Cloud Healthcare API
  • Cloud IoT
  • Cloud Key Management Service
  • Cloud Run
  • Cloud Runtime Configuration API
  • Cloud Storage
  • Compute Engine
  • Artefaktanalyse
  • Dataproc
  • Earth Engine
  • Game Servers
  • Identity and Access Management
  • Identity-Aware Proxy
  • Managed Service for Microsoft Active Directory
  • Nutzerverwaltete Notebooks
  • Resource Manager
  • Secret Manager
  • Dienstverwaltung

Attribut "Datum/Uhrzeit"

Mit dem Attribut „Datum/Uhrzeit“ legen Sie ablaufenden, geplanten oder zeitlich begrenzten Zugriff auf Google Cloud-Ressourcen fest.

Dieses Attribut ist für alle Google Cloud-Dienste und -Ressourcentypen verfügbar. Wie Sie Datum/Uhrzeit-Bedingungen auf Ressourcen anwenden, die sie nicht direkt unterstützen, erfahren Sie auf dieser Seite unter Unterstützung für übernommene Bedingungen.

Das Attribut request.time enthält den Zeitstempel für die Anfrage. Sie können diesen Zeitstempel mit einem anderen Zeitstempel oder mit einer Zeitdauer vergleichen.

In den folgenden Abschnitten werden die Funktionen aufgeführt, mit denen Sie Bedingungen anhand von Zeitstempeln und Dauer festlegen können.

Zeitstempel und Dauer erstellen, vergleichen und ändern

Funktion oder Operator Beschreibung
date(
  value: string
)
  Timestamp

Wandelt ein Datum von einem string in ein Timestamp um.

Parameter
value: ein Datum im Format YYYY-MM-DD, wobei YYYY das Jahr, MM der zweistellige Monat und DD der zweistellige Tag ist. Der resultierende Timestamp enthält das angegebene Datum und die Uhrzeit 00:00:00.000 UTC.
Beispiel

Erstellt einen Timestamp, der das Datum 2023-02-01 und die Uhrzeit 00:00:00.000 UTC darstellt:


date("2023-02-01")
duration(
  value: string
)
  Duration

Wandelt einen Zeitraum von einem string in einen Duration um.

Parameter
value: ein Duration in Sekunden, gefolgt von s.
Beispiele

Eine Dauer, die 1,5 Minuten entspricht:


duration("90s")

Eine Dauer, die 30 Tage darstellt:


duration("2592000s")
timestamp(
  value: string
)
  Timestamp

Konvertiert einen string in einen Timestamp.

Parameter

value: ein UTC-Zeitstempel, der RFC 3339 entspricht.

Beispiel

Erstellt einen Zeitstempel, der den 12. April 2023 um 23:20:50.52 in UTC darstellt:


timestamp("2023-04-12T23:20:50.52Z")
, , ,

Vergleicht zwei Timestamp-Werte.

Beispiele

Gibt true zurück, wenn die Anfragezeit vor dem 12. April 2022 um 00:00:00 UTC liegt:


request.time < timestamp("2022-04-12T00:00:00.00Z")

Gibt true zurück, wenn die Anfragezeit vor dem 12. April 2022 um 00:00:00 Uhr UTC liegt:


request.time <= timestamp("2022-04-12T00:00:00.00Z")

Gibt true zurück, wenn die Anfragezeit nach dem 12. April 2022 um 00:00:00 UTC liegt:


request.time > timestamp("2022-04-12T00:00:00.00Z")

Gibt Folgendes zurück:true Ob die Anfragezeitnach oder gleich 12. April 2022 um 00:00:00 UTC:


request.time >= timestamp("2022-04-12T00:00:00.00Z")
  • timestamp + duration   Timestamp
  • timestamp - duration   Timestamp

Fügen Sie einen Duration von einem Timestamp hinzu oder subtrahieren Sie ihn.

Beispiele

Gibt den Timestamp zurück, der 30 Minuten nach 14:30 Uhr UTC am 12. April 2024 liegt:


timestamp("2024-04-12T14:30:00.00Z") + duration("1800s")

Gibt das Timestamp zurück, das 60 Tage vor 14:30 Uhr UTC am 12. April 2024 liegt:


timestamp("2024-04-12T14:30:00.00Z") - duration("5184000s")

Informationen aus einem Zeitstempel extrahieren

Mit den Funktionen in diesem Abschnitt können Sie Informationen aus einem Zeitstempel extrahieren, z. B. den Wochentag, auf den der Zeitstempel fällt.

In IAM Conditions werden alle Zeitstempel in UTC angegeben. Möglicherweise möchten Sie Informationen jedoch auf Basis einer anderen Zeitzone extrahieren. Beispielsweise können Sie wissen, ob ein UTC-Zeitstempel an einem Montag in der Zeitzone von Berlin liegt.

Um eine andere Zeitzone anzugeben, übergeben Sie die Zeitzone an die Funktion. Verwenden Sie einen Namen oder ein UTC-Versatz aus der IETF-Zeitzonendatenbank. Sie können beispielsweise Europe/Berlin oder +01:00 für die Europäische Zeitzone (CET) verwenden.

Unterstützte Funktionen und Operatoren Beschreibung
Timestamp.getDate(
  timeZone: string
)
  int

Ruft den Tag des Monats aus dem Timestamp ab. Der Wert verwendet eine auf 1 basierende Indexierung. Der erste Tag des Monats ist 1.

Parameter
timeZone: die Zeitzone, für die das Ergebnis berechnet werden soll. Die Standardeinstellung ist UTC.
Beispiel

Gibt true zurück, wenn die Anfrage nach dem 15. Tag des Monats in UTC gesendet wird:


request.time.getDate() > 15
Timestamp.getDayOfMonth(
  timeZone: string
)
  int

Ruft den Tag des Monats aus dem Timestamp ab. Der Wert verwendet eine nullbasierte Indexierung. Der erste Tag des Monats ist 0.

Parameter
timeZone: die Zeitzone, für die das Ergebnis berechnet werden soll. Die Standardeinstellung ist UTC.
Beispiel

Gibt true zurück, wenn die Anfrage nach dem 15. Tag des Monats in UTC gesendet wird:


request.time.getDayOfMonth() > 14
Timestamp.getDayOfWeek(
  timeZone: string
)
  int

Ruft den Wochentag mit Timestamp aus. Der Wert verwendet eine nullbasierte Indexierung. Sonntag ist beispielsweise 0.

Parameter
timeZone: die Zeitzone, für die das Ergebnis berechnet werden soll. Die Standardeinstellung ist UTC.
Beispiel

Gibt true zurück, wenn die Anfrage zwischen Montag und Freitag in Berlin gesendet wird:


request.time.getDayOfWeek("Europe/Berlin") > 0 &&
    request.time.getDayOfWeek("Europe/Berlin") < 6
Timestamp.getDayOfYear(
  timeZone: string
)
  int

Ruft den Tag des Jahres aus dem Timestamp ab. Der Wert verwendet eine nullbasierte Indexierung. Der erste Tag des Jahres ist 0.

Parameter
timeZone: die Zeitzone, für die das Ergebnis berechnet werden soll. Die Standardeinstellung ist UTC.
Beispiel

Gibt true zurück, wenn die Anfrage in den ersten 5 Tagen des Jahres in Mountain View, Kalifornien, gesendet wird:


request.time.getDayOfYear("America/Los_Angeles") >= 0 &&
    request.time.getDayOfYear("America/Los_Angeles") < 5
Timestamp.getFullYear(
  timeZone: string
)
  int

Ruft das Jahr aus dem Timestamp ab.

Parameter
timeZone: die Zeitzone, für die das Ergebnis berechnet werden soll. Die Standardeinstellung ist UTC.
Beispiel

Gibt true zurück, wenn die Anfrage im Jahr 2023 in Mountain View, Kalifornien, gesendet wurde:


request.time.getFullYear("America/Los_Angeles") == 2023

Gibt true zurück, wenn die Anfrage im Jahr 2022 in UTC gesendet wurde:


request.time.getFullYear() == 2022
Timestamp.getHours(
  timeZone: string
)
  int

Ruft die Tageszeit des Timestamp ab. Der Wert verwendet eine nullbasierte Indexierung. Werte reichen von 0 bis 23.

Sie können diese Funktion mit getDayofWeek() kombinieren, um den Zugriff nur während der zulässigen Arbeitszeit in Ihrem Land zu gewähren.

Parameter
timeZone: die Zeitzone, für die das Ergebnis berechnet werden soll. Die Standardeinstellung ist UTC.
Beispiel

Gibt true zurück, wenn die Anfrage an einem Wochentag in Berlin zwischen 09:00 Uhr und 17:00 Uhr gesendet wird:


request.time.getDayOfWeek("Europe/Berlin") >= 1 &&
    request.time.getDayOfWeek("Europe/Berlin") <= 5 &&
    request.time.getHours("Europe/Berlin") >= 9 &&
    request.time.getHours("Europe/Berlin") <= 17
Timestamp.getMilliseconds(
  timeZone: string
)
  int

Ruft die Anzahl der Millisekunden aus Timestamp ab. Der Wert verwendet eine nullbasierte Indexierung. Werte reichen von 0 bis 999.

Parameter
timeZone: die Zeitzone, für die das Ergebnis berechnet werden soll. Die Standardeinstellung ist UTC.
Timestamp.getMinutes(
  timeZone: string
)
  int

Ruft die Anzahl der Minuten nach der Stunde aus dem Timestamp ab. Der Wert verwendet eine nullbasierte Indexierung. Werte reichen von 0 bis 59.

Parameter
timeZone: die Zeitzone, für die das Ergebnis berechnet werden soll. Die Standardeinstellung ist UTC.
Beispiel

Gibt true zurück, wenn die Anfrage um oder nach 09:30 Uhr in Berlin gesendet wurde:


request.time.getHours("Europe/Berlin") >= 9 &&
    request.time.getMinutes("Europe/Berlin") >= 30
Timestamp.getMonth(
  timeZone: string
)
  int

Ruft den Monat des Jahres aus dem Timestamp ab. Der Wert verwendet eine nullbasierte Indexierung. Werte reichen von 0 bis 11.

Parameter
timeZone: die Zeitzone, für die das Ergebnis berechnet werden soll. Die Standardeinstellung ist UTC.
Beispiel

Gibt true zurück, wenn die Anfrage im Monat April in Mountain View, Kalifornien, gesendet wird:


request.time.getMonth("America/Los_Angeles") == 3
Timestamp.getSeconds(
  timeZone: string
)
  int

Ruft die Anzahl der Sekunden aus dem Timestamp ab. Der Wert verwendet eine nullbasierte Indexierung. Werte reichen von 0 bis 59.

Parameter
timeZone: die Zeitzone, für die das Ergebnis berechnet werden soll. Die Standardeinstellung ist UTC.
, , ,

Vergleicht die Ausgabe von zwei Funktionen in dieser Tabelle.

Attribute "Ziel-IP" und "Zielport"

Mit dem Attribut „Ziel-IP/Port” können Nutzer den Zugriff anhand der internen Ziel-IP-Adresse und/oder dem internen Port einer Anfrage verwalten.

Eine Compute Engine-VM-Instanz kann beispielsweise die externe IP-Adresse und den Port 132.168.42.21:3001 der internen IP-Adresse und dem Port 10.0.0.1:2300 für die allgemeine Verwendung zuordnen. Im Gegensatz dazu sind die interne IP-Adresse und der Port 10.0.0.1:22 möglicherweise nur intern für die administrative Nutzung verfügbar. Sie können die Attribute "Ziel-IP" und "Zielport" verwenden, um unterschiedliche Zugriffsberechtigungen anhand der internen IP-Adresse und des internen Ports zuzuweisen.

Weitere Informationen zur TCP-Weiterleitung finden Sie in der Dokumentation zu Identity-Aware Proxy.

Attribut "destination.ip"

Attributvariable destination.ip
Attributtyp string
Unterstützte Operatoren ,
Details

Die Variable destination.ip identifiziert eine interne IP-Adresse im IPv4-Format.

Beispiele

Gibt true zurück, wenn die Ziel-IP-Adresse 10.0.0.1 ist:


destination.ip == "10.0.0.1"

Gibt true zurück, es sei denn, die Ziel-IP-Adresse ist 10.0.0.1:


destination.ip != "10.0.0.1"
Unterstützte Ressourcentypen Verfügbar für Anfragen mit Identity-Aware Proxy für den Zugriff auf eine Tunnelinstanz

Attribut "destination.port"

Attributvariable destination.port
Attributtyp int
Unterstützte Operatoren , , , , ,
Details

Die Variable destination.port identifiziert eine interne TCP-Portnummer.

Beispiele

Gibt true if the destination port is 21: zurück


destination.port == 21

Returns true if the destination port is less than 3001:


destination.port < 3001
Unterstützte Ressourcentypen Verfügbar für Anfragen mit Identity-Aware Proxy für den Zugriff auf eine Tunnelinstanz

Weiterleitungsregelattribute

Mit den Attributen für Weiterleitungsregeln können Sie die Arten von Weiterleitungsregeln angeben, die ein Hauptkonto erstellen kann. Beispielsweise können Sie einem Hauptkonto erlauben, Weiterleitungsregeln für interne Google Cloud-Load-Balancer zu erstellen, die Traffic aus einem Google Cloud-Netzwerk verarbeiten. Dies funktioniert nicht für externe Google Cloud-Load-Balancer, die Traffic aus dem Internet verarbeiten.

Beim Cloud Load-Balancing wirken sich die Weiterleitungsregelattribute nicht darauf aus, dass andere Komponenten eines Google Cloud-Load-Balancers wie Backend-Dienste, Ziel-Proxys, Systemdiagnosen und URL-Zuordnungen erstellt werden können.

Unterstützte Funktionen

Funktion Beschreibung
compute.isForwardingRuleCreationOperation()   bool

Prüft, ob die Anfrage eine Weiterleitungsregel erstellt.

Beispiel
Siehe das Beispiel für compute.matchLoadBalancingSchemes().
compute.matchLoadBalancingSchemes(
  schemes: list<string>
)
  bool

Prüft, ob die Anfrage einen der angegebenen Typen von Load-Balancing-Schemas betrifft. Die ID für jedes Load-Balancing-Schema sowie weitere Informationen finden Sie unter IAM Conditions für Google Cloud-Load-Balancer verwenden.

Parameter
schemes: Die Load-Balancing-Schemas, auf die sich die Anfrage auswirken soll.
Beispiel

Gibt eine der folgenden Optionen zurück:

  • Wenn die Anfrage keine Weiterleitungsregel erstellt, wird true zurückgegeben.
  • Wenn die Anfrage eine Weiterleitungsregel erstellt wird nur true zurückgegeben, wenn die Weiterleitungsregel INTERNAL, INTERNAL_MANAGED, oder INTERNAL_SELF_MANAGED Load-Balancing-Schemas betrifft.

!compute.isForwardingRuleCreationOperation() || (
  compute.isForwardingRuleCreationOperation() &&
  compute.matchLoadBalancingSchemes([
    'INTERNAL', 'INTERNAL_MANAGED', 'INTERNAL_SELF_MANAGED'
  ])
)

Unterstützte Ressourcentypen

Dieses Attribut steht für Anfragen zum Erstellen der folgenden Ressourcentypen zur Verfügung:

Dienst Ressourcentypen
Cloud Load Balancing Weiterleitungsregeln
Cloud VPN Weiterleitungsregeln (global und regional)
Compute Engine Weiterleitungsregeln (für die Protokollweiterleitung)
Traffic Director1 Weiterleitungsregeln

1 Verwendet die Ressourcenattribute für Compute Engine.

Attribute „URL-Pfad“ und „Host“

Mit dem Attribut "URL-Pfad/Host" können Nutzer den Zugriff anhand des URL-Pfads und/oder Hosts einer Anfrage verwalten. In einer Bedingung kann beispielsweise angegeben werden, dass https://example.com die Hauptanwendung ist, die sich von einer allgemeinen Nutzerdomain aufrufen lässt, während https://hr.example.com/admin verwendet wird, um eine Seite in der Anwendung aufzurufen, auf die nur Administratoren vom Personalwesen Zugriff haben.

Attribute "request.path"

Attributvariable request.path
Attributtyp string
Unterstützte Funktionen und Operatoren , startsWith(), endsWith()
Details Die Verwendung des Operators mit diesem Attribut wird nicht empfohlen. Anstatt auf Ungleichheit zu prüfen, wie in request.path != "/admin", prüfen Sie das Präfix des Attributs, wie in !request.path.startsWith("/admin"). Durch die Überprüfung des Präfixes schützen Sie auch URL-Pfade innerhalb der Hierarchie /admin, z. B. /admin/payroll/.
Beispiele

Gibt true zurück, wenn der Anfragepfad dem angegebenen URL-Pfad entspricht:


request.path == "/admin"

request.path == "/admin/payroll"

Gibt true zurück, wenn der Anfragepfad mit dem angegebenen URL-Pfad beginnt:


request.path.startsWith("/admin")

Gibt true zurück, wenn der Anfragepfad mit dem angegebenen URL-Pfad endet:


request.path.endsWith("/payroll.js")
Unterstützte Ressourcentypen
  • Dienstversionen der Identity-Aware Proxy-App (App Engine): Verfügbar für Anfragen, die mit Identity-Aware Proxy auf eine Webanwendung zugreifen, die in App Engine oder Compute Engine ausgeführt wird
  • Cloud Run-Dienste

Attribut "request.host"

Attributvariable request.host
Attributtyp string
Unterstützte Funktionen und Operatoren , endsWith()
Details Die Verwendung der Funktion .startsWith() oder des Operators wird mit diesem Attribut nicht empfohlen. Diese Funktionen und Operatoren liefern möglicherweise unerwartete Ergebnisse.
Beispiele

Gibt true zurück, wenn der Hostname dem angegebenen Wert entspricht:


request.host == "www.example.com"

request.host == "hr.example.com"

Gibt true zurück, wenn der Hostname mit dem angegebenen Wert endet:


request.host.endsWith("example.com")
Unterstützte Ressourcentypen
  • Dienstversionen der Identity-Aware Proxy-App (App Engine): Verfügbar für Anfragen, die Identity-Aware Proxy für den Zugriff auf eine App-Dienstversion verwenden.
  • Cloud Run-Dienste

Werte aus Attributen extrahieren

Mit der extract()-Funktion können Sie einen Wert aus einem Attribut extrahieren. Sie können beispielsweise einen beliebigen Teil eines Ressourcennamens extrahieren und dann einen Bedingungsausdruck schreiben, der auf den extrahierten Text verweist.

Um die extract()-Funktion zu verwenden, stellen Sie eine Extraktionsvorlage bereit, die den zu extrahierenden Teil des Attributs angibt. Wenn Sie beispielsweise eine Projekt-ID aus dem Ressourcennamen einer Compute Engine-VM-Instanz extrahieren möchten, können Sie die Vorlage projects/{project}/ verwenden.

Eine Extraktionsvorlage besteht aus folgenden Teilen:

  • Eine ID in geschweiften Klammern, die den zu extrahierenden Teilstring kennzeichnet.

    Wählen Sie eine kurze, aussagekräftige ID aus, aus der hervorgeht, welchen Wert Sie extrahieren möchten. Sie können hierzu Groß- und Kleinbuchstaben von A bis Z; numerische Ziffern; und Unterstriche (_) verwenden.

    In der Vorlage projects/{project}/ lautet die ID project.

  • Optional: Ein Präfix , das vor dem zu extrahierenden Teilstring erscheinen muss.

    In der Vorlage projects/{project}/ lautet das Präfix projects/.

  • Optional: Ein Suffix, das nach dem zu extrahierenden Teilstring erscheinen muss.

    In der Vorlage projects/{project}/ lautet das Suffix /.

Die Funktion extract() extrahiert verschiedene Teile des Attributs abhängig davon, ob die Extraktionsvorlage ein Präfix, ein Suffix oder beides beinhaltet:

Beinhaltet ein Präfix Beinhaltet ein Suffix Extrahierter Wert
Das gesamte Attribut
Die Zeichen nach dem ersten Vorkommen des Präfixes oder ein leerer String, wenn hinter dem Präfix keine Zeichen stehen
Die Zeichen vor dem ersten Vorkommen des Suffixes oder ein leerer String, wenn vor dem Suffix keine Zeichen stehen
Die Zeichen zwischen dem ersten Vorkommen des Präfixes und dem ersten nachfolgenden Auftreten des Suffixes oder ein leerer String, wenn zwischen dem Präfix und dem Suffix keine Zeichen stehen

Wenn Sie ein Präfix oder Suffix angeben, das nicht im Attribut enthalten ist, oder wenn das Suffix nur vor dem Präfix angezeigt wird, gibt die extract()-Funktion einen leeren String zurück.

Die folgenden Beispiele zeigen die Ausgabe aus verschiedenen Extraktionsvorlagen. Diese Beispiele beziehen sich auf einen Ressourcennamen für ein Cloud Storage-Objekt, projects/_/buckets/acme-orders-aaa/objects/data_lake/orders/order_date=2019-11-03/aef87g87ae0876:

Extraktionsvorlage Ausgabe
/order_date={date}/ 2019-11-03
buckets/{name}/ acme-orders-aaa
/orders/{empty}order_date string ist leer
{start}/objects/data_lake projects/_/buckets/acme-orders-aaa
orders/{end} order_date=2019-11-03/aef87g87ae0876
{all} projects/_/buckets/acme-orders-aaa/objects/data_lake/orders/order_date=2019-11-03/aef87g87ae0876
/orders/{none}/order_date= string ist leer
/orders/order_date=2019-11-03/{id}/data_lake string ist leer

Wenn Sie einen String extrahieren, der ein Datum darstellt, können Sie die Funktionen und Operatoren für Datum und Uhrzeit auf dieser Seite verwenden, um den extrahierten Wert in einen Timestamp zu konvertieren. Beispiele finden Sie unter Ressourcenbasierten Zugriff konfigurieren.