权限系统设计一: DAC、MAC、RBAC、ABAC模型

自主访问控制(DAC: Discretionary Access Control)

自主访问控制中,产品中的操作对象被设置了权限等级。

在用户登陆时,系统识别用户,根据被操作对象(Subject)的权限控制列表(ACL: Access Control List)或者权限控制矩阵(ACL: AccessControl Matrix)信息设置用户能对哪些操作对象进行何种操作,例读取操作或能够修改操作对象。

更具特点的是,拥有对象权限的用户,还可以将对象权限分配给其他用户,所以叫“自主(Discretionary)”控制。

Windows中的文档系统的权限设计就是“自主访问控制”模型的典型应用。

Windows的文件权限

然而DAC最大缺陷是权限控制分散,不便于管理。例如在文档权限管理中,我们无法将一组文件设置成统一权限开放给指定的一群用户。

强制访问控制(MAC: Mandatory Access Control)

MAC弥补DAC权限控制过于分散的问题。

MAC设计中所有的访问控制策略都由系统管理员来制定,用户无法改变。每个对象都有权限标识,每个用户也会有权限标识,用户能否操作某个对象判断在于两个权限标识的关系,而关系判断通常由系统做硬性限制。

如:用户甲查看文档A,此时系统给出这样的提示“无法访问,需要一级许可”,这说明文档本身有“一级许可”的权限标识,而用户权限不具备。

MAC一般会给用户和资源进行分级,比如:

用户级别:高级,中级,普通

文件级别:绝密,保密,公开

由系统管理员会制定访问策略,比如高级用户可以访问所有类型的文件,中级用户可以访问保密级别以下的文件,而普通用户只能访问公开的文件。

一般强制访问控制采用以下几种方法:

(1)限制访问控制

一个持洛伊木马可以攻破任何形式的自主访问控制,由于自主控制方式允许用户程序来修改他拥有文件的存取控制表,因而为非法者带来可乘之机。

MAC不提供这一方便,在这类系统中,用户要修改存取控制表的唯一途径是请求一个特权系统调用。该调用的功能是依据用户终端输入的信息,而不是靠另一个程序提供的信息来修改存取控制信息。

(2)过程控制

在通常的计算机系统中,只要系统允许用户自己编程,就没办法杜绝木马。但可以对其过程采取某些措施,这种方法称为过程控制。

例如,警告用户不要运行系统目录以外的任何程序。提醒用户注意,如果偶然调用一个其它目录的文件时,不要做任何动作,等等。需要说明的一点是,这些限制取决于用户本身执行与否。

(3)系统限制

对系统的功能实施一些限制。

比如,限制共享文件,但共享文件是计算机系统的优点,所以是不可能加以完全限制的。再者,就是限制用户编程。不过这种做法只适用于某些专用系统。在大型的,通用系统中,编程能力是不可能去除的。

MAC适用在对保密性要求比较高的系统中,比如军方机构。商业系统中使用MAC的有SE Linux和Trusted Solaris。而对于大部分的商业服务型系统来说,略显死死板不够灵活。

下次我们将继续讲解权限系统的设计细节,请持续关注哦~ 

发布了195 篇原创文章 · 获赞 13 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_42058609/article/details/101030808