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.
  • Cloud Key Management Service
  • Cloud Spanner
  • Cloud Storage
  • Compute Engine
  • Identity-Aware Proxy
  • Pub/Sub Lite
  • Resource Manager (nur Ressourcentyp und Ressourcendienst)
  • Secret Manager
Attribut "Ressourcentyp" Den Zugriff anhand des Ressourcentyps verwalten.
Attribut "Ressourcenname" Den Zugriff anhand des Ressourcennamens verwalten.
Ressourcen-Tags Den Zugriff anhand der Tags verwalten, die der Ressource zugeordnet sind. Alle Google Cloud-Dienste

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 anhand von Standardattributen der Anfrage und des Anforderers, wie Quell-IP-Adresse, Geräteattribute, Uhrzeit und mehr. 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.

  • Cloud Storage
  • Identity and Access Management
  • AI Platform Notebooks
  • API Gateway
  • AutoML
  • Certificate Authority Service
  • Cloud Functions
  • Cloud Healthcare API
  • Cloud IoT
  • Cloud Key Management Service
  • Cloud Run
  • Cloud Runtime Configuration API
  • Compute Engine
  • Container Analysis
  • Dataproc
  • Earth Engine
  • Game Servers
  • Identity and Access Management
  • Identity-Aware Proxy
  • Managed Service for Microsoft Active Directory
  • 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

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 derzeit hauptsächlich für die TCP-Weiterleitung mit Identity-Aware Proxy verwendet.

Identity-Aware Proxy

Weiterleitungsregelattribute

Geben Sie die Arten von Weiterleitungsregeln an, die von einem Mitglied erstellt werden können. Beispielsweise können Sie einem Mitglied erlauben, Weiterleitungsregeln für interne Google Cloud-Load-Balancer zu erstellen, die Traffic aus einem Google Cloud-Netzwerk verarbeiten, jedoch 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. 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 für das Personalwesen Zugriff haben.

Identity-Aware Proxy

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 IAM-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 Ressourcen, 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. Ab dem 26. Februar 2021 wird ein Teil der Bedingung nie als Zugriff erlaubt behandelt, wenn ein Teil einer Bedingung ein nicht verfügbares Attribut enthält. 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.

resource.service Attribut

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.

Attributvariable resource.service
Attributtyp String
Unterstützte Operatoren ==, !=
Unterstützter Operand String


Eine Liste aller unterstützten String-Literale für Ressourcendienste finden Sie unter Ressourcenattribute für IAM Conditions.

Diskussion Die optionale Variable resource.service ist für Gleichheits- und Ungleichheitsvergleiche vorgesehen.

Hinweis: Die Funktionen .startsWith(<prefix string>) und .endsWith(<suffix string>) sind nicht für die Verwendung mit dem Attribut resource.service vorgesehen. Hiervon wird aufgrund unerwarteter Evaluierungsergebnisse abgeraten.

Beispiele

Beispiel 1:


resource.service == "compute.googleapis.com"
Unterstützte Dienste
  • Cloud Key Management Service
  • Cloud Spanner
  • Cloud Storage
  • Compute Engine
  • Identity-Aware Proxy
  • Pub/Sub Lite
  • Resource Manager (nur Ressourcentyp und Ressourcendienst)
  • Secret Manager

resource.type Attribut

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.

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
Unterstützte Operatoren ==, !=
Unterstützter Operand String


Eine Liste aller unterstützten String-Literale für Ressourcentypen finden Sie unter Ressourcenattribute für IAM Conditions.

Diskussion Die optionale Variable resource.type ist für Gleichheits- und Ungleichheitsvergleiche vorgesehen.

Hinweis: Die Funktionen .startsWith(<prefix string>) und .endsWith(<suffix string>) sind nicht für die Verwendung mit dem Attribut resource.type vorgesehen. Hiervon wird aufgrund unerwarteter Evaluierungsergebnisse abgeraten.

Beispiele

Beispiel 1:


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

Beispiel 2:


(resource.type == "compute.googleapis.com/Image" ||
resource.type == "compute.googleapis.com/Disk")
Unterstützte Ressourcentypen
Cloud Key Management Service
  • Versionen kryptografischer Schlüssel
  • Kryptografische Schlüssel
  • Schlüsselbunde
Cloud Spanner
  • Datenbanken
  • Instanzen
Cloud Storage
  • Buckets
  • Objekte
Compute Engine
  • Back-End-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 Cloud Speicherorte1
Identity-Aware Proxy
  • Alle Back-End-Dienste und App Engine-Anwendungen
  • Alle Tunnelressourcen
  • Alle Tunnelzonen
  • Alle Webdienste
  • App Engine-Anwendungsdienstversionen
  • App Engine-Anwendungsdienste
  • Back-End-Dienste von Compute Engine
  • Tunnelinstanzen
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.

resource.name Attribut

Mit dem Attribut resource.name können Sie eine Bedingung anhand eines vollständigen oder eines Teils eines Ressourcennamens festlegen.

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.

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.

Attributvariable resource.name
Attributtyp String
Unterstützte Operatoren startsWith(), endsWith(), extract(), ==, !=
Unterstützter Operand

String

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

Diskussion

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

Beispiel 1 (für eine Compute Engine-VM-Instanz):


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

Beispiel 2 (für einen Cloud Storage-Bucket):


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

Beispiel 3 (für ein Cloud Storage-Objekt):


resource.name.endsWith(".jpg")

Beispiel 4 (für mehrere Ressourcentypen):


resource.name.extract("projects/{project}/")

Beispiel 5 (für einen Cloud Storage-Bucket):


resource.name != "projects/_/buckets/secret-bucket-123"
Unterstützte Ressourcentypen
Cloud Key Management Service
  • Kryptografische Schlüssel
  • Versionen kryptografischer Schlüssel
  • Schlüsselbunde
Cloud Spanner
  • Datenbanken
  • Instanzen
Cloud Storage
  • Buckets
  • Objekte
Compute Engine
  • Back-End-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
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.

Sie können die folgenden Funktionen verwenden, um mit Tags zu arbeiten:

Funktion Typ Beschreibung
resource.hasTagKey String --> boolesch

Funktion:

Ü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:String: Der Namespace-Name des Tag-Schlüssels mit der numerischen ID der Organisation und einem Schrägstrich als Präfix. Beispiel: 123456789012/env

Beispiel:

resource.hasTagKey('123456789012/env')
Gibt true zurück, wenn die Ressource für die Anfrage ein Tag mit dem Schlüssel env hat.

resource.hasTagKeyId String --> boolesch

Funktion:

Ü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:String: Die permanente ID des Tag-Schlüssels. Beispiel: tagKeys/123456789012

Beispiel:

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

resource.matchTag (String, String) --> boolesch

Funktion:

Ü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:

Der erste String-Parameter ist der Namespace-Name für den Tag-Schlüssel mit der numerischen ID der Organisation und einem Schrägstrich als Präfix. z. B. 123456789012/env.

Der zweite String-Parameter ist der Kurzname für den Tagwert. Beispiel: prod.

Beispiel:

resource.matchTag('123456789012/env', 'prod')
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.matchTagId (String, String) --> boolesch

Funktion:

Ü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:

Der erste String-Parameter ist die permanente ID für den Tag-Schlüssel. Beispiel: tagKeys/123456789012.

Der zweite String-Parameter ist die permanente ID für den Tag-Wert. Beispiel: tagValues/567890123456.

Beispiel:

resource.matchTagId('tagKeys/123456789012', 'tagValues/567890123456')
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.

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).

Attribut „Zugriffsebenen“

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

Das Zugriffsebenenattribut wird von Attributen der Anfrage abgeleitet, beispielsweise von der Quell-IP-Adresse, Geräteattribute, Uhrzeit und mehr. 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-Back-End-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 Liste mit Strings
Unterstützte Operatoren in
Unterstützter Operand String
Diskussion

Auf der rechten Seite wird die Variable request.auth.access_levels angezeigt und auf der linken Seite des Operators in wird ein String angezeigt, der einen vollständigen Namen der definierten Zugriffsebene darstellt.

Der vollständige Name einer Zugriffsebene folgt diesem Muster:
"accessPolicies/<policyNumber>/accessLevels/<shortName>"

Hinweis: Beim String einer Zugriffsebene wird zwischen Groß- und Kleinschreibung unterschieden. Er muss genau dem entsprechen, was in Access Context Manager konfiguriert wurde, damit die gewünschte Wirkung erzielt wird. "accessPolicies/199923665455/accessLevels/CorpNet" ist beispielsweise ein gültiges Stringliteral, das im Ausdruck verwendet werden könnte. Mit "accessPolicies/199923665455/accesslevels/CorpNet" wird jedoch nicht die gewünschte Wirkung erzielt.

Beispiel

"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 oder eine auf 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:

In folgenden Abschnitten erfahren Sie, welche Dienste API-Attribute erkennen.

Funktionen für API-Attribute

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

Funktion Typ Beschreibung
api.getAttribute (String, T) --> T

Funktion: Ruft das angeforderte API-Attribut ab.

Parameter:

String: Das abzurufende API-Attribut. Informationen zu unterstützten Werten finden Sie auf dieser Seite unter Attribute der Cloud Storage API und IAM API-Attribute.

T: Der Standardwert, der verwendet werden soll, wenn das API-Attribut nicht verfügbar ist. Verwenden Sie denselben Typ wie der Wert des API-Attributs. Wenn der Wert des API-Attributs beispielsweise ein String ist, können Sie einen leeren String oder einen Platzhalterstring wie undefined verwenden.

Beispiel:

api.getAttribute("storage.googleapis.com/objectListPrefix", "")
Der Wert des Parameters prefix, der verwendet wurde, um Objekte in einem Cloud Storage-Bucket aufzulisten. Gibt für Anfragen, die den Parameter prefix weglassen, und bei anderen Anfragetypen einen leeren String zurück.

hasOnly List<T>.(List<T>) --> bool

Funktion: Überprüft, ob eine Liste nur die zulässigen Elemente oder eine Teilmenge dieser Elemente enthält.

Parameter:

List<T>: Eine Liste von Elementen des Typs T. Sie rufen die Funktion für eine von api.getAttribute() zurückgegebene Liste auf. Der Parameter ist eine Liste von Elementen, die das API-Attribut enthalten darf.

Beispiel:

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

Prüft, ob die Anfrage andere Rollen als Pub/Sub-Bearbeiter (roles/pubsub.editor) oder Pub/Sub-Publisher (roles/pubsub.publisher) gewähren oder widerrufen würde. Die folgende Tabelle zeigt das Ergebnis für unterschiedliche 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. Standardmäßig 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:

Attribut Typ Beschreibung
storage.googleapis.com/objectListPrefix String

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

Bei anderen Arten von Anfragen ist das Attribut nicht definiert.

Dienste, die dieses Attribut erkennen:

Nur Cloud Storage erkennt dieses Attribut.

IAM API-Attribute

IAM bietet das folgende API-Attribut:

Attribut Typ Beschreibung
iam.googleapis.com/modifiedGrantsByRole Array

Bei einer Anfrage zum Festlegen der IAM-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.

Ressourcen, die dieses Attribut akzeptieren:

Die folgenden Ressourcen akzeptieren Bedingungen mit dem Attribut modifiedGrantsByRole in ihren IAM-Richtlinien:

  • Projekte
  • Ordner
  • Organisationen

Dienste, die dieses Attribut erkennen:

Die folgenden Dienste erkennen das Attribut modifiedGrantsByRole:

  • AI Platform Notebooks
  • API Gateway
  • AutoML
  • Certificate Authority Service
  • Cloud Functions
  • Cloud Healthcare API
  • Cloud IoT
  • Cloud Key Management Service
  • Cloud Run
  • Cloud Runtime Configuration API
  • Compute Engine
  • Container Analysis
  • Dataproc
  • Earth Engine
  • Game Servers
  • Identity and Access Management
  • Identity-Aware Proxy
  • Managed Service for Microsoft Active Directory
  • 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.

Unterstützte grundlegende Funktionen und Operatoren

Die für das Datums-/Uhrzeitattribut verwendete Attributvariable lautet request.time und ist vom Typ Zeitstempel. Sie können Strings auch in die Typen Zeitstempel und Dauer umwandeln.

Unterstützte grundlegende Funktionen Typ Beschreibung
date String --> Zeitstempel

Funktion: Konvertiert einen String in einen Zeitstempel.
Parameter: String im Format YYYY-MM-DD, wobei YYYY das Jahr, MM der zweistellige Monat und DD der zweistellige Tag ist. Der resultierende Zeitstempel enthält das angegebene Datum und die Uhrzeit 00:00:00.000 UTC.

Beispiel:

date("2020-02-01")
Ein Zeitstempel, der das Datum 2020-02-01 und die Uhrzeit 00:00:00.000 UTC darstellt.

duration String --> Dauer

Funktion: Wandelt einen String in eine Dauer um.
Parameter: String mit einer Anzahl von Sekunden gefolgt von s

Beispiele:

duration("90s")
Eine Dauer, die 1,5 Minuten entspricht.

duration("2592000s")
Eine Dauer, die 30 Tage darstellt.

timestamp

String --> Zeitstempel

Funktion: Konvertiert einen String in einen Zeitstempel.
Parameter: String im UTC-Format (RFC 3339).

Beispiele:

timestamp("1985-04-12T23:20:50.52Z")
Dies stellt die Umwandlung des Zeitstempels 23 Uhr, 20 Minuten und 50,52 Sekunden am 12. April 1985 in UTC dar.

timestamp("1996-12-19T16:39:57-08:00")
Dies stellt die Umwandlung des Zeitstempels 16 Uhr, 39 Minuten und 57 Sekunden am 19. Dezember 1996 mit einer Verschiebung von -08:00 Stunden gegenüber UTC dar. Beachten Sie, dass dies 1996-12-20T00:39:57Z in UTC entspricht. Diese Verschiebung stellt nicht die Zeitzonenverschiebung dar. Beispielsweise beträgt die Verschiebung für Pacific Standard Time -08:00 im Winter und aufgrund der Sommerzeit -07:00 im Sommer.

Wichtiger Hinweis:
Der String muss der Formatanforderung für einen UTC-String entsprechen. Wenn ein String nicht dem UTC-Format entspricht, kann die Funktion timestamp() ihn nicht in einen Zeitstempelwert konvertieren. Daher führt die Bewertung der Bedingung für den Ausdruck mit timestamp() zu einer fehlgeschlagenen Autorisierung.

<, <=, >, >=

(Zeitstempel, Zeitstempel) --> boolesch

Funktion: Allgemeiner Vergleich mit dem Typ "Zeitstempel".

Beispiele:

request.time < timestamp("2018-04-12T00:00:00.00Z")
request.time <= timestamp("2018-04-12T00:00:00.00Z")
request.time > timestamp("2018-04-12T00:00:00.00Z")
request.time >= timestamp("2018-04-12T00:00:00.00Z")
Mit diesen Ausdrücken wird der Vergleich der Anfragezeit mit einem bestimmten Zeitstempel festgelegt, hier dem 12. April 2018 in UTC. Wird häufig verwendet, um eine Bedingung für die Startzeit oder Ablaufzeit für die Rollenzuweisung festzulegen.

Hinweis: Bei einer zeitlichen Genauigkeit im Millisekundenbereich hat die Einbeziehung des Gleichheits- und des Ungleichheitsvergleichs (==, !=) keine signifikante Auswirkung.

+, - (Zeitstempel, Dauer) --> Zeitstempel

Funktion: Fügen Sie eine Dauer aus einem Zeitstempel hinzu oder subtrahieren Sie sie.

Beispiele:

timestamp("2018-04-12T14:30:00.00Z") + duration("1800s")
Findet den Zeitstempel, der 30 Minuten nach 14:30 Uhr GMT am 12. April 2018 liegt.

timestamp("2018-04-12T14:30:00.00Z") - duration("5184000s")
Findet den Zeitstempel, der 60 Minuten vor 14:30 Uhr GMT am 12. April 2018 liegt.

Unterstützte erweiterte Funktionen und Operatoren

Die für das Datums-/Uhrzeitattribut verwendete Attributvariable lautet request.time und ist vom Typ Zeitstempel.

Unterstützte erweiterte Funktionen Typ Beschreibung

<, <=, >, >=, ==, !=

(Ganzzahl, Ganzzahl) --> boolesch

Funktion: Allgemeiner Vergleich mit dem Typ "Ganzzahl".

Diskussion:
Diese Gruppe von Vergleichsoperatoren für Ganzzahlen wird hauptsächlich für die verbleibenden "erweiterten Funktionen" mit Zeitstempelfunktionen verwendet. Alle diese (im Rest dieser Tabelle definierten) Funktionen konvertieren einen bestimmten Teil des Zeitstempelwerts in eine Ganzzahl. Für jede erweiterte Funktion werden weitere gängig verwendete Beispiele bereitgestellt.

getDate, getDayOfMonth, getDayOfWeek, getDayOfYear

Zeitstempel.() --> Ganzzahl

Zeitstempel.(String) --> Ganzzahl

Funktionen:
getDate: Ruft den Tag des Monats mit einem auf eins basierenden Index aus dem Zeitstempelwert ab. Mit anderen Worten, der erste Tag des Monats ist 1.

getDayOfMonth: Ruft den Tag des Monats mit einem auf null basierenden Index aus dem Zeitstempelwert ab. Mit anderen Worten, der erste Tag des Monats ist 0.

getDayOfWeek: Ruft den Wochentag mit einem auf null für Sonntag basierenden Index aus dem Zeitstempelwert ab. Mit anderen Worten, Sonntag ist (0), Montag (1), Samstag (6) usw.

getDayOfYear: Ruft den Tag des Jahres mit einem auf null basierenden Index aus dem Zeitstempelwert ab. Mit anderen Worten, der erste Tag des Jahres ist 0.

Parameter:
String als Zeitzone: Konvertierung beruht auf dem Datum mit Zeitzone. Hinweis: Wenn die Zeitzone nicht angegeben wurde, beruht die Konvertierung auf dem Datum in UTC.

Weitere Informationen zu gültigen Zeitzonenstrings finden Sie unter Unterstützte Zeitzonenwerte.

Beispiel:

request.time.getDayOfWeek() > 0 && request.time.getDayOfWeek() < 6
Die Evaluierung dieses Ausdrucks lautet "true", wenn die eingehende Anfrage zwischen Montag und Freitag nach UTC-Zeit gesendet wurde.

Beispiel:

request.time.getDayOfWeek("Europe/Berlin") > 0 && request.time.getDayOfWeek(Europe/Berlin") < 6
Die Evaluierung dieses Ausdrucks lautet "true", wenn die eingehende Anfrage zwischen Montag und Freitag in der Zeitzone von Berlin gesendet wurde.

Beispiel:

request.time.getDayOfYear("America/Los_Angeles") >= 0 && request.time.getDayOfYear("America/Los_Angeles") < 5
Die Evaluierung dieses Ausdrucks lautet "true", wenn die eingehende Anfrage in den ersten 5 Tagen des Jahres in der Zeitzone von Los Angeles gesendet wurde.

getFullYear

Zeitstempel.() --> Ganzzahl

Zeitstempel.(String) --> Ganzzahl

Funktion: Ruft das Jahr des Datums ab.

Parameter:
Version 1: Kein Parameter; aus dem Datum in UTC.
Version 2: Zeitzonenstring; aus dem Datum in der Zeitzone.

Weitere Informationen zu gültigen Zeitzonenstrings finden Sie unter Unterstützte Zeitzonenwerte.

Beispiel:

request.time.getFullYear("America/Los_Angeles") == 2018
Die Evaluierung dieses Ausdrucks lautet "true", wenn die eingehende Anfrage im Jahr 2018 in der Zeitzone von Los Angeles gesendet wurde.

Beispiel:

request.time.getFullYear() < 2020
Die Evaluierung dieses Ausdrucks lautet "true", wenn die eingehende Anfrage vor Ende des Jahres 2019 in UTC gesendet wurde.

getHours

Zeitstempel.() --> Ganzzahl

Zeitstempel.(String) --> Ganzzahl

Funktion: Ruft die Stundenzahl aus dem Datum ab; die Werte reichen von 0 bis 23.

Parameter:
Version 1: Kein Parameter; aus dem Datum in UTC.
Version 2: Zeitzonenstring; aus dem Datum in der Zeitzone.

Weitere Informationen zu gültigen Zeitzonenstrings finden Sie unter Unterstützte Zeitzonenwerte.

Beispiel:

request.time.getHours("Europe/Berlin") >= 9 && request.time.getHours("Europe/Berlin") <= 17
Dieser Ausdruck gibt eine Arbeitszeitbedingung an. Er wird mit "true" ausgewertet, wenn die Anfrage zwischen 9:00 und 17:00 Uhr in der Zeitzone von Berlin gesendet wurde.

Hinweis:

Durch Kombination von getHours() mit getDayofWeek() lässt sich eine Bedingung für gesetzliche Arbeitszeiten festlegen, z. B. um eine Zuständigkeitsanforderung zu erfüllen.

getMilliseconds

Zeitstempel.() --> Ganzzahl

Zeitstempel.(String) --> Ganzzahl

Funktion: Ruft die Millisekunden in einer Sekunde aus dem Zeitstempel ab. Die Werte reichen von 0 bis 999.

Parameter:
Version 1: Kein Parameter; aus dem Datum in UTC.
Version 2: Zeitzonenstring; aus dem Datum in der Zeitzone.

Weitere Informationen zu gültigen Zeitzonenstrings finden Sie unter Unterstützte Zeitzonenwerte.

Hinweis:

Diese Funktion ist nur begrenzt nützlich, da sie semantisch nur eingeschränkt verwendet werden kann.

getMinutes

Zeitstempel.() --> Ganzzahl

Zeitstempel.(String) --> Ganzzahl

Funktion: Ruft die Minuten in einer Stunde aus dem Zeitstempel ab. Die Werte reichen von 0 bis 59.

Parameter:
Version 1: Kein Parameter; aus dem Datum in UTC.
Version 2: Zeitzonenstring; aus dem Datum in der Zeitzone.

Weitere Informationen zu gültigen Zeitzonenstrings finden Sie unter Unterstützte Zeitzonenwerte.

Hinweis:

Diese Funktion ist nur begrenzt nützlich, da sie semantisch nur eingeschränkt verwendet werden kann.

getMonth

Zeitstempel.() --> Ganzzahl

Zeitstempel.(String) --> Ganzzahl

Funktion: Ruft den Monat eines Jahres aus dem Zeitstempel ab. Die Werte reichen von 0 bis 11.

Parameter:
Version 1: Kein Parameter; aus dem Datum in UTC.
Version 2: Zeitzonenstring; aus dem Datum in der Zeitzone.

Weitere Informationen zu gültigen Zeitzonenstrings finden Sie unter Unterstützte Zeitzonenwerte.

Beispiel:

request.time.getMonth("America/Los_Angeles") == 3
Die Evaluierung dieses Ausdrucks lautet "true", wenn die eingehende Anfrage im April in der Zeitzone von Los Angeles gesendet wurde.

getSeconds

Zeitstempel.() --> Ganzzahl

Zeitstempel.(String) --> Ganzzahl

Funktion: Ruft die Sekunden einer Minute aus dem Zeitstempel ab. Die Werte reichen von 0 bis 59.

Parameter:
Version 1: Kein Parameter; aus dem Datum in UTC.
Version 2: Zeitzonenstring; aus dem Datum in der Zeitzone.

Weitere Informationen zu gültigen Zeitzonenstrings finden Sie unter Unterstützte Zeitzonenwerte.

Hinweis:

Diese Funktion ist nur begrenzt nützlich, da sie semantisch nur eingeschränkt verwendet werden kann.

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.

destination.ip Attribut

Attributvariable destination.ip
Attributtyp String
Unterstützte Operatoren ==, !=
Unterstützter Operand String
Diskussion

Die Variable destination.ip muss ein String sein, der eine interne IP-Adresse im IPv4-Format darstellt.

Hinweis: Die Funktionen startsWith(<prefix string of IP>) und endsWith(<suffix string of IP>) sind nicht für die Verwendung mit dem Attribut destination.ip vorgesehen. Das Festlegen einer Bedingung wie destination.ip.startsWith(<prefix string of IP>) führt bei der Ausführung eines Vorgangs vom Typ setIamPolicy nicht zu Syntaxfehlern. Aufgrund von unvorhergesehenen Ergebnissen wird jedoch davon abgeraten. Es empfiehlt sich nicht, einen Präfixabgleich des IP-Strings für eine Überprüfung des IP-Adressbereichs für CIDRs zu verwenden.

Beispiele

destination.ip == "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

destination.port Attribut

Attributvariable destination.port
Attributtyp Ganzzahl
Unterstützte Operatoren ==, !=, <, <=, >, >=
Unterstützter Operand Ganzzahl
Diskussion

Die Variable destination.port muss eine Ganzzahl sein, die eine interne TCP-Portnummer darstellt.

Beispiele

destination.port == 21

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 Mitglied erstellen kann. Beispielsweise können Sie einem Mitglied 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 Back-End-Dienste, Ziel-Proxys, Systemdiagnosen und URL-Zuordnungen erstellt werden können.

Unterstützte Funktionen

Unterstützte Funktionen Typ Beschreibung
compute.isForwardingRuleCreationOperation() () --> boolesch

Funktion: Prüft, ob die Anfrage eine Weiterleitungsregel erstellt.

Beispiele: Sehen Sie sich die Beispiele für compute.matchLoadBalancingSchemes() an.

compute.matchLoadBalancingSchemes() Array.(string) --> boolesch

Funktion: Kontrollieren Sie, ob die Anfrage einen der angegebenen Typen von Load-Balancing-Schemas betrifft. Die Kennung für jedes Load-Balancing-Schema sowie Details zu jedem Schema finden Sie unter IAM Conditions für Google Cloud-Load-Balancer verwenden.

Parameter: Stringarray

Beispiel:


!compute.isForwardingRuleCreationOperation() || (
  compute.isForwardingRuleCreationOperation() &&
  compute.matchLoadBalancingSchemes([
    'INTERNAL', 'INTERNAL_MANAGED', 'INTERNAL_SELF_MANAGED'
  ]))
)
  • Wenn die Anfrage keine Weiterleitungsregel erstellt, weisen Sie dem Mitglied die Rolle zu.
  • Wenn die Anfrage eine Weiterleitungsregel erstellt, weisen Sie die Rolle nur dann zu, wenn die Weiterleitungsregel ein Load-Balancing-Schema INTERNAL, INTERNAL_MANAGED oder INTERNAL_SELF_MANAGED betrifft.

Unterstützte Ressourcentypen

Dieses Attribut ist für Anfragen zum Erstellen eines dieser Ressourcentypen verfügbar:

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.

request.path Attribut

Attributvariable request.path
Attributtyp String
Unterstützte Operatoren ==, startsWith(), endsWith()
Unterstützte Operanden/Parameter
  • String: ==
  • Konstanter Präfixstring: startsWith()
  • Konstanter Suffixstring: endsWith()
Diskussion Hinweis: Der Operator != wird nicht empfohlen. Anstelle eines negativen Vergleichs wie

request.path != "/admin"
wird das Verwenden des Präfixabgleichs empfohlen. Beispiel:

! request.path.startsWith("/admin")
Auf diese Weise sind alle URL-Pfade, denen "/admin" übergeordnet ist, z. B. "/admin/payroll/", vor unbeabsichtigten Zugriffen geschützt.
Beispiele

Beispiel 1:


request.path == "/admin"

request.path == "/admin/payroll"

Der im Gleichheitsvergleich (==) in den zwei Beispielen oben verwendete String muss als URL-Pfad formatiert sein.

Beispiel 2:


request.path.startsWith("/admin")

In der Funktion wird ein String verwendet, der das Präfix eines URL-Pfads darstellt.

Beispiel 3:


request.path.endsWith("/payroll.js")

In der Funktion wird ein String verwendet, der das Suffix eines URL-Pfads darstellt.

Unterstützte Ressourcentypen

Dienstversionen der Identity-Aware Proxy-App (App Engine)

Verfügbar für Anfragen mit Identity-Aware Proxy für den Zugriff auf eine Webanwendung, die in App Engine oder Compute Engine ausgeführt wird

request.host Attribut

Attributvariable request.host
Attributtyp String
Unterstützte Operatoren ==, endsWith()
Unterstützte Operanden/Parameter
  • String: ==
  • Konstanter Suffixstring: endsWith()
Diskussion Die Funktion .startsWith(<prefix string>) ist nicht für die Verwendung mit dem Attribut request.host vorgesehen. Das Festlegen einer Bedingung wie request.host.startsWith(<prefix string>) führt bei der Ausführung eines Vorgangs vom Typ setIamPolicy nicht zu Syntaxfehlern. Aufgrund von unvorhergesehenen Ergebnissen wird jedoch davon abgeraten. != wird ebenfalls nicht empfohlen.
Beispiele

Beispiel 1:


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

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

Der im Gleichheitsvergleich (==) in den zwei Beispielen oben verwendete String muss als URL-String für den Hostnamen einer Website formatiert sein.

Beispiel 2:


request.host.endsWith("example.com")

Ein String, der das Suffix eines Hostnamens einer Website darstellt.

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.

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-id}/ 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; Bindestriche (-); und Unterstriche (_) verwenden.

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

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

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

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

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

Die Funktion extract() gibt unterschiedliche Werte zurück, je nachdem, ob die Extraktionsvorlage ein Präfix, ein Suffix oder beides beinhaltet:

Beinhaltet ein Präfix Beinhaltet ein Suffix Extrahierter Wert
Der vollständige Ressourcenname
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 null 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/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 Leerer String
{start}/data_lake projects/_/buckets/acme-orders-aaa
orders/{end} order_date=2019-11-03/aef87g87ae0876
{all} projects/_/buckets/acme-orders-aaa/data_lake/orders/order_date=2019-11-03/aef87g87ae0876
/orders/{none}/order_date= null
/orders/order_date=2019-11-03/{id}/data_lake null

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 Zeitstempel zu konvertieren. Beispiele finden Sie unter Ressourcenbasierten Zugriff konfigurieren.