6 个版本
0.2.0 | 2024年5月27日 |
---|---|
0.1.4 | 2024年2月5日 |
0.1.3 | 2023年8月16日 |
0.1.2 | 2023年6月28日 |
0.1.1 | 2023年5月11日 |
#126 在 HTTP服务器 中
每月332次下载
76KB
2K SLoC
Cedar Agent
什么是Cedar-Agent?
Cedar-Agent 是一个设计用于高效管理策略存储和数据存储的 HTTP 服务器。它提供了与用于将权限定义为策略的 Cedar 语言的无缝集成。
使用 Cedar-Agent,您可以通过利用 Cedar 策略轻松地控制和监控对应用程序资源的访问。如果您不熟悉 Cedar,我们鼓励您访问 Cedar 网站 和 沙盒 来了解更多信息。
阅读以下博客文章了解更多
策略存储管理
Cedar-Agent 包含一个存储库,允许您创建、检索、更新和删除策略。这些策略定义了谁可以访问您应用程序中的哪些资源。策略存储提供了一种集中和灵活的方式来管理权限,从而实现对用户访问的精细控制。
特色策略存储
- 内存中
- Redis
数据存储管理
除了策略存储,Cedar-Agent 还提供了一个内存数据存储。此数据存储允许您高效地存储和管理应用程序数据。通过将数据存储与 Cedar-Agent 集成,您可以根据传入的 HTTP 请求对存储的数据执行授权检查。
特色数据存储
- 内存中
- Redis
模式存储管理
Cedar-Agent 支持存储自定义模式,这些模式保存了您的数据类型和操作的形式。利用模式存储,您可以为应用程序中使用的所有对象创建严格的定义。Cedar-Agent 将对所有策略和数据与该模式进行验证。特色策略存储
- 内存中
- Redis
授权检查
Cedar-Agent 的一个关键特性是其执行存储策略和数据授权检查的能力。
通过评估Cedar策略,Cedar-Agent确保每个用户的访问仅限于他们有权访问的资源。
基于传入的HTTP请求进行授权检查,提供了一个易于使用、强大且安全的机制,用于控制对应用程序的访问。
Cedar-Agent为管理应用程序中的策略、数据和授权检查提供了一整套解决方案。凭借其与Cedar的无缝集成和强大的HTTP服务器功能,Cedar-Agent使您能够执行细粒度访问控制并有效地保护资源。
使用方法
要使用Cedar-Agent,请按照以下步骤操作
先决条件
在继续之前,请确保您已将Rust和Cargo安装在您的系统上。如果您尚未安装,可以访问官方Rust安装页面,并按照您操作系统的说明进行操作。
克隆仓库
首先,将Cedar-Agent仓库克隆到您的本地计算机上
git clone https://github.com/permitio/cedar-agent.git
cd cedar-agent
构建
要构建Cedar-Agent,请使用以下命令
cargo build
配置
Cedar Agent的配置可以通过环境变量和命令行参数来实现。
- Cedar Agent将监听传入HTTP请求的端口号。默认为
8180
。
CEDAR_AGENT_PORT
环境变量。
--port
,-p
命令行参数。 - 使用
Authorization
头部强制执行的认证令牌。默认为None
。
CEDAR_AGENT_AUTHENTICATION
环境变量。
--authentication
,-a
命令行参数。 - HTTP服务器的地址。默认为
127.0.01
。
CEDAR_AGENT_ADDR
环境变量。
--addr
命令行参数。 - 过滤日志的日志级别。默认为
info
。
CEDAR_AGENT_LOG_LEVEL
环境变量。
--log-level
,-l
命令行参数。 - 从json文件加载模式。默认为
None
。
CEDAR_AGENT_SCHEMA
环境变量。--schema
,-s
命令行参数。 - 从json文件加载数据。默认为
None
。
CEDAR_AGENT_DATA
环境变量。--data
,-d
命令行参数。 - 从json文件加载策略。默认为
None
。CEDAR_AGENT_POLICIES
环境变量。--policies
命令行参数。
当配置Cedar Agent时,命令行参数的优先级高于环境变量。
运行
有几种方法可以运行Cedar Agent
使用cargo运行
要运行Cedar-Agent,请使用以下命令
cargo run
要将任何参数添加到命令中,请将它们附加到--
之后,例如
cargo run -- --port 8080
运行二进制文件
要运行二进制文件,请确保您已执行构建步骤,然后运行此命令
./target/debug/cedar-agent
要检查可以向二进制文件传递的参数,请运行
./target/debug/cedar-agent --help
使用docker运行
要执行Cedar Agent的Docker镜像,请使用以下命令:
docker run -p 8180:8180 permitio/cedar-agent
测试
要测试Cedar-Agent,请使用以下命令:
cargo test
API端点
运行Cedar-Agent后,应用程序提供了使用Rapidoc和Swagger UI的全面API文档和端点模式,您可以通过以下路径访问:
- https://127.0.0.1:8180/rapidoc:在您的网络浏览器中访问此路径,以探索由Rapidoc工具提供的交互式API文档。它提供了每个端点的详细信息,包括它们的参数、请求体和响应结构。
- https://127.0.0.1:8180/swagger-ui:访问此路径以与Swagger UI交互,它提供了一个用户友好的界面来浏览API端点。它展示了可用路由的视觉表示,包括它们的描述、请求和响应模式以及示例请求。
快速入门
-
使用此命令存储模式
curl -X PUT -H "Content-Type: application/json" -d @./examples/schema.json https://127.0.0.1:8180/v1/schema
-
使用此命令存储策略
curl -X PUT -H "Content-Type: application/json" -d @./examples/policies.json https://127.0.0.1:8180/v1/policies
-
使用此命令存储数据
curl -X PUT -H "Content-Type: application/json" -d @./examples/data.json https://127.0.0.1:8180/v1/data
-
使用此命令执行IsAuthorized检查
curl -X POST -H "Content-Type: application/json" -d @./examples/allowed_authorization_query.json https://127.0.0.1:8180/v1/is_authorized
响应是
{ "decision": "Allow", "diagnostics": { "reason": [ "admins-policy" ], "errors": [] } }
如您所见,用户被允许访问资源,因为策略ID
admins-policy
允许。
检查不允许访问资源的用户curl -X POST -H "Content-Type: application/json" -d @./examples/denied_authorization_query.json https://127.0.0.1:8180/v1/is_authorized
响应是
{ "decision": "Deny", "diagnostics": { "reason": [], "errors": [] } }
如您所见,用户被拒绝访问资源,因为没有策略允许此请求。
有关执行请求的更多详细信息,您可以查看示例目录
使用OPAL大规模运行Cedar-agents
想要运行多个Cedar-agents并加载您所需的数据和策略?尝试OPAL。OPAL(开放策略管理层)是Cedar-Agent的姐妹项目,已成为在规模上管理策略代理(包括OPA等)的事实标准。查看OPAL文档中的Cedar+OPAL教程。
社区
和我们谈谈Cedar Agent,或者一般性的授权 - 我们非常乐意听到您的意见 ❤️
您可以在我们的GitHub讨论中提出问题,要求添加功能到路线图,在GitHub问题中报告问题,加入我们的Slack社区讨论授权、开源、实时通信、技术或任何其他内容!
如果您正在使用我们的项目,请考虑给我们一个⭐️
贡献
如果您遇到任何问题或对改进有建议,请在我们Cedar-Agent GitHub存储库中打开一个问题,以获得社区的帮助。
- 欢迎拉取请求!(请确保包括通过测试和文档)
- 在提交PR之前 - 在GitHub上打开一个问题,或者确保您的PR很好地解决了现有问题。
依赖项
~29–61MB
~1M SLoC