资源描述
数据库系统原理实验报告
实验三 数据库安全性技术
班级: 姓名: 学号:
任课教师: 实验教师: 上机时间:
【实验目的】
1、理解安全性的概念。
2、理解用户及角色的相关概念。
3、掌握Oracle的安全性技术,系统权限及对象权限的授予和回收方法。
【实验性质】
综合性实验
【实验学时】
2H
【实验内容】
今有两个关系模式:
部门(部门号,名称,经理名,地址,电话号)
职工(职工号,姓名,年龄,职务,工资,部门号)
一、在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,
职务 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');
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 TABLESPACE 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;
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 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 ,DELETE 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 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选项,被授权的用户就具有了再次将对象权限授予其他用户的能力。
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 OPTION;
SELECT * FROM 职工;
REVOKE CREATE SESSION FROM t20100230203_周平;
REVOKE ALL PRIVILEGES ON 部门 FROM t20100230203_周平;
REVOKE ALL PRIVILEGES ON 职工 FROM t20100230203_周平;
6、用户杨兰具有从每个部门职工中SELECT最高工资,最低工资,平均工资的权力,他不能查看每个人的工资。
提示:首先创建视图查询每个部门职工中的最高工资,最低工资和平均工资,然后授予用户查询视图的权限。
CREATE VIEW 职工_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 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
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”只能访问“职工”的职工号、姓名。
提示:用视图实现
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_liming2;
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_student ;
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
展开阅读全文