Cet article décrit les attributs disponibles dans une expression de condition.
Attributs de condition disponibles
Les sections suivantes récapitulent les attributs disponibles et indiquent les services Google Cloud qui reconnaissent chaque attribut.
Attributs de ressource
Les attributs suivants sont liés à la ressource qui fait l'objet de la requête.
Attribut | Récapitulatif d'utilisation | Services Google Cloud compatibles |
---|---|---|
Attribut du service de ressource | Gérez l'accès en fonction du service Google Cloud utilisé. |
|
Attribut du type de ressource | Gérez l'accès en fonction du type de ressource. | |
Attribut du nom de ressource | Gérez l'accès en fonction du nom de la ressource. | |
Tags de ressource | Gérez l'accès en fonction des tags associés à la ressource. | Tous les services Google Cloud |
Pour plus d'informations sur les attributs de ressource, consultez la section Attributs de ressource sur cette page.
Attributs de requête
Les attributs suivants sont liés aux détails de la requête.
Attribut | Récapitulatif d'utilisation | Services Google Cloud compatibles |
---|---|---|
Gérez l'accès en fonction de niveaux d'accès spécifiques. Un niveau d'accès est un attribut calculé en fonction des attributs bruts d'une requête et de son origine, tels que l'adresse IP d'origine, les attributs de l'appareil, l'heure de la journée, etc. Par exemple, un niveau d'accès |
Identity-Aware Proxy |
|
Gérez l'accès en fonction des données fournies par une API ou un service Google Cloud spécifique. |
|
|
Définissez un accès planifié, de durée limitée ou pouvant expirer pour les ressources Google Cloud. |
Tous les services Google Cloud |
|
Gérez l'accès en fonction de l'adresse IP et/ou du port de destination d'une requête. Par exemple, une instance de machine virtuelle (VM) Compute Engine peut exposer une adresse IP externe, telle que L'utilisation actuelle concerne principalement le transfert TCP Identity-Aware Proxy. |
Identity-Aware Proxy |
|
Spécifiez les types de règles de transfert qu'un membre peut créer. Par exemple, vous pouvez autoriser un membre à créer des règles de transfert pour les équilibreurs de charge Google Cloud internes, qui gèrent le trafic provenant d'un réseau Google Cloud, mais pas pour les équilibreurs de charge Google Cloud externes qui gèrent le trafic provenant d'Internet. |
|
|
Gérez l'accès en fonction du chemin et/ou de l'hôte de l'URL d'une requête. Par exemple, une condition peut spécifier que |
Identity-Aware Proxy |
Pour plus d'informations sur les attributs de requête, consultez la section Attributs de requête sur cette page.
Compatibilité avec les conditions héritées
Certains types de ressources Google Cloud n'acceptent pas de conditions dans leurs stratégies IAM. Toutefois, vous pouvez ajouter des liaisons de rôles conditionnelles au niveau de l'organisation, du dossier ou du projet. Les autres ressources hériteront de ces liaisons via la hiérarchie de ressources. Pour en savoir plus, consultez la page Ressources acceptant les liaisons de rôles conditionnelles.
Lorsque vous utilisez des attributs au niveau de l'organisation, du dossier ou du projet, n'oubliez pas que la plupart des attributs ne sont disponibles que pour des types de ressources spécifiques.
À partir du 26 février 2021, si une partie d'une condition utilise un attribut qui n'est pas disponible, cette partie de la condition n'est jamais interprétée comme accordant un accès. Par exemple, la condition destination.port == 21
n'accorde jamais d'accès à une ressource BigQuery, car les ressources BigQuery ne fournissent pas les attributs d'adresse IP et de port de destination.
Pour éviter ce problème, utilisez les attributs resource type et resource service décrits sur cette page afin de limiter le champ d'application de la condition. Par exemple, la condition suivante renvoie true
pour tous les types de ressources autres que les instances de tunnel Identity-Aware Proxy. En revanche, pour les instances de tunnel Identity-Aware Proxy, la condition vérifie le port de destination :
resource.type != 'iap.googleapis.com/TunnelInstance' ||
destination.port == 21
Il n'est pas nécessaire de limiter le champ d'application des conditions qui vérifient les tags associés à une ressource. Une condition ne peut pas vérifier d'autres attributs lorsqu'elle vérifie les clés et les valeurs d'un tag, ce qui inclut le type de ressource et le service de ressources.
Attributs de ressource
En général, les attributs "nom de ressource", "type de ressource" et "service de ressource" permettent de changer le niveau d'accès accordé par la liaison de rôle. Lorsqu'un rôle contient des autorisations qui s'appliquent à différents attributs spécifiques aux ressources, des conditions basées sur les ressources peuvent servir à accorder un sous-ensemble d'autorisations de rôle pour un ou plusieurs types et services spécifiques.
Attribut resource.service
L'attribut resource.service
vous permet de définir une condition en fonction du service Google Cloud utilisé. Par exemple, vous pouvez définir une condition limitant l'accès d'un utilisateur aux ressources qui utilisent le service cloudresourcemanager.googleapis.com
.
Variable d'attribut | resource.service |
---|---|
Type d'attribut | Chaîne |
Opérateurs compatibles | ==, != |
Opérande compatible | Chaîne
|
Discussion | La variable resource.service , si elle est utilisée, est destinée à effectuer des comparaisons d'égalité ou d'inégalité.
Remarque : Les fonctions |
Exemples |
Exemple 1 : resource.service == "compute.googleapis.com" |
Services compatibles |
|
Attribut resource.type
L'attribut resource.type
vous permet de définir une condition en fonction du type de la ressource. Par exemple, vous pouvez définir une condition limitant l'accès d'un utilisateur aux ressources du type storage.googleapis.com/Object
.
Si votre condition utilise l'attribut resource.name
, nous vous recommandons vivement d'utiliser l'attribut resource.type
pour contrôler les types de ressources auxquels la condition s'applique. Pour en savoir plus, consultez la section concernant l'attribut resource.name
sur cette page.
Variable d'attribut | resource.type |
||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type d'attribut | Chaîne | ||||||||||||||||||
Opérateurs compatibles | ==, != |
||||||||||||||||||
Opérande compatible | Chaîne
|
||||||||||||||||||
Discussion |
La variable resource.type , si elle est utilisée, est destinée à effectuer des comparaisons d'égalité ou d'inégalité.
Remarque : Les fonctions |
||||||||||||||||||
Exemples |
Exemple 1 : resource.type != "compute.googleapis.com/Image" Exemple 2 : (resource.type == "compute.googleapis.com/Image" || |
||||||||||||||||||
Types de ressources acceptés |
1 Cloud Key Management Service utilise ce type de ressource comme parent des ressources du trousseau de clés. |
Attribut resource.name
L'attribut resource.name
vous permet de définir une condition basée sur tout ou partie du nom d'une ressource.
L'attribut resource.name
n'est disponible que pour des types de ressources spécifiques, répertoriés dans le tableau ci-dessous. Nous vous recommandons vivement de limiter l'applicabilité de la condition au type de ressource souhaité. Si un rôle contient des autorisations pour un type de ressource qui ne fournit pas l'attribut resource.name
, vous devez vous assurer que ces autorisations ne sont pas restreintes par la partie de la condition qui vérifie resource.name
.
L'exemple suivant montre comment procéder. Dans cet exemple, la condition permet d'accéder à tous les types de ressources, à l'exception des buckets et des objets Cloud Storage. En revanche, pour les buckets et les objets, la condition n'autorise l'accès qu'au bucket example-bucket
et aux objets qu'il contient :
(resource.type != 'storage.googleapis.com/Bucket' &&
resource.type != 'storage.googleapis.com/Object') ||
resource.name.startsWith('projects/_/buckets/example-bucket')
Notez que la première partie de la condition vérifie si la ressource n'est ni un bucket, ni un objet. Si la ressource possède un type différent, toute la condition renvoie true
, quel que soit le nom de la ressource.
Notez également que la condition vérifie l'attribut resource.type
, et non l'attribut resource.service
. Voici quelques avantages de la vérification de l'attribut resource.type
:
- Elle limite la vérification
resource.name
à l'ensemble de ressources approprié. Par exemple, si vous souhaitez accorder l'accès aux instances Compute Engine portant un nom spécifique, il est judicieux d'exclure tous les types de ressources autres que les instances Compute Engine. - Cela empêche le champ d'application de la condition de changer si un service ajoute de nouveaux types de ressources à l'avenir.
Vous pouvez exécuter la fonction extract()
pour extraire une valeur à partir d'un nom de ressource.
Par exemple, vous pouvez extraire un ID de projet à partir du nom de ressource d'une instance de VM Compute Engine, puis écrire une expression de condition faisant référence à cet ID de projet. Pour en savoir plus, consultez la section Extraire des valeurs à partir d'attributs sur cette page.
Variable d'attribut | resource.name |
||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type d'attribut | Chaîne | ||||||||||||
Opérateurs compatibles |
startsWith() , endsWith() ,
extract() , == , !=
|
||||||||||||
Opérande compatible |
Chaîne Chaque type de ressource utilise un format de nom de ressource spécifique. Pour obtenir la liste des formats, consultez la section Format du nom des ressource. |
||||||||||||
Discussion |
L'attribut La fonction La fonction
La fonction Les opérateurs |
||||||||||||
Exemples |
Exemple 1 (pour une instance de VM Compute Engine) :
Exemple 2 (pour un bucket Cloud Storage) :
Exemple 3 (pour un objet Cloud Storage) :
Exemple 4 (pour plusieurs types de ressources) :
Exemple 5 (pour un bucket Cloud Storage) :
|
||||||||||||
Types de ressources acceptés |
|
Tags de ressource
Les fonctions des tags de ressources vous permettent de définir une condition basée sur les tags associés à une ressource ou hérités par une ressource. Par exemple, vous pouvez définir une condition qui n'accorde un rôle que pour les ressources auxquelles le tag env: prod
est associé. Pour en savoir plus sur le contrôle des accès avec des tags, consultez la section Tags et contrôle des accès.
Chaque tag se compose d'une clé et d'une valeur. Il existe différents types d'identifiants pour chaque clé et valeur :
-
Un ID permanent, qui est unique et ne peut jamais être réutilisé. Par exemple, l'ID permanent d'une clé de tag peut être
tagKeys/123456789012
et l'ID permanent d'une valeur de tag peut êtretagValues/567890123456
. -
Un nom court. Le nom court de chaque clé doit être unique au sein de votre organisation, et le nom court de chaque valeur doit être unique pour la clé associée. Par exemple, une clé de tag peut avoir le nom court
env
et une valeur de tag peut avoir le nom courtprod
. -
Un nom d'espace de noms, qui ajoute l'ID numérique de votre organisation au nom court d'une clé de tag. Par exemple, une clé de tag peut avoir le nom d'espace de noms
123456789012/env
. Découvrez comment obtenir l'ID de votre organisation.
Pour obtenir des conseils sur le type d'identifiant à utiliser dans vos conditions, consultez la page Définitions et identifiants de tags.
Vous pouvez utiliser les fonctions suivantes avec les tags :
Fonction | Type | Description |
---|---|---|
resource.hasTagKey |
Chaîne --> Bool |
Fonction :
Vérifie si la ressource de la requête dispose d'un tag avec la clé spécifiée. La clé de tag est recherchée par son nom d'espace de noms. Pour rechercher une clé de tag à l'aide de son ID permanent, utilisez la fonction
Paramètre (Chaîne) : nom d'espace de noms de la clé de tag avec l'ID numérique de l'organisation et une barre oblique comme préfixe. Exemple : Exemple :
|
resource.hasTagKeyId |
Chaîne --> Bool |
Fonction :
Vérifie si la ressource de la requête dispose d'un tag avec la clé spécifiée. La clé du tag est recherchée par son ID permanent.
Pour rechercher une clé de tag à l'aide de son nom d'espace de noms, utilisez la fonction
Paramètre : identifiant permanent de la clé de tag.
Exemple : Exemple :
|
resource.matchTag |
(Chaîne, Chaîne) --> Bool |
Fonction :
Vérifie si la ressource de la requête possède un tag avec la clé et la valeur spécifiées. La clé est recherchée par son nom d'espace de noms, et la valeur est recherchée par son nom court. Pour rechercher une clé et une valeur de tag à l'aide de leurs ID permanents, utilisez la fonction Paramètres :
Le premier paramètre Chaîne est le nom d'espace de noms de la clé de tag avec l'ID numérique de l'organisation et une barre oblique comme préfixe.
Par exemple,
Le deuxième paramètre Chaîne est le nom court de la valeur du tag. Par exemple, Exemple :
|
resource.matchTagId |
(Chaîne, Chaîne) --> Bool |
Fonction :
Vérifie si la ressource de la requête possède un tag avec la clé et la valeur spécifiées. La clé et la valeur sont recherchées par leurs ID permanents. Pour rechercher une clé de tag à l'aide de son nom d'espace de noms et d'une valeur à l'aide de son nom court, utilisez la fonction Paramètres :
Le premier paramètre Chaîne est l'ID permanent de la clé de tag. Par exemple,
Le deuxième paramètre Chaîne est l'ID permanent de la valeur du tag. Par exemple, Exemple :
|
Attributs de requête
Les attributs de requête vous permettent de créer des conditions qui évaluent des détails sur la requête, tels que son niveau d'accès, sa date/heure, l'adresse IP et le port de destination (pour la tunnelisation TCP IAP), ou l'hôte/le chemin d'URL attendu (pour IAP).
Attribut de niveaux d'accès
L'attribut de niveaux d'accès permet aux utilisateurs de définir une condition selon laquelle, pour être autorisée, une requête doit répondre aux exigences d'un ou plusieurs niveaux d'accès.
L'attribut de niveaux d'accès est dérivé des attributs de la requête, tels que l'adresse IP d'origine, les attributs de l'appareil, l'heure de la journée, etc. Par exemple, un niveau d'accès nommé fullyTrusted
peut exiger que l'appareil à l'origine de la requête appartienne à l'entreprise et dispose d'un verrouillage d'écran. Un niveau d'accès onNetwork
peut exiger que l'appareil à l'origine de la requête provienne d'une plage d'adresses IP spécifique. Pour en savoir plus sur les niveaux d'accès, consultez la documentation Access Context Manager.
L'attribut de niveaux d'accès n'est disponible que lorsque vous utilisez Identity-Aware Proxy pour accéder à une instance de tunnel ou pour accéder à une application Web exécutée sur des services de backend App Engine ou Compute Engine. Plus précisément, l'attribut de niveaux d'accès n'est disponible que pour les requêtes qui vérifient l'une des autorisations suivantes :
iap.tunnelInstances.accessViaIAP
iap.webServiceVersions.accessViaIAP
Vous pouvez utiliser l'attribut de niveaux d'accès lorsque vous accordez de façon conditionnelle les rôles prédéfinis suivants :
Utilisateur de tunnels sécurisés par IAP (
roles/iap.tunnelResourceAccessor
)Contient une seule autorisation,
iap.tunnelInstances.accessViaIAP
.Utilisateur de l'application Web sécurisée par IAP (
roles/iap.httpsResourceAccessor
)Contient une seule autorisation,
iap.webServiceVersions.accessViaIAP
.
Vous pouvez également utiliser l'attribut de niveaux d'accès pour accorder de manière conditionnelle un rôle personnalisé contenant ces autorisations. Le rôle personnalisé ne doit contenir aucune autre autorisation.
Attribut request.auth.access_levels
Variable d'attribut | request.auth.access_levels |
---|---|
Type d'attribut | Liste de chaînes |
Opérateurs compatibles | in |
Opérande compatible | Chaîne |
Discussion |
La variable Le nom complet d'un niveau d'accès a le format suivant : Remarque : La chaîne de niveau d'accès est sensible à la casse et doit correspondre exactement à ce qui est configuré dans Access Context Manager pour obtenir l'effet escompté. Par exemple, "accessPolicies/199923665455/accessLevels/CorpNet" est un littéral de chaîne valide à utiliser dans l'expression. Cependant, "accessPolicies/199923665455/accesslevels/CorpNet" n'atteindra pas l'effet escompté. |
Exemple |
"accessPolicies/199923665455/accessLevels/CorpNet" |
Types de ressources acceptés | Disponible pour les requêtes qui utilisent Identity-Aware Proxy pour accéder à une instance de tunnel ou pour une application Web s'exécutant sur App Engine |
Attributs d'API
Les attributs d'API vous aident à gérer l'accès en fonction des données fournies par une API ou un service Google Cloud spécifique.
Par exemple, lorsque vous utilisez Cloud Storage pour répertorier les objets d'un bucket, vous pouvez utiliser le paramètre prefix
dans la requête pour n'inclure que les objets dont le nom commence par un préfixe spécifique.
Si vous utilisez des limites d'accès aux identifiants pour réduire le champ d'application des autorisations de courte durée, vous pouvez créer une limite d'accès aux identifiants, qui limite les autorisations à répertorier les objets en cochant l'attribut d'API storage.googleapis.com/objectListPrefix
. Cet attribut d'API contient la valeur du paramètre prefix
de la requête.
Pour obtenir des exemples d'utilisation des attributs d'API dans une condition, consultez les pages suivantes :
- Limiter les autorisations lors de la création d'une liste d'objets
- Définir des limites pour l'attribution de rôles
Reportez-vous aux sections suivantes pour savoir quels services reconnaissent les attributs de l'API.
Fonctions pour les attributs d'API
Vous pouvez utiliser la fonction suivante pour travailler avec des attributs d'API :
Fonction | Type | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
api.getAttribute |
(Chaîne, T) --> T |
Fonction : récupère l'attribut d'API demandé. Paramètres : Chaîne : attribut d'API à récupérer. Pour connaître les valeurs acceptées, consultez les sections Attributs de l'API Cloud Storage et Attributs de l'API IAM sur cette page.
T : valeur par défaut à utiliser si l'attribut d'API n'est pas disponible. Utilisez le même type que celui de la valeur de l'attribut d'API. Par exemple, si la valeur de l'attribut d'API est une chaîne, vous pouvez utiliser une chaîne vide ou une chaîne d'espaces réservés telle que Exemple :
|
||||||||||||
hasOnly |
List<T>.(List<T>) --> bool |
Fonction : vérifie qu'une liste ne contient que les éléments autorisés ou un sous-ensemble de ces éléments. Paramètres :
Liste<T> : liste d'éléments de type T. La fonction est appelée sur une liste renvoyée par Exemple :
Vérifie si la requête accorde ou révoque des rôles autres que ceux d'Editor Pub/Sub (
|
Attributs de l'API Cloud Storage
Cloud Storage fournit l'attribut d'API suivant.
Attribut | Type | Description |
---|---|---|
storage.googleapis.com/objectListPrefix |
Chaîne |
Pour une requête de création de liste d'objets dans un bucket, cette colonne contient la valeur du paramètre Pour les autres types de requêtes, l'attribut n'est pas défini. Services qui reconnaissent cet attribut : Seul Cloud Storage reconnaît cet attribut. |
Attributs de l'API IAM
IAM fournit l'attribut d'API suivant :
Attribute | Type | Description |
---|---|---|
iam.googleapis.com/modifiedGrantsByRole |
Array |
Pour une requête visant à définir la stratégie IAM d'une ressource, cet attribut contient les noms de rôle des liaisons de rôle modifiées par la requête. Pour les autres types de requêtes, l'attribut n'est pas défini. Ressources qui acceptent cet attribut :
Les ressources suivantes acceptent les conditions avec l'attribut
Services qui reconnaissent cet attribut :
Les services suivants reconnaissent l'attribut
|
Attribut Date/Heure
L'attribut Date/Heure permet de définir un accès planifié, de durée limitée ou pouvant expirer pour les ressources Google Cloud.
Cet attribut est disponible pour tous les services et types de ressources Google Cloud.
Fonctions et opérateurs de base compatibles
La variable d'attribut utilisée pour l'attribut Date/Heure est request.time
, de type Horodatage. Vous pouvez également convertir les chaînes vers les types "Horodatage" et "Durée".
Fonctions de base compatibles | Type | Description |
---|---|---|
date |
Chaîne --> Horodatage |
Fonction : convertit une chaîne en horodatage. Exemple :
|
duration |
Chaîne --> Durée |
Fonction : convertit une chaîne en durée. Exemples :
|
|
Chaîne --> Horodatage |
Fonction : convertit une chaîne en horodatage. Exemples :
Remarque importante : |
|
(Horodatage, Horodatage) --> bool |
Fonction : effectue une comparaison générale avec le type "Horodatage". Exemples : |
+ - |
(Horodatage, Durée) --> Horodatage |
Fonction : ajoute ou soustrait une durée à un horodatage. Exemples :
|
Fonctions et opérateurs avancés compatibles
La variable d'attribut utilisée pour l'attribut Date/Heure est request.time
, de type Horodatage.
Fonctions avancées compatibles | Type | Description |
---|---|---|
|
(int, int) --> bool |
Fonction : comparaison générale avec le type int. Discussion : |
|
Timestamp.() --> int |
Fonctions : Paramètres : Exemple : Exemple : Exemple : |
|
Timestamp.() --> int |
Fonction : obtient l'année à partir de la date. Paramètres : Exemple : Exemple : |
|
Timestamp.() --> int |
Fonction : obtient les heures à partir de la date ; les valeurs sont comprises entre 0 et 23. Paramètres : Exemple : Remarque : |
|
Timestamp.() --> int |
Fonction : obtient des millisecondes dans une seconde à partir de l'horodatage ; les valeurs sont comprises entre 0 et 999. Paramètres : Remarque : |
|
Timestamp.() --> int |
Fonction : obtient des minutes dans une heure à partir de l'horodatage ; les valeurs sont comprises entre 0 et 59. Paramètres : Remarque : |
|
Timestamp.() --> int |
Fonction : obtient des mois dans une année à partir de l'horodatage ; les valeurs sont comprises entre 0 et 11. Paramètres : Exemple : |
|
Timestamp.() --> int |
Fonction : obtient des secondes dans une minute à partir de l'horodatage ; les valeurs sont comprises entre 0 et 59. Paramètres : Remarque : |
Attributs d'adresse IP et de port de destination
L'attribut d'adresse IP ou de port de destination permet aux utilisateurs de gérer l'accès en fonction de l'adresse IP de destination interne et/ou du port d'une requête.
Par exemple, une instance de VM Compute Engine peut mapper l'adresse IP externe et le port 132.168.42.21:3001
sur l'adresse IP interne et le port 10.0.0.1:2300
pour une utilisation générale. En revanche, l'adresse IP interne et le port 10.0.0.1:22
peuvent n'être disponibles que pour une utilisation administrative. Vous pouvez utiliser les attributs d'adresse IP/de port de destination pour accorder différents niveaux d'accès en fonction de l'adresse IP interne et du port.
Pour en savoir plus sur le transfert TCP, consultez la documentation Identity-Aware Proxy.
Attribut destination.ip
Variable d'attribut | destination.ip |
---|---|
Type d'attribut | Chaîne |
Opérateurs compatibles | ==, != |
Opérande compatible | Chaîne |
Discussion |
La variable Remarque : Les fonctions |
Exemples |
destination.ip == "10.0.0.1" destination.ip != "10.0.0.1" |
Types de ressources acceptés | Disponible pour les requêtes qui utilisent Identity-Aware Proxy pour accéder à une instance de tunnel |
Attribut destination.port
Variable d'attribut | destination.port |
---|---|
Type d'attribut | Entier |
Opérateurs compatibles | ==, !=, <, <=, >, >= |
Opérande compatible | Entier |
Discussion |
La variable |
Exemples |
destination.port == 21 destination.port < 3001 |
Types de ressources acceptés | Disponible pour les requêtes qui utilisent Identity-Aware Proxy pour accéder à une instance de tunnel |
Attributs de règle de transfert
Les attributs de règle de transfert vous permettent de spécifier les types de règles de transfert qu'un membre peut créer. Par exemple, vous pouvez autoriser un membre à créer des règles de transfert pour les équilibreurs de charge Google Cloud internes, qui gèrent le trafic provenant d'un réseau Google Cloud, mais pas pour les équilibreurs de charge Google Cloud externes qui gèrent le trafic provenant d'Internet.
Pour Cloud Load Balancing, les attributs de règle de transfert n'ont pas d'incidence sur la création des autres composants d'un équilibreur de charge Google Cloud, tels que les services de backend, les proxy cibles, les vérifications d'état et les mappages d'URL.
Fonctions compatibles
Fonctions compatibles | Type | Description |
---|---|---|
compute.isForwardingRule |
() --> bool |
Fonction : vérifie si la requête crée une règle de transfert. Exemples : consultez les exemples pour |
compute.matchLoad |
Array.(string) --> bool |
Fonction : vérifie si la requête affecte l'un des types de schéma d'équilibrage de charge spécifiés. Pour trouver l'identifiant de chaque schéma d'équilibrage de charge, ainsi que des informations sur chaque schéma, consultez la section Utiliser des conditions IAM sur des équilibreurs de charge Google Cloud. Paramètres : un tableau de chaînes Exemple :
|
Types de ressources acceptés
Cet attribut permet aux requêtes de créer de l'un de ces types de ressources :
Service | Types de ressources |
---|---|
Cloud Load Balancing | Règles de transfert |
Cloud VPN | Règles de transfert (globales et régionales) |
Compute Engine | Règles de transfert (pour le transfert de protocole) |
Traffic Director1 | Règles de transfert |
1 Utilise les attributs de ressource pour Compute Engine.
Attribut de chemin/nom d'hôte d'URL
L'attribut de chemin/nom d'hôte d'URL permet aux utilisateurs de gérer l'accès en fonction du chemin et/ou de l'hôte de l'URL d'une requête. Par exemple, une condition peut spécifier que https://example.com
est l'application principale à laquelle un domaine général d'utilisateurs peut accéder, tandis que https://hr.example.com/admin
permet d'accéder à une page de l'application uniquement accessible par les administrateurs des ressources humaines.
Attribut request.path
Variable d'attribut | request.path |
---|---|
Type d'attribut | Chaîne |
Opérateurs compatibles | ==, startsWith(), endsWith() |
Opérandes et paramètres compatibles |
|
Discussions | Remarque : L'opérateur != n'est pas recommandé.
Ainsi, évitez d'utiliser une comparaison négative, telle que celle-ci : request.path != "/admin"À la place, il est recommandé d'utiliser la correspondance de préfixe, comme dans l'exemple ci-dessous : ! request.path.startsWith("/admin")De cette façon, les chemins d'URL regroupés sous "/admin", tels que "/admin/payroll/", sont tous protégés contre les accès non intentionnels. |
Exemples |
Exemple 1 : request.path == "/admin" request.path == "/admin/payroll" Dans les deux exemples ci-dessus, la chaîne utilisée dans la comparaison d'égalité ( Exemple 2 : request.path.startsWith("/admin") La fonction utilise une chaîne représentant le préfixe d'un chemin d'URL. Exemple 3 : request.path.endsWith("/payroll.js") La fonction utilise une chaîne représentant le suffixe d'un chemin d'URL. |
Types de ressources acceptés |
Versions de service de l'application Identity-Aware Proxy (App Engine) Disponible pour les requêtes utilisant Identity-Aware Proxy afin d'accéder à une application Web s'exécutant sur App Engine ou Compute Engine |
Attribut request.host
Variable d'attribut | request.host |
---|---|
Type d'attribut | Chaîne |
Opérateurs compatibles | ==, endsWith() |
Opérandes et paramètres compatibles |
|
Discussion |
La fonction .startsWith(<prefix string>) n'est pas destinée à être utilisée avec l'attribut request.host . Bien que la définition d'une condition telle que request.host.startsWith(<prefix string>) n'entraîne aucune erreur de syntaxe lors de l'exécution d'une opération setIamPolicy , cette opération n'est pas recommandée en raison des résultats inattendus qu'elle peut générer.
De même, l'utilisation de != n'est pas recommandée.
|
Exemples |
Exemple 1 : request.host == "www.example.com" request.host == "hr.example.com" Dans les deux exemples ci-dessus, la chaîne utilisée dans la comparaison d'égalité ( Exemple 2 : request.host.endsWith("example.com") Une chaîne représentant le suffixe du nom d'hôte d'un site Web. |
Types de ressources acceptés |
Versions de service de l'application Identity-Aware Proxy (App Engine) Disponible pour les requêtes qui utilisent Identity-Aware Proxy pour accéder à une version de service d'application. |
Extraire des valeurs à partir d'attributs
Vous pouvez utiliser la fonction extract()
pour extraire une valeur d'un attribut. Par exemple, vous pouvez extraire une partie arbitraire d'un nom de ressource, puis écrire une expression de condition faisant référence au texte que vous avez extrait.
Pour utiliser la fonction extract()
, vous devez fournir un modèle d'extraction qui spécifie la partie de l'attribut à extraire. Par exemple, si vous souhaitez extraire un ID de projet à partir du nom de ressource d'une instance de VM Compute Engine, vous pouvez utiliser le modèle projects/{project-id}/
.
Un modèle d'extraction contient les éléments suivants :
Un identifiant, entre accolades, qui identifie la sous-chaîne à extraire. Choisissez un identifiant court et significatif qui indique clairement la valeur que vous souhaitez extraire. Vous pouvez utiliser des majuscules et des minuscules de
A
àZ
, des chiffres, des tirets (-
) et des traits de soulignement (_
).Dans le modèle
projects/{project-id}/
, l'identifiant estproject-id
.Facultatif : Un préfixe devant précéder la sous-chaîne à extraire.
Dans le modèle
projects/{project-id}/
, le préfixe estprojects/
.Facultatif : Un suffixe devant suivre la sous-chaîne à extraire.
Dans le modèle
projects/{project-id}/
, le suffixe est/
.
La fonction extract()
renvoie différentes valeurs selon que le modèle d'extraction possède un préfixe, un suffixe ou les deux :
Comporte un préfixe | Comporte un suffixe | Valeur extraite |
---|---|---|
— | — | Nom de ressource complet |
— | Les caractères après la première occurrence du préfixe, ou une chaîne vide s'il n'y a pas de caractères après le préfixe | |
— | Les caractères avant la première occurrence du suffixe, ou une chaîne vide s'il n'y a pas de caractères avant le suffixe | |
Les caractères entre la première occurrence du préfixe et la première occurrence du suffixe, ou une chaîne vide s'il n'y a aucun caractère entre le préfixe et le suffixe |
Si vous spécifiez un préfixe ou un suffixe qui ne figure pas dans l'attribut, ou si le suffixe n'apparaît qu'avant le préfixe, la fonction extract()
renvoie null
.
Les exemples suivants montrent le résultat obtenu avec différents modèles d'extraction. Les exemples suivants font référence à un nom de ressource pour un objet Cloud Storage, projects/_/buckets/acme-orders-aaa/data_lake/orders/order_date=2019-11-03/aef87g87ae0876
:
Modèle d'extraction | Sortie |
---|---|
/order_date={date}/ |
2019-11-03 |
buckets/{name}/ |
acme-orders-aaa |
/orders/{empty}order_date |
Chaîne vide |
{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 |
Si vous extrayez une chaîne représentant une date, vous pouvez utiliser les fonctions et les opérateurs Date/Heure sur cette page pour convertir la valeur extraite en horodatage. Pour obtenir des exemples, consultez la page Configurer un accès basé sur les ressources.