Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Cette page détaille les objets et les attributs utilisés pour créer des expressions Common Expression Language (CEL) pour les niveaux d'accès personnalisés. Des exemples sont fournis.
origin.region_code == "GB"
origin.region_code in ["US", "FR", "JP"]
Attributs request.auth
Cette section répertorie les attributs compatibles avec l'objet request.auth.
Attributs
principal
Type
chaîne, liste(chaîne)
Description
ID unique de l'utilisateur qui a émis la requête.
La valeur de request.auth.principal doit être un ou plusieurs ID d'utilisateur uniques. Les UUID peuvent être obtenus à l'aide de l'API Admin SDK Directory.
La valeur doit être au format suivant : https://accounts.google.com/UUID
Où UUID est l'UUID d'un utilisateur.
Exemple :
request.auth.principal == "https://accounts.google.com/1134924314572461055"
request.auth.principal in ["https://accounts.google.com/1134924314572461055", "https://accounts.google.com/3134824314572461115"]
claims.crd_str.pwd
Type
booléen
Description
Utilisateur authentifié à l'aide d'un mot de passe.
Exemple :
request.auth.claims.crd_str.pwd == true
claims.crd_str.push
Type
booléen
Description
Utilisateur authentifié à l'aide d'une notification push sur l'appareil mobile.
Exemple :
request.auth.claims.crd_str.push == true
claims.crd_str.sms
Type
booléen
Description
Utilisateur authentifié à l'aide d'un code envoyé par SMS ou par appel téléphonique.
Exemple :
request.auth.claims.crd_str.sms == true
claims.crd_str.swk
Type
booléen
Description
La validation en deux étapes a utilisé une clé logicielle, par exemple un téléphone, comme clé de sécurité.
Exemple :
request.auth.claims.crd_str.swk == true
claims.crd_str.hwk
Type
booléen
Description
La validation en deux étapes a utilisé une clé matérielle telle que la clé Google Titan.
Exemple :
request.auth.claims.crd_str.hwk == true
claims.crd_str.otp
Type
booléen
Description
Utilisateur authentifié à l'aide de méthodes à base de mot de passe à usage unique (Google Authenticator et codes de secours).
Exemple :
request.auth.claims.crd_str.otp == true
claims.crd_str.mfa
Type
booléen
Description
Utilisateur authentifié avec l'une des méthodes de cette table, à l'exception de pwd.
Cette section répertorie les attributs compatibles avec l'objet levels.
Attributs
level name
Type
booléen
Description
level name correspond au nom d'un niveau d'accès existant.
Lorsqu'elles sont utilisées, les conditions du niveau d'accès spécifié doivent également être remplies en plus des autres conditions requises pour le niveau d'accès personnalisé.
Exemple :
levels.allow_corp_ips
Où allow_corp_ips est le nom d'un niveau d'accès.
Attribut device
Cette section répertorie les attributs compatibles avec l'objet device.
Attributs
encryption_status
Type
enum
Description
Décrit l'état de chiffrement de l'appareil.
Valeurs d'énumération :
enum DeviceEncryptionStatus {
// The encryption status of the device is not specified or not known.
ENCRYPTION_UNSPECIFIED == 0;
// The device does not support encryption.
ENCRYPTION_UNSUPPORTED == 1;
// The device supports encryption, but is currently unencrypted.
UNENCRYPTED == 2;
// The device is encrypted.
ENCRYPTED == 3;
}
Indique si l'appareil a été approuvé par l'administrateur du domaine.
Exemple :
device.is_admin_approved_device == true
is_corp_owned_device
Type
booléen
Description
Indique si l'appareil appartient à l'organisation.
Exemple :
device.is_corp_owned_device == true
is_secured_with_screenlock
Type
booléen
Description
Indique si la fonctionnalité de verrouillage de l'écran est activée sur l'appareil.
Exemple :
device.is_secured_with_screenlock == true
os_type
Type
enum
Description
Identifie le système d'exploitation utilisé par l'appareil.
Valeurs d'énumération:
enum OsType {
// The operating system of the device is not specified or not known.
OS_UNSPECIFIED == 0;
// A desktop Mac operating system.
DESKTOP_MAC == 1;
// A desktop Windows operating system.
DESKTOP_WINDOWS == 2;
// A desktop Linux operating system.
DESKTOP_LINUX == 3;
// An Android operating system.
ANDROID == 4 ;
// An iOS operating system.
IOS == 5;
// A desktop ChromeOS operating system.
DESKTOP_CHROME_OS == 6;
}
L'objet vendors permet d'accéder aux données fournies par des fournisseurs tiers de sécurité et de gestion des points de terminaison. Chaque fournisseur peut renseigner trois attributs de premier niveau partagés : is_compliant_device, is_managed_device et device_health_score.
De plus, les fournisseurs peuvent fournir leurs propres clés et valeurs référencées à l'aide de l'attribut data.
Les clés disponibles pour l'attribut data varient d'un fournisseur à l'autre. Assurez-vous de rester cohérent lorsque vous comparez la valeur de clé dans votre expression de règle. Par exemple, si vous vous attendez à ce que la valeur de la clé soit une chaîne ou une valeur booléenne, veillez à la comparer à une chaîne ou à une valeur booléenne dans l'expression de règle correspondante. Notez que lorsque la valeur est un entier, vous devez la comparer avec un nombre double dans l'expression de la règle.
Valeurs d'énumération:
// Health score of the device as provided by the vendor (possibly third party).
enum DeviceHealthScore {
// The health score for the device is not specified or unknown.
DEVICE_HEALTH_SCORE_UNSPECIFIED = 0;
// The health of the device is very poor.
VERY_POOR = 1;
// The health of the device is poor.
POOR = 2;
// The health of the device is ok.
NEUTRAL = 3;
// The health of the device is good.
GOOD = 4;
// The health of the device is very good.
VERY_GOOD = 5;
}
Indique si la demande provient d'un appareil avec Chrome OS validé.
Exemple :
device.verified_chrome_os == true
chrome.management_state
Type
chaîne
Description
Le navigateur est-il géré, au niveau du navigateur ou du profil, et par l'entreprise dans le domaine approprié.
Un navigateur est considéré comme géré si les règles sont gérées et transférées de manière centralisée, et si le domaine du navigateur ou du profil géré correspond au domaine attendu côté serveur.
Vérifie si la version du système d'exploitation de l'appareil vaut au moins une version donnée. Nous vous recommandons d'utiliser cette fonction avec l'attribut device.os_type.
Exemple :
device.versionAtLeast("10.0") == true
certificateBindingState(origin, device)
Type
(Peer, DeviceType) -> entier
Description
Vérifie si le certificat client associé à l'origine correspond à l'appareil et signale l'état.
L'état renvoyé par la fonction peut être l'un des suivants:
Vérifie si l'opérande de la chaîne commence par l'argument de préfixe.
Exemple :
"Sample string".startsWith("Sample")
origin.ip.startsWith("217.43.")
endsWith()
Type
string.(chaîne) -> bool
Description
Vérifie si l'opérande de chaîne se termine par l'argument de suffixe.
Exemple :
"Sample string".endsWith("string")
origin.clientCertFingerprint()
Type
Origin.() -> chaîne
Description
Renvoie l'empreinte du certificat associé à l'origine. Vous pouvez l'utiliser dans les macros pour tester les certificats des appareils.
Exemple :
device.certificates.exists(cert, cert.is_valid && cert.cert_fingerprint == origin.clientCertFingerprint()) ; Checks if the enterprise certificate associated with the origin matches the device.
Macros d'expressions CEL
Vous pouvez utiliser les macros suivantes dans les expressions CEL pour les niveaux d'accès personnalisés:
Macro
Description
has(e.f)
Vérifie si un champ est disponible. Pour en savoir plus, consultez Sélection des champs. Exemple :
Vérifie si un prédicat est appliqué à tous les éléments d'une liste e ou aux clés d'une carte e. Ici, x est un identifiant à utiliser dans p, qui est lié à l'élément ou à la clé. La macro all() combine les résultats du prédicat par élément avec l'opérateur and (&&). Par conséquent, si un prédicat est défini sur "false", la macro est évaluée sur "false", ignorant les erreurs provenant d'autres prédicats. Exemple :
La valeur renvoyée est "false", car tous les éléments ne sont pas supérieurs à 1 : [1,2,3].all(x, x > 1) ;
e.exists(x, p)
Comme la macro all(), mais elle combine les résultats du prédicat avec l'opérateur or (||). Exemple :
Renvoie "true", car la liste contient au moins un élément supérieur à 1: [1,2,3].exists(x, x > 1) ;
Vérifie si le certificat d'entreprise associé à l'appareil correspond à l'émetteur: device.certificates.exists(cert, cert.is_valid && cert.issuer == "EMAILADDRESS=test_inter1@beyondcorp.in, CN=inter_1, OU=BCEDemo_1, O=BCEDemo, L=NCR, ST=UP, C=IN") ;
e.exists_one(x, p)
Identique à la macro exists(), qui ne renvoie la valeur "true" que si le prédicat d'un seul élément ou clé est évalué "true" et le reste à "false". Toute autre combinaison de résultats booléens renvoie la valeur "false", et toute erreur de prédicat entraîne une erreur de la macro. Exemple :
La valeur renvoyée est "false", car plusieurs éléments sont supérieurs à 1 : [1,2,3].exists_one(x, x > 1) ;
Exemples d'expressions CEL
Cette section contient des exemples d'expressions CEL utilisées pour créer des niveaux d'accès personnalisés.
Exemple 1
device.encryption_status == DeviceEncryptionStatus.ENCRYPTED && (origin.region_code in ["US"] || device.is_admin_approved_device)
Cet exemple représente un niveau d'accès qui nécessite que les conditions suivantes soient remplies pour autoriser une requête :
L'appareil à l'origine de la requête est chiffré.
Une ou plusieurs des affirmations suivantes sont vraies :
La requête provient des États-Unis.
L'appareil à l'origine de la requête est approuvé par l'administrateur de domaine.
Cet exemple représente un niveau d'accès qui nécessite que les conditions suivantes soient remplies pour autoriser une requête :
L'une des affirmations suivantes est vraie :
L'appareil à l'origine de la requête est détenu votre organisation et utilise un système d'exploitation Windows pour ordinateur de bureau.
L'appareil à l'origine de la requête utilise un système d'exploitation Mac pour ordinateur de bureau, est approuvé par l'administrateur de domaine et utilise au minimum la version MacOS 10.11.
Cet exemple représente un niveau d'accès qui nécessite que la condition suivante soit remplie pour autoriser une requête :
La fonction d'extension certificateBindingState détermine que le certificat présenté au moment de la requête correspond à l'un des certificats d'appareil enregistrés lors de l'inscription de l'appareil à la validation des points de terminaison.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2023/01/20 (UTC).
[{
"type": "thumb-down",
"id": "hardToUnderstand",
"label":"Difficile à comprendre"
},{
"type": "thumb-down",
"id": "incorrectInformationOrSampleCode",
"label":"Informations ou exemple de code incorrects"
},{
"type": "thumb-down",
"id": "missingTheInformationSamplesINeed",
"label":"Il n'y a pas l'information/les exemples dont j'ai besoin"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Problème de traduction"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Autre"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Facile à comprendre"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"J'ai pu résoudre mon problème"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Autre"
}]