数据库安全性
数据库安全性是指DBMS应该保证的数据库的一种特性(机制或手段):免受非法、非授权用户的使用、泄漏、更改或破坏
DBMS的安全机制
自主安全性机制:存储控制(Access Control)
- 通过权限在用户之间的传递,使用户自主管理数据库安全性
强制安全性机制:
- 通过对数据和用户强制分类,使得不同类别用户能够访问不同类别的数据
自主安全性
- DBMS允许用户定义一些安全性控制规则(用SQL-DCL来定义)
- 当有DB访问操作时,DBMS自动按照安全性控制规则进行检查,检查通过则允许访问,不通过则不允许访问
DBMS将权利和用户(账户)结合在一起,形成一个访问规则表,依据该规则 表可以实现对数据库的安全性控制
AccessRule ::= (S,O,t,P)
- S: 用户
- O:访问对象
- t:访问权利
- P:谓词
通过视图
视图是安全性控制的重要手段
通过视图可以限制用户对关系中某些数据项的存取,例如:
eg.
xxxxxxxxxx
//视图1:
Create•EmpV1•as•select•*•from•Employee
//视图2:
Create•EmpV2•as•select•Pname,•Dnum•from•Employee
//视图3:
Create•EmpV3•as•select•*•from•Employee•where•Pnum• =•:UserId
//视图4:
Create•EmpV4•as•select•*•from•Employee•where•Head•=•:UserId
用户定义视图后,视图便成为一新的数据对象,参与到存储矩阵与能力表中进行描述
授权命令
高级数据库管理员可以将权限授予给低级用户
xxxxxxxxxx
GRANT {all PRIVILEGES | priviliege {,privilege...}}
ON [TABLE] talbename | viewname
TO {public | user-id {, user-id}}
[WITH GRANT OPTION]
假定高级领导为Emp0001, 部门领导为Emp0021, 员工管理员为Emp2001, 收发员为Emp5001(均为UserId, 也即员工的P#)
xxxxxxxxxx
Grant All Priviledges ON Employee TO Emp2001;
Grant SELECT ON EmpV2 TO Emp5001;
Grant SELECT ON EmpV3 TO public;
Grant SELECT ON EmpV4 TO Emp0021;
- 授予视图访问的权利,并不意味着授予基本表访问的权利(两个级别:基本 关系级别和视图级别)
- 授权者授予的权利必须是授权者已经拥有的权利
收回授权命令
xxxxxxxxxx
revoke select on employee from UserB;
强制安全性机制
- 强制安全性通过对数据对象进行安全性分级
xxxxxxxxxx
绝密(Top Secret), 机密(Secret),可信(Confidential)和无分类(Unclassified)
- 同时对用户也进行上述的安全性分级
- 从而强制实现不同级别用户访问不同级别数据的一种机制
访问规则:
- 用户S, 不能读取数据对象O, 除非Level(S)>=Level(O)
高级用户可以访问低级别用户的对象
- 用户S, 不能写数据对象, 除非Level(S)<=Level(O)。
高级用户不能写低级别数据,如果写了,数据权限就变高了,低级别用户就访问不到了
Comments NOTHING