保护(protection),是从资源访问权限(授权)这个角度去考虑的,是指一种控制程序、进程或用户对计算机系统资源进行访问的控制。
安全:防范人主动进行攻击,从攻击这个角度。完整性,保密性,身份认证。抗否认。
保护在计算机中扮演的角色是:
一个经过时间检验的关键保护指导原则是最小特权原则(principle of least privilege):用户,程序和系统只被定义了能做什么,其余的都是不能做的。
这使得部件的出错/危害最小化
一个计算机系统是进程和对象的集合。对象分为硬件对象和软件对象,每个对象都有唯一的名字与其他对象区分。
要求:用户只能通过定义好的、有意义的操作来访问对象。
为了方便研究最小特权原则这个策略,定义了保护域(protection domain),假定一个进程只在一个保护域内操作。
一个域是一个访问权限的集合,每一个访问权限是一个有序对<对象名,权限集>
。
在一个对象上执行一个操作的权限是一种访问权限(access )。
域之间是允许存在交集的,它们可以共享访问权限。但要注意,一个进程一个时间只能处于一个域中。
一个域和一个进程之间的关联可以是静态的,也可以是动态的。一个进程的资源集合在进程的生命期固定不变,那么这种关联是静态的,否则则是动态的。
如果关联是动态的,则必须提供一个允许进程在域之间切换的域切换(domain switching)。
当一个进程在监控模式下执行时,它可以执行特权指令并完全控制计算机系统。另一方面,如果进程在用户模式下执行时,它只能调用非特权指令。
这两种模式保护了操作系统(在监控域执行),使其免受用户进程(在用户域执行)的干扰。
在UNIX系统中,域和用户是关联的。域切换会配合用户身份的临时切换。
这个变动由文件系统完成。
每个文件都有一个所有者身份表示和一个域位(设置用户ID位)与它相关联。当设置用户ID位打开,用户执行文件,用户ID被设置为文件的所有者;而当设置用户ID位关闭时,用户ID 不改变。
如:当用户A(用户ID=A)开始执行一个属于B的文件时,如果此时B的关联域位是关闭的,那么该进程的用户ID会被设置成A;
如果这个设置用户ID位是开启的,那么该进程的用户ID应该设置为文件的所有者B。
如果进程退出,这个临时的用户ID的变动就随之结束。
每个环对应一个单独的域。这些环按顺序用数字0~7编号。Di
和Dj
(0<=i,j<=7
)为任意的两个域,如果j,那么
Di
是Dj
的一个子集。也就是说,在Dj
中运行的进程比在Di
中运行的进程拥有更多特权。一个在D0
中执行的进程拥有最多特权。
如果只存在两个环,那么这个策略就等价于监控-用户执行模式,监控模式对应D0,而用户模式对应D1
更多介绍参考P462
访问矩阵(access matrix)是访问模型的一种抽象,其中行代表域,列代表对象。
由于列明确定义了对象,可以在访问权限中删除对象名称。
访问条目access(i,j)
定义了域Di中执行的进程在调用对象Oj
时被允许执行的操作的集合。
访问矩阵策略提供了一个指定多样化策略的机制,其包括:
Di
中执行的进程只能访问在行i
中指定的对象通常由用户决定访问矩阵条目的内容。当用户创建一个新的对象
Oj
时,列Oj就被添加到访问矩阵,并恰当的初始化条目(添加权限)
访问矩阵为进程和域之间的静态和动态关联提供了一种定义和实现严格控制的机制。当需要将一个进程从一个域切换到另一个域时,其实是在一个对象(域)上执行一个操作(切换)。
进程必须能够在域之间进行切换。而当进程需要切换域时,可以将域添加到访问矩阵。也可以更改矩阵的内容。
另外访问矩阵还需要三个额外的操作:
有关这些操作的具体内容,参考P467
为了有效的实现访问矩阵,需要一种数据结构。
由于保护的特殊性,不适合使用稀疏矩阵的数据结构。
采用有序三元集合<域,对象,权限>
构成一个表。
缺点:
可以抛弃空的条目,每个对象的列表由有序对<域,权限集>
组成。
当用户想在域Di
中对对象Oj
执行操作M时,系统开始在访问权限列表中为对象Oj
查找条目
,查找条件是M∈Rk
,如果查找成功,那么操作可以继续。
D1 = read,write
D2 = read
...
操作系统概念第十章文件系统接口
对象的访问列表方法可以做一些扩充:定义一个列表和一个默认的访问权限集合。如果在访问权限列表中查找失败,则可以在默认集合中查找。
也可以先查找默认集合,再查找访问列表。
将每个行关联到域。域的权限列表由对象以及允许作用在这些对象上的权限组成。一个对象通常用自己的物理名称或地址标识,被称为权限。
O1 = read
O2 = excute
...
[TODO]P469
用户是域的具体实现[TODO]
Solaris10通过使用基于角色的访问控制显式地增加了最小特权原则。
此方法以特权为主要内容。特权可赋与进程,限制它们只访问完成其工作所需要的内容。
另外,也可以将特权和程序分配给角色(role),角色可以分配给用户,用户也可以根据角色密码来获取角色。
特权是执行系统调用的权利或使用该系统调用一个选项的权利(如用写访问打开一个文件)
在访问列表中搜索要撤回的访问权限,然后从列表中删除这些权限。而且灵活性很强
对于权限来说,撤回要麻烦很多,撤回权限有以下几种方式:
详细解释参考P471
[TODO?]