组织模板
组织模板 是多租户应用的访问控制设计。它基于 RBAC(基于角色的访问控制) 的基础,但适用于多租户环境,其中组织代表企业、团体或用户。
在组织层面,需要访问控制来管理资源的权限。
以下是一个使用 Notion 的示例,这是一种流行的协作工具,也是一个典型的多租户应用。它支持各种认证 (Authentication)和授权 (Authorization)功能:
- 你可以使用一个账户创建和加入多个工作区,而不需要为每个工作区创建单独的账户。
- Notion 在所有工作区中使用相同的访问级别,如“工作区所有者”和“成员”,即使你可能期望每个工作区有不同的访问级别。
在本章中,我们将重点关注组织模板,它指的是组织层面的授权 (Authorization) 设计。
要正确设置它,你需要了解组织如何运作以及涉及的不同实体。如果你还没有查看这些内容,请务必阅读这些章节。
理解组织模板
组织权限
组织权限指的是在组织上下文中执行某个操作的授权 (Authorization)。组织权限应表示为一个有意义的字符串,同时也作为名称和唯一标识符。
例如,edit:resource
。
组织权限在没有组织的上下文时是没有意义的。例如,在组织 org1
的上下文中,edit:resource
与在组织 org2
的上下文中是不同的,因为它们指向不同的资源(org 1
vs org 2
)。
组织角色
组织角色是 组织权限 或 API 权限(在 Logto 控制台中的 API 资源 中直接定义的 API 权限)的集合,可以分配给用户。
组织角色在没有组织的上下文时是没有意义的。例如,在组织 org1
的上下文中,admin
与在组织 org2
的上下文中是不同的。
组织模板
组织模板指的是适用于每个组织的组织权限和角色的集合。它被视为组织级别的基于角色的访问控制。
想象一个典型的协作应用,它们自然共享相同的访问控制“模板”,定义了访问级别以及用户在组织中可以做什么。在 Logto 中,我们称之为“组织模板”。
让我们通过一个例子来理解如何将所有内容连接起来:
John 和 Sarah 在不同的组织中,在不同的组织上下文中拥有不同的角色。
从这个图中,你需要知道以下信息:
- John 隶属于两个组织,使用电子邮件
[email protected]
作为他的唯一标识符。他在Organization A
中担任admin
职位,在Organization B
中是guest
。 - Sarah 关联一个组织,使用电子邮件
[email protected]
作为她的唯一标识符。她是Organization B
的admin
。 Admin
、Member
和Guest
的角色在组织内指定,并且这些角色在各个组织中是一致的。- 可以在组织模板设置中创建其他角色。这些新创建的角色将应用并共享给所有组织。
在 Logto 中,组织模板是专为组织设计的访问控制模型。虽然它基于基于角色的访问控制 (RBAC),但它适用于不同的场景。
当你需要为组织设置角色和权限时,请使用组织模板。
对于没有组织级别的简单 B2C 应用,请使用用户/系统级别的 RBAC。
你可以在 Logto 中同时使用 组织模板 和 用户/系统级别的 RBAC,以更强大的方式满足你的特定业务和产品需求。