写点什么

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

评论

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

MultipartFile与File的一些事

华为云开发者联盟

spring File 文件 MultipartFile 中转文件

SAE 最佳实践范本:助力视野数科进入云原生“快车道”

Serverless Devs

Serverless SAE

可能是推荐系统最详细且简单的入门教程

JavaEdge

1月月更

java开发之Mybatis 快问快答

@零度

mybatis JAVA开发

架构实战营模块五作业

lchx08

「架构实战营」

使用 Lambda 表达式实现超强的排序功能

看山

Lambda java8 排序 1月月更

过年回家前,先签收这份“外挂”

龙智—DevSecOps解决方案

Atlassian Confluence 到期日提醒 confluence插件

Jira Software 年度总结:12个重要功能大放送!

龙智—DevSecOps解决方案

Jira Atlassian Atlassian Jira

低代码实现探索(二十五)DDD,事件,指令

零道云-混合式低代码平台

尚硅谷2022版Java课程体系,霸气来袭

@零度

Java 尚硅谷

QuanXiang 2022 Q1 开源路线图

全象云低代码

开源 工作流 低代码 表单

一文读懂HarmonyOS服务卡片怎么换肤

HarmonyOS开发者

HarmonyOS

微博评论高性能高可用计算架构

张扬

ReactNative进阶(二十七):createMaterialTopTabNavigator 顶部导航组件

No Silver Bullet

1月月更 ReactNative

迪斯尼《曼达洛人》艺术总监和制作设计师亲自揭秘背后的虚拟场景制作

龙智—DevSecOps解决方案

perforce 曼达洛人 西部世界 虚拟场景

焱融科技年度报告如约而至,如 Beijing 初雪

焱融科技

云计算 分布式 云原生 高性能 文件存储

『TDengine2021用户故事』征文活动进入投票阶段!

TDengine

tdengine

「元宇宙十万个为什么」:为什么元宇宙值得投资?

BeeWorks

TiDB 在国信证券海量数据高并发场景中的实践

PingCAP

【云图说】DDS读写两步走,带您领略只读节点的风采

华为云开发者联盟

数据库 节点 DDS 文档数据库 DDS读写

一个低成本确保IM消息时序的方法探讨

BeeWorks

模块五 - 微博评论系统高性能高可用设计

圈圈gor

架构实战营 #架构实战营 「架构实战营」

jar包与war包的部署

你?

如何快速实现离散企业全链路数字化管理

华为云开发者联盟

数据采集 华为云IoT 智能制造 黑湖科技 数据中枢

PHP 遇见 Serverless,帮你解决这些痛点!

Serverless Devs

虎符推出AMM流动性资金池 支持现货专区做市赚收益

区块链前沿News

流动性 虎符 Hoo 虎符交易所 AMM

Spring 都在用的技术,你确定不过来看看?3️⃣

XiaoLin_Java

模块五作业-微博评论高性能高可用计算架构

CH

架构实战营

一起看看MySQL中的隐藏列

华为云开发者联盟

MySQL 事务 主键 唯一索引 隐藏列

WTM活动回顾|WomenTechmakers 2021 Courage to Create

江湖老铁

认识 Express 的 res.send() 和 res.end()

编程三昧

JavaScript 前端 nodejs Express 1月月更

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