RBAC用户特别授权的思考

Posted 白纸无字Zonciu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RBAC用户特别授权的思考相关的知识,希望对你有一定的参考价值。

场景:
标准的RBAC,授权只应该赋予角色,再把角色指派给用户,当需要对特定用户授予权限时,就只能新建一个角色指派给这个用户。这就意味着每对一个新用户做特别授权都要创建一个特别角色。

今天脑洞大开,想到C#对于string类型的设计思路似乎可以用在特定用户授权上。

引用型角色设计:

这种设计特点和C#的string引用方式相似,对于相同的特别授权列表,引用的是同一个角色,当特别授权变化时,创建或者指派已存在的权限相同的引用角色。引用角色不会显示在前端,只会在后端处理,也不需要操作者主动创建,前端直接写成给用户添加特别授权即可。

场景

  1. 当前需要给A用户添加Api1、Api3、Api10接口授权,hash权限声明列表{Api1, Api3, Api10},不存在相同权限的角色,建立一个引用角色Role233并指派给A用户,然后hash这个RoleA的授权列表。
    对B用户添加Api1、Api3、Api10接口授权,hash权限声明{Api1, Api3, Api10},通过hash值查找引用角色,查找到Role233有相同的授权,将Role233指派给B用户。此时Role233指派给了A和B。

此时:
A用户——Role233
B用户——┘

对A用户撤销Api1接口授权,添加Api6接口授权,hash权限声明{Api6, Api10},查找引用角色,角色不存在,创建引用角色Role666,并指派给A用户,撤销Role233角色指派。

此时:
A用户——Role666——{Api6, Api10}
B用户——Role233——{Api1, Api3, Api10}

  1. 撤销B用户的特别授权,撤销Role233对B用户的指派,Role233无用户关联,删除Role233。

此时:
A用户——Role666——{Api6, Api10}
B用户——None

以上是关于RBAC用户特别授权的思考的主要内容,如果未能解决你的问题,请参考以下文章

后台设计基石:用户权限管理(RBAC)及工作流(workflow)

使用RBAC授权

RBAC授权

后台设计的基石:用户权限管理(RBAC)及工作流(workflow)模型(转自人人都是产品经理)

十六 RBAC

关于 Kubernetes中API Server授权(RBAC)管理的一些笔记