一、用户(user)
- 一个用户就是一个有身份验证信息的API消费实体
- 一个用户可以属于多个租户/项目/组织, 角色
二、租户(tenant)
- 租户其实是各个服务中的一些可以访问的资源集合。这些资源集合可供多个用户使用,这也是为什么用户默认的总是绑定到某些租户上
- 用户通过租户访问计算管理资源(这里的计算管理资源可以理解为openstack服务),也就是说必须指定一个相应的租户才可以申请openstack服务
- 各租户相互独立,在当前租户下无法查看其他租户信息
很多时候,我们需要有租户的概念,使用租户来分开用户的业务数据。譬如钉钉就是一个多租户系统,每家企业在钉钉里面都是一个租户。
我们可以在用户之上增加租户模块,让租户和用户、资源(应用)建立多对多的关系。同时,用户组、组织机构和角色就都可以按租户进行区分了。
假设每个租户都有「管理员」这个角色,那么1万个租户在系统里面就会有1万个名字叫管理员的角色,只不过每个租户都只能看到自己的那个「管理员」角色罢了。如果A租户建立了一个「业务员」角色,那么B租户是没有这个角色的,他想要的话,必须自己去建立一个。
三、角色(role)
- 角色是可执行一特定系列操作的用户特性,角色规定了用户在某个租户中的一系列权利和特权
- 一般默认有超级管理员权限admin和普通管理员权限member
四、三者之间的关系:
1、租户可以有多个角色和用户
2、用户可以有多个角色和租户
3、角色赋予用户操作功能的权限
五、举例
以公司某员工需要向公司财务部门申请出差费用报销为例,说明三者关系。
用户代表员工A, 他持有相关的信息,例如姓名、工号、电子邮箱等。 租户对应项目组。员工A可以同时属于不同的几个项目组。当员工A提出出差费用报销的请求时,必须指定他所属的项目组的一个。而角色则规定了员工A在某一个项目组所拥有的权限,比如什么费用可以报销,什么不可以报销。