Benutzerdefinierte Spezifikation der Zugriffsebene

Auf dieser Seite werden die Objekte und Attribute beschrieben, die zum Erstellen der CEL-Ausdrücke (Common Ausdruck Language) für benutzerdefinierte Zugriffsebenen verwendet werden. Beispiele sind enthalten.

Weitere Informationen zu CEL finden Sie in der CEL-Sprachdefinition.

Diese Seite enthält die folgenden Abschnitte:

Objekte

Access Context Manager bietet vier Objekte, die Zugriffsebenenattribute enthalten.

Objekte
origin Enthält Attribute, die den Ursprung der Anfrage angeben.
request.auth Enthält Attribute, die Authentifizierungs- und Autorisierungsaspekte der Anfrage angeben.
levels Enthält Attribute zum Definieren der Abhängigkeit auf anderen Zugriffsebenen.
device Enthält Attribute, die das Gerät beschreiben, von dem die Anfrage stammt.

origin-Attribute

In diesem Abschnitt werden die vom origin-Objekt unterstützten Attribute aufgeführt.

Attribute
ip
Typ String
Beschreibung

Die IP-Adresse, von der die Anfrage stammt.

Beispiel:


origin.ip == "203.0.113.24"

region_code
Typ String
Beschreibung

Der ISO 3166-1-Alpha-2-Code für das Land oder die Region, aus dem oder der die Anfrage stammt.

Beispiel:


origin.region_code == "GB"
origin.region_code in ["US", "FR", "JP"]

request.auth-Attribute

In diesem Abschnitt werden die vom request.auth-Objekt unterstützten Attribute aufgeführt.

Attribute
principal
Typ String, Liste(String)
Beschreibung

Die eindeutige ID des Nutzers, der die Anfrage gestellt hat.

Der Wert für request.auth.principal muss eine oder mehrere eindeutige Nutzer-IDs sein. Die UUIDs können über die Admin SDK Directory API abgerufen werden.

Der Wert muss das folgende Format haben: accounts.google.com/UUID

Dabei ist UUID die UUID eines Nutzers.

Beispiel:


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

levels Attribut

In diesem Abschnitt werden die vom levels-Objekt unterstützten Attribute aufgeführt.

Attribute
level name
Typ boolean
Beschreibung

level name entspricht dem Namen einer vorhandenen Zugriffsebene.

Bei Verwendung müssen die Bedingungen der angegebenen Zugriffsebene auch zusätzlich zu den anderen Anforderungen Ihrer benutzerdefinierten Zugriffsebene erfüllt werden.

Beispiel:


levels.allow_corp_ips

Dabei ist allow_corp_ips der Name einer Zugriffsebene.

device Attribut

In diesem Abschnitt werden die vom device-Objekt unterstützten Attribute aufgeführt.

Attribute
encryption_status
Typ enum
Beschreibung

Beschreibt den Verschlüsselungsstatus des Geräts.

Aufzählungswerte:


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

Beispiel:


device.encryption_status == DeviceEncryptionStatus.ENCRYPTED

is_admin_approved_device
Typ boolean
Beschreibung

Gibt an, ob das Gerät vom Domainadministrator genehmigt wurde.

Beispiel:


device.is_admin_approved_device == true

is_corp_owned_device
Typ boolean
Beschreibung

Gibt an, ob das Gerät der Organisation gehört.

Beispiel:


device.is_corp_owned_device == true

is_secured_with_screenlock
Typ boolean
Beschreibung

Gibt an, ob die Displaysperre des Geräts aktiviert ist.

Beispiel:


device.is_secured_with_screenlock == true

os_type
Typ enum
Beschreibung

Gibt an, welches Betriebssystem das Gerät verwendet.

Aufzählungswerte:


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

Beispiel:


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

vendors
Typ Zuordnung von <string, Vendor>-Anbietern;
Beschreibung

Mit dem Objekt vendors wird auf Daten zugegriffen, die von Drittanbietern für Sicherheits- und Endpunktverwaltungsanbieter bereitgestellt werden. Jeder Anbieter kann drei gemeinsame Attribute auf oberster Ebene angeben: is_compliant_device, is_managed_device und device_health_score.

Darüber hinaus können Anbieter eigene Schlüssel und Werte angeben, auf die mit dem Attribut data verwiesen wird. Die verfügbaren Schlüssel für das Attribut data variieren je nach Anbieter.

Beispiele:


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
Typ boolean
Beschreibung

Ob die Anfrage von einem Gerät mit einem bestätigten Chrome-Betriebssystem stammt.

Beispiel:


device.verified_chrome_os == true

Functions

Access Context Manager bietet die folgenden Funktionen zur Verwendung in den CEL-Ausdrücken für benutzerdefinierte Zugriffsebenen.

Functions
inIpRange(address, [subnets])
Typ (String, Liste(String)) -< boolescher Wert
Beschreibung

Überprüft, ob eine IP-Adresse zu einem der angegebenen Subnetze gehört.

Beispiel:


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

device.versionAtLeast(minVersion)
Typ DeviceType.(String) -> boolescher Wert
Beschreibung

Prüft, ob das Betriebssystem des Geräts mindestens eine bestimmte Version hat. Wir empfehlen, diese Funktion mit dem Attribut device.os_type zu verwenden.

Beispiel:


device.versionAtLeast("10.0") == true

certificateBindingState(origin, device)
Typ (Peer, DeviceType): Ganzzahl
Beschreibung

Prüft, ob das mit dem Ursprung verknüpfte Clientzertifikat mit dem Gerät übereinstimmt und den Status meldet.

Der von der Funktion zurückgegebene Status kann einer der folgenden sein:

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

Beispiel:


certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE

Beispiele für CEL-Ausdrücke

Dieser Abschnitt enthält Beispiele für CEL-Ausdrücke, die zum Erstellen benutzerdefinierter Zugriffsebenen verwendet werden.

Beispiel 1

device.encryption_status == DeviceEncryptionStatus.ENCRYPTED && (origin.region_code in ["US"] || device.is_admin_approved_device)

Dieses Beispiel stellt eine Zugriffsebene dar, die folgende Bedingungen erfüllen muss, um eine Anfrage zuzulassen:

  • Das Gerät, von dem die Anfrage stammt, ist verschlüsselt.

  • Mindestens eine der folgenden Bedingungen ist wahr:

    • Die Anfrage stammt aus den USA.

    • Das Gerät, von dem die Anfrage stammt, wurde vom Domainadministrator genehmigt.

Beispiel 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"))

Dieses Beispiel stellt eine Zugriffsebene dar, die folgende Bedingungen erfüllen muss, um eine Anfrage zuzulassen:

  • Eine der folgenden Bedingungen ist erfüllt:

    • Das Gerät, von dem die Anfrage stammt, verwendet ein Desktop-Windows-Betriebssystem und gehört Ihrer Organisation.

    • Das Gerät, von dem die Anfrage stammt, verwendet ein Mac-Desktop-Betriebssystem, ist vom Domainadministrator genehmigt und verwendet mindestens  MacOS10.11.

Beispiel 3

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

Dieses Beispiel stellt eine Zugriffsebene dar, bei der die folgende Bedingung erfüllt sein muss, um eine Anfrage zuzulassen:

  • Die Erweiterungsfunktion certificateBindingState bestimmt, dass das bei der Anfrage angegebene Zertifikat mit einem der Gerätezertifikate übereinstimmt, die bei der Registrierung des Geräts in der Endpunktprüfung registriert wurden.