一、安全目标
二、安全定义:是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。
三、安全标准:TCSEC/TDI
四、安全级别:A1~D(A1、B3、B2、B1、C2、C1、D)(逐级降低)
五、安全控制机制:4种(存取控制、视图、审计、存储过程)
1. 存取控制
(1)DAC自主存取 C2级 灵活
(2)MAC 强制存取 B1级 严格
2. DAC策略
(1)授权
GRANT<权限> --数据的增删改查
ON<表>
TO<用户>
[ WITH GRANT OPTION ] /*获得某种授权的用户,还可以把这种权限授予其他用户*/
注:发出该GRANT语句的可以是数据库管理员、该数据库对象创建者、拥有该权限的用户
(2)创建用户
Sp_addlogin ‘U8’, @passwd=’123’
Go
Sp_grantdbclass ‘U8’, ‘U8’ /*服务器层,用户层*/
[ WITH GRANT OPTION ]
(3)权限设置
/*把对学生表的查询和插入权限授给用户张三*/
Grant select, insert
On student
To 张三
全部权限:ALL PRIVILEGES
‚ 全部用户:PUBLIC
ƒ 权限限制:用圆括号指明
例:把查询student表和修改学生学号的权限授给用户U4
GRANT UPDATE( Sno ), select
ON student
TO U4;
3. 删除用户
(1)删除对应架构(服务器)
(2)删除用户
注:顺序不能颠倒
4. 改变当前用户命令(将一个人的权限授权给另一个人)
SETUSER ‘U5’
GRANT INSERT
ON SC
TO U6
WITH GRANT OPTION /*此语句表明U6可以将此权限授予其他用户,若无此句,则U6不能再传播此权限*/
5. 收回授权命令
REVOKE <权限>
ON <对象>
FROM <用户>
例:把用户U5对SC表的INSERT权限收回
REVOKE INSERT
ON SC
FROM U5 CASCADE /*(级联)若用户U5将此权限授予其他用户,这里也将被收回*/
6. 角色概念
数据库角色是被命名的一组与数据库操作相关的权限。可以为一组具有相同权限的用户创建一个角色,使用角色来管理数据库权限可以简化授权的过程。
1)角色:权限的集合
CREATE ROLE<角色名>
例:创建角色R1
CREATE ROLE R1
2)通过角色授权
GRANT 角色 /*创建角色,给角色赋值,通过角色给用户赋权限*/
TO 用户
例:使角色R1拥有Student表的SELECT、UPDATE、INSERT权限
GRANT SELECT, UPDATE, INSERT
ON TABLE Student
TO R1
将一个角色授予其他的角色或用户
GRANT<角色1>[,<角色2>]...
TO <角色3>[,<用户1>]...
[WITH ADMIN OPTION] /*此语句表明,获得某种权限的角色或用户可以把这种权限再授予其他的角色*/
例:将这个角色授予王平、张明、赵玲,使他们具有角色R1所包含的全部权限
GRANT R1
TO 王平, 张明,赵玲
3 )角色权限的收回
例:通过R1一次性地收回王平的三个权限
REVOKE R1
FROM 王平
例:收回所有用户对表 的查询权限
REVOKE SELECT
ON SC
FROM PUBLIC
7. MAC(强制存取控制方法)策略
(1)用户不能干预
(2)密级标记(原理)
(3)能够为系统保证更高程度的安全性
8. 视图机制
对视图授权,收权
9. 审计(对日志审计)
审计功能把用户对数据库的所有操作自动记录下来放入审计日志。
(1)费时(所以不能经常执行)
(2)对安全要求高的部分审计
(3)审计由人来启动和关闭
1)打开审计
Audit 权限
On 对象
例:对修改SC表数据的操作进行审计
AUDIT UPDATE
ON SC
2)查看审计结果
Sp_andittrail
3)关闭审计
NOAVDIT 权限
ON 对象
例:取消对SC表的一切审计
NOAUDIT UPDATE
ON SC