SpiceDB —— 开源细粒度权限数据库
SpiceDB 是一个开源数据库系统,用于管理安全关键的应用程序的权限,其灵感来自于 Google Zanzibar 论文。
开发人员创建一个模式来模拟他们的权限要求,并使用客户端库将模式应用于数据库,将数据插入数据库,并查询数据以有效检查其应用程序中的权限。
SpiceDB 与其他系统的区别包括:
- 用于检查权限、列出访问权限和支持开发工具的富有表现力的gRPC和HTTP API
- 一个分布式的、并行的图形引擎,忠实于谷歌 Zanzibar 论文中描述的架构
- 一个灵活的一致性模型,可根据请求进行配置,包括对新敌人问题的抵抗力
- 一种富有表现力的模式语言,带有用于在 CI/CD 管道中进行快速原型制作、集成测试和验证设计的工具
- 支持memdb、MySQL、PostgreSQL、CockroachDB和Cloud Spanner的可插拔存储系统
- Prometheus 指标、结构化日志记录和OpenTelemetry 跟踪的深度可观察性
SpiceDB 的优点:
可验证的正确性
用于计算权限的数据在整个软件系统中具有最关键的正确性要求。尽管如此,开发人员仍会继续构建自己的临时解决方案,并与每个新项目的内部代码相结合。通过开发 SpiceDB 模式,你可以在更改任何应用程序代码之前更快地迭代和详尽地测试设计。当你向架构引入向后兼容的更改并希望确保系统保持安全时,这一点变得尤为重要。
最佳的灵活性
SpiceDB 模式语言建立在对象之间关系图的概念之上。这种 ReBAC 设计能够有效地支持所有流行的访问控制模型(例如RBAC和ABAC)和包含混合行为的自定义模型。
开发许可系统的现代解决方案都有一个相似的目标:将策略与应用程序分离。使用像 SpiceDB 这样的专用数据库不仅可以实现这一点,而且通过解耦策略操作的数据,使这一想法更进一步。SpiceDB 旨在在你的组织拥有的尽可能多的应用程序中共享单一统一的权限视图。这种策略已成为行业最佳实践,并在大公司(谷歌、GitHub、Airbnb)和小公司(Carta、Authzed)中取得了巨大成功。