不同的公司或软件提供商,设计了无数种控制用户访问功能或资源的方法。但无论哪种设计,都可归到四种经典权限模型里——自主访问控制(DAC, Discretionary Access Control)、强制访问控制(MAC, Mandatory Access Control)、基于角色访问控制(RBAC, Role-based Access Control)和基于属性访问控制(ABAC, Attribute-based Access Control)。
从本质来说,无论何种类型的权限管理模型都可以抽象出三个基本的要素——即:用户(user)、系统/应用(system/application)、策略(policy)。
访问控制模型三要素
-
主体(Subject) 指主动对其它实体施加动作的实体
-
客体 (Object) 是被动接受其他实体访问的实体
-
控制策略 (Policy) 为主体对客体的操作行为和约束条件
自主访问控制模型(DAC)
概念
自主访问控制模型(DAC,Discretionary Access Control)是根据自主访问控制策略建立的一种模型,允许合法用户以用户或用户组的身份访问策略规定的客体,同时阻止非授权用户访问客体。拥有客体权限的用户,可以将该客体的权限分配给其他用户。例如没有文件 File1 访问权限的用户可以从有访问权限的 B 用户那里得到访问权限。
DAC访问控制的实现
权限控制列表
访问控制列表 (ACL, Access Control List),每一个客体都配有一个列表,这个列表记录了主体对客体进行何种操作。当系统试图访问客体时,先检查这个列表中是否有关于当前用户的访问权限。ACL 是一种面向资源的访问控制模型,它的机制是围绕资源展开的。
对于一个文件对象的 ACL:
-
Alice: read,write
-
Bob: read
表示 Alice 可以对该文件进行读写操作,Bob 只能读取。
权限控制矩阵
访问控制矩阵 (ACM,Access Control Matrix) 是通过矩阵形式描述主体和客体之间的权限分配关系。每个主体而言,都拥有对哪些客体的哪些访问权限;而对客体而言,又有哪些主体对他可以实施访问;
应用场景
DAC 常见于文件系统,LINUX,UNIX、WindowsNT 版本的操作系统都提供 DAC 的支持。在实现上,先对用户鉴权,然后根据控制列表决定用户能否访问资源。用户控制权限的修改通常由特权用户或者管理员组实现。
特点和缺点
特点
授权的实施主体(1、可以授权的主体;2、管理授权的客体;3、授权组)自主负责赋予和回收其他主体对客体资源的访问权限。DAC 模型一般采用访问控制矩阵和访问控制列表来存放不同主体的访问控制信息,从而达到对主体访问权限的限制目的。
缺点
-
主体的权限太大,无意间就可能泄露信息
-
不能防备特洛伊木马的攻击访问控制表
-
当用户数量多、管理数据量大时,ACL 就会很庞大。不易维护。
强制访问控制 MAC
强制访问控制模型 (MAC, Mandatory Access Control), 是为了弥补 DAC 权限控制过于分散的问题而诞生的。在计算机安全领域指一种由操作系统约束的访问控制,目标是限制主体或发起者访问或对对象或目标执行某种操作的能力。任何主体对任何对象的任何操作都将根据一组授权规则(也称策略)进行测试,决定操作是否允许。
-
Subject 被赋予一定的安全级别
-
Object 被赋予一定的安全级别
-
Subject 能否访问 Object 由双方的关系安全级别决定,这个判断通常有系统硬性限制.