通用表达语言(CEL)实现了用于表达评估的通用语义,使不同的应用程序可以更轻松地进行互操作。
安全策略:组织具有复杂的基础架构,并且需要通用工具来对整个系统进行推理
保持小巧&快速。 CEL以线性时间进行评估,没有突变,并且不是图灵完备的。此限制是语言设计的一个特征,它允许实现比同等含沙盒的JavaScript更快地评估数量级。
使它可扩展。 CEL被设计为嵌入在应用程序中,并通过其上下文实现可扩展性,从而允许其功能和数据由嵌入它的软件提供。
开发人员友好。该语言对开发人员来说是平易近人的。最初的规范基于开发Firebase规则和可用性测试的经验,多次迭代。
库本身和随附的工具应该易于被希望将CEL集成到其平台中的团队采用。
开发人员编写的表达式的文本表示形式。它的语法类似于C / C ++ / Java / JavaScript中的表达式
将文本表示形式转换为二进制表示形式的编译器库。 这可以提前(在控制平面中)完成,也可以在评估之前(在数据平面中)完成。 包含一个或多个类型变量(通常是protobuf消息)的上下文。大多数用例将使用attribute_context.proto 一个评估程序库,它在上下文中采用二进制格式并产生结果,通常是布尔值。 // Conditionaccount.balance> = transaction.withdrawal || (account.overdraftProtection&& account.overdraftLimit> = transaction.withdrawal-account.balance)//对象构造common.GeoPoint {纬度:10.0,经度:-5.5}