In diesem Dokument 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. Sie können dieses Attribut in Rollenbindungen für Zulassungsrichtlinien verwenden. |
|
Attribut "Ressourcentyp" |
Den Zugriff anhand des Ressourcentyps verwalten. Sie können dieses Attribut in Rollenbindungen für Zulassungsrichtlinien verwenden. |
|
Attribut "Ressourcenname" |
Den Zugriff anhand des Ressourcennamens verwalten. Sie können dieses Attribut in Rollenbindungen für Zulassungsrichtlinien verwenden. |
|
Ressourcen-Tags |
Den Zugriff anhand der Tags verwalten, die der Ressource zugeordnet sind. Sie können dieses Attribut an den folgenden Stellen verwenden:
|
Alle Google Cloud-Dienste (siehe Unterstützung für übernommene Bedingungen) |
Weitere Informationen zu Ressourcenattributen finden Sie auf dieser Seite unter Ressourcenattribute.
Hauptkontoattribute
Die folgenden Attribute beziehen sich auf den Hauptberechtigten, der die Anfrage stellt.
Attribut | Nutzungszusammenfassung | Unterstützte Hauptkontotypen |
---|---|---|
Richtlinien basierend auf dem Typ des Hauptkontos in der Anfrage anwenden. Sie können dieses Attribut in Richtlinienbindungen für Principal Access Boundary-Richtlinien verwenden. |
|
|
Richtlinien basierend auf der Identität des Hauptberechtigten in der Anfrage anwenden. Sie können dieses Attribut in Richtlinienbindungen für Principal Access Boundary-Richtlinien verwenden. |
|
Weitere Informationen zu Hauptnutzerattributen finden Sie auf dieser Seite unter Hauptnutzerattribute.
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 auf Grundlage von Standardattributen der Anfrage und des Anforderers, z. B. Quell-IP-Adresse, Geräteattribute und Uhrzeit. Für die Zugriffsebene Sie können dieses Attribut in Rollenbindungen für Zulassungsrichtlinien verwenden. |
Identity-Aware Proxy |
|
Den Zugriff anhand von Daten verwalten, die von einer bestimmten Google Cloud API oder einem bestimmten Dienst bereitgestellt werden. Sie können dieses Attribut in Rollenbindungen für Zulassungsrichtlinien verwenden. |
|
|
Legen Sie ablaufenden, geplanten oder zeitlich begrenzten Zugriff auf Google Cloud-Ressourcen fest. Sie können diese Attribute in Rollenbindungen für Zulassungsrichtlinien verwenden. |
Alle Google Cloud-Dienste (siehe Unterstützung für übernommene Bedingungen) |
|
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 für die TCP-Weiterleitung mit Cloud Identity-Aware Proxy verwendet. Sie können diese Attribute in Rollenbindungen für Zulassungsrichtlinien verwenden. |
Identity-Aware Proxy |
|
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. Sie können diese Attribute in Rollenbindungen für Zulassungsrichtlinien verwenden. |
|
|
Den Zugriff anhand des URL-Pfads und/oder des Hosts einer Anfrage verwalten. Eine Bedingung könnte zum Beispiel festlegen, dass Sie können diese Attribute in Rollenbindungen für Zulassungsrichtlinien verwenden. |
|
Weitere Informationen zu Anfrageattributen finden Sie auf dieser Seite unter Anfrageattribute.
Unterstützung für übernommene Bedingungen
Bei einigen Arten von Google Cloud-Ressourcen sind in den Zulassungsrichtlinien keine Bedingungen zulässig. 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.
Sie können das Attribut resource.service
in Rollenbindungen für Zulassungsrichtlinien verwenden.
Attributvariable | resource.service |
---|---|
Attributtyp |
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 resource.service == "compute.googleapis.com" |
Unterstützte Dienste |
|
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.
Sie können das Attribut resource.type
in Rollenbindungen für Zulassungsrichtlinien verwenden.
Attributvariable | resource.type |
||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Attributtyp |
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 resource.type != "compute.googleapis.com/Image"
Gibt (resource.type == "compute.googleapis.com/Image" || resource.type == "compute.googleapis.com/Disk") |
||||||||||||||||||||||||||||||||||||||||||||||
Unterstützte Ressourcentypen |
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 Formate für Ressourcennamen finden Sie unter Format der Ressourcennamen.
Das Attribut resource.name
ist nur für bestimmte Ressourcentypen verfügbar, die in der Tabelle in diesem Abschnitt 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()
oderendsWith()
, um eine Bedingung zu schreiben, die den Anfang oder das Ende des Ressourcennamens auswertet.
Sie können das Attribut resource.name
in Rollenbindungen für Zulassungsrichtlinien verwenden.
Attributvariable | resource.name |
||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Attributtyp |
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 |
Bei der Funktion Bei der Funktion
Die Funktion Die Operatoren |
||||||||||||||||||||||||||||||||||||||||||
Beispiele |
Gibt resource.name != "projects/_/buckets/secret-bucket-123"
Gibt resource.name.startsWith("projects/project-123/zones/us-east1-b/instances/prod-")
Gibt resource.name.startsWith("projects/_/buckets/my_bucket/objects/test-object-")
Gibt resource.name.endsWith(".jpg") Gibt den Projektnamen oder die Projektnummer zurück, falls vorhanden: resource.name.extract("projects/{project}/") |
||||||||||||||||||||||||||||||||||||||||||
Unterstützte Ressourcentypen |
|
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 IDtagValues/567890123456
haben. -
Kurzname: Der Kurzname für jeden Schlüssel muss innerhalb des Projekts oder der Organisation, in der der Schlüssel definiert ist, 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 Kurznamenprod
haben. -
Ein Namespace-Name, mit dem die numerische ID Ihrer Organisation oder des Projekts dem Kurznamen eines Tag-Schlüssels hinzugefügt wird. Ein Tag-Schlüssel, der für eine Organisation erstellt wurde, könnte beispielsweise den Namespace-Namen
123456789012/env
haben. Informationen zum Abrufen Ihrer Organisations-ID finden Sie unter Ressourcen-ID Ihrer Organisation abrufen. Ein Tag-Schlüssel, der für ein Projekt erstellt wurde, könnte den Namespace-Namenmyproject/env
haben. Informationen zum Ermitteln der Projekt-ID finden Sie unter Projekte identifizieren.
Informationen zum Auswählen der zu verwendenden ID-Art finden Sie unter Tag-Definitionen und Kennungen.
Mit tagbasierten Bedingungen können Sie den Zugriff auf eine beliebige Ressource steuern. Dazu gehören Ressourcen mit eigenen Tags sowie Ressourcen, die Tags von anderen Ressourcen übernehmen. Weitere Informationen dazu, wie Tags über die Ressourcenhierarchie übernommen werden, finden Sie unter Tag-Übernahme.
Sie können tagbasierte Bedingungen in folgenden Fällen verwenden:
- Rollenbindungen für Richtlinien zulassen
- Ablehnungsregeln für Ablehnungsrichtlinien
Mit den folgenden Funktionen können Sie Bedingungen auf der Grundlage von Tags festlegen:
Funktion | Beschreibung |
---|---|
resource.hasTagKey(
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(
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.matchTag(
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(
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
|
Hauptkontoattribute
Mit den Hauptkontoattributen können Sie Bedingungen basierend auf dem Hauptkonto schreiben, das die Anfrage gestellt hat. Mit diesen Attributen können Sie die Hauptkonten eingrenzen, für die eine Richtlinie erzwungen wird.
Sie können Hauptkontoattribute in Richtlinienbindungen für Principal Access Boundary-Richtlinien verwenden.
principal.type
Attribut
Mit dem Attribut principal.type
können Sie eine Bedingung anhand des Typs des Hauptkontos festlegen, das die Anfrage ausstellt. Sie können beispielsweise einer Richtlinienbindung für eine Principal Access Boundary-Richtlinie eine Bedingung hinzufügen, damit die Richtlinie nur für Dienstkonten erzwungen wird.
Sie können Hauptkontoattribute in Richtlinienbindungen für Principal Access Boundary-Richtlinien verwenden.
Attributvariable | principal.type |
---|---|
Attributtyp |
|
Unterstützte Operatoren | , , in |
Unterstützte Haupttypen |
|
Beispiele |
Wird zu principal.type == "iam.googleapis.com/ServiceAccount"
Wird zu principal.type in ["iam.googleapis.com/WorkspaceIdentity", "iam.googleapis.com/WorkforcePoolIdentity"] |
principal.subject
Attribut
Mit dem Attribut principal.subject
können Sie eine Bedingung anhand des Principals festlegen, der die Anfrage stellt. Sie können beispielsweise einer Richtlinienbindung für eine Principal Access Boundary-Richtlinie eine Bedingung hinzufügen, damit die Richtlinie nur für Hauptkonten erzwungen wird, deren E-Mail-Adressen auf @example.com
enden.
Wenn Sie das Attribut principal.subject
in einer Bedingung verwenden, empfehlen wir auch, das Attribut principal.type
zu verwenden, um zu steuern, für welche Arten von Principals die Bedingung gilt. Das liegt daran, dass Hauptkonto-IDs nicht unbedingt für alle Hauptkontotypen eindeutig sind. Die Kennung example-user@example.com
kann beispielsweise ein Google-Konto oder einen Nutzer in einem Workforce Identity-Pool identifizieren.
Wenn Sie das Attribut principal.type
zusätzlich zum Attribut principal.subject
verwenden, können Sie dafür sorgen, dass die Bedingung nur mit Hauptpersonen des gewünschten Typs abgeglichen wird. Der folgende Ausdruck stimmt beispielsweise mit Google-Konten überein, deren E-Mail-Adressen auf @example.com
enden:
principal.type == 'iam.googleapis.com/WorkspaceIdentity' &&
principal.subject.endsWith('@example.com')
Sie können Hauptkontoattribute in Richtlinienbindungen für Principal Access Boundary-Richtlinien verwenden.
Attributvariable | principal.subject |
---|---|
Attributtyp |
|
Unterstützte Operatoren |
|
Unterstützte Hauptsubjekte |
|
Beispiel |
Wird mit principal.subject.endsWith("@example.com")
Wird mit principal.subject == "example-service-account@example-project.iam.gserviceaccount.com" |
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-Pfad/-Host (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. Sie können das Attribut „Zugriffsebenen“ in Rollenbindungen für „Zulassen“-Richtlinien verwenden.
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 zu 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 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 "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 Webanwendung, die mit Google Cloud Load Balancing ausgeführt wird, oder eine Webanwendung, die in der App Engine ausgeführt wird, 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. Sie können API-Attribute in Rollenbindungen für Zulassungsrichtlinien verwenden.
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:
- Berechtigungen beim Auflisten von Objekten einschränken
- Einschränkungen für das Zuweisen von Rollen festlegen
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(
V<T>
|
Ruft das angeforderte API-Attribut ab.
|
||||||||||||
hasOnly(
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
|
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 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
|
Dienste, die dieses Attribut erkennen: |
Die folgenden Dienste erkennen das Attribut
|
Attribut "Datum/Uhrzeit"
Mit dem Attribut „Datum/Uhrzeit“ legen Sie ablaufenden, geplanten oder zeitlich begrenzten Zugriff auf Google Cloud-Ressourcen fest. Sie können Datums-/Uhrzeitattribute in Rollenbindungen für Zulassungsrichtlinien verwenden.
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(
Timestamp |
Wandelt ein Datum von einem
|
duration(
Duration |
Wandelt einen Zeitraum von einem
|
timestamp(
Timestamp |
Konvertiert einen
|
, , , |
Vergleicht zwei
|
|
Fügen Sie einen
|
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(
int
|
Ruft den Tag des Monats aus dem
|
Timestamp.getDayOfMonth(
int
|
Ruft den Tag des Monats aus dem
|
Timestamp.getDayOfWeek(
int
|
Ruft den Wochentag mit
|
Timestamp.getDayOfYear(
int
|
Ruft den Tag des Jahres aus dem
|
Timestamp.getFullYear(
int
|
Ruft das Jahr aus dem
|
Timestamp.getHours(
int
|
Ruft die Tageszeit des
Sie können diese Funktion mit
|
Timestamp.getMilliseconds(
int
|
Ruft die Anzahl der Millisekunden aus
|
Timestamp.getMinutes(
int
|
Ruft die Anzahl der Minuten nach der Stunde aus dem
|
Timestamp.getMonth(
int
|
Ruft den Monat des Jahres aus dem
|
Timestamp.getSeconds(
int
|
Ruft die Anzahl der Sekunden aus dem
|
, , , |
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. Sie können Ziel-IP-/Port-Attribute in Rollenbindungen für Zulassungsrichtlinien verwenden.
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 |
Beispiele |
Gibt destination.ip == "10.0.0.1"
Gibt 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 |
Beispiele |
Gibt destination.port == 21
Gibt 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. Sie können Weiterleitungsregelattribute in Rollenbindungen für „Zulassungsrichtlinien“ verwenden.
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
Funktion | Beschreibung |
---|---|
compute.isForwardingRule
bool
|
Prüft, ob die Anfrage eine Weiterleitungsregel erstellt.
|
compute.matchLoad
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.
|
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) |
Cloud Service Mesh1 | 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 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.
Sie können das Attribut „URL-Pfad/Host“ in Rollenbindungen für Zulassungsrichtlinien verwenden.
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 request.path == "/admin" request.path == "/admin/payroll"
Gibt request.path.startsWith("/admin")
Gibt request.path.endsWith("/payroll.js") |
Unterstützte Ressourcentypen |
|
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 request.host == "www.example.com" request.host == "hr.example.com"
Gibt request.host.endsWith("example.com") |
Unterstützte Ressourcentypen |
|
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
bisZ
; numerische Ziffern; und Unterstriche (_
) verwenden.In der Vorlage
projects/{project}/
lautet die IDproject
.Optional: Ein Präfix , das vor dem zu extrahierenden Teilstring erscheinen muss.
In der Vorlage
projects/{project}/
lautet das Präfixprojects/
.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/
:
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/ |
/orders/{none}/order_date= |
string ist leer |
/orders/order_date=2019-11-03/ |
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.