写点什么

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

评论

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

张海宁:首个 CNCF 中国开源项目 Harbor 的修炼之道

腾源会

开源 腾源会

Kotlin语法手册(四)

寻找生命中的美好

android kotlin 安卓

SQL注入-“错误”的语句为什么会得到“正确”的结果?

BUG侦探

MySQL 网络安全 SQL注入

如何在设计时保证RPA机器人的稳定运行?

金小K

前端培训:Vue3计算属性比普通函数好的原因

@零度

Vue 前端开发

腾讯云联合信通院发布《超低延时直播白皮书》,推动直播延时降低90%以上

科技热闻

《数字经济全景白皮书》数字人民币篇 重磅发布

易观分析

数字经济 数字人民币

高可用之SkybilityHA简单介绍-行云管家

行云管家

高可用 ha

技术干货 | WebRTC ADM 源码流程分析

网易云信

音视频

MatrixOne 0.2.0性能测试报告

MatrixOrigin

开源 MatrixOrigin MatrixOne 超融合异构云原生数据库 矩阵起源

易观分析获评2021年度北京市专精特新“小巨人”企业

易观分析

易观新闻 “小巨人”企业

ModStart:拥抱新技术,率先支持 Laravel 9.0

ModStart开源

MatrixOne 0.2.0 发布!最快的SQL计算引擎来了!

MatrixOrigin

开源 MatrixOrigin MatrixOne 超融合异构云原生数据库 矩阵起源

netty系列之:EventLoop,EventLoopGroup和netty的默认实现

程序那些事

Java Netty nio 程序那些事 2月月更

阳振坤:从电动汽车看分布式数据库的发展和崛起

OceanBase 数据库

数据库 OceanBase 开源 OceanBase 社区版 HTAP

OBCE 认证第一人莅临直播间|助你快速拿下 OBCA & OBCP 证书

OceanBase 数据库

直播 OceanBase 社区版 OBCE

java培训:JVM垃圾回收

@零度

JVM JAVA开发

一文了解如何源码编译Rainbond基础组件

北京好雨科技有限公司

Kubernetes PaaS rainbond

网络安全:SQL 注入漏洞

网络安全学海

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

报名直达丨HarmonyOS开发者创新大赛线下城市交流会来了,约吗?

HarmonyOS开发者

HarmonyOS 交流 创新大赛

大数据培训:Flink CDC 高频面试题

@零度

大数据 flink

Netty如何高效接收网络数据?一文聊透ByteBuffer动态自适应扩缩容机制

bin的技术小屋

网络编程 Netty nio 中间件 Java【

Nebula Graph 源码解读系列|客户端的通信秘密——fbthrift

NebulaGraph

数据库 图数据库

直播系统聊天技术(七):直播间海量聊天消息的架构设计难点实践

JackJiang

网络编程 即时通讯 IM 直播技术 音视频技术

福建省福州市网络安全等级测评机构名单目录看这里!

行云管家

等保 等级保护 等保测评

80%的软件环境管理问题,根因都在这里 | 研发效能提升36计

阿里云云效

阿里云 DevOps 云原生 持续交付 部署

本着什么原则,才能写出优秀的代码?

AlwaysBeta

程序员 设计模式 代码规范

手把手教学电瓶车进电梯检测、多类别车辆追踪、异常行为检测产业级应用

百度开发者中心

学生管理系统架构设计文档

阿卷

架构实战营

ko在数栈中的应用

袋鼠云数栈

2022年2月国产数据库排行榜:冠军宝座面临挑战,OceanBase 重返 TOP3

墨天轮

数据库 tdengine TiDB 国产数据库

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