数据库实验报告
实验 2:安全性语言实验
实验 2.1 自主存取控制实验
【实验目的】
掌握自主存取控制权限的定义和维护方法。
【实验内容和要求】
定义用户、角色,分配权限给用户,角色,回收权限,以相应的用户名登录数据库验证
权限分配是否正确。选择一个应用场景,使用自主存取控制机制设计权限分配。可以采用两
种方案。
方案一:采用 system 超级用户登录数据库,完成所有权限分配工作,然后用相应用户
登录数据库以验证权限分配正确性。
方案二:采用 system 用户登录数据库创建三个部门经理用户,并分配相应的权限,然
后分别用三个经理用户名登录数据库,创建相应部门的 user,role,并分配相应的权限。
下面的实验报告实例采用方案一。验证权限分配之前,请备份好数据库;针对不同的用
户所具有的权限,分别设计相应的 SQL 语句加以验证。
【实验重点和难点】
实验重点:定义角色,分配权限和回收权限。
实验难点:实验方案 2 实现权限的再分配和回收。
【实验工具】
SQL Server 2017、SQL Server Management studio
【实验过程】
设有一个企业,包括采购、销售和客户管理等三个部门,采购部门经理 David,采购员
Jeffery;销售部门经理 Tom,销售员 Jane;客户管理部门经理 Kathy,职员 Mike。该企业
一个信息系统覆盖采购、销售和客户管理等三个部门的业务,其数据库模式为 TPC-H 数据模
式。针对此应用场景,使用自主存取控制机制设计一个具体的权限分配方案。
(1)创建用户
1 为采购、销售和客户管理等三个部门的经理创建用户标识,要求具有创建用户或角
色的权利。
A. 首先在 SQL Server 服务器级别,创建登录账户 David、Tom 和 Kathy,默认连接到的数
据库:“dbTPC”。
执行结果如下图所示:
1 / 10
数据库实验报告
B. 创建数据库用户 David、Tom 和 Kathy。
执行结果如下图所示:
C. 为数据库用户 David、Tom 和 Kathy 分配创建角色的权限。
2 为采购、销售和客户管理等三个部门的职员创建用户标识和用户口令。
A. 首先在 SQL Server 服务器级别,创建登录账户 Jeffery、Jane 和 Mike,默认连接到的
数据库:“dbTPC”。
2 / 10
数据库实验报告
执行结果如下图所示:
B. 创建数据库用户 Jeffery、Jane 和 Mike。
执行结果如下图所示:
(2)创建角色并分配权限
1 为各个部门分别创建一个查询角色,并分配相应的查询权限。
3 / 10
数据库实验报告
执行结果如下图所示:
2 为各个部门分别创建一个职员角色,对本部门信息具有查看、插入权限。
执行结果如下图所示:
4 / 10
数据库实验报告
3 为各个部门创建一个经理角色,相应角色对本部门的信息具有完全控制权限,对其
他部门的信息具有查询权。经理有权给本部门职员分配权限。
执行结果如下图所示:
(3)给用户分配权限
1 给各部门经理分配权限。
2 给各部门职员分配权限。
5 / 10
数据库实验报告
(4)回收角色或用户权限
1 收回客户经理角色的销售信息查看权限。
2 回收 Mike 的客户部门职员权限。
(5)验证权限分配正确性
1 以 David 用户名登录数据库,验证采购部门经理的权限。
A. 验证采购部门经理对表 part 的查询权限。
B. 验证采购部门经理对表 supplier 的更新权限。
C. 验证采购部门经理对表 CUSTOMER 的查询权限。
6 / 10
数据库实验报告
【实验总结】
(1)在创建数据库用户 Jeffery、Jane 和 Mike 之后,发现在 dbTPC 数据库下无法找到
这三个用户,后来将可用数据库改为了 dbTPC 后再执行一次就可以了,如下所示:
(2)SQL Server 2000 和 SQL Server 7.0 版在安装过程中定义几个固定角色。 可以在这些
角色中添加用户以获得相关的管理权限。 下面是服务器范围内的角色。
· sysadmin:可以在 SQL Server 中执行任何活动。
·serveradmin:可以设置服务器范围的配置选项,关闭服务器。
·setupadmin:可以管理链接服务器和启动过程。
·securityadmin:可以管理登录和 CREATE DATABASE 权限,还可以读取错误日志和更改密
码。
· processadmin:可以管理在 SQL Server 中运行的进程。
·dbcreator:可以创建、更改和除去数据库。
· diskadmin:可以管理磁盘文件。
·bulkadmin:可以执行 BULK INSERT 语句。
如下图所示:
(3)DB_owner 权限:DB 是 database 的缩写,owner 即拥有者的意思。它是指某个数据库
的拥有者,它拥有了对数据库的修改、删除、新增数据表,执行大部分存储过程的权限。但
是涉及到一些系统敏感操作的权限不具备,这也是它与 SA 权限的唯一区别。
(4)with admin option 与 with grant option 的区别:
1
with admin option 的意思是:被授予该权限的用户有权将某个权限(如 create any
table)授予其他用户或角色,取消是不级联的。如授予 A 系统权限 create session with
admin option,然后 A 又把 create session 权限授予 B,但管理员收回 A 的 create session
权限时,B 依然拥有 create session 的权限。但管理员可以显式收回 B create session 的
权限,即直接 revoke create session from B.
2
with grant option 的意思是:权限赋予/取消是级联的,如将 with grant option
用于对象授权时,被授予的用户也可把此对象权限授予其他用户或角色,不同的是但管理员
收回用 with grant option 授权的用户对象权限时,权限会因传播而失效,如 grant select
on table with grant option to A,A 用户把此权限授予 B,但管理员收回 A 的权限时,B
的权限也会失效,但管理员不可以直接收回 B 的 SELECT ON TABLE 权限。
(5)revoke 与 deny 的区别:
7 / 10
数据库实验报告
2
1
revoke:收回之前被授予的权限
deny:拒绝给当前数据库内的安全帐户授予权限并防止安全帐户通过其组或角色成
员资格继承权限。比如 UserA 所在的角色组有 inset 权限,但是我们 Deny UserA 使其没有
insert 权限,那么以后即使 UserA 再怎么到其他含有 Insert 的角色组中去,还是没有 insert
权限,除非该用户被显示授权。
简单来说,deny 就是将来都不许给,revoke 就是收回已经给予的。
实验 2.2 审计实验
【实验目的】
掌握数据库审计的设置和管理方法,以便监控数据库操作,维护数据库安全。
【实验内容和要求】
创建审计,设置审计权限,然后以普通用户登录数据库,执行相应的数据操纵 SQL
语句,验证相应审计设置是否生效,最后再以具有审计权限的用户登录数据库,查看是
否存在相应的审计信息。
【实验重点和难点】
实验重点:数据库对象级审计,数据库语句级审计。
实验难点:合理地设计各种审计信息。一方面,为了保护系统重要的敏感数据,需
要系统地设计各种审计信息,不能留有漏洞,以便随时监督系统使用情况,一旦出现问
题也便于追查;另一方面,审计信息设置过多会严重影响数据库的使用性能,因此需要
合理设置。
【实验工具】
SQL Server 2017、SQL Server Management studio
【实验过程】
(1) 创建审核
1 创建审核并定义目标。
8 / 10