对一个资料库,不是所有的用户都要(能)存取所有的数据。一个用户必须获得对所请求的数据的适当授权才能对其进行相应的操作。用来检查用户对数据的存取许可权的过程称为存取控制。存取控制可以在物理层或逻辑层进行,可以以“自主”(即用户可以改变许可权的)方式或“强制”(即不能由单个用户改变的系统规则的)方式进行。
基本介绍
- 中文名:存取控制过程
- 外文名:access control procedure
- 层次:记忆体层、过程层和逻辑层
- 实现存取:被授权、许可权施加对象及授予许可权
- 控制策略:自主控制和强制控制
- 套用学科:计算机原理
存取控制的层次
一般有三个存取控制与保护的层次:记忆体层、过程层和逻辑层。
记忆体存取控制
这一级存取控制不一定是具体控制用户关于数据对象的存取许可权,而是控制对象的存储容器,即控制记忆体单元不被未授权的用户存取。在容器中的对象收到与容器同一级别的控制保护,使在被保护的容器中的内容都是安全的。具体的实现方法可以是物理的,如採用地址界限暂存器、存储钥匙等;也可以用逻辑的方法,即虚拟空间,如页面/片段控制表。物理方法藉助于作业系统的功能即可实现;逻辑的方法则依其存取控制方案不同而异,仅靠作业系统的“保护圈”(protestion ring)已不能满足要求。
过程存取控制
过程存取控制就是程式存取控制。程式被授权的用户执行、并依其创建者的存取权来运算元据。具体地,过程存取控制就是按照程式的调用、返回和参数传递来监控其执行。
在过程存取控制中,还有过程之间相互调用问题,通过“同心圆机制” (concentric ring mechanism)控制,凡处于更 外层的过程比更内层的过程具有更少的特权。外层的过程要与内层的过程通信,必须通过一个或多个“安全门”(security gate) ,但内层对外层通信则不需要。所谓安全门就是许可权检查。

逻辑存取控制
逻辑存取控制就是控制存取对象的逻辑结构,如档案、记录、栏位等,而不管对象在何处,它是是实际的还是虚拟存储结构,它将用户的存取许可权和保护措施与逻辑结构相联。
实现存取控制
为了实现存取控制,安全机构必须维护一个存取控制矩阵。它包含被授权者、许可权施加对象及授予的许可权三要索。图中,左标题栏为用户标识符或口令,上标题行为数据(包括程式)的标识符,矩阵体指明了各用户对相应数据的存取许可权。空白则表明该用户对相应数据无任何存取权,授权矩阵的大小与複杂性由安全机构设计与实现而定,并依赖于DBMS、OS及DCMS提供的软体支持。存取控制矩阵的开发是DBA的任务,但DBMS必须提供DBA以相应的实用例程来建立、维护(批处理或在线上处理)、在线上存取该矩阵,报告矩阵的内容及违例情况。

存取控制策略
自主存取控制
自主(有的也叫“随意”或“任意”)存取控制(discretionary access control,DAC)基于存取许可权或特权概念及其实现技术与机制,哪个用户对哪个数据对象具有什幺样的许可权通过授权来说明。
支持授权说明首先必须提供一种语言,SQL是这种语言的典型代表。
自主存取控制可通过存取控制矩阵来实现。每当一个用户发出对某数据对象的一种存取请求时,DBMS的安全或存取控制部件针对存取控制矩阵进行检验,以决定同意或拒绝其请求。
强制存取控制
一般情况下,自主存取控制是很有效的,可以满足普通的安全性要求。但它存在一个漏洞,一些别有用心的用户可以欺骗一个授权用户,採用一定的手段来获取敏感数据。
存在这种漏洞的根源在于,自主存取控制机制仅以授权来将主体(用户)与客体(被存取数据对象)关联,通过控制许可权来实现安全要求,对主体和客体(对象)本身未作任何安全性标注。强制存取控制(mandatory access control,MAC)就能处理自主存取控制的这种漏洞问题。