// Simple predicates
'tacocat'.startsWith('taco')

// Parameterized predicates over structured data
account.balance >= transaction.withdrawal

// JSON objects
{'sub': '12345678',
 'aud': 'example2.cel.dev',
 'iss': 'https://example1.cel.dev/jwt-issuer'}

// Strongly typed objects
common.GeoPoint{ latitude: 10.0, longitude: -5.5 }

Common Expression Language (CEL) ist eine Ausdruckssprache, die schnell, portabel und sicher in leistungskritischen Anwendungen ausgeführt werden kann. CEL wurde für die Einbettung in eine Anwendung entwickelt und umfasst anwendungsspezifische Erweiterungen. Es eignet sich ideal zur Erweiterung deklarativer Konfigurationen, die Ihre Anwendungen möglicherweise bereits verwenden.

Verwenden Sie CEL beispielsweise für Listenfilter für API-Aufrufe, Validierungsbeschränkungen für Protokollpuffer und Autorisierungsregeln für API-Anfragen.

Beschleunigte Auswertung von Ausdrücken in leistungskritischen Pfaden von Nanosekunden bis Mikrosekunden
Entwicklerfreundlich, leicht und mit gemeinsamer Syntax für mehrere Google- und externe Systeme.
Unterstützt die Unterteilung und Erweiterung, lässt sich einfach einbetten und an Konfigurations- und Richtlinienanforderungen anpassen.
Non-Turing abgeschlossen und es wird nur auf Daten zugegriffen, die von der Host-Anwendung bereitgestellt werden.

CEL eignet sich ideal für leistungskritische Anwendungen, da es für eine sichere und schnelle Bewertung (Nanosekunden bis Mikrosekunden) mit vorhersehbaren Kosten konzipiert wurde. CEL-Ausdrücke sind besonders nützlich für Prädikatlogik und einfache Datentransformationen.

CEL wird am effizientesten in Anwendungen verwendet, in denen Ausdrücke häufig ausgewertet, aber selten geändert werden. Beispielsweise ist das Auswerten einer HTTP-Anfrage anhand einer Sicherheitsrichtlinie ein hervorragender Anwendungsfall für CEL. Ein Ausdruck einer CEL-Sicherheitsrichtlinie würde einmalige Konfigurationskosten für die Validierung des Ausdrucks verursachen und wird dann sehr häufig mit vernachlässigbaren Kosten ausgewertet.

Sind Sie noch unsicher, welche Ihrer Properties betroffen sind? Sehen Sie sich die CEL-Übersicht und die Sprachdefinition an oder fragen Sie uns einfach! Wir helfen Ihnen gern weiter.

Sie möchten das CEL-Projekt unterstützen? Tragen Sie zu unserem Open-Source-Code und unserer Dokumentation bei. Wir freuen uns über Ihre Hilfe!