SQL学习笔记(二)

SQL学习笔记(二)

数据库安全性

授权与收回

GRANT

1
2
3
4
5
GRANT <权限>[,<权限>]...
ON <对象类型><对象名>[,<对象类型><对象名>]...
TO <用户>[,<用户>]...
[WITH GTANT OPTION];
-- WITH GRANT OPTION表示获得了某种权限的用户还可以把这种权限授予其他用户,但不能循环授予
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
-- 把查询Student表的权限授予给用户U1
GRANT SELECT
ON TABLE Student
TO U1;

-- 把对Student表和Course表的全部操作权限授予用户U2和U3
GRANT ALL PRIVILEGES
ON TABLE Student,Course
TO U2,U3;

-- 把对表SC查询权限授予所有用户
GRANT SELECT
ON TABLE SC
TO PUBLIC;

-- 把查询Student表和修改学生学号的权限给用户U4
GRANT UPDATE(Sno),SELECT
ON TABLE Student
TO U4;

-- 把对表SC的INSERT权限授予U5用户,并允许将此权限再授予其他用户
GRANT INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION;

REVOKE

1
2
3
REVOKE <权限>[,<权限>]...
ON <对象类型><对象名>[,<对象类型><对象名>]...
FROM <用户>[,<用户>]...[CASCADE|RESTRICT];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- 把用户U4修改学号的权限收回
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;

-- 收回所有用户对表SC的查询权限
REVOKE SELECT
ON TABLE SC
FROM PUBLIC;

-- 把用户U5对SC表的INSERT权限收回
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE;

创建数据库模式的权限

CREATE USER<username> [WITH] [DBA|RESOURCE|DBA];

数据库模式的权限

数据库角色

数据库角色是被命名的元组与数据库操作相关的权限,角色是权限的集合。

  1. 角色的创建

CREATE ROLE <角色名>;

  1. 给角色授权

GRANT,同给用户授权

  1. 将一个角色授予其他的角色或用户

GRANT, [WITH ADMIN OPTION]参数表示被授权的角色或用户可以继续授权。

  1. 角色权限的收回

REVOKE 同用户权限收回

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-- 通过角色实现将一组权限授予一个用户
/*创建一个角色*/
CREATE ROLE R1;
/*给角色授权*/
GRANT SELECT,UPDATE,INSERT
ON TABLE Student
TO R1;
/*将角色授权给王平、张明、赵玲*/
GRANT R1
TO 王平,张明,赵玲;
/*收回权限*/
REVOKE R1
FROM 张平;
/*给R1角色增加删除权限*/
GRANT DELETE
FROM TABLE Student
TO R1;

视图机制

为不同用户定义不同的视图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- 创建计算机系学生视图
CREATE VIEW CS_Student
AS
SELECT *
FROM Student
WHERE Sdept='CS';
/*给王平老师查询权限*/
GRANG SELECT
FROM CS_Student
TO 王平;
/*给系主任全部权限*/
GRANT ALL PRIVILEGES
ON CS_Student
TO 张明;

审计

审计功能把用户读数据库的所有操作自动记录下来放入审计日志中,审计员可以利用审计日志监控数据库中的所有行为,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、事件和内容等。

1
2
3
4
5
6
7
-- 对修改SC表结构或修改SC表数据的操作进行审计
AUDIT ALTER UPDATE
ON SC;

-- 取消对SC表的一切审计
NOAUDIT ALTER UPDATE
ON SC;

一般需要吧audit_trail设为true。

数据库安全审计系统提供了一种事后检查的安全机制。