数据库安全性概念与自主安全性机制


数据库安全性:

DBMS应该保证的数据库的一种特性,通过一定的机制和手段免受非法、非授权用户的使用、泄露、更改或破坏

数据的安全级别:绝密(Top Secret),机密(Secret),可信(confidential),无分类(unclassifed)

数据库系统DBS的安全级别:物理控制、网络控制、操作系统控制、DBMS控制


DBMS的安全机制:

自主安全性机制:存取控制(Access Control)

→通过权限在用户之间的传递,使用户自己管理数据库安全性

强制安全性机制

→通过对数据和用户强制分类,使得不同类别用户能够访问不同类别的数据

推断控制机制

→防止通过历史信息,推断出不该被知道的信息

→防止通过公开信息推断出私密信息,通常在一些由个体数据构成的公共数据库中此问题尤为重要

数据加密存储机制

→通过加密、解密保护数据


数据库自主安全性机制:

通常情况下,自主安全性是通过授权(授予用户访问的权利)机制来实现的

用户在使用数据库前必须由DBA处获得一个账户,并由DBA授予该账户一定的权限,该账户的用户依据其所拥有的权限对数据库进行操作;同时,该帐户用户也可将其所拥有的权利转授给其他的用户,由此实现权限在用户之间的传播和控制


DBMS实现自主安全性的方法:

①DBMS允许用户定义一些安全性控制规则(用SQL-DCL来定义),当有DB访问操作时,DBMS自动按照安全性控制规则进行检查,检查通过则允许访问,不通过则不允许访问

②DBMS将权利和用户结合在一起,形成一个访问规则表,依据该规则表可以实现对数据库的安全性控制

  • AccessRule = (S, O, t, P)
  • S:请求主体;O:访问对象;t:访问权利;D:谓词(拥有权力需满足的条件)


自主安全控制例子:

对于表Employee(P#, name, age, sex, salary, D#, HEAD)

有如下访问安全要求:

  • 员工管理人员:能访问该数据库的所有内容,便于维护员工信息
  • 收发人员:访问该数据库以确认某员工是哪一个部门的,便于收发工作,只能访问基本信息,其他信息不允许其访问
  • 每个员工:允许其访问关于自己的记录,以便查询自己的工资情况,但不能修改
  • 部门领导:能够查询其所领导部门人员的所有情况
  • 高层领导:能访问该数据库的所有内容,但只能读

对应AccessRule(S, O, t, P):


方案1:视图

  • 高级领导:Create EmpV1 as select * from Employee
  • 收发员:Create EmpV2 as select Pname, D# from Employee
  • 员工:Create EmpV3 as select * from Employee where p# = UserId

用户定义视图后,视图便成为一新的数据对象,参与到存储矩阵与能力表中进行描述

方案2:存储矩阵


需要设计算法在当某用户提交SQL语句(Select-From-Where)时,判断是否允许该用户检索到相应的结果



猜你喜欢

转载自blog.csdn.net/jaihk662/article/details/80225288