|
| 1 | +id: "rebac" |
| 2 | +label: "ReBAC vs Zanzibar" |
| 3 | +title: "ReBAC vs Zanzibar" |
| 4 | +subtitle: "Comparing and contrasting ReBAC and Zanzibar." |
| 5 | +cta: | |
| 6 | + Comparing and contrasting ReBAC and Zanzibar |
| 7 | +description: "This paper is hosted by [Authzed](https://authzed.com?utm_source=za&utm_medium=menu), the creator of the open source, Zanzibar inspired, fine-grained permissions database [SpiceDB](https://github.com/authzed/spicedb)." |
| 8 | +highlightColor: "violet" |
| 9 | +groups: |
| 10 | + page-1-col-1: |
| 11 | + what-is-rebac: |
| 12 | + content: | |
| 13 | + What is ReBAC? Relationship-based access control. The term was first coined in 2006 by Dr. Carrie E. Gates in her paper: [Access Control Requirements for Web 2.0 Security and Privacy](https://www.researchgate.net/publication/240787391_Access_Control_Requirements_for_Web_20_Security_and_Privacy) |
| 14 | +
|
| 15 | + She observed an increasing trend of user data on the web and a corresponding increase in ways to interact with that data. |
| 16 | + relationship-graph: |
| 17 | + content: | |
| 18 | + In response to inflexible and not expressive enough ACL models, she proposed controlling data access based on literal relationships between the data owner and receiver. |
| 19 | +
|
| 20 | + _“the data owner can control the release of their personal information in the same manner he would control it in the analog world— based on their relationship with the data receiver rather than the receiver’s role.”_ |
| 21 | +
|
| 22 | + She Introduced the idea of using a graph (in this case a social graph) to answer authorization questions. |
| 23 | +
|
| 24 | + zanzibar-system: |
| 25 | + content: | |
| 26 | + ReBAC is just a framework for modeling authorization. Zanzibar is an opinionated design that incorporates ReBAC concepts with concrete implementations of systems that make authorization available and scalable for a wide set of applications. |
| 27 | + page-1-col-2: |
| 28 | + zanzibar-goals: |
| 29 | + content: | |
| 30 | + These high level goals describe how Zanzibar makes a ReBAC system usable and this paper serves as an engineering blueprint for achieving the goals. |
| 31 | + page-2-col-1: |
| 32 | + nested-groups: |
| 33 | + content: | |
| 34 | + Authorization services that infer a relationship graph from an existing database schema or map a graph to database tables run into issues with nested groups. Directly storing relation tuples is a key decision that supports nested groups. |
| 35 | + scaling: |
| 36 | + content: | |
| 37 | + Not all applications that use Zanzibar may have Google’s traffic and not all Zanzibar implementations will be scaled to the size of Google’s internal implementation. However, the techniques used in Google’s implementation are still applicable to accomplish the same goals: Correctness, Flexibility, Low latency, HA, and Large scale. |
| 38 | + page-2-col-2: |
| 39 | + engineering-blueprint: |
| 40 | + content: | |
| 41 | + This paper serves as an engineering blueprint. While the authorization model supported by Zanzibar (which incorporates concepts from ReBAC) is useful, the architecture designs and lessons learned presented are what make this paper so unique. |
| 42 | + consistency-model: |
| 43 | + content: | |
| 44 | + Zanzibar’s consistency model is what allows the relationship graph to evolve with user data and interactions while still providing correct ACLs. |
| 45 | + page-4-col-1: |
| 46 | + config-language: |
| 47 | + content: | |
| 48 | + This configuration language allows for reasoning about and implementing authorization models independent of application data and schema. |
| 49 | + page-5-col-2: |
| 50 | + zanzibar-annotations: |
| 51 | + content: | |
| 52 | + The following section dives into the internals of the system. See the [Introduction to Zanzibar](#annotations/intro) annotations for commentary. |
| 53 | + page-11-col-2: |
| 54 | + lessons-learned: |
| 55 | + content: | |
| 56 | + Engineering notes: Any implementation of Zanzibar the service (not just ReBAC concepts) must incorporate these lessons from Google. |
| 57 | + page-12-col-1: |
| 58 | + finer-grained-rbac: |
| 59 | + content: | |
| 60 | + To this point, ReBAC is sometimes referred to as _finer-grained_ RBAC. |
0 commit comments