写点什么

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

评论

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

MySql 通过定义变量更新多表

Flychen

10分钟理解REACT概念

加百利

React 7月日更

视觉生产技术入门篇

若尘

视觉 7月日更

网络攻防学习笔记 Day76

穿过生命散发芬芳

网络攻防 7月日更

面试官:order by 是怎样排序的?怎么优化?

一个优秀的废人

Java MySQL 数据库 后端 order by

ZooKeeper 分布式锁 Curator 源码 01:可重入锁

程序员小航

zookeeper 源码 分布式锁 curator

干掉 Postman?测试接口直接生成API文档,这个工具贼好用

程序员小富

Java 编程 程序员 开发工具 大学生

北鲲云超算与传统的超算中心有什么不同?

北鲲云

Vue进阶(幺陆贰):vue render函数介绍

No Silver Bullet

Vue 7月日更 render

【从零开始学爬虫】采集京东商品信息

前嗅大数据

大数据 爬虫 数据采集 采集商城 采集京东

了解一下缓存分类、更新、清理策略以及如何处理缓存带来的风险

Jokay

缓存 缓存穿透 缓存击穿 缓存雪崩 缓存设计

数仓是如何与“夏令时”愉快的玩耍!

华为云开发者联盟

数仓 时区 GaussDB(DWS) 夏令时 夏令

邮件误删不用怕,试试这个方法帮你找回来

淋雨

EasyRecovery 文件恢复 硬盘数据恢复

事件Event:带你体验鸿蒙轻内核中一对多、多对多任务同步

华为云开发者联盟

鸿蒙 任务 OpenHarmony 事件 LiteOS-M

ClickHouse大数据领域企业级应用实践和探索总结

王知无

爬虫入门到放弃02:如何解析网页获取数据

叫我阿柒啊

爬虫 CSS选择器 xpath lxml

测试开发之系统篇-常用系统命令

禅道项目管理

测试 命令 测试开发

从Encoder-Decoder模型入手,探索语境偏移解决之道

华为云开发者联盟

神经网络 ASR 语境偏移 CLAS ASR模型

商业智能BI,会成为下一个风口吗?

瓴羊企业智能服务

阿里云 数据中台 数据分析 BI 商业智能

华为云GaussDB(for openGauss)推出重磅内核新特性

华为云开发者联盟

高可用 华为云 内核 GaussDB(for openGauss) 存储引擎

电脑有什么超简单的录屏方法

淋雨

视频剪辑 Camtasia 录屏软件

Redis on AEP 实践

BUG侦探

redis 傲腾AEP

科创人|决策易赵祝维:从满足应用需求到服务业务目标,从SaaS服务商到业务合作伙伴

科创人

名列GitHub必看榜!腾讯架构师纯手敲Spring Boot高级进阶笔记

Java架构追梦

Java 架构 腾讯 面试 springboot

MapReduce的参数优化

大数据技术指南

7月日更

从零开始学习3D可视化之3D界面

ThingJS数字孪生引擎

大前端 可视化 3D 3D可视化 数字孪生

阿里云低延时直播 RTS 能力升级 让直播推流效果更佳

阿里云CloudImagine

阿里云 音视频 直播技术 视频云

我可以减肥失败,但我的 Docker 镜像一定要瘦身成功!

尔达Erda

Docker 开源 云原生 镜像 瘦身

深度解析HashMap底层实现架构

华为云开发者联盟

Java hashmap 底层 底层架构 Map接口

Ubuntu Server 20.04搭建Redis集群

玏佾

redis redis集群 搭建 redis cluster

HarmonyOS Connect伙伴峰会重庆站举办 生态建设持续完善

科技汇

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