Benutzerdefinierte Spezifikation der Zugriffsebene
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Auf dieser Seite werden die Objekte und Attribute beschrieben, mit denen die CEL-Ausdrücke (Common Expression Language) für benutzerdefinierte Zugriffsebenen erstellt werden. Beispiele sind enthalten.
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 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.
Enum-Werte:
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;
}
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 aktiviert ist.
Beispiel:
device.is_secured_with_screenlock == true
os_type
Typ
enum
Beschreibung
Ermittelt, welches Betriebssystem das Gerät verwendet.
Enum-Werte:
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;
}
Das Objekt vendors wird verwendet, um auf Daten zuzugreifen, die von Drittanbietern für Sicherheit und Endpunktverwaltung bereitgestellt werden. Jeder Anbieter kann drei gemeinsame Attribute der obersten Ebene ergänzen: is_compliant_device, is_managed_device und device_health_score.
Darüber hinaus können Anbieter ihre eigenen Schlüssel und Werte angeben, auf die im Attribut data verwiesen wird.
Die für das Attribut data verfügbaren Schlüssel unterscheiden sich je nach Anbieter. Überprüfen Sie, ob der Schlüsselwert in Ihrem Richtlinienausdruck verglichen wird. Wenn Sie beispielsweise davon ausgehen, dass der Schlüsselwert ein String oder boolesch ist, müssen Sie ihn mit einem String oder einem booleschen Wert im Richtlinienausdruck vergleichen. Wenn der Wert eine Ganzzahl ist, sollten Sie ihn im Richtlinienausdruck mit einer doppelten Zahl vergleichen.
Enum-Werte:
// 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;
}
Wird der Browser auf Browser- oder Profilebene und vom Unternehmen unter der richtigen Domain verwaltet?
Ein Browser gilt als verwaltet, wenn die Richtlinien zentral verwaltet und übertragen werden und die Domain des verwalteten Browsers oder des verwalteten Profils mit der erwarteten Domain auf der Serverseite übereinstimmt.
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 einen der folgenden Werte haben:
Prüft, ob der String-Operand mit dem Präfixargument beginnt.
Beispiel:
"Sample string".startsWith("Sample")
origin.ip.startsWith("217.43.")
endsWith()
Typ
String.(String) -> Boolescher Wert
Beschreibung
Prüft, ob der String-Operand mit dem Suffix-Argument endet.
Beispiel:
"Sample string".endsWith("string")
origin.clientCertFingerprint()
Typ
Origin.() -> String
Beschreibung
Gibt den Fingerabdruck des Zertifikats zurück, das dem Ursprung zugeordnet ist. Sie können sie in Makros verwenden, um Gerätezertifikate zu testen.
Beispiel:
device.certificates.exists(cert, cert.is_valid && cert.cert_fingerprint == origin.clientCertFingerprint()) ; Checks if the enterprise certificate associated with the origin matches the device.
Makros für CEL-Ausdrücke
Sie können die folgenden Makros in den CEL-Ausdrücken für benutzerdefinierte Zugriffsebenen verwenden:
Makro
Beschreibung
has(e.f)
Testet, ob ein Feld verfügbar ist. Weitere Informationen finden Sie unter Feldauswahl. Beispiel:
Prüft, ob ein Prädikat für alle Elemente einer Liste e oder für Schlüssel einer Karte e gilt. Hier ist x eine in p zu verwendende Kennung, die an das Element oder den Schlüssel gebunden ist. Das all()-Makro kombiniert die Prädikatsergebnisse pro Element mit dem Operator and (&&). Wenn ein Prädikat als falsch ausgewertet wird, wird das Makro als falsch ausgewertet und alle Fehler von anderen Prädikaten werden ignoriert. Beispiel:
Der Wert „false“ wird zurückgegeben, da nicht alle Elemente größer als 1 sind: [1,2,3].all(x, x > 1) ;
e.exists(x, p)
Wie das Makro all(), kombiniert aber die Prädikatsergebnisse mit dem Operator or (||). Beispiel:
Es wird „true“ zurückgegeben, da mindestens ein Element in der Liste größer als 1 ist: [1,2,3].exists(x, x > 1) ;
Prüft, ob das mit dem Gerät verknüpfte Unternehmenszertifikat mit dem Aussteller übereinstimmt: 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)
Wie das exists()-Makro, wird aber nur als „true“ ausgewertet, wenn das Prädikat genau eines Elements oder Schlüssels mit „true“ ausgewertet wird und der Rest mit „false“. Jede andere Kombination aus booleschen Ergebnissen wird als falsch ausgewertet, wobei jedes Prädikatsfehler dazu führt, dass das Makro einen Fehler auslöst. Beispiel:
Der Wert „false“ wird zurückgegeben, da mehr als ein Element größer als 1 ist: [1,2,3].exists_one(x, x > 1) ;
Beispiel-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, für die die folgenden Bedingungen erfüllt sein müssen, um eine Anfrage zuzulassen:
Das Gerät, von dem die Anfrage stammt, ist verschlüsselt.
Mindestens eines der folgenden stimmt:
Die Anfrage stammt aus den USA.
Das Gerät, von dem die Anfrage stammt, wurde vom Domainadministrator genehmigt.
Dieses Beispiel stellt eine Zugriffsebene dar, für die die folgenden Bedingungen erfüllt sein müssen, um eine Anfrage zuzulassen:
Eine der folgenden Aussagen ist richtig:
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.
Dieses Beispiel stellt eine Zugriffsebene dar, für die die folgende Bedingung erfüllt sein müssen, 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.