多租户PaaS平台用户体系设计

798 阅读3分钟

背景

天下之事,合久必分,分久必合。随着云原生概念的兴起,借助于云,其将IT相关资源进行集中化管理。集中管理自然衍生了资源隔离的问题,租户概念的提出很好解决了这个问题:以租户级别进行资源的隔离。这是个融合的时代,各层间的界限越来越模糊,就像SaaS和PaaS,以业务为导向的策略,使得当前SaaS的话语权更加强大。所以PaaS需要拥抱SaaS,今天就用户账户体现,来说一说,PaaS如何更好的支撑好SaaS。

一些概念

租户

租户可以理解为客户,客户是上帝,在客户的眼里,他只认一条逻辑:我花钱买你的服务,你服务要到位。Everything as a service!

image.png

组织

租户下的组织结构,比如:XX公司,分级运营的组织结构如下:

image.png

用户

租户下的资源信息,用于登录系统的账号。

设计原则

1、租户间是资源隔离的,相互无法访问对方的数据

我们目前做到逻辑隔离,通过表里面增加租户ID的方式来实现多租户的支持。当然我们自然想做到物理隔离,相应的成本也会多很多。这块大家必须有租户间资源是隔离的概念。为了能更好的理解整个用户账户系统的设计初衷,我们可以认为租户间资源是物理隔离的。

2、组织也是一种资源,各租户都有自己的组织

每个租户是有各自的资源信息的,这些资源是租户私有的。比如:角色信息、用户信息、组织信息等。这里的组织是高层的抽象,可以是具体为各种资源,比如:区域信息、分公司信息等。

3、租户可以通过组织进行资源划分

租户和组织这块有很多相近的地方,这块需要深刻的理解下。我个人是这么理解的:租户是对全部资源物理层面的隔离,而组织是对租户私有资源逻辑上的隔离。

4、租户不支持多层级,租户有不同的类型

租户和组织这块有很多相近的地方,这块需要深刻的理解下:租户是对全部资源物理层面的隔离,而组织是对租户私有资源逻辑上的隔离。为了降低系统的复杂性,租户可以不支持多层级,只有一级,租户是有类型的,通过类型区分不同的业务场景。租户间是平等的,比如:XXX运营方也是独立的租户,与其它用户无本质区别。

5、通过组织的层级结构,来实现用户的数据权限

这块也是我们做的最大改动:轻租户,重组织。发挥组织的天然业务隔离的特性,通过组织树来实现资源数据权限。以此简洁的方式,能解决百分九十的业务需求。

6、运营侧只管理到租户级别,不应该涉及到租户的私有资源。

组织是租户的私有资源,运营管理侧自然不应该去管理他,也不方便管理。永远不要打破租户隔离的第一原则,如果真的要访问,背后隐藏了一层授权的逻辑。

34a7ef410043d870b7089266af43f872.png