envoyproxy/envoy

Extensible CEL Vocabulary

开放

#18,063 创建于 2021年9月10日

 (3 条评论) (1 个反应) (0 位负责人)C++ (5,373 个派生)batch import
area/extensionarea/rbacenhancementhelp wantedno stalebot

仓库指标

星标
 (27,997 个星标)
PR 合并指标
 (平均合并 8天) (30 天内合并 378 个 PR)

描述

Support extending the CEL expression evaluator with custom vocabulary.

Essentially allow for custom forms of the evaluation context to register as a ExprVocabularyProvider or similar and be referenced by e.g. RBAC, such that CEL evaluation is run against the custom vocabulary (either exclusively, or potentially in addition to the native Envoy attribute vocabulary).

Rework the common/expr/ library such that users of it (e.g. RBAC) may pass in the custom ExprVocabularyProvider. The ExprVocabularyProvider will take common data structures as inputs (StreamInfo::StreamInfo and others), and allow access to their attributes, new convenience functions, and derived attributes via custom CelValueProducer implementations they attached to Activations.

Use cases include:

  • Evaluating syntactically different (same functionality, different naming) CEL
  • Exposing domain specific, internal, and convenience attributes and functions in the CEL language that are not appropriate in the OSS vocabulary.

贡献者指南