// 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 }快速而安全的表达语言
通用表达式语言 (CEL) 是一种表达式语言,可在对性能要求较高的应用中快速、可移植且安全地执行。CEL 旨在嵌入应用中,具有特定于应用的扩展,并且非常适合扩展应用可能已经在使用的声明式配置。
将 CEL 用于 API 调用的列表过滤器、协议缓冲区的验证限制以及 API 请求的授权规则等。
快速
加快了对性能关键型路径的表达式评估(从纳秒到微秒)。
可移植
对开发者友好、轻量级且支持跨多个 Google 和外部系统采用通用语法的轻量级开发者。
安全
非 Turing 完成,仅访问主机应用提供的数据。
可正式验证
使用 Z3 等自动化 SMT 求解器证明所有输入的正确性、安全不变量和等效性。
CEL 是否适合您的项目?
CEL 非常适用于对性能至关重要的应用,因为它能够安全快速地(纳秒至微秒)进行评估,并且费用可预测。CEL 表达式特别适用于谓词逻辑和简单的数据转换。
在对表达式的求值频繁但修改不频繁的应用中,CEL 的使用效率最高。例如,根据安全政策评估 HTTP 请求是 CEL 的一个很好的用例。对于 CEL 安全政策表达式,验证表达式需要一次性配置成本,之后会对表达式进行非常频繁的评估,成本几乎可以忽略不计。
仍然不确定?您可以查看 CEL 概览和语言定义,也可以直接与我们联系!我们非常乐意为您提供帮助。
智能体时代的正式验证
由于 AI 代理会编写、重构和部署政策,因此启发式单元测试可能无法涵盖无限输入中的极端情况。CEL 形式验证框架 由 Z3 定理证明器提供支持,可让开发者以数学方式证明政策的正确性、检查 AST 等效性,并保证整个输入空间中的安全不变量。
以数学方式确保安全,捕获细微的逻辑缺陷,实施详尽的保护措施,并确保自动政策编写。
为 CEL 做贡献
想为 CEL 项目提供帮助?为我们的开源代码和文档做贡献。我们非常期待您的帮助!