一、首先在介绍RBAC权限控制模型前,先聊聊一些基本的问题

1、Why?为什么要进行权限控制

如果没有权限控制,系统的功能完全不设防,全部暴露在所有用户面前。用户登录以后可以使用系统中的所有功能。这是实际运行中不能接受的。 所以权限控制系统的目标就是管理用户行为,保护系统功能。

2、What?什么是权限控制

“权限”=“权力”+“限制”

3、How?如何进行权限控制

①定义资源
②创建权限
③创建角色
④管理用户
⑤建立关联关系
建立关联关系

二、RBAC 权限模型

1、概念

权限控制的核心是用户通过角色与权限进行关联,所以前面描述的权限控制系统可以提炼为一个模型:RBAC(Role-Based Access Control,基于角色的访问控制)。 在RBAC模型中,一个用户可以对应多个角色,一个角色拥有多个权限,权限具体 定义用户可以做哪些事情。

2、RBAC0~RBAC3

2.1、RBAC0

最基本的 RBAC 模型,RBAC 模型的核心部分,后面三种升级版 RBAC 模型也都是建立在 RBAC0 的基础上。

2.2、RBAC1

在 RBAC0 的基础上增加了角色之间的继承关系。角色 A 继承角色 B 之后将具 备 B 的权限再增加自己独有的其他权限。比如:付费会员角色继承普通会员角色, 那么付费会员除了普通会员的权限外还具备浏览付费内容的权限。

2.3、RBAC2

在 RBAC0 的基础上进一步增加了角色责任分离关系。责任分离关系包含静态责任分离和动态责任分离两部分。

  • 静态责任分离:给用户分配角色时生效

    • 互斥角色:权限上相互制约的两个或多个角色就是互斥角色。用户只能被分配到一组互斥角色中的一个角色。

    例如:一个用户不能既有会计师角色又有审计师角色。

    • 基数约束:

      • 一个角色对应的访问权限数量应该是受限的
      • 一个角色中用户的数量应该是受限的
      • 一个用户拥有的角色数量应该是受限的
    • 先决条件角色:用户想拥有 A 角色就必须先拥有 B 角色,从而保证用户拥有 X 权限的前提是拥有 Y 权限。

    例如:“金牌会员”角色只能授予拥有“银牌会员”角色的用户,不能直接授予普通用户。

  • 动态责任分离:用户登录系统时生效

    • 一个用户身兼数职,在特定场景下激活特定角色

      • 马云在阿里巴巴内部激活创始人角色
      • 马云在某企业级论坛上激活演讲嘉宾角色

2.4、RBAC3

RBAC3 是在 RBAC0 的基础上同时添加 RBAC2 和 RBAC3 的约束,最全面、最复杂。

3、基本RBAC权限模型

基本RBAC权限模型

4、扩展RBAC权限模型

扩展RBAC模型

最后修改:2021 年 07 月 21 日 09 : 12 PM
如果觉得我的文章对你有用,请随意赞赏