6 个版本 (3 个破坏性更新)
0.4.5 | 2024年4月15日 |
---|---|
0.4.2 | 2023年11月27日 |
0.4.1 | 2023年7月10日 |
0.3.0 | 2023年6月7日 |
0.1.0 | 2022年5月2日 |
#1218 在 网络编程
440KB
6.5K SLoC
Cerbos Rust SDK
Rust 客户端库用于 Cerbos:一个开源核心、语言无关、可扩展的授权解决方案,通过编写应用程序资源的上下文感知访问控制策略,使用户权限和授权易于实现和管理。
使用方法
cargo add cerbos
客户端可以通过实例化 CerbosAsyncClient
或 CerbosSyncClient
分别以异步或同步方式使用。
use cerbos::sdk::attr::attr;
use cerbos::sdk::model::{Principal, Resource};
use cerbos::sdk::{CerbosAsyncClient, CerbosClientOptions, CerbosEndpoint, Result};
#[tokio::main]
async fn main() -> Result<()> {
let opt = CerbosClientOptions::new(CerbosEndpoint::HostPort("localhost", 3593));
let mut client = CerbosAsyncClient::new(opt).await?;
let principal = Principal::new("alice", ["employee"])
.with_policy_version("20210210")
.with_attributes([
attr("department", "marketing"),
attr("geography", "GB"),
attr("team", "design"),
]);
let resource = Resource::new("XX125", "leave_request")
.with_policy_version("20210210")
.with_attributes([
attr("department", "marketing"),
attr("geography", "GB"),
attr("team", "design"),
attr("owner", "alice"),
attr("approved", true),
attr("id", "XX125"),
]);
let resp = client
.is_allowed("view:public", principal, resource, None)
.await?;
println!("Allowed={:?}", resp);
Ok(())
}
开发
运行测试
cerbos run --set=storage.disk.directory=resources/store -- cargo test
依赖关系
~10–20MB
~272K SLoC