访问控制( access control )就指在身份认证的基础上,依据授权对提出的资源访问请求加以控制。访问控制是网络安全防范和保护的主要策略,它可以限制对关键资源的访问,防止非法用户的侵入或合法用户的不慎操作所造成的破坏。
访问控制类型有以下几种:
自主访问控制( DAC )
DAC 主要是通过对一个受限制的访问对象的控制来实现资源保护的,它通常是用于用户访问系统中的文件。
在这种类型的访问控制中文件的所有者可以控制其它的用户是否可以访问这个文件,通常应用于 UNIX 系统。这种机制可结合访问控制列表( ACL )允许将权限分配给同所有者在同一组的其它用户。这种访问控制不适用于有很多用户的中型或大型组织。
它的缺点是不够灵活,并且是可自由分配的没有一个中央控制。
目前很多 UNIX 系统也已经不采用这种安全机制了,比如:从 solaris 8 开始采用了 RBAC 机制; Linux 也增加了基于角色的访问控制功能到 Linux 内核中。
强制访问控制( MAC )
强制访问控制是 “ 强加 ” 给访问主体的,即系统强制主体服从访问控制政策。
任何一个用户都不可能去操作一个没有通过管理员授权的对象。这种机制去除了 DAC 中由用户来自由分配的特点,而采用集中控制的方法。
这种机制的缺点是不太灵活,访问权限要分配给没有用户这就意味着当用户更换机构时管理员有大量的工作要做。
基于角色的访问控制( RBAC )
基于角色的访问控制 ( Role-Based Access Control )引入了 Role 的概念 , 目的是解耦权限和用户的关系。
RBAC 功能分为 4 部分:
1 、核心 RBAC
用户、角色和权限的关系。 RBAC 具有很大的灵活性:用户与角色和权限与角色的关系都是多对多的。
提供了管理事务,能知道用户拥有哪些角色,角色对应到哪些权限。
包含用户会话概念,可激活或失活某个用户拥有的角色。
集中管理的安全控制。
2 、可继承 RBAC
RBAC 提供两种继承:普通地层次,支持多重继承;有限地层次,不支持多重继承。
3 、静态的职责分离
这一原则防止一些角色被添加到已经拥有其它的角色的用户里,以避免权限冲突。这一标准不只规定了的对角色的限制,还能应用到权限、操作和受保护的资源上。
4 、动态的职责分离
是 RBAC 机制的一种扩张,意味着在用户会话时实现责任的分离。
基于属性的访问控制( ABAC )
ABAC 实现访问控制也是基于角色和权限的概念(类似 RBAC 模式),同时也作用于用户的属性。允许将权限和角色等变量引入用户属性中。