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 |
---|---|---|
Den Zugriff anhand des verwendeten Google Cloud-Dienstes verwalten. |
|
|
Den Zugriff anhand des Ressourcentyps verwalten. | ||
Den Zugriff anhand des Ressourcennamens verwalten. |
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 |
---|---|---|
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 |
Identity-Aware Proxy |
|
Den Zugriff anhand von Daten verwalten, die von einer bestimmten Google Cloud API oder einem bestimmten Dienst bereitgestellt werden. |
Cloud Storage |
|
Legen Sie ablaufenden, geplanten oder zeitlich begrenzten Zugriff auf Google Cloud-Ressourcen fest. |
Alle Google Cloud-Dienste |
|
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 Wird derzeit hauptsächlich für die TCP-Weiterleitung mit Identity-Aware Proxy verwendet. |
Identity-Aware Proxy |
|
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. |
|
|
Den Zugriff anhand des URL-Pfads und/oder des Hosts einer Anfrage verwalten. In einer Bedingung kann beispielsweise angegeben werden, dass |
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
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
|
Diskussion | Die optionale Variable resource.service ist für Gleichheits- und Ungleichheitsvergleiche vorgesehen.
Hinweis: Die Funktionen |
Beispiele |
Beispiel 1: resource.service == "compute.googleapis.com" |
Unterstützte Dienste |
|
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
|
||||||||||||||||||
Diskussion | Die optionale Variable resource.type ist für Gleichheits- und Ungleichheitsvergleiche vorgesehen.
Hinweis: Die Funktionen |
||||||||||||||||||
Beispiele |
Beispiel 1: resource.type != "compute.googleapis.com/Image" Beispiel 2: (resource.type == "compute.googleapis.com/Image" || |
||||||||||||||||||
Unterstützte Ressourcentypen |
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 |
Bei der Funktion Bei der Funktion
Die Funktion Die Operatoren |
||||||||||||
Beispiele |
Beispiel 1 (für eine Compute Engine-VM-Instanz):
Beispiel 2 (für einen Cloud Storage-Bucket):
Beispiel 3 (für ein Cloud Storage-Objekt):
Beispiel 4 (für mehrere Ressourcentypen):
Beispiel 5 (für einen Cloud Storage-Bucket):
|
||||||||||||
Unterstützte Ressourcentypen |
|
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 „Zugriffsebene“ ist nur verfügbar, wenn Sie mit Identity-Aware Proxy auf eine Tunnelinstanz zugreifen oder auf eine in App Engine ausgeführte Webanwendung zugreifen. 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 Der vollständige Name einer Zugriffsebene folgt diesem Muster: 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" |
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.
Ein Beispiel für die Verwendung von API-Attributen in einer Bedingung finden Sie unter Berechtigungen beim Auflisten von Objekten einschränken.
Dieses Attribut wird für Cloud Storage-Buckets unterstützt, jedoch nur in den Zugriffsgrenzen für Anmeldedaten und nur beim Auflisten von Objekten.
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. Die unterstützten Werte finden Sie unter Cloud Storage API-Attribute auf dieser Seite.
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 Beispiel:
|
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 Bei anderen Arten von Anfragen ist das Attribut nicht definiert. |
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. Beispiel:
|
duration |
String --> Dauer |
Funktion: Wandelt einen String in eine Dauer um. Beispiele:
|
|
String --> Zeitstempel |
Funktion: Konvertiert einen String in einen Zeitstempel. Beispiele:
Wichtiger Hinweis: |
|
(Zeitstempel, Zeitstempel) --> boolesch |
Funktion: Allgemeiner Vergleich mit dem Typ "Zeitstempel". Beispiele: |
+ , - |
(Zeitstempel, Dauer) --> Zeitstempel |
Funktion: Fügen Sie eine Dauer aus einem Zeitstempel hinzu oder subtrahieren Sie sie. Beispiele:
|
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: |
|
Zeitstempel.() --> Ganzzahl |
Funktionen: Parameter: Beispiel: Beispiel: Beispiel: |
|
Zeitstempel.() --> Ganzzahl |
Funktion: Ruft das Jahr des Datums ab. Parameter: Beispiel: Beispiel: |
|
Zeitstempel.() --> Ganzzahl |
Funktion: Ruft die Stundenzahl aus dem Datum ab; die Werte reichen von 0 bis 23. Parameter: Beispiel: Hinweis: |
|
Zeitstempel.() --> Ganzzahl |
Funktion: Ruft die Millisekunden in einer Sekunde aus dem Zeitstempel ab. Die Werte reichen von 0 bis 999. Parameter: Hinweis: |
|
Zeitstempel.() --> Ganzzahl |
Funktion: Ruft die Minuten in einer Stunde aus dem Zeitstempel ab. Die Werte reichen von 0 bis 59. Parameter: Hinweis: |
|
Zeitstempel.() --> Ganzzahl |
Funktion: Ruft den Monat eines Jahres aus dem Zeitstempel ab. Die Werte reichen von 0 bis 11. Parameter: Beispiel: |
|
Zeitstempel.() --> Ganzzahl |
Funktion: Ruft die Sekunden einer Minute aus dem Zeitstempel ab. Die Werte reichen von 0 bis 59. Parameter: Hinweis: |
Attribute „Ziel-IP“ und „Zielport“
Mit dem Attribut "Ziel-IP/-port" können Nutzer den Zugriff basierend auf der Ziel-IP-Adresse und/oder dem Port einer Anfrage verwalten. Eine Compute Engine-VM-Instanz kann beispielsweise eine externe IP-Adresse 10.0.0.1
an Port 3001
für die allgemeine Nutzung bereitstellen und die IP-Adresse 10.0.0.2
und Port 22
werden nur für administrative Zwecke bereitgestellt.
Weitere Informationen zur TCP-Weiterleitung finden Sie in den Identity-Aware Proxy-Dokumenten.
destination.ip
Attribut
Attributvariable | destination.ip |
---|---|
Attributtyp | String |
Unterstützte Operatoren | ==, != |
Unterstützter Operand | String |
Diskussion |
Die Variable Hinweis: Die Funktionen |
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 |
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.isForwardingRule |
() --> boolesch |
Funktion: Prüft, ob die Anfrage eine Weiterleitungsregel erstellt. Beispiele: Sehen Sie sich die Beispiele für |
compute.matchLoad |
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:
|
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 |
|
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 ( 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 |
|
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 ( 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
bisZ
; numerische Ziffern; Bindestriche (-
); und Unterstriche (_
) verwenden.In der Vorlage
projects/{project-id}/
lautet die IDproject-id
.Optional: Ein Präfix , das vor dem zu extrahierenden Teilstring erscheinen muss.
In der Vorlage
projects/{project-id}/
lautet das Präfixprojects/
.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/{none}/order_date= |
null |
/orders/order_date=2019-11-03/ |
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.