写点什么

亚马逊云科技开源 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:003975

评论

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

对数字化的审视思维

boshi

数字化转型

一夜标星过百万,轻松霸榜GitHub的手绘图解HTTP笔记,竟来源阿里

Java~~~

Java 架构 面试 网络 HTTP

马士兵老师亲自总结3000+道Java面试题,刷完吊打架构师面试官

Java 程序员 架构 面试 计算机

【Dubbo3.0技术专题】总体技术体系介绍及技术指南(序章)

码界西柚

dubbo RPC 8月日更 Dubbo3

毕业总结

俞嘉彬

架构实战营

校友名片小程序设计方案

CC同学

小程序云开发 校友小程序

缓存知识总结

十二万伏特皮卡丘

FastApi-14-文件上传-2

Python研究所

FastApi 8月日更

如何做好高并发系统设计

架构精进之路

高并发 8月日更

Vue进阶(三十二):npm install、npm install --save与 npm install --save-dev 区别

No Silver Bullet

Vue 8月日更

京东T7架构师用470页就把微服务架构原理与开发实战文档讲完了

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

终于拿到了阿里2021年度九大Java技术文档——面试题+文档+白皮书

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

MySQL 系列教程之(二)Windows 安装 MySQL5.7.17

若尘

MySQL 8月日更

spring 循环依赖与三级缓存

Rubble

springboot 8月日更

数据库知识整理

十二万伏特皮卡丘

Intellij运行Java程序启动等待BUG分享

FunTester

Java IDEA intellij bug

网络安全证书合集系列

网络安全学海

网络安全 证书 信息安全 渗透测试 安全漏洞

腾讯跟阿里两位王者之间的对比

Linux服务器开发

腾讯 阿里 C/C++ Linux服务器开发 Linux后台开发

装机必备的软件里,绝对不能少了这一款 | 剪贴板增强工具

彭宏豪95

效率 工具 windows 实用工具

阿里大牛最新公开压轴的“Redis深度笔记”,GitHub已标星81.6K

Java~~~

Java redis 架构 面试 架构师

被boss直聘转发过多而“封杀”的2021年全套java高级面试题有多牛

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

网络攻防学习笔记 Day105

穿过生命散发芬芳

态势感知 网络攻防 8月日更

Swift 仿自如 App 裸眼 3D 效果

fuyoufang

ios swift 8月日更

NDK 使用入门

Changing Lin

8月日更

爆款阿里P5到P7晋升之路,九大源码文档助我超神果然努力幸运并存

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

前方高能!Alibaba最新出版的JDK源码剖析手册(究极奥义版)开源

Java~~~

Java 架构 jdk 面试 架构师

MySQL 系列教程之(三) MySQL 基本概念和操作

若尘

MySQL 8月日更

rosedb 事务实践

roseduan

数据库 事务 存储 KV存储引擎

性能测试框架中实时QPS取样器实现

FunTester

性能测试 测试框架 QPS FunTester 取样器

不愧是阿里内部“SpringCloudAlibaba学习笔记”这细节讲解,神了

Java 程序员 架构 面试 微服务

Alibaba内部首发“面试百宝书+超全算法面试手册”PDF版下载

Java~~~

Java 架构 面试 微服务 JVM

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