zl程序教程

您现在的位置是:首页 >  其它

当前栏目

RBAC在CSD下的参考实现

实现 参考 Rbac
2023-09-14 09:00:28 时间
        权限模块是MIS系统中不可或缺的重要组成。员工在进行正常的访问前,服务器往往都需要认证员工的身份。确认员工是否授权,也就是进行访问控制。访问控制管理允许被授权的主体(个体或团体组织)对某些资源的访问,同时拒绝向非授权的主体提供服务。权限模块的逻辑模型一般形式如下:        谁(员工/角色)对什么(应用模块)是否具有某种操作的授权(授权状态:gran

        权限模块是MIS系统中不可或缺的重要组成。员工在进行正常的访问前,服务器往往都需要认证员工的身份。确认员工是否授权,也就是进行访问控制。访问控制管理允许被授权的主体(个体或团体组织)对某些资源的访问,同时拒绝向非授权的主体提供服务。权限模块的逻辑模型一般形式如下:

       谁(员工/角色)对什么(应用模块)是否具有某种操作的授权(授权状态:grant、deny、revoke等)。即who + what + how操作模型。

       目前业界比较流行的授权模型有RBAC、ACL等。本文主要阐述CSD权限控制模块的逻辑组成,童鞋们可以根据项目的实际情况和具体架构,在可维护性、灵活性、完整性等方面对目前的权限模型进行自己的灵活定制。

1. 什么是RBAC?

       关于访问控制,人们提出了各种保护数据并加以控制的安全模型,如自主访问控制(Discretionary Access Control,DAC)、强制访问控制(MandatoryAccess Control,MAC),它们通常都是基于员工-组的安全模型。而RBAC(Role-Based Access Control)具有简化管理的优越性,它更适合大型系统的管理应用。访问控制策略体现在RBAC模型里是员工-角色、角色-权限和角色-角色之间的关系。NIST(National Institute ofStandards and Technology)制定的RBAC模型体系由4个模型组成,分别是基本模型RBAC0,角色分级模型RBAC1,角色限制模型RBAC2和统一模型RBAC3。

2. RBAC模型体系简介       2.1. RBAC0

       (1). U:表示用户集;R:表示角色集;P:表示权限集;S:表示会话集:

       (2). PR:P×R,是权限到角色的多对多指派:

       (3). UA:U×R,是用户到角色的多对多指派:

       (4). SU:S→U,会话和用户的单一映射,user(sn)表示创建会话sn的用户;

       (5). SR:S→R,会话和角色子集的映射,roles(sn)表示会话sn对应的角色集合;

       (6). 会话sn具有的权限集 P(sn)。

      2.2. RBAC1 RBAC2

        RBAC1引入角色继承关系,(一般继承关系,受限继承关系),RBAC2模型增加了责任分离关系,它规定了角色被授予员工,或者权限被授予角色时,以及当员工在某一时刻激活某一角色时,所应遵循的强制性规则。

      2.3. RBAC3

        RBAC3包含了RBAC1和RBAC2,既提供了角色间的继承关系,又提供了责任分离关系

3.RBAC模型的实现

         这里,主要从授权模型和权限校验两部分来讨论实现思路。

       3.1 授权模型

         建立如下授权模型:

       下面,针对授权模型中的几个关键部分进行一下描述:

      A. 授权

       按照RBAC模型,在授权时分为配置资源以及资源的操作、授予角色对资源的操作权限,分配角色给员工这几步来完成,其中:

       a. 资源配置以及资源的操作需要维护资源与资源操作之间的关联模型。

       b. 授予角色对资源的的操作权限需要维护资源与角色之间的关联模型。

       c. 分配角色给员工需要维护角色与员工之间的关联模型。

       d. 权限的继承通过角色的自关联完成,即角色可拥有子角色,子角色继承父角色的权限

     B. 权限的排斥与包含

       权限的排斥与包含,是通过在资源的操作权限模型中,增加自关联模型以及定义哪些资源的操作权限是排斥和包含的,在授权时可以看到同样需要维护的只是资源权限的自关联模型。

      3.2 资源权限校验

       根据上面的授权模型,在作资源权限校验的时候需要经过以下几个步骤:

       A.  判断员工所在的角色是否拥有对资源进行操作的权限;

       B. 递归遍历员工所在角色的父角色,判断是否拥有对资源进行操作的权限;

       备注:整个过程是一个递归过程,当遍历员工本身的角色找不到相应的操作权限时,开始进行父类角色的递归查找。可以看出,它和JVM加载class前进行唯一加载判断的法则有着一致的顺序:自底向下判断是否加载过(是否具有操作权限)。

        C. 数据权限的校验

       RBAC模型将数据映射为RBAC中的资源,对数据的操作则映射为资源的操作,然后将此资源以及资源的操作构成的权限授予角色,将角色分配给员工完成数据权限的授权过程。

       备注:该模型包含数据权限的继承(自关联资源模型),数据权限授予主体的多样性。

4.CSD的权限控制模型

       CSD权限控制引入了员工和组织机构之间的关联模型,但角色之间的简单继承关系带来了大量的数据冗余,下面是CSD的权限控制ER模型:

备注:

涉及到的数据表如下:

APP_USER:登录用户相关信息

APP_ROLE:系统角色表

APP_PERMISSION:系统权限表

APP_ORG:组织信息表

APP_ROLE_PERMISSION:角色和权限对应表

APP_USER_ROLE_ORG:用户在组织中具有的角色信息表


Kubernetes必备知识: Kubernetes RBAC 基于角色的访问控制(Role-Based Access Control, 即”RBAC”)使用”rbac.authorization.k8s.io” API Group实现授权决策,允许管理员通过Kubernetes API动态配置策略。