Google Docs ReBAC Example

If RBAC were applied to a document editing platform, roles such as Editor, Viewer, or Contributor would be defined. Users assigned to these roles would have the same level of access to every document they are permitted to see based on their role. For instance:

  • Uniform Access: An Editor role would typically allow a user to edit all documents they have access to, without considering the nature of their relationship with the document creator or other collaborators.
  • Limited Personalization: RBAC doesn't easily account for the varying levels of trust or collaboration needed. For example, a user might be trusted to edit one document but only view another, based on the document owner's discretion.

By incorporating ReBAC, the platform can assign permissions that reflect the dynamic relationships between users and documents:

  • Contextual Editing Rights: A user could be granted editing rights to a document only if they have been invited by the document owner or if they have a specific role in relation to that document, such as a co-author or reviewer.
  • Selective Collaboration: Access can be varied based on the document's lifecycle or project phase. For instance, during initial drafting, only certain users may have edit access, which could expand to a broader group for feedback later on.
  • Temporary Access: A contributor might be granted temporary access to add content to a document, which automatically reverts to view-only once their contribution is complete.

In the context of a collaborative document editing platform, ReBAC not only supports the intricacies of document ownership and collaboration but also adapts to the fluid nature of user interactions. It respects the unique relationships that can exist between different users and each document, providing a level of control and customization that RBAC cannot, by its more static nature, accommodate. This adaptability is crucial for platforms needing to manage nuanced access rights that change as the collaborative work progresses.

Was this helpful?

On this page