SpiceDB
SpiceDB是一个受Zanzibar启发的数据库,用于存储、计算和验证应用程序的权限。
开发人员创建一个模式,模拟他们的权限要求,并使用一个客户端库将模式应用到数据库中,将数据插入数据库,并查询数据,以便在他们的应用程序中有效地检查权限。
SpiceDB区别于其他系统的特点包括。
- 用于检查权限、列出访问权限和支持开发工具的表达式API
- 一个忠实于Google Zanzibar论文的架构,包括对新敌人问题的抵抗力
- 一个直观的、富有表现力的模式语言,并配有一个游乐场开发环境
- 一个强大的图引擎,支持分布式并行评估
- 支持内存、PostgreSQL和CockroachDB的可插拔存储。
- 通过Prometheus指标、结构化日志和分布式跟踪进行深度观察
参见CONTRIBUTING.md,了解如何贡献和执行常见任务,如构建项目和运行测试。
为什么是SpiceDB?
可验证的正确性
用于计算权限的数据在整个软件系统中具有最关键的正确性要求。
尽管如此,开发人员继续建立他们自己的临时解决方案,并与每个新项目的内部代码相结合。
通过开发SpiceDB模式,你可以在改变任何应用程序代码之前更快速地迭代并详尽地测试设计。
当你对模式引入向后兼容的变化并希望确保系统保持安全时,这变得尤为重要。
最佳的灵活性
SpiceDB模式语言建立在对象之间关系图的概念之上。
这种ReBAC设计能够有效支持所有流行的访问控制模型(如RBAC和ABAC)和包含混合行为的自定义模型。
开发权限系统的现代解决方案都有一个类似的目标:将_策略_与应用脱钩。
使用像SpiceDB这样的专用数据库不仅可以做到这一点,而且通过将策略操作的数据脱钩,使这个想法更进一步。
SpiceDB被设计成在你的组织有多少个应用就共享一个统一的权限视图。
这个策略已经成为一个行业的最佳实践,在大公司(谷歌,GitHub,Airbnb)和小公司(Carta,Authzed)都得到了巨大的成功。
入门
安装SpiceDB
SpiceDB目前由Homebrew打包,适用于macOS和Linux。
单个版本和其他格式也可以在发布页面上找到。
brew install authzed/tap/spicedb
SpiceDB也可以作为一个容器镜像。
docker pull quay.io/authzed/spicedb:latest
对于生产使用,我们强烈建议使用与最新版本相对应的标签,而不是latest 。
本地运行SpiceDB
spicedb serve --grpc-preshared-key "somerandomkeyhere" --grpc-no-tls
访问http://localhost:8080,查看接下来的步骤,包括加载模式
开发你自己的模式
与你的应用程序集成
- 按照《保护你的第一个应用程序》指南学习最新的最佳做法
- 探索Buf Registry上的gRPC API文档
- 安装zed并与实时数据库互动