安全访问 - 第3章 RBAC模型
3.1 概念
Role-Based Access Control (基于角色的访问控制),简称RBAC。是一种基于角色并使用角色中预先定义的策略(Policy)对主体操作对象进行验证的访问控制方式。NIST于1992年发表论文对RBAC标准进行了定义。
什么是角色?在企业中访问控制的范围通常取决于员工所扮演的角色,角色中包含企业已确认的职责、责任和资格的规范,例如:软件公司中的角色包括工程师、设计师、商务人员等,每一种角色根据其包含的职责通常有不同的访问范围。
主体是指用户或组织。
对象是系统资源,如⽂件、设备、程序、网络等。
操作是主体请求对对象执⾏的功能。例如文件操作,包括对文件的读、写、编辑、删除、复制、执⾏和修改等。
策略(Policy)是一组访问规则。用于定义角色对对象可以执行某种操作。例如策略:允许商务人员对文件"客户资料.xlsx"执行读操作,这里商务人员是一个角色,"客户资料.xlsx"是对象,读是操作。
3.2 工作原理
下图展示了基于RBAC访问控制机制下,主体(小明)访问对象的工作原理:
-
主体请求访问对象。
-
RBAC访问控制机制首先获取主体的角色,然后根据角色中的策略对该请求进行授权验证。
-
如果验证通过,则可以访问对象。
在现实世界的例子:
”我作为一名管理员,希望授权小明(商务人员),读取文件“客户资料.xlsx”。
访问主体是“小明”,主体的角色是商务人员。
对象是 “客户资料.xlsx”。
实现方式
-
新建一个角色为“商务人员”。
-
假如角色的策略定义格式为:allow {角色} {对象} {操作},则定义以下策略:
allow {商务人员} {客户资料.xlsx} {读取}
-
设置“小明”的角色为“商务人员角色”。
在满足以上条件后,当“小明” 读取文件“客户资料.xlsx”时,RBAC访问控制机制就可以根据主体角色,使用管理员预先定义的策略(Policy)对这次访问进行验证,如果验证结果通过,就可以读取。对于其他新增商务人员的授权也只需要设置角色为“商务人员”即可访问商务人员对应的文件,如果有人员离职,也只需要将离职人员移除角色即可,这样就通过角色实现了人员和访问资源的解耦,提高了权限配置的效率。
3.2 数学描述
为了阐明概念,我们对RBAC给出⼀个简单的数学描述。这里的主体s指“用户”,例如"小明"。事务t是指操作+对象,例如:读取文件“客户资料.xlsx”。
主体s的活动角色,活动角色是主体当前正在使用的角色:
主体s的授权角色,每个主体可以授权多个角色:
每个⻆⾊都可以被授权执⾏⼀个或多个事务:
主体执⾏事务,当且仅当主体(if and only if)主体s可以在当前时间执⾏事务t ,函数exec(s,t)为真,否则为假:
三个基本原则
数学符号解释
∀ 任意,相当于every。当∀后面跟有以x为变量的公式时,写作(∀x),读作“任意x”。例如,(∀a)a≥6表示所有的a都不小于6。
⇒ 推出,A⇒B意味着如果A为真,则B也为真;如果A为假,则对B没有任何影响。
≠ 不等于。
Ø[fai] 空集, 指不含任何元素的集合。
⊆ 包含于,表示一个集合中的元素全部是另一个集合里的元素。