计算机应用的访问控制策略主要分为3个阶段或者说是3种模型:
- DAC(Discretionary Access Control)-自主访问控制
说白了就是一个用户(主体)可以将他所拥有的东西(客体)任意控制(创建、修改、删除),而且可以将这种控制权利赋予其他的用户。
适用的范围:操作系统的文件管理;还有很多RPG游戏的设计,我的宝物我可以随便使用。
不适用的范围:比如电信的业务受理系统,如果营业员是他受理的业务对象的拥有者那就麻烦了,正常的应该是他只有录入和提交前修改的权利,受理提交以后他就只有查看的权利的;对于一些保密性高的系统这种方式就不适用了,有很多风险存在,如误操作、管理不当的非法访问、木马病毒等。
- MAC(Mandatory Access Control)-强制访问控制
考虑到DAC的保密性不佳,产生了MAC。通过对主体和客体进行分级来控制访问权限。当要访问客体的主体的级别高于或等于客体的级别的时候才具有权限。
适用范围:机要部门的文件保密制度,比如山东省人民防空办公室保密制度。
不适用的范围:保密性要求不是很高同时对个体的操作的控制比较复杂,访问控制不是简单的通过分级能够解决的,比如企业信息管理系统,网站系统等。
- RBAC(Role-Based Access Control)-基于角色访问控制
现在最流行的,也是推荐采用的。它的控制是基于角色的。至于RBAC的介绍太多了,我就不详述了。
列一些名词解释吧:
用户(User)见名知义
角色(Role)可以理解成岗位。
权限(Permission)见名知义
指派(Assignment)指派包含两个方面,用户指派和许可指派。用户指派表示的是,将用户指派给特定的角色。许可
指派表示的是为角色指派计算机资源的访问和操作许可。
会话(session)会话表示的是用户和角色之间的关系。用户每次必须通过建立会话来激活角色,得到相应的访问权
限。
角色和角色等级(Role Hierarchies)对角色实现一定的分级、分组和复合,以便于权限指派。
限制(Constraints)模型中的职责分离关系(Separation of Duty),用于控制冲突(Conflict)。静态职责分离(Static SD)指定角色的互斥关系,用于用户指派阶段。避免同一用户拥有互斥的角色。实现简单,角色互斥语义关系清楚,便于管理不够灵活,不能处理某些实际情况。动态职责分离(Dynamic SD)指定角色的互斥关系,用于角色激活阶段。允许同一用户拥有某些互斥的角色,但是不允许该用户同时激活互斥的角色。更灵活,直接与会话挂钩,适应实际管理需要,实现复杂,不易管理。
参考文章:
Rosen《RBAC 模型初探 》