Documentation de référence sur les attributs pour les conditions Cloud IAM

Ce document 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é.

Vous pouvez utiliser cet attribut dans les liaisons de rôles de stratégie d'autorisation.

  • Apigee
  • Application Integration
  • Service de sauvegarde et de reprise après sinistre
  • BigQuery
  • API BigQuery Reservation
  • Bigtable
  • Autorisation binaire
  • Cloud Deploy
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Identity-Aware Proxy
  • Integration Connectors
  • Google Cloud Managed Service pour Apache Kafka
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager
  • Spanner
Attribut du type de ressource

Gérez l'accès en fonction du type de ressource.

Vous pouvez utiliser cet attribut dans les liaisons de rôles de stratégie d'autorisation.

  • Apigee
  • Application Integration
  • BigQuery
  • API BigQuery Reservation
  • Bigtable
  • Autorisation binaire
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Identity-Aware Proxy
  • Integration Connectors
  • Google Cloud Managed Service pour Apache Kafka
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager
  • Spanner
Attribut du nom de ressource

Gérez l'accès en fonction du nom de la ressource.

Vous pouvez utiliser cet attribut dans les liaisons de rôles de stratégie d'autorisation.

  • Apigee
  • Application Integration
  • Service de sauvegarde et de reprise après sinistre
  • BigQuery
  • API BigQuery Reservation
  • Bigtable
  • Autorisation binaire
  • Cloud Deploy
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Integration Connectors
  • Google Cloud Managed Service pour Apache Kafka
  • Pub/Sub Lite
  • Secret Manager
  • Spanner
Tags de ressource

Gérez l'accès en fonction des tags associés à la ressource.

Vous pouvez utiliser cet attribut aux endroits suivants:

  • Liaison de rôles de stratégie d'autorisation
  • Règles de refus de stratégie de refus
Tous les services Google Cloud (consultez la section Compatibilité avec les conditions héritées)

Pour plus d'informations sur les attributs de ressource, consultez la section Attributs de ressource sur cette page.

Attributs principaux

Les attributs suivants sont liés au principal à l'origine de la requête.

Attribut Récapitulatif d'utilisation Types de comptes principaux acceptés

Attribut de type principal

Appliquez des stratégies en fonction du type de compte principal dans la requête.

Vous pouvez utiliser cet attribut dans les liaisons de stratégie pour les stratégies de limite d'accès des comptes principaux.

  • Comptes Google
  • Identités de pool d'identités de personnel
  • Identités de pool d'identités de charge de travail
  • Comptes de service

Attribut principal de l'objet

Appliquez des règles en fonction de l'identité du principal dans la requête.

Vous pouvez utiliser cet attribut dans les liaisons de stratégie pour les stratégies de limite d'accès des comptes principaux.

  • Comptes Google
  • Identités de pool d'identités de personnel
  • Identités de pool d'identités de charge de travail
  • Comptes de service

Pour en savoir plus sur les attributs principaux, consultez la section Attributs principaux 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

Attribut de niveaux d'accès

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 et l'heure de la journée. Par exemple, 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. Les niveaux d'accès sont définis par les administrateurs de l'organisation.

Vous pouvez utiliser cet attribut dans les liaisons de rôles de stratégie d'autorisation.

Identity-Aware Proxy

Attributs d'API

Gérez l'accès en fonction des données fournies par une API ou un service Google Cloud spécifique.

Vous pouvez utiliser cet attribut dans les liaisons de rôles de stratégie d'autorisation.

  • Identity and Access Management
  • API Gateway
  • AutoML
  • Certificate Authority Service
  • Fonctions Cloud Run
  • API Cloud Healthcare
  • Cloud IoT
  • Cloud Key Management Service
  • Cloud Run
  • API Cloud Runtime Configuration
  • Cloud Storage
  • Compute Engine
  • Artifact Analysis
  • Dataproc
  • Earth Engine
  • Game Servers
  • Identity and Access Management
  • Identity-Aware Proxy
  • Service géré pour Microsoft Active Directory
  • Notebooks gérés par l'utilisateur
  • Resource Manager
  • Secret Manager
  • Service Management

Attributs de date et d'heure

Définissez un accès planifié, de durée limitée ou pouvant expirer pour les ressources Google Cloud.

Vous pouvez utiliser ces attributs dans les liaisons de rôles de stratégie d'autorisation.

Tous les services Google Cloud (consultez la section Compatibilité avec les conditions héritées)

Attributs d'adresse IP et de port de destination

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 10.0.0.2, mais le port 22 peut être exposé pour une utilisation administrative uniquement.

Utilisé pour le transfert TCP Identity-Aware Proxy.

Vous pouvez utiliser ces attributs dans les liaisons de rôles de stratégie d'autorisation.

Identity-Aware Proxy

Attributs de règle de transfert

Spécifiez les types de règles de transfert qu'un compte principal peut créer. Par exemple, vous pouvez autoriser un compte principal à 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.

Vous pouvez utiliser ces attributs dans les liaisons de rôles de stratégie d'autorisation.

Attributs de chemin/nom d'hôte d'URL

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 les éléments suivants : 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 à laquelle seuls les administrateurs des ressources humaines peuvent accéder.

Vous pouvez utiliser ces attributs dans les liaisons de rôles de stratégie d'autorisation.

  • Identity-Aware Proxy
  • Cloud Run

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 d'autorisation. 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 section Types de ressources qui acceptent 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. 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. Pour obtenir la liste des valeurs acceptées, consultez la section Valeurs du service de ressources.

Vous pouvez utiliser l'attribut resource.service dans les liaisons de rôles de stratégie d'autorisation.

Variable d'attribut resource.service
Type d'attribut

string

Pour obtenir la liste des valeurs acceptées, consultez la section Valeurs du service de ressources.

Opérateurs compatibles ,
Détails Lorsque vous utilisez l'attribut resource.type dans des conditions, vérifiez l'égalité exacte () ou l'inégalité exacte () avec l'attribut. D'autres comparaisons, telles que la recherche d'un préfixe ou d'un suffixe, peuvent vous donner des résultats inattendus.
Exemple

Renvoie true pour les ressources Compute Engine :

resource.service == "compute.googleapis.com"
Services compatibles
  • Apigee
  • Application Integration
  • Service de sauvegarde et de reprise après sinistre
  • BigQuery
  • API BigQuery Reservation
  • Bigtable
  • Autorisation binaire
  • Cloud Deploy
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Identity-Aware Proxy
  • Integration Connectors
  • Google Cloud Managed Service pour Apache Kafka
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager
  • Spanner

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. Pour obtenir la liste des valeurs acceptées, consultez la section Valeurs du type de ressource.

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.

Vous pouvez utiliser l'attribut resource.type dans les liaisons de rôles de stratégie d'autorisation.

Variable d'attribut resource.type
Type d'attribut

string

Pour obtenir la liste des valeurs acceptées, consultez la section Valeurs du type de ressource.

Opérateurs compatibles ,
Détails Lorsque vous utilisez l'attribut resource.type dans des conditions, vérifiez l'égalité exacte () ou l'inégalité exacte () avec l'attribut. D'autres comparaisons, telles que la recherche d'un préfixe ou d'un suffixe, peuvent vous donner des résultats inattendus.
Examples

Renvoie true, sauf si la ressource est une image Compute Engine :

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

Renvoie true uniquement si la ressource est une image Compute Engine ou un disque persistant :

(resource.type == "compute.googleapis.com/Image" ||
 resource.type == "compute.googleapis.com/Disk")
Types de ressources acceptés
Apigee
  • Attributs du produit d'API
  • Produits d'API
  • Proxys d'API
  • Entrées de mappage clés-valeurs des proxys d'API
  • Mappages clé-valeur de proxy d'API
  • Révisions du proxy d'API
  • Caches
  • Attributs de l'application du développeur
  • Applications développeur
  • Attributs du développeur
  • Développeurs
  • Entrées de mappage clés-valeurs des environnements
  • Mappages clés-valeurs des environnements
  • Les exportations
  • Hooks de flux
  • Alias de keystore
  • Keystores
  • Requêtes
  • Plans tarifaires
  • Références
  • Révisions du flux partagé
  • Flux partagés
  • Serveurs cibles
  • Sessions de trace (débogage)
Service Backup and DR
  • Coffres de sauvegarde
BigQuery
  • Ensembles de données
  • Modèles
  • Routines
  • Tables
API BigQuery Reservation
  • Devoirs
  • Réservations d'informatique décisionnelle
  • Engagements de capacité
  • Emplacements
  • Réservations
Application Integration
  • Configurations d'authentification
  • Executions
  • Versions d'Integration
  • Intégrations
  • Emplacement
  • Suspensions
Autorisation binaire
  • Attestataires
  • Configurations de la validation continue
  • Règles
Bigtable
  • Clusters
  • Instances
  • Tables
Cloud Key Management Service
  • Versions des clés de chiffrement
  • Clés de chiffrement
  • Trousseaux de clés
Cloud Logging
  • Buckets de journaux
  • Vues de journaux
Spanner
  • Sauvegardes
  • Bases de données
  • Instances
Cloud SQL
  • Exécutions de sauvegarde
  • Instances
Cloud Storage
  • Buckets
  • Dossiers gérés
  • Objets
Compute Engine
  • Services de backend (globaux et régionaux)
  • Pare-feu
  • Règles de transfert (globales et régionales)
  • Images
  • Modèles d'instance
  • Instances
  • Disques persistants (régionaux et zonaux)
  • Instantanés
  • Proxys HTTP(S) cibles (globaux et régionaux)
  • Proxys SSL cibles
  • Proxys TCP cibles
Dataform
  • Résultats de compilation
  • Emplacement
  • Configurations des versions
  • Dépôts
  • Configurations des workflows
  • Appels de workflows
  • Espaces de travail
Google Cloud
  • Emplacements1
Google Kubernetes Engine
  • Clusters
Firestore
  • Bases de données
Identity-Aware Proxy
  • Tous les services de backend et toutes les applications App Engine
  • Toutes les ressources de tunnels
  • Toutes les zones de tunnel
  • Tous les services Web
  • Versions de service de l'application App Engine
  • Services de l'application App Engine
  • Services de backend Compute Engine
  • Instances de tunnel
Integration Connectors
  • Connexions
  • Métadonnées du schéma de connexion
  • Rattachements de point de terminaison
  • Abonnements aux événements
  • Zones gérées
Google Cloud Managed Service pour Apache Kafka
  • Clusters
  • Groupes de consommateurs
  • Opérations
  • Thèmes
Pub/Sub Lite
  • Zones
  • Abonnements
  • Sujets
Resource Manager
  • Projets
Secret Manager
  • Versions des secrets
  • Secrets

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. Pour obtenir la liste des formats de nom des ressources, consultez la section Format du nom des ressources.

L'attribut resource.name n'est disponible que pour des types de ressources spécifiques, répertoriés dans le tableau de cette section. 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.

Enfin, notez que la condition utilise la fonction startsWith() pour évaluer le nom de la ressource plutôt que de vérifier l'égalité avec l'opérateur . Étant donné que la condition examine le début du nom de la ressource, elle correspond à un bucket ainsi qu'aux objets qu'il contient. Si elle vérifiait l'égalité, elle ne correspondrait qu'au bucket.

Vous ne pouvez pas utiliser de caractères génériques tels que * pour faire correspondre plusieurs noms de ressources. Envisagez ces alternatives :

  • Utilisez 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 plus d'informations, consultez Extraire des valeurs à partir d'attributs sur cette page.

  • Utilisez la fonction startsWith() ou endsWith() pour écrire une condition qui évalue le début ou la fin du nom de la ressource.

Vous pouvez utiliser l'attribut resource.name dans les liaisons de rôles de stratégie d'autorisation.

Variable d'attribut resource.name
Type d'attribut

string

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.

Fonctions et opérateurs compatibles startsWith(), endsWith(), extract(), ,
Détails

L'attribut resource.name contient le nom de ressource relatif de la ressource cible dans la requête. Le nom de ressource relatif se présente sous forme de chemin d'URI sans barre oblique (/).

La fonction startsWith() utilise le littéral de chaîne du préfixe à évaluer par rapport à resource.name.

La fonction endsWith() utilise le littéral de chaîne du suffixe à évaluer par rapport à resource.name.

La fonction extract() utilise un modèle d'extraction pour extraire une partie de l'attribut resource.name. Pour plus d'informations, consultez la section Extraire des valeurs à partir des noms de ressources sur cette page.

Les opérateurs et permettent de comparer l'ensemble de l'attribut resource.name ou une partie extraite de resource.name.

Examples

Renvoie true, sauf si le nom de la ressource identifie un bucket Cloud Storage nommé secret-bucket-123 :

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

Renvoie true si le nom de la ressource commence par le préfixe spécifié, au format utilisé par les instances de VM Compute Engine :

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

Renvoie true si le nom de la ressource commence par le préfixe spécifié, au format utilisé par les buckets Cloud Storage :

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

Renvoie true si le nom de la ressource se termine par le suffixe spécifié, par exemple l'extension de fichier d'un objet Cloud Storage :

resource.name.endsWith(".jpg")

Renvoie le nom ou le numéro du projet, s'il est présent :

resource.name.extract("projects/{project}/")
Types de ressources acceptés
Apigee
  • Attributs du produit d'API
  • Produits d'API
  • Proxys d'API
  • Entrées de mappage clés-valeurs des proxys d'API
  • Mappages clé-valeur de proxy d'API
  • Révisions du proxy d'API
  • Caches
  • Attributs de l'application du développeur
  • Applications développeur
  • Attributs du développeur
  • Développeurs
  • Entrées de mappage clés-valeurs des environnements
  • Mappages clés-valeurs des environnements
  • Les exportations
  • Hooks de flux
  • Alias de keystore
  • Keystores
  • Requêtes
  • Plans tarifaires
  • Références
  • Révisions du flux partagé
  • Flux partagés
  • Serveurs cibles
  • Sessions de trace (débogage)
Service Backup and DR
  • Coffres de sauvegarde
BigQuery
  • Ensembles de données
  • Modèles
  • Routines
  • Tables
API BigQuery Reservation
  • Devoirs
  • Réservations d'informatique décisionnelle
  • Engagements de capacité
  • Emplacements
  • Réservations
Application Integration
  • Configurations d'authentification
  • Executions
  • Versions d'Integration
  • Intégrations
  • Emplacement
  • Suspensions
Autorisation binaire
  • Attestataires
  • Configurations de la validation continue
  • Règles
Bigtable
  • Clusters
  • Instances
  • Tables
Cloud Deploy
  • Exécutions d'automatisation
  • Automatisations
  • Types de cibles personnalisées
  • Pipelines de livraison
  • Exécutions du job
  • Versions
  • Déploiements
  • Cibles
Cloud Key Management Service
  • Clés de chiffrement
  • Versions des clés de chiffrement
  • Trousseaux de clés
Cloud Logging
  • Buckets de journaux
  • Vues de journaux
Spanner
  • Sauvegardes
  • Bases de données
  • Instances
Cloud SQL
  • Exécutions de sauvegarde
  • Instances
Cloud Storage
  • Buckets
  • Dossiers gérés
  • Objets
Compute Engine
  • Services de backend (globaux et régionaux)
  • Pare-feu
  • Règles de transfert (globales et régionales)
  • Images
  • Modèles d'instance
  • Instances
  • Disques persistants (régionaux et zonaux)
  • Instantanés
  • Proxys HTTP(S) cibles (globaux et régionaux)
  • Proxys SSL cibles
  • Proxys TCP cibles
Google Kubernetes Engine
  • Clusters
Firestore
  • Bases de données
Dataform
  • Résultats de compilation
  • Emplacement
  • Configurations des versions
  • Dépôts
  • Configurations des workflows
  • Appels de workflows
  • Espaces de travail
Integration Connectors
  • Connexions
  • Métadonnées du schéma de connexion
  • Rattachements de point de terminaison
  • Abonnements aux événements
  • Zones gérées
Google Cloud Managed Service pour Apache Kafka
  • Clusters
  • Groupes de consommateurs
  • Opérations
  • Thèmes
Pub/Sub Lite
  • Zones
  • Abonnements
  • Sujets
Secret Manager
  • Versions des secrets
  • Secrets

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 être tagValues/567890123456.
  • Un nom court. Le nom court de chaque clé doit être unique dans le projet ou l'organisation dans laquelle elle est définie, 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 court prod.
  • Un nom d'espace de noms, qui ajoute l'ID numérique de votre organisation ou de votre projet au nom court d'une clé de tag. Par exemple, une clé de tag créée pour une organisation peut avoir le nom d'espace de noms 123456789012/env. Pour savoir comment obtenir votre ID d'organisation, consultez la section Obtenir l'ID de ressource de votre organisation. Une clé de tag créée pour un projet peut avoir le nom d'espace de noms myproject/env. Pour savoir comment obtenir votre ID de projet, consultez Identifier des projets.

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 des conditions basées sur des tags pour conditionner l'accès à n'importe quelle ressource. Cela inclut les ressources avec leurs propres tags, ainsi que les ressources qui héritent de tags d'autres ressources. Pour en savoir plus sur l'héritage des tags via la hiérarchie des ressources, consultez la section Hiérarchie des tags.

Vous pouvez utiliser des conditions basées sur des balises dans les éléments suivants:

  • Liaison de rôles de stratégie d'autorisation
  • Règles de refus de stratégie de refus

Vous pouvez utiliser les fonctions suivantes pour définir des conditions basées sur des tags :

Function Description
resource.hasTagKey(
  keyName: string
)
  bool

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 resource.hasTagKeyId().

Parameter
keyName : nom de l'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, 123456789012/env.
Exemple

Renvoie true si la ressource de la requête dispose d'un tag avec la clé env.

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

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 à l'aide de son ID permanent. Pour rechercher une clé de tag à l'aide de son nom d'espace de noms, utilisez la fonction resource.hasTagKey().

Parameter
keyId : ID permanent de la clé du tag. Par exemple, tagKeys/123456789012.
Exemple

Renvoie true si la ressource de la requête dispose d'un tag avec la clé tagKeys/123456789012.

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

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 resource.matchTagId().

Paramètres
  • keyName : nom de l'espace de noms pour la clé de tag, avec l'ID numérique de l'organisation et une barre oblique comme préfixe. Par exemple, 123456789012/env.
  • valueShortName : nom abrégé de la valeur du tag. Par exemple, prod.
Exemple

Renvoie true si la ressource de la requête a un tag avec la clé 123456789012/env et la valeur prod.

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

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 à l'aide de leurs ID permanents. Pour rechercher une clé de tag à l'aide de son nom d'espace de noms et une valeur à l'aide de son nom court, utilisez la fonction resource.matchTag().

Paramètres
  • keyId : ID permanent de la clé de tag. Par exemple, tagKeys/123456789012.
  • valueId : ID permanent de la valeur du tag. Par exemple, tagValues/567890123456.
Exemple

Renvoie true si la ressource de la requête a un tag avec la clé tagKeys/123456789012 et la valeur tagValues/567890123456.

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

Attributs principaux

Les attributs de compte principal vous permettent d'écrire des conditions en fonction du compte principal qui a émis la requête. Grâce à ces attributs, vous pouvez affiner les principaux pour lesquels une stratégie est appliquée.

Vous pouvez utiliser des attributs de compte principal dans les liaisons de stratégie pour les stratégies de limite d'accès des comptes principaux.

Attribut principal.type

L'attribut principal.type vous permet de définir une condition en fonction du type de compte principal qui émet la requête. Par exemple, vous pouvez ajouter une condition à une liaison de stratégie pour une stratégie de limite d'accès des comptes principaux afin de vous assurer qu'elle n'est appliquée que pour les comptes de service.

Vous pouvez utiliser des attributs de compte principal dans les liaisons de stratégie pour les stratégies de limite d'accès des comptes principaux.

Variable d'attribut principal.type
Type d'attribut

string

Opérateurs compatibles , , in
Types d'utilisateurs principaux acceptés
Comptes Google
iam.googleapis.com/WorkspaceIdentity
Identités de pool d'identités de personnel
iam.googleapis.com/WorkforcePoolIdentity
Identités de pool d'identités de charge de travail
iam.googleapis.com/WorkloadPoolIdentity
Comptes de service
iam.googleapis.com/ServiceAccount
Examples

Valeur true si l'entité principale de la requête est un compte de service:

principal.type == "iam.googleapis.com/ServiceAccount"
        

Valeur évaluée à true si le principal de la requête est une identité Google Workspace ou une identité de pool d'identités de personnel:

principal.type in ["iam.googleapis.com/WorkspaceIdentity", "iam.googleapis.com/WorkforcePoolIdentity"]
        

Attribut principal.subject

L'attribut principal.subject vous permet de définir une condition en fonction du principal qui émet la requête. Par exemple, vous pouvez ajouter une condition à une liaison de règles pour une stratégie de limite d'accès des comptes principaux afin de vous assurer qu'elle n'est appliquée qu'aux comptes principaux dont les adresses e-mail se terminent par @example.com.

Si vous utilisez l'attribut principal.subject dans une condition, nous vous recommandons également d'utiliser l'attribut principal.type pour contrôler les types de principaux auxquels la condition s'applique. En effet, les identifiants de compte principal ne sont pas nécessairement uniques entre les différents types de comptes principaux. Par exemple, l'identifiant example-user@example.com peut identifier un compte Google ou un utilisateur dans un pool d'identités de personnel.

En utilisant l'attribut principal.type en plus de l'attribut principal.subject, vous pouvez vous assurer que la condition ne correspond qu'aux principaux du type prévu. Par exemple, l'expression suivante correspond aux comptes Google dont les adresses e-mail se terminent par @example.com:

principal.type == 'iam.googleapis.com/WorkspaceIdentity' &&
principal.subject.endsWith('@example.com')

Vous pouvez utiliser des attributs de compte principal dans les liaisons de stratégie pour les stratégies de limite d'accès des comptes principaux.

Variable d'attribut principal.subject
Type d'attribut

string

Opérateurs compatibles

, , in, startsWith(), endsWith()

Sujets principaux compatibles
Comptes Google
Identifiant: adresse e-mail de l'utilisateur
Identités de pool d'identités de personnel
Identifiant: valeur de l'attribut sujet de l'identité
Identités de pool d'identités de charge de travail
Identifiant: valeur de l'attribut sujet de l'identité
Comptes de service
Identifiant: adresse e-mail du compte de service
Exemple

Renvoie true si l'entité principale de la requête se termine par @example.com:

principal.subject.endsWith("@example.com")
        

Renvoie true si le principal de la requête est example-service-account@example-project.iam.gserviceaccount.com:

principal.subject == "example-service-account@example-project.iam.gserviceaccount.com"
        

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 et Cloud Run).

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. Vous pouvez utiliser l'attribut de niveaux d'accès dans les liaisons de rôles de stratégie d'autorisation.

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 et l'heure de la journée. 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 list<string>
Opérateurs compatibles in
Détails

Pour vérifier si une requête répond à un niveau d'accès spécifique, utilisez l'opérateur in :

ACCESS_LEVEL_FULL_NAME in request.auth.access_levels

Le nom complet d'un niveau d'accès utilise le format suivant :

accessPolicies/POLICY_NUMBER/accessLevels/ACCESS_LEVEL
Exemple

Renvoie true si la requête répond au niveau d'accès CorpNet :

"accessPolicies/199923665455/accessLevels/CorpNet"
    in request.auth.access_levels
Types de ressources acceptés Disponible pour les requêtes utilisant Identity-Aware Proxy afin d'accéder à une instance de tunnel, un groupe de destination de tunnel, une application Web s'exécutant sur Google Cloud Load Balancing ou 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. Vous pouvez utiliser des attributs d'API dans les liaisons de rôles de stratégie d'autorisation.

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 :

Tous les services ne reconnaissent pas les attributs d'API. Les sections suivantes indiquent les services qui reconnaissent chaque attribut de l'API.

Fonctions pour les attributs d'API

Vous pouvez utiliser la fonction suivante pour travailler avec des attributs d'API :

Function Description
api.getAttribute(
  attributeName: string,
  defaultValue: V<T>
)
  V<T>

Récupère l'attribut d'API demandé.

Paramètres
  • attributeName : 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.
  • defaultValue : valeur par défaut (V) à utiliser si l'attribut d'API n'est pas disponible. La valeur V est de type T, où T est du même type que 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 undefined.

Exemple

Renvoie l'un des éléments suivants :

  • Pour les requêtes de création de liste d'objets dans un bucket Cloud Storage, si la requête inclut le paramètre prefix, la fonction renvoie sa valeur.
  • Pour les requêtes de liste d'objets qui omettent le paramètre prefix, et pour tous les autres types de requêtes, la fonction renvoie une chaîne vide.
api.getAttribute("storage.googleapis.com/objectListPrefix", "")
hasOnly(
  items: list<T>
)
  bool

Vérifie qu'une liste ne contient que les éléments autorisés ou un sous-ensemble de ces éléments. Vous pouvez appeler la fonction sur une liste renvoyée par api.getAttribute().

Parameter
items : liste d'éléments de type T. Chaque élément est une valeur que l'attribut d'API est autorisé à contenir.
Exemple

Vérifie si la requête accorde ou révoque des rôles autres que l'éditeur Pub/Sub (roles/pubsub.editor) ou Éditeur Pub/Sub (roles/pubsub.publisher) :

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

Voici le résultat pour différentes valeurs de requête :

Rôles attribués/révoqués Résultat
Aucune

true

Si aucun rôle n'est modifié, api.getAttribute() renvoie la valeur par défaut. Pour cet attribut, la valeur par défaut est toujours une liste vide. Par définition, une liste vide ne contient pas de valeurs qui ne figurent pas dans la liste d'autorisation.

roles/pubsub.editor

true

Le rôle figure sur la liste d'autorisation.

roles/pubsub.editor
roles/pubsub.publisher

true

Les deux rôles figurent sur la liste d'autorisation.

roles/billing.admin

false

Le rôle ne figure pas sur la liste d'autorisation.

roles/billing.admin
roles/pubsub.editor

false

Un rôle figure sur la liste d'autorisation, mais pas l'autre.

Attributs de l'API Cloud Storage

Cloud Storage fournit l'attribut d'API suivant.

Variable d'attribut storage.googleapis.com/objectListPrefix
Type d'attribut string
Détails

Pour une requête de création de liste d'objets dans un bucket, cette colonne contient la valeur du paramètre prefix de la requête. Si la requête omet le paramètre prefix, l'attribut n'est pas défini.

Pour les autres types de requêtes, l'attribut n'est pas défini.

Services qui reconnaissent cet attribut Cloud Storage

Attributs de l'API IAM

IAM fournit l'attribut d'API suivant :

Variable d'attribut iam.googleapis.com/modifiedGrantsByRole
Type d'attribut list<string>
Détails

Pour une requête permettant de définir la stratégie d'autorisation d'une ressource, cet attribut contient les noms de rôle des liaisons modifiées par la requête.

Pour les autres types de requêtes, l'attribut n'est pas défini.

Types de ressources compatibles avec cet attribut

Les types de ressources suivants acceptent des conditions avec l'attribut modifiedGrantsByRole dans leurs règles d'autorisation :

  • Projets
  • Dossiers
  • Organisations
Services qui reconnaissent cet attribut

Les services suivants reconnaissent l'attribut modifiedGrantsByRole :

  • API Gateway
  • AutoML
  • Certificate Authority Service
  • Fonctions Cloud Run
  • API Cloud Healthcare
  • Cloud IoT
  • Cloud Key Management Service
  • Cloud Run
  • API Cloud Runtime Configuration
  • Cloud Storage
  • Compute Engine
  • Artifact Analysis
  • Dataproc
  • Earth Engine
  • Game Servers
  • Identity and Access Management
  • Identity-Aware Proxy
  • Service géré pour Microsoft Active Directory
  • Notebooks gérés par l'utilisateur
  • Resource Manager
  • Secret Manager
  • Service Management

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. Vous pouvez utiliser des attributs de date/heure dans les liaisons de rôle de règle d'autorisation.

Cet attribut est compatible avec tous les services et types de ressources Google Cloud. Pour savoir comment appliquer des conditions de date/heure à des ressources qui ne sont pas directement compatibles avec celles-ci, consultez la section Compatibilité avec les conditions héritées sur cette page.

L'attribut request.time contient le code temporel de la requête. Vous pouvez comparer cet horodatage à un autre horodatage ou à une durée.

Les sections suivantes répertorient les fonctions que vous pouvez utiliser pour définir des conditions basées sur des codes temporels et des durées.

Créer, comparer et modifier des codes temporels et des durées

Fonction ou opérateur Description
date(
  value: string
)
  Timestamp

Convertit une date au format string en Timestamp.

Parameter
value : date au format YYYY-MM-DD, où YYYY correspond à l'année, MM au mois à deux chiffres et DD aux jours à deux chiffres. Le Timestamp obtenu contient la date spécifiée et l'heure 00:00:00.000 UTC.
Exemple

Crée un objet Timestamp qui représente la date 2023-02-01 et l'heure 00:00:00.000 UTC :

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

Convertit une durée de string vers une valeur Duration.

Parameter
value : Duration en secondes, suivi de s.
Examples

Crée une durée représentant 1,5 minute :

duration("90s")

Crée une durée représentant 30 jours :

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

Convertit un string en un Timestamp.

Parameter

value : horodatage UTC conforme à la norme RFC 3339.

Exemple

Crée un horodatage représentant le 12 avril 2023 à 23:20:50.52 en temps UTC :

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

Compare deux valeurs Timestamp.

Examples

Renvoie true si l'heure de la requête est antérieure au 12 avril 2022 à 00:00:00 UTC :

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

Renvoie true si l'heure de la requête est antérieure ou égale au 12 avril 2022 à 00:00:00 UTC :

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

Renvoie true si l'heure de la requête est postérieure au 12 avril 2022 à 00:00:00 UTC :

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

Renvoie true si l'heure de la requête est postérieure ou égale au 12 avril 2022, à 00:00:00 UTC:

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

Ajouter ou soustraire Duration à Timestamp.

Examples

Renvoie l'objet Timestamp qui tombe 30 minutes après 14:30:00 UTC le 12/04/2024 :

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

Renvoie le Timestamp qui tombe 60 jours avant 14:30:00 UTC le 12/04/2024 :

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

Extraire des informations d'un code temporel

Les fonctions de cette section vous permettent d'extraire des informations d'un horodatage, telles que le jour de la semaine correspondant à l'horodatage.

Dans les conditions IAM, tous les codes temporels sont au format UTC. Toutefois, vous pouvez souhaiter extraire des informations en fonction d'un autre fuseau horaire. Par exemple, vous pouvez vouloir savoir si un code temporel UTC tombe un lundi dans le fuseau horaire de Berlin, en Allemagne.

Pour spécifier un autre fuseau horaire, transmettez-le à la fonction. Utilisez un nom ou un décalage UTC de la base de données des fuseaux horaires de l'IETF. Par exemple, vous pouvez utiliser Europe/Berlin ou +01:00 pour l'heure normale d'Europe centrale (CET).

Fonctions et opérateurs compatibles Description
Timestamp.getDate(
  timeZone: string
)
  int

Récupère le jour du mois à partir de Timestamp. La valeur utilise une indexation unique ; le premier jour du mois est 1.

Parameter
timeZone : fuseau horaire pour lequel calculer le résultat. La valeur par défaut est UTC.
Exemple

Renvoie true si la requête est envoyée après le 15e jour du mois en temps UTC :

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

Récupère le jour du mois à partir de Timestamp. La valeur utilise l'indexation à base zéro ; le premier jour du mois est 0.

Parameter
timeZone : fuseau horaire pour lequel calculer le résultat. La valeur par défaut est UTC.
Exemple

Renvoie true si la requête est envoyée après le 15e jour du mois en temps UTC :

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

Récupère le jour de la semaine à partir de Timestamp. La valeur utilise l'indexation à base zéro. Par exemple, le dimanche est 0.

Parameter
timeZone : fuseau horaire pour lequel calculer le résultat. La valeur par défaut est UTC.
Exemple

Renvoie true si la requête est envoyée entre le lundi et le vendredi à Berlin en Allemagne :

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

Récupère le jour de l'année à partir du Timestamp. La valeur utilise l'indexation à base zéro ; le premier jour de l'année est le 0.

Parameter
timeZone : fuseau horaire pour lequel calculer le résultat. La valeur par défaut est UTC.
Exemple

Renvoie true si la requête est envoyée au cours des cinq premiers jours de l'année à Mountain View, en Californie :

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

Récupère l'année à partir de Timestamp.

Parameter
timeZone : fuseau horaire pour lequel calculer le résultat. La valeur par défaut est UTC.
Exemple

Renvoie true si la requête est envoyée pendant l'année 2023 à Mountain View, en Californie :

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

Renvoie true si la requête est envoyée pendant l'année 2022 en temps UTC :

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

Récupère l'heure de la journée à partir de Timestamp. La valeur utilise l'indexation basée sur zéro. Les valeurs sont comprises entre 0 et 23.

Vous pouvez combiner cette fonction avec getDayofWeek() pour n'accorder l'accès que pendant les heures de travail autorisées dans votre juridiction.

Parameter
timeZone : fuseau horaire pour lequel calculer le résultat. La valeur par défaut est UTC.
Exemple

Renvoie true si la requête est envoyée entre 9h et 17h un jour de semaine à Berlin, en Allemagne :

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

Récupère le nombre de millisecondes à partir du Timestamp. La valeur utilise l'indexation basée sur zéro. Les valeurs sont comprises entre 0 et 999.

Parameter
timeZone : fuseau horaire pour lequel calculer le résultat. La valeur par défaut est UTC.
Timestamp.getMinutes(
  timeZone: string
)
  int

Récupère le nombre de minutes après l'heure à partir du Timestamp. La valeur utilise l'indexation basée sur zéro. Les valeurs sont comprises entre 0 et 59.

Parameter
timeZone : fuseau horaire pour lequel calculer le résultat. La valeur par défaut est UTC.
Exemple

Renvoie true si la requête est envoyée à partir de 9h30 à Berlin, en Allemagne :

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

Récupère le mois de l'année à partir de Timestamp. La valeur utilise l'indexation basée sur zéro. Les valeurs sont comprises entre 0 et 11.

Parameter
timeZone : fuseau horaire pour lequel calculer le résultat. La valeur par défaut est UTC.
Exemple

Renvoie true si la requête est envoyée pendant le mois d'avril à Mountain View, en Californie :

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

Obtient le nombre de secondes à partir du Timestamp. La valeur utilise l'indexation basée sur zéro. Les valeurs sont comprises entre 0 et 59.

Parameter
timeZone : fuseau horaire pour lequel calculer le résultat. La valeur par défaut est UTC.
, , ,

Compare la sortie de deux fonctions dans ce tableau.

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. Vous pouvez utiliser les attributs d'adresse IP/de port de destination dans les liaisons de rôles de stratégie d'autorisation.

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 string
Opérateurs compatibles ,
Détails

La variable destination.ip identifie une adresse IP interne au format IPv4.

Examples

Renvoie true si l'adresse IP de destination est 10.0.0.1 :

destination.ip == "10.0.0.1"

Renvoie true, sauf si l'adresse IP de destination est 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 int
Opérateurs compatibles , , , , ,
Détails

La variable destination.port identifie un numéro de port TCP interne.

Examples

Renvoie true si le port de destination est 21:

destination.port == 21

Renvoie true si le port de destination est inférieur à 3001:

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 compte principal peut créer. Par exemple, vous pouvez autoriser un compte principal à 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. Vous pouvez utiliser des attributs de règle de transfert dans les liaisons de rôle de stratégie d'autorisation.

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

Function Description
compute.isForwardingRuleCreationOperation()   bool

Vérifie si la requête crée une règle de transfert.

Exemple
Consultez l'exemple pour compute.matchLoadBalancingSchemes().
compute.matchLoadBalancingSchemes(
  schemes: list<string>
)
  bool

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 et obtenir des informations supplémentaires, consultez la section Utiliser des conditions IAM sur des équilibreurs de charge Google Cloud.

Paramètre
schemes : schémas d'équilibrage de charge que la requête est autorisé à affecter.
Exemple

Renvoie l'un des éléments suivants :

  • Si la requête ne crée pas de règle de transfert, renvoie true.
  • Si la requête est une création de règle de transfert, renvoie true uniquement si la règle de transfert affecte un schéma d'équilibrage de charge INTERNAL, INTERNAL_MANAGED ou INTERNAL_SELF_MANAGED.
!compute.isForwardingRuleCreationOperation() || (
  compute.isForwardingRuleCreationOperation() &&
  compute.matchLoadBalancingSchemes([
    'INTERNAL', 'INTERNAL_MANAGED', 'INTERNAL_SELF_MANAGED'
  ])
)

Types de ressources acceptés

Cet attribut est disponible pour les requêtes de création des types de ressources suivants :

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)
Cloud Service Mesh1 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 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.

Vous pouvez utiliser l'attribut de chemin/nom d'hôte d'URL dans les liaisons de rôles de stratégie d'autorisation.

Attribut "request.path"

Variable d'attribut request.path
Type d'attribut string
Fonctions et opérateurs compatibles , startsWith(), endsWith()
Détails Nous vous déconseillons d'utiliser l'opérateur avec cet attribut. Au lieu de vérifier l'inégalité, comme dans request.path != "/admin", vérifiez le préfixe de l'attribut, comme dans !request.path.startsWith("/admin"). En vérifiant le préfixe, vous protégez également les chemins d'URL dans la hiérarchie /admin, comme /admin/payroll/.
Examples

Renvoie true si le chemin de la requête est égal au chemin d'URL spécifié :

request.path == "/admin"
request.path == "/admin/payroll"

Renvoie true si le chemin de la requête commence par le chemin d'URL spécifié :

request.path.startsWith("/admin")

Renvoie true si le chemin de la requête se termine par le chemin d'URL spécifié :

request.path.endsWith("/payroll.js")
Types de ressources acceptés
  • Versions de service de l'application Identity-Aware Proxy (App Engine) : disponibles pour les requêtes qui utilisent Identity-Aware Proxy pour accéder à une application Web exécutée sur App Engine ou Compute Engine.
  • Services Cloud Run

Attribut "request.host"

Variable d'attribut request.host
Type d'attribut string
Fonctions et opérateurs compatibles , endsWith()
Détails Nous vous déconseillons d'utiliser la fonction .startsWith() ou l'opérateur avec cet attribut. Ces fonctions et opérateurs peuvent vous donner des résultats inattendus.
Examples

Renvoie true si le nom d'hôte est égal à la valeur spécifiée :

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

Renvoie true si le nom d'hôte se termine par la valeur spécifiée :

request.host.endsWith("example.com")
Types de ressources acceptés
  • Versions de service de l'application Identity-Aware Proxy (App Engine) : disponibles pour les requêtes qui utilisent Identity-Aware Proxy pour accéder à une version de service de l'application.
  • Services Cloud Run

Extraire les valeurs des 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}/.

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 et des traits de soulignement (_).

    Dans le modèle projects/{project}/, l'identifiant est project.

  • Facultatif : Un préfixe devant précéder la sous-chaîne à extraire.

    Dans le modèle projects/{project}/, le préfixe est projects/.

  • Facultatif : Un suffixe devant suivre la sous-chaîne à extraire.

    Dans le modèle projects/{project}/, le suffixe est /.

La fonction extract() extrait différentes parties de l'attribut 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
L'attribut entier
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 figurent pas dans l'attribut, ou si le suffixe n'apparaît qu'avant le préfixe, la fonction extract() renvoie une chaîne vide.

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/objects/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 Vider string
{start}/objects/data_lake projects/_/buckets/acme-orders-aaa
orders/{end} order_date=2019-11-03/aef87g87ae0876
{all} projects/_/buckets/acme-orders-aaa/objects/data_lake/orders/order_date=2019-11-03/aef87g87ae0876
/orders/{none}/order_date= Vider string
/orders/order_date=2019-11-03/{id}/data_lake Vider string

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 un Timestamp. Pour obtenir des exemples, consultez la page Configurer un accès basé sur les ressources.