写点什么

亚马逊云科技开源 PBAC 领域特定语言 Cedar

  • 2023-06-26
    北京
  • 本文字数:1640 字

    阅读完需:约 5 分钟

亚马逊云科技开源PBAC领域特定语言Cedar

亚马逊云科技开源了他们用来定义策略访问权限的领域特定语言Cedar。Cedar 已集成在Amazon Verified PermissionsAWS Verified Access中,还可以通过 SDK 和语言规范将 Cedar 直接集成到应用程序中。


Cedar可以在应用程序代码之外定义访问策略,这种分离使得它们能够独立地进行编写、分析和审计。Cedar 支持基于角色的访问控制(RBAC)和基于属性的访问控制(ABAC)。


SDK 可用于编写和验证策略和授权访问请求。Cedar 是用 Rust 编写的,但同时提供了 Rust crate 和 Java 包,可以在Java中使用 Cedar。


可以通过调用 Cedar 授权引擎来验证请求是否被授权。请求信息会被转换为 Cedar 请求并传给 Cedar 授权引擎。下面是在 Rust 中使用 Cedar 的示例:


pub fn is_authorized(    &self,    principal: impl AsRef<EntityUid>,    action: impl AsRef<EntityUid>,    resource: impl AsRef<EntityUid>,) -> Result<()> {    let es = self.entities.as_entities();    let q = Request::new(        Some(principal.as_ref().clone().into()),        Some(action.as_ref().clone().into()),        Some(resource.as_ref().clone().into()),        Context::empty(),    );    info!(        "is_authorized request: principal: {}, action: {}, resource: {}",        principal.as_ref(),        action.as_ref(),        resource.as_ref()    );    let response = self.authorizer.is_authorized(&q, &self.policies, &es);    info!("Auth response: {:?}", response);    match response.decision() {        Decision::Allow => Ok(()),        Decision::Deny => Err(Error::AuthDenied(response.diagnostics().clone())),    }}
复制代码


可以使用 self.authorizer.is_authorized(&q, &self.policies, &es)self.authorizer 来调用 Cedar 授权引擎。参数包括访问请求、Cedar 策略和实体集合。访问请求包含了所需的主体、操作和资源信息。根据具体的分析结果,授权引擎将返回 Decision::Allow 或 Decision::Deny。


策略也可以通过 SDK 来创建。在下面的 Java 示例中,我们创建了一个策略,允许主体 Alice 对 Vacation 资源的子资源执行 View_Photo 操作:


private Set<Policy> buildPolicySlice() {   Set<Policy> ps = new HashSet<>();   String fullPolicy = "permit(principal == User::\"Alice\", action == Action::\"View_Photo\", resource in Album::\"Vacation\");";   ps.add(new Policy(fullPolicy, "p1"));   return ps;}
复制代码


在 Java 中,可以调用 isAuthorized 方法来查询授权情况:


public boolean sampleMethod() throws AuthException {    AuthorizationEngine ae = new WrapperAuthorizationEngine();    AuthorizationQuery q = new AuthorizationQuery("User::\"Alice\"", "Action::\"View_Photo\"", "Photo::\"pic01\"");    return ae.isAuthorized(q, buildSlice()).isAllowed();}
复制代码


在亚马逊云科技宣布开源 Cedar 之后,Permit.io发布了Cedar-Agent,一个 HTTP 服务器,作为基于 Cedar 的策略的策略存储和数据存储。策略存储支持创建、检索、更新和删除策略,数据存储支持在内存中存储应用程序数据。Cedar-Agent 可以针对存储的数据执行授权检查,这些检查可以基于传入的请求进行。


HackerNews 上的一位用户dadadad100评论说,他们看到 Cedar 可能填补了应用程序授权领域的空白:


Cedar 介于 OPA(基于数据的搜索方法)和Zanzibar之间。目前还不清楚哪一方会胜出,但不管怎样,现在这个问题开始引起人们的关注了。


其他用户,如Oxbadcafebee,对亚马逊云科技没有为 Open Policy Agent 提供支持表示失望。


Cedar 采用了 Apache License 2.0,托管在 GitHub 上。更多细节可以在最近的亚马逊云科技的博客中找到,或者加入Cedar Policy Slack频道。


原文链接

https://www.infoq.com/news/2023/06/aws-cedar-open-source/


相关阅读:

亚马逊云科技 Lambda引入响应有效负载流

从微服务转为单体架构、成本降低 90%,亚马逊内部案例引发轰动!CTO:莫慌,要持开放心态

2023-06-26 08:004077

评论

发布
暂无评论
发现更多内容

数据分析和AI丨应对AI实施挑战,工程领域AI应用的五大方法

Altair RapidMiner

机器学习 AI 数据分析 知识图谱 智能制造

MacOS和Windows有什么区别?教你在同一电脑运行双系统

阿拉灯神丁

Windows系统 macOS系统 Mac双系统 CrossOver Mac下载 电脑软件

WebGL开发地图可视化系统

北京木奇移动技术有限公司

软件外包公司 webgl开发 地图系统

音乐NFT系统的上线流程

北京木奇移动技术有限公司

软件外包公司 音乐NFT 体育NFT

为什么大厂面试都深挖“八股文”?——技术筛选背后的逻辑

储诚益

面试 八股文 Java技术

webgl开发GIS系统的技术难点

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

AI英语考试APP开发的技术难点

北京木奇移动技术有限公司

软件外包公司 AI英语学习 AI英语考试

如何快速掌握Java八股文-获取offer的利器

储诚益

求职 Java 面试 找工作 八股文 求职技巧

WebGL 开发 3D 产品展示的框架

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

WebGL技术开发3D产品展示的上线流程

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

区块链智能合约的上线流程

北京木奇移动技术有限公司

区块链技术 智能合约开发 软件外包公司

如何避免项目延误

易成研发中心

项目管理 项目管理系统 项目软件管理

通过Ngrok实现内网穿透助力远程开发

Damon小智

ngrok 内网穿透

WebGL开发地图可视化系统的技术框架

北京木奇移动技术有限公司

地理信息系统 软件外包公司 webgl开发

AI英语考试 APP的开发

北京木奇移动技术有限公司

软件外包公司 AI英语学习 AI英语考试

AI英语考试的测试方法

北京木奇移动技术有限公司

软件外包公司 AI英语学习 AI英语考虑

AI英语考试APP优化

北京木奇移动技术有限公司

软件外包公司 AI英语学习 AI英语考试

你不知道的是:80%的面试25分钟已经结束了

储诚益

求职 找工作 面试技巧

webgl开发GIS系统的性能优化

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

AI英语考试APP的上线流程

北京木奇移动技术有限公司

软件外包公司 AI英语学习 AI英语考试

亚马逊云科技开源PBAC领域特定语言Cedar_云端开发_Matt Campbell_InfoQ精选文章