#访问控制 #关系 #命名空间 #读取文件 #rebac

rebacdb

受Google Zanzibar启发的基于关系的访问控制数据库

2个版本

0.1.1 2023年12月14日
0.1.0 2023年12月8日

#1006 in 数据库接口

LGPL-3.0或更高版

25KB
567

该库实现了一个内存中的基于关系的访问控制数据库,该数据库受Google的Zanzibar启发。

命名

对象

Object 是一个包含值 (namespace, id) 的元组。它代表一个对象,例如用户。例如:(users, alice)。

集合

Set 是一个包含值 (namespace, id, permission) 的元组。它代表对 Object 的权限。例如:(files, foo.pdf, read)。

用法

RelationGraph-结构体包含所有关系的图。可以在以下之间创建关系

  • ObjectSet => 用户alice可以读取文件foo.pdf。
  • SetSet => 每个可以读取文件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