背景
天下之事,合久必分,分久必合。随着云原生概念的兴起,借助于云,其将IT相关资源进行集中化管理。集中管理自然衍生了资源隔离的问题,租户概念的提出很好解决了这个问题:以租户级别进行资源的隔离。这是个融合的时代,各层间的界限越来越模糊,就像SaaS和PaaS,以业务为导向的策略,使得当前SaaS的话语权更加强大。所以PaaS需要拥抱SaaS,今天就用户账户体现,来说一说,PaaS如何更好的支撑好SaaS。
一些概念
租户
租户可以理解为客户,客户是上帝,在客户的眼里,他只认一条逻辑:我花钱买你的服务,你服务要到位。Everything as a service!
组织
租户下的组织结构,比如:XX公司,分级运营的组织结构如下:
用户
租户下的资源信息,用于登录系统的账号。
设计原则
1、租户间是资源隔离的,相互无法访问对方的数据
我们目前做到逻辑隔离,通过表里面增加租户ID的方式来实现多租户的支持。当然我们自然想做到物理隔离,相应的成本也会多很多。这块大家必须有租户间资源是隔离的概念。为了能更好的理解整个用户账户系统的设计初衷,我们可以认为租户间资源是物理隔离的。
2、组织也是一种资源,各租户都有自己的组织
每个租户是有各自的资源信息的,这些资源是租户私有的。比如:角色信息、用户信息、组织信息等。这里的组织是高层的抽象,可以是具体为各种资源,比如:区域信息、分公司信息等。
3、租户可以通过组织进行资源划分
租户和组织这块有很多相近的地方,这块需要深刻的理解下。我个人是这么理解的:租户是对全部资源物理层面的隔离,而组织是对租户私有资源逻辑上的隔离。
4、租户不支持多层级,租户有不同的类型
租户和组织这块有很多相近的地方,这块需要深刻的理解下:租户是对全部资源物理层面的隔离,而组织是对租户私有资源逻辑上的隔离。为了降低系统的复杂性,租户可以不支持多层级,只有一级,租户是有类型的,通过类型区分不同的业务场景。租户间是平等的,比如:XXX运营方也是独立的租户,与其它用户无本质区别。
5、通过组织的层级结构,来实现用户的数据权限
这块也是我们做的最大改动:轻租户,重组织。发挥组织的天然业务隔离的特性,通过组织树来实现资源数据权限。以此简洁的方式,能解决百分九十的业务需求。
6、运营侧只管理到租户级别,不应该涉及到租户的私有资源。
组织是租户的私有资源,运营管理侧自然不应该去管理他,也不方便管理。永远不要打破租户隔离的第一原则,如果真的要访问,背后隐藏了一层授权的逻辑。