Cette page a été traduite par l'API Cloud Translation.
Switch to English

Spécification de niveaux d'accès personnalisés

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.

Pour en savoir plus sur le CEL, consultez la définition du langage CEL.

Cette page contient les rubriques suivantes :

Objet

Access Context Manager fournit quatre objets contenant des attributs de niveau d'accès.

Objets
origin Contient des attributs qui identifient l'origine de la requête.
request.auth Contient des attributs qui identifient les aspects d'authentification et d'autorisation de la requête.
levels Contient des attributs permettant de définir la dépendance sur d'autres niveaux d'accès.
device Contient des attributs qui décrivent l'appareil à l'origine de la requête.

Attributs origin

Cette section répertorie les attributs compatibles avec l'objet origin.

Attributs
ip
Type chaîne
Description

Adresse IP d'origine de la requête.

Exemple :


origin.ip == "203.0.113.24"

region_code
Type chaîne
Description

Code ISO 3166-1 alpha-2 du pays ou de la région d'où provient la requête.

Exemple :


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

Identifiant 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 respecter le format suivant : accounts.google.com/UUID

UUID est l'UUID d'un utilisateur.

Exemple :


request.auth.principal == "accounts.google.com/1134924314572461055"
request.auth.principal in ["accounts.google.com/1134924314572461055", "accounts.google.com/3134824314572461115"]

Attribut levels

Cette section répertorie les attributs compatibles avec l'objet levels.

Attributs
level name
Type boolean
Description

level name correspond au nom d'un niveau d'accès existant.

Lorsque vous les utilisez, les conditions du niveau d'accès spécifié doivent également répondre aux exigences de votre niveau d'accès personnalisé.

Exemple :


levels.allow_corp_ips

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 enum :


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;
}

Exemple :


device.encryption_status == DeviceEncryptionStatus.ENCRYPTED

is_admin_approved_device
Type boolean
Description

Indique si l'appareil a été approuvé par l'administrateur du domaine.

Exemple :


device.is_admin_approved_device == true

is_corp_owned_device
Type boolean
Description

Indique si l'appareil appartient à l'organisation.

Exemple :


device.is_corp_owned_device == true

is_secured_with_screenlock
Type boolean
Description

Indique si la fonction 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 installé sur l'appareil.

Valeurs enum :


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;
}

Exemple :


device.os_type == OsType.DESKTOP_MAC
device.os_type != OsType.OS_UNSPECIFIED

vendors
Type map<string, Fournisseurs> fournisseurs;
Description

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.

En outre, 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 à un autre.

Exemples :


device.vendors["some_vendor"].is_compliant_device == true


device.vendors["some_vendor"].is_managed_device == true


device.vendors["some_vendor"].device_health_score == DeviceHealthScore.VERY_GOOD


device.vendors["some_vendor"].data["is_device_compromised"] == true

verified_chrome_os
Type boolean
Description

Indique si la requête provient d'un appareil avec un système Chrome OS validé.

Exemple :


device.verified_chrome_os == true

Functions

Access Context Manager fournit les fonctions suivantes à utiliser dans les expressions CEL pour les niveaux d'accès personnalisés.

Functions
inIpRange(address, [subnets])
Type (chaîne, liste (chaîne) -< booléen
Description

Vérifie si une adresse IP appartient à l'un des sous-réseaux donnés.

Exemple :


inIpRange(origin.ip, ["192.0.2.0/24", "198.51.100.0/24", "203.0.113.0/24"]) == true

device.versionAtLeast(minVersion)
Type DeviceType.(chaîne) -> booléen
Description

Vérifie si le système d'exploitation de l'appareil est 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 renvoie l'état.

L'état renvoyé par la fonction peut être l'un des suivants :

  • CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE
  • CertificateBindingState.CERT_NOT_MATCHES_EXISTING_DEVICE
  • CertificateBindingState.CERT_STATE_UNKNOWN

Exemple :


certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE

Exemples d'expressions CEL

Cette section présente 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.

Exemple 2

(device.os_type == OsType.DESKTOP_WINDOWS && device.is_corp_owned_device) || (device.os_type == OsType.DESKTOP_MAC && device.is_admin_approved_device && device.versionAtLeast("10.11.0"))

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.

Exemple 3

(certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE)

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.