存取控制的层次
一般有三个存取控制与保护的层次:内存层、过程层和逻辑层。
内存存取控制这一级存取控制不一定是具体控制用户关于数据对象的存取权限,而是控制对象的存储容器,即控制内存单元不被未授权的用户存取。在容器中的对象收到与容器同一级别的控制保护,使在被保护的容器中的内容都是安全的。具体的实现方法可以是物理的,如采用地址界限寄存器、存储钥匙等;也可以用逻辑的方法,即虚拟空间,如页面/片段控制表。物理方法借助于操作系统的功能即可实现;逻辑的方法则依其存取控制方案不同而异,仅靠操作系统的“保护圈”(protestion ring)已不能满足要求。
过程存取控制过程存取控制就是程序存取控制。程序被授权的用户执行、并依其创建者的存取权来操作数据。具体地,过程存取控制就是按照程序的调用、返回和参数传递来监控其执行。
在过程存取控制中,还有过程之间相互调用问题,通过“同心圆机制” (concentric ring mechanism)控制,凡处于更 外层的过程比更内层的过程具有更少的特权。外层的过程要与内层的过程通信,必须通过一个或多个“安全门”(security gate) ,但内层对外层通信则不需要。所谓安全门就是权限检查。
逻辑存取控制逻辑存取控制就是控制存取对象的逻辑结构,如文件、记录、字段等,而不管对象在何处,它是是实际的还是虚拟存储结构,它将用户的存取权限和保护措施与逻辑结构相联。1
实现存取控制为了实现存取控制,安全机构必须维护一个存取控制矩阵。它包含被授权者、权限施加对象及授予的权限三要索。图中,左标题栏为用户标识符或口令,上标题行为数据(包括程序)的标识符,矩阵体指明了各用户对相应数据的存取权限。空白则表明该用户对相应数据无任何存取权,授权矩阵的大小与复杂性由安全机构设计与实现而定,并依赖于DBMS、OS及DCMS提供的软件支持。存取控制矩阵的开发是DBA的任务,但DBMS必须提供DBA以相应的实用例程来建立、维护(批处理或联机处理)、联机存取该矩阵,报告矩阵的内容及违例情况。1
存取控制策略自主存取控制自主(有的也叫“随意”或“任意”)存取控制(discretionary access control,DAC)基于存取权限或特权概念及其实现技术与机制,哪个用户对哪个数据对象具有什么样的权限通过授权来说明。
支持授权说明首先必须提供一种语言,SQL是这种语言的典型代表。
自主存取控制可通过存取控制矩阵来实现。每当一个用户发出对某数据对象的一种存取请求时,DBMS的安全或存取控制部件针对存取控制矩阵进行检验,以决定同意或拒绝其请求。
强制存取控制一般情况下,自主存取控制是很有效的,可以满足普通的安全性要求。但它存在一个漏洞,一些别有用心的用户可以欺骗一个授权用户,采用一定的手段来获取敏感数据。
存在这种漏洞的根源在于,自主存取控制机制仅以授权来将主体(用户)与客体(被存取数据对象)关联,通过控制权限来实现安全要求,对主体和客体(对象)本身未作任何安全性标注。强制存取控制(mandatory access control,MAC)就能处理自主存取控制的这种漏洞问题。1