这里写目录标题
一、数据安全性控制
1.关系数据库系统中的存取权限
2.授权:授予与收回
①GRANT(授予权限)
GRANT<权限>[<权限>]
ON<对象类型><对象名>[<对象类型><对象名>]
TO<用户>[<用户>]
[WITH GRANT OPTION];
[WITH GRANT OPTION] 获得某种权限的用户还可以把这种权限授予其他用户
因为要授权很多用户权限所以我们先创建一些用户,但是一个登陆名只对应一个用户所以要多创建几个登录名。
如果用一个登录名创建的话会报错
create login U_1 with password='123456';--创建登录名
create user U1 for login U_1; --创建用户名
create login U_2 with password='123456';
create user U2 for login U_2;
create login u_3 with password='123456';
create user U3 for login U_3;
create login U_4 with password='123456';
create user U4 for login U_4;
create login U_5 with password='123456';
create user U5 for login U_5;
create login U_6 with password='123456';
create user U6 for login U_6;
create login U_7 with password='123456';
create user U7 for login U_7;
[例4.1] 把查询Student表权限授给用户U1
GRANT SELECT
ON Student --ON TABLE Student会报错应该是SQL和T-SQL的差别
TO U1
[例4.2] 把对Student表和Course表的全部权限授予用户U2和U3
--标准SQL
GRANT ALL PRIVILEGES
ON TABLE Student,Course
TO U2,U3;
--T-SQL 要分开授权
GRANT ALL PRIVILEGES
ON Student
TO U2,U3;
GRANT ALL PRIVILEGES
ON Course
TO U2,U3;
[例4.3] 把对表SC的查询权限授予所有用户 (有问题没显示)
GRANT SELECT
ON SC
TO PUBLIC
[例4.4] 把查询Student表和修改学生学号的权限授给用户U4(指出相应属性列名)
GRANT UPDATE(Sno),SELECT
ON Student
TO U4
[例4.5] 把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户
GRANT INSERT
ON SC
TO U5
WITH GRANT OPTION
②REVOKE(收回权限)
[例4.8] 把用户U4修改学生学号的权限收回 (from)
REVOKE UPDATE(Sno)
ON Student
FROM U4
[例4.9] 收回所有用户对表SC的查询权限
REVOKE SELECT
ON SC
FROM PUBLIC
[例4.10] 把用户U5对SC表的INSERT权限收回
REVOKE INSERT
ON SC
FROM U5
会收回失败,因为他可以再将此权限授予其他用户(需要使用CASCADE)
REVOKE INSERT
ON SC
FROM U5 CASCADE
二,数据库角色
角色(ROLE):
被命名的一组与数据库操作相关的权限
优点:简化角色是权限的集合。可以为一组具有相同权限的用户创建一个角色。
1.角色的创建
CREATE ROLE <角色名>
2.给角色授权
GRANT <权限>[,<权限>]…
ON <对象类型>对象名
TO <角色>[,<角色>]…
3. 将一个角色授予其他的用户或用户
GRANT <角色1>[,<角色2>]…
TO <角色3>[,<用户1>]…
[WITH ADMIN OPTION]
4.角色权限的收回
REVOKE <权限>[,<权限>]…
ON <对象类型> <对象名>
FROM <角色>[,<角色>]…
[例4.11] 通过角色来实现将一组权限授予一个用户。
CREATE ROLE R1
GRANT SELECT,UPDATE,INSERT
ON Student
TO R1
[例4.12] 角色的权限修改
GRANT DELETE
ON Student
TO R1
[例4.13] 角色的权限修改
REVOKE SELECT
ON Student
FROM R1
三,审计
强制存取控制
1.在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类
(1)主体是系统中的活动实体
数据库管理系统所管理的实际用户
(2)客体是系统中的被动实体
文件、基本表、索引、视图
2.对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)
绝密(Top Secret,TS)
机密(Secret,S)
可信(Confidential,C)
公开(Public,P)
TS>=S>=C>=P
3.强制存取控制规则
( 1 )仅当 主体 的许可证级别 大于 或 等于 客体 的密级时,该主体才能 读 相应的客体
( 2 )仅当 主体 的许可证级别 小于 或 等于 客体 的密级时,该主体才能 写 相应的客体
四,视图机制
把要保密的数据 对无权存取这些数据的用户 隐藏起来,对数据提供一定程度的安全保护
[例4.14] 建立计算机系学生的视图,把对该视图的SELECT权限授于王平,把该视图上的所有操作权限授于张明
CREATE VIEW CS_Student
AS
SELECT *
FROM Student
WHERE Sdept='CS'
GRANT SELECT
FROM CS_Student
TO 王平
GRANT ALL PRIVILEGES
FROM CS_Student
TO 张明
五,审计
1.审计功能
审计功能把用户对数据库的所有操作自动记录下来放入审计日志
审计员利用审计日志 监控数据库中的各种行为, 找出非法存取数据的人、时间和内容。
2.AUDIT语句和NOAUDIT语句
AUDIT语句:设置审计功能
NOAUDIT语句:取消审计功能
[例4.15] 对修改SC表结构或修改SC表数据的操作进行审计
AUDIT ALTER,UPDATE
ON SC
[例4.16] 取消对SC表的一切审计
NOAUDIT ALTER,UPDATE
ON SC
这几条语句是SQL SERVER无法用的。。