大纲:
一、前言
1. 数据库安全性是数据库的一种特性(免受非法或非授权用户的使用、泄露、破坏),其由DBMS保证实现
2. 数据库系统的安全级别涉及多个方面,如网络控制、操作系统控制、DBMS控制等,我们只在DBMS上进行控制
二、数据库安全性概述
1. DBMS的安全机制可包括自主安全性机制、强制安全性机制、数据加密存储机制等
①自主安全性机制:通过授权机制(让权限在用户之间传递,使用户自主管理数据库安全性)来实现
②强制安全性机制:对数据和用户进行分类,不同类用户能看到不同类别的数据
2. 数据库自主安全性机制
3. DBMS如何实现数据库自主安全性
三、安全性访问规则的表达
1. 安全性访问规则的一般形式:(S,O,t,P),即用户S在满足条件P时,以权利t来访问对象O
四、自主安全性的两种实现方式
1. 存储矩阵
①只包含S、O、t,不能表达P
2. 视图
①包含S、O、t、P,因为视图可将数据访问对象与谓词结合起来
②可以限制用户访问和操作关系中的哪些数据,如定义不同的视图给不同的用户来使用
五、利用SQL语言实现自主安全性
1. SQL中的用户分级
①超级用户:DBA
②账户级别:程序员
③关系级别:普通用户
2. SQL中的权利分级
①1级(读):select
②2级(更新):insert、update、delete
③3级(创建):create、alter、drop
注:级别高的权利自动包含级别低的权利,一般将级别3的权利称为账户级别的权利,而将级别1和2的权利称为关系级别的权利。
3. 授权命令
grant {all privileges | privilege [, privilege ... ]} on [table] 表名 | 视图名
to {public | user-id [, user-id ... ]} [with grant option];
①privilege可以是select、insert、update、delete
②user-id是某一个由DBA创建的用户账号,而public则是所有有效用户
③with grant option选项表示允许被授权者传播这些权利
④授予的权利必须是授权者已拥有的权利
【示例】现有一关系Employee(P#, Pname, Page, Psex, Psalary, D#, HEAD),并创建了4个视图EmpV1、EmpV2、EmpV3、EmpV4,现假定高级领导为Emp0001,部门领导为Emp0021,员工管理员为Emp2001,收发员为Emp5001(均为UserId, 也即员工的P#):
4. 收回授权命令
revoke {all privileges | privilege [, privilege ... ]} on [table] 表名 | 视图名 from {public | user-id [, user-id ... ]};
原文:https://www.cnblogs.com/xzxl/p/10753960.html