2个版本
| 0.1.1 | 2023年12月14日 |
|---|---|
| 0.1.0 | 2023年12月8日 |
#1006 in 数据库接口
25KB
567 行
该库实现了一个内存中的基于关系的访问控制数据库,该数据库受Google的Zanzibar启发。
命名
对象
Object 是一个包含值 (namespace, id) 的元组。它代表一个对象,例如用户。例如:(users, alice)。
集合
Set 是一个包含值 (namespace, id, permission) 的元组。它代表对 Object 的权限。例如:(files, foo.pdf, read)。
用法
RelationGraph-结构体包含所有关系的图。可以在以下之间创建关系
Object和Set=> 用户alice可以读取文件foo.pdf。Set和Set=> 每个可以读取文件foo.pdf的人都可以读取文件bar.pdf。
特别之处
- 使用
*-id 作为通配符id,从该id创建到命名空间中每个其他id的虚拟关系。例如:(user,alice) -> (file,*,read) => 用户alice可以读取所有文件
路线图
- 实现raft协议以允许高可用性部署
服务器
可以在Git存储库中找到用于与数据库交互的基本基于gRPC的服务器。
贡献
我欢迎任何形式的贡献。请随时使用GitHub Issue提交功能请求和错误报告。PR也受到欢迎。
许可
此库根据LGPLv3许可。
依赖
~2.1–3MB
~49K SLoC