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