组织模板
组织模板 是一种用于多租户应用的访问控制设计。它建立在基于角色的访问控制 (RBAC) 的基础上,但适用于多租户环境,其中组织代表企业、团体或用户。
在组织层面,需要进行访问控制以管理资源的权限。
以下是一个使用 Notion 的示例,这是一个流行的协作工具,也是一个典型的多租户应用。它支持各种 认证 (Authentication) 和 授权 (Authorization) 功能:
- 你可以使用一个账户创建和加入多个工作区,而不需要为每个工作区创 建单独的账户。
- Notion 在所有工作区中使用 相同的 访问级别,例如“工作区所有者”和“成员”,即使你可能期望每个工作区有不同的访问级别。
在本章中,我们将重点介绍组织模板,它指的是组织层面的 授权 (Authorization) 设计。
要正确设置它,你需要了解 [组织如何运作] 以及涉及的不同实体。如果你还没有查看这些内容,请务必阅读这些章节。
理解组织模板
组织权限
组织权限是指在组织上下文中执行某个操作的 授权 (Authorization)。组织权限应表示为一个有意义的字符串,同时也作为名称和唯一标识符。
例如,edit:resource
。
没有组织的上下文,组织权限是没有意义的。例如,在组织 org1
的上下文中,edit:resource
与在组织 org2
的上下文中是不同的,因为它们指向不同的资源(org 1
vs org 2
)。
组织角色
组织角色是可以分配给用户的组织或 API 权限 (Permissions)(在 Logto Cloud 中直接定义在 API 资源中的权限)的集合。
没有组织的上下文,组织角色是没有意义的。例如,在组织 org1
的上下文中,admin
与在组织 org2
的上下文中是不同的。
我可以将定义在 API 资源级别的权限分配给组织角色吗?
是的,你可以将 API 权限分配给组织角色,而不仅仅是组织级别的权限。
Logto Cloud 中的 API 资源主要保护用户 / 系统级别的资源,但当系统和组织共享端点时,Logto 允许你将 API 权限分配给组织角色,以实现灵活性。
组织模板
组织模板指的是适用于每个 组织 的组织权限和角色的集合。它被视为组织级别的基于角色的访问控制。
想象一个典型的协作应用,它们自然共享相同的访问控制“模板”,定义了访问级别以及用户在组织中可以做什么。在 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,从而采用更强大的方法来满足你的特定业务和产品需求。要了解 RBAC,请参阅此 部分。