写点什么

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

评论

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

运维的价值为何经常被挑战?哪些工作更有价值?

巴辉特

运维 SRE

在PyCharm中提升编程效率:通义灵码(DeepSeek)助手全攻略(新版)

阿里云云效

阿里云 云原生 通义灵码

运维生态重构进行时:从嘉为蓝鲸全栈智能观测中心V4.4看全栈观测的AI化跃迁路径

嘉为蓝鲸

智能运维 产品发布 全栈智能观测中心

嘉为蓝鲸自动化运维中心V2.6:规范运维范式,保障数字化转型成果

嘉为蓝鲸

AIOPS 自动化运维

火山引擎云上实战: DeepSeek R1 大模型(全尺寸)

火山引擎开发者社区

如何评估React Native结合小程序的技术架构?

xuyinyin

行业合作丨Altair 携手政产学研各界,共探AI驱动制造业数字化转型新路径

Altair RapidMiner

AI 数字化转型 HPC 仿真 仿真驱动设计

中物院超级计算与数字智能2025年大会:嘉为蓝鲸揭秘数智化运维转型关键突破点

嘉为蓝鲸

智能运维 数智化

什么是权威解析服务器?权威解析服务器有什么用?(国科云)

国科云

ITSM运营双引擎:科学度量指标体系×LLM智能分析实战

嘉为蓝鲸

运维 AIOPS ITSM

文献解读-SARS-CoV-2 variant Delta rapidly displaced variant Alpha in the United States and led to higher viral loads

INSVAST

生信服务 delta 变异检测 全基因组测序 基因分析

几个实操案例,告诉你什么是真正可用的企业级通用智能体

王吉伟频道

自动化 智能体 AI应用 AI Agents 通用智能体

RealClip:轻量级战略能否打开全球小游戏市场的巨额潜力?

xuyinyin

【开始报名啦】4 月 12 日 TiDB 社区活动在南京!传统技术栈替换和 AI 浪潮正当时,面向未来的国产数据库怎么选择?

TiDB 社区干货传送门

数据库 AI 分布式数据库 医疗 国产数据库

DApp开发中的LP分红系统:流动性激励机制的范式革命与生态重构

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

信用消费的"血栓"问题-逾期订单诊断指南

盐焗代码虾

支付宝 信用消费 问题解决 逾期

如何通过CAD坐标找点?

在路上

cad cad看图 CAD看图王

摊牌了!一文教会你轻松上手豆包MarsCode 编程助手!

火山引擎开发者社区

实战案例|利用MarsCode内置的DeepSeek服务,单元测试耗时缩短70%!

火山引擎开发者社区

和鲸科技执行总裁殷自强受邀主讲华中附属同济医院大模型应用通识首期课程

ModelWhale

人工智能 大数据 医疗

链游冷启动核弹:DeFi清算收益+社交裂变,7天零成本获取10万真实玩家

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

CAD中镜像功能真好用,大大提高绘图效率!

在路上

cad cad看图 CAD看图王

交易所开发:数字文明进化的基础设施革命

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 交易所开发代币开发

数仓架构告别「补丁」时代!全新批流一体 Domino 架构终结“批流缝合”

YMatrix 超融合数据库

数据仓库 数据架构 流式数仓 超融合数据库 YMatrix

技术赋能与创新实践:基于低代码平台的高性能应用开发

JeeLowCode低代码平台

低代码 低代码开发 低代码平台 低代码, 低代码选择

黑龙江省多家政务服务移动端及政企内部办公应用适配鸿蒙,加速智慧政务升级

最新动态

🔥 新手也能懂!Shopee商品详情API接口全攻略

Noah

【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(11)

HarmonyOS SDK

harmoyos

在PyCharm中提升编程效率:通义灵码(DeepSeek)助手全攻略(新版)

阿里巴巴云原生

阿里云 云原生 通义灵码

Netty源码—Pipeline和Handler

不在线第一只蜗牛

Netty

运维人的AI外挂来了!WeOpsV4.20&V5.20深度集成三大模型实现知识沉淀

嘉为蓝鲸

自动化运维 #WeOps

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