Cedar是一种开源的权限管理语言及SDK。现在,它已正式加入Cloud Native Computing Foundation(CNCF),成为一个沙箱项目。
该项目最初由亚马逊网络服务公司开发。其目标是为现代应用程序提供一种中立的权限定义与执行标准。
在云原生环境中管理访问控制时,传统上需要依赖硬编码的逻辑或通用策略引擎来处理问题。而Cedar则通过让开发者以策略的形式来定义权限,从而将访问控制与应用程序逻辑分离开来。这种分离方式使得团队可以在不重新部署代码的情况下更新权限设置,这被称为“策略即代码”模式。
该语言支持多种权限模型,包括基于角色的访问控制、基于属性的访问控制以及基于关系的访问控制。Cedar的另一个特点是注重安全性,它通过形式化验证来确保系统的可靠性。该语言的规范是通过Lean Theorem Prover进行形式化验证的,而其Rust实现则经过针对该规范的差分随机测试。这种数学上的严谨性确保了策略引擎能够按照预期的方式运行,这对于安全敏感的操作来说非常重要。
除了核心语言之外,该项目的自动化推理功能还提供了高级工具支持。开发者可以使用策略验证器在部署前检查错误,确保策略符合定义的架构。这种能力使得人们可以对数个策略进行分析,从而判断某个请求是否会被允许或拒绝,这种方式比传统的测试方法更为可靠。
在公告中,Kubernetes SIG的名誉主席兼CNCF大使Lucas Käldström指出,Cedar的设计体现了一种平衡性:“我最欣赏的是Cedar的设计理念——它能够很好地平衡表达性和可分析性。”
加入CNCF后,Cedar可以与Open Policy Agent一起共享同一个生态系统。虽然OPA及其相关语言Rego都是用于处理基础设施、准入控制和应用程序策略的通用工具,但Cedar则是专门为应用程序级授权而设计的。它的设计旨在为拥有数百万用户和资源的应用程序提供高性能的评估能力。此外,Cedar对ReBAC的支持使其能够与Google的Zanzibar模型相融合,从而为其他类似的开源项目提供了替代方案。
自首次开源以来,该语言已经在多个行业得到应用。诸如Cloudflare、MongoDB、StrongDM和Cloudinary等组织已经将其纳入自己的系统中。该语言还被应用于AWS的服务中,比如Amazon Verified Permissions和AWS Systems Manager。该项目已经开始与其他开源项目进行整合,包括Linux Foundation的Janssen Project以及Kubernetes-Cedar-Authorizer。
通过加入CNCF,该项目将进入一个中立的治理模式。这一转变有助于吸引更多的贡献者,并促进其与云原生的更深入集成。该项目的路线图是逐步从沙箱阶段发展到孵化阶段,最终达到CNCF标准的成熟状态。
