1、数据库系统原理实验报告 实验三 数据库安全性技术 班级: 姓名: 学号: 任课教师: 实验教师: 上机时间: 【实验目的】 1、理解安全性的概念。 2、理解用户及角色的相关概念。 3、掌握Oracle的安全性技术,系统权限及对象权限的授予和回收方法。 【实验性质】 综合性实验 【实验学时】 2H 【实验内容】 今有两个关系模式: 部门(部门号,名称,经理名,地址,电话号) 职工(职工号,
2、姓名,年龄,职务,工资,部门号) 一、在Hr用户模式下,创建职工和部门表,各插入2条测试数据。 drop table 职工 CREATE TABLE 部门 ( 部门号 VARCHAR2(10) PRIMARY KEY, 名称 VARCHAR2(10), 经理名 VARCHAR2(8), 地址 VARCHAR2(10), 电话号 VARCHAR2(11) ); CREATE TABLE 职工 ( 职工号 VARCHAR2(10) PRIMARY KEY, 姓名 VARCHAR2(8), 年龄 INT,
3、 职务 VARCHAR2(10), 工资 INT, 部门号 VARCHAR2(10), FOREIGN KEY (部门号) REFERENCES 部门(部门号) ); INSERT INTO 部门 VALUES('D1','人事部','张三','湖北','07196586365'); INSERT INTO 部门 VALUES('D2','财务部','李四','湖北','07198645214'); SELECT * FROM 部门; INSERT INTO 职工 VALUES('E1','王五',32,'科长',2300,'D1
4、'); INSERT INTO 职工 VALUES('E2','赵六',48,'部长',4300,'D2'); SELECT * FROM 职工; 二、定义用户,用SQL的GRANT和REVOKE语句完成以下授权定义或存取控制功能。 1、创建数据库本地用户test,密码为oracle,默认表空间为users,临时表空间为temp,同时具有create session系统权限。 DROP user t20100230203_TEST; CREATE USER t20100230203_TEST IDENTIFIED BY oracle DEFAULT TABLESP
5、ACE users TEMPORARY TABLESPACE TEMP; GRANT CREATE SESSION TO t20100230203_TEST; REVOKE CREATE SESSION FROM t20100230203_TEST; 2、用户王明对两个表有SELECT权力; DROP user t20100230203_王明; CREATE USER t20100230203_王明 IDENTIFIED BY ORACLE DEFAULT TABLESPACE users TEMPORARY TABLESPACE TEMP;
6、GRANT CREATE SESSION TO t20100230203_王明; GRANT SELECT ON 部门 TO t20100230203_王明; GRANT SELECT ON 职工 TO t20100230203_王明; REVOKE CREATE SESSION FROM t20100230203_王明; REVOKE SELECT ON 部门 FROM t20100230203_王明; REVOKE SELECT ON 职工 FROM t20100230203_王明; 3、用户李勇对两个表有INSERT和DELETE权力; CREATE USER
7、t20100230203_李勇 IDENTIFIED BY ORACLE DEFAULT TABLESPACE users TEMPORARY TABLESPACE TEMP; GRANT CREATE SESSION TO t20100230203_李勇; GRANT INSERT ,DELETE ON 部门 TO t20100230203_李勇; GRANT INSERT ,DELETE ON 职工 TO t20100230203_李勇; REVOKE CREATE SESSION FROM t20100230203_李勇; REVOKE INSERT ,DE
8、LETE ON 部门 FROM t20100230203_李勇; REVOKE INSERT ,DELETE ON 职工 FROM t20100230203_李勇; 4、用户刘星对职工表有SELECT权力,对工资字段具有更新权力; CREATE USER t20100230203_刘星 IDENTIFIED BY ORACLE DEFAULT TABLESPACE users TEMPORARY TABLESPACE TEMP; GRANT CREATE SESSION TO t20100230203_刘星; GRANT UPDATE(工资) ON 职工 TO
9、t20100230203_刘星; GRANT SELECT ON 职工 TO t20100230203_刘星; REVOKE CREATE SESSION FROM t20100230203_刘星; REVOKE UPDATE ON 职工 FROM t20100230203_刘星; REVOKE SELECT ON 职工 FROM t20100230203_刘星; 5、用户周平具有对两个表所有权力(读、插、改、删数据),并具有给其他用户授权的权力; 提示:所有权力为ALL PRIVILEGE,在GRANT语句中使用WITH GRANT OPTION选项,被授权的用
10、户就具有了再次将对象权限授予其他用户的能力。 CREATE USER t20100230203_周平 IDENTIFIED BY ORACLE DEFAULT TABLESPACE users TEMPORARY TABLESPACE TEMP; GRANT CREATE SESSION TO t20100230203_周平; GRANT ALL PRIVILEGES ON 部门 TO t20100230203_周平 WITH GRANT OPTION; GRANT ALL PRIVILEGES ON 职工 TO t20100230203_周平 WITH GRANT O
11、PTION; SELECT * FROM 职工; REVOKE CREATE SESSION FROM t20100230203_周平; REVOKE ALL PRIVILEGES ON 部门 FROM t20100230203_周平; REVOKE ALL PRIVILEGES ON 职工 FROM t20100230203_周平; 6、用户杨兰具有从每个部门职工中SELECT最高工资,最低工资,平均工资的权力,他不能查看每个人的工资。 提示:首先创建视图查询每个部门职工中的最高工资,最低工资和平均工资,然后授予用户查询视图的权限。 CREATE VIEW 职工
12、VIEW(最高工资,最低工资,平均工资) AS SELECT MAX(工资),MIN(工资),AVG(工资) FROM 职工; CREATE USER t20100230203_杨兰 IDENTIFIED BY ORACLE DEFAULT TABLESPACE users TEMPORARY TABLESPACE TEMP; GRANT CREATE SESSION TO t20100230203_杨兰; GRANT SELECT ON 职工_VIEW TO t20100230203_杨兰; REVOKE CREATE SESSION FROM
13、t20100230203_杨兰; REVOKE SELECT ON 职工_VIEW FROM t20100230203_杨兰; 三、设计安全机制使得用户“liming”只能查询年龄在40岁以上(包括)职工。 提示:用视图实现 CREATE VIEW liming_VIEW1(职工号,姓名,年龄,职务,工资,部门号) AS SELECT * FROM 职工 WHERE 年龄>40; drop user t20100230203_liming; CREATE USER t20100230203_liming IDENTIFIED BY ORACLE
14、 DEFAULT TABLESPACE users TEMPORARY TABLESPACE TEMP; GRANT CREATE SESSION TO t20100230203_liming; GRANT SELECT ON liming_VIEW1 TO t20100230203_liming; REVOKE CREATE SESSION FROM t20100230203_liming; REVOKE SELECT ON liming_VIEW1 FROM t20100230203_liming; 四、设计安全机制使得用户“liming”只能访问“
15、职工”的职工号、姓名。 提示:用视图实现 CREATE VIEW liming_VIEW2(职工号,姓名) AS SELECT 职工号,姓名 FROM 职工 ; CREATE USER t20100230203_liming2 IDENTIFIED BY ORACLE DEFAULT TABLESPACE users TEMPORARY TABLESPACE TEMP; GRANT CREATE SESSION TO t20100230203_liming2; GRANT SELECT ON liming_VIEW2 TO t20100230203_lim
16、ing2; REVOKE CREATE SESSION FROM t20100230203_liming2; REVOKE SELECT ON liming_VIEW2 FROM t20100230203_liming2; 五、设计角色“student”,可以查看“职工”的职工号、姓名、年龄。将用户“liming”添加到角色“student”中。 提示:用视图实现 CREATE VIEW liming_VIEW3(职工号,姓名,年龄) AS SELECT 职工号,姓名,年龄 FROM 职工 ; CREATE ROLE t20100230203_s
17、tudent ; GRANT SELECT ON liming_VIEW3 TO t20100230203_student; CREATE USER t20100230203_liming3 IDENTIFIED BY ORACLE DEFAULT TABLESPACE users TEMPORARY TABLESPACE TEMP; GRANT CREATE SESSION TO t20100230203_liming3; GRANT t20100230203_student TO t20100230203_liming3; REVOKE CREATE SESSION FROM t20100230203_liming3; REVOKE t20100230203_student FROM t20100230203_liming3; 【实验总结】 请根据实验内容谈谈你对本次实验的收获、感想,或提出你对实验内容的建议等等。 批改教师评语: 实验报告成绩: 批改教师签字 批改时间: 8






