sql09数据库安全性

数据库安全性

数据库安全性是指DBMS应该保证的数据库的一种特性(机制或手段):免受非法、非授权用户的使用、泄漏、更改或破坏

DBMS的安全机制

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

    • 通过权限在用户之间的传递,使用户自主管理数据库安全性
  • 强制安全性机制:

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

自主安全性

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

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

AccessRule ::= (S,O,t,P)

  • S: 用户
  • O:访问对象
  • t:访问权利
  • P:谓词

通过视图

视图是安全性控制的重要手段

通过视图可以限制用户对关系中某些数据项的存取,例如:

eg.

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

授权命令

高级数据库管理员可以将权限授予给低级用户

假定高级领导为Emp0001, 部门领导为Emp0021, 员工管理员为Emp2001, 收发员为Emp5001(均为UserId, 也即员工的P#)

  • 授予视图访问的权利,并不意味着授予基本表访问的权利(两个级别:基本 关系级别和视图级别)
  • 授权者授予的权利必须是授权者已经拥有的权利

收回授权命令

强制安全性机制

  • 强制安全性通过对数据对象进行安全性分级
  • 同时对用户也进行上述的安全性分级
  • 从而强制实现不同级别用户访问不同级别数据的一种机制

访问规则:

  • 用户S, 不能读取数据对象O, 除非Level(S)>=Level(O)

高级用户可以访问低级别用户的对象

  • 用户S, 不能写数据对象, 除非Level(S)<=Level(O)。

高级用户不能写低级别数据,如果写了,数据权限就变高了,低级别用户就访问不到了

 


立志成为一名攻城狮