一、实验目的
1.理解数据库安全性概念,了解关系数据库中常用的安全策略;
2.掌握自主存取控制的原理,掌握授权语句的使用;
3.掌握Oracle数据库中的用户管理、权限管理和角色管理;
4.理解Oracle中模式的概念,理解模式与用户的关系。
二、实验内容
用SQL语句完成以下内容:
1.用系统帐户sys登录数据库,分别创建数据库用户lisa和tom,初始帐户口令都为“888888”,要求将密码设置为过期状态,初次登录时强制修改密码。为两个用户指定默认表空间为users,并且在users表空间中使用大小不受限制。
create user lisa identified by 888888 default tablespace users quota unlimited on users; alter user lisa password expire;
create user tom identified by 888888 default tablespace users quota unlimited on users; alter user tom password expire;
2.为了使lisa和tom能够登录数据库,请为其授予相应的权限。
grant create session to lisa; grant create session to tom;
3.授予用户lisa在自己模式下创建表的权限,在任何模式下删除表的权限,授予用户tom可以在任何模式下创建表的权限,查询任何模式下表中数据的权限和在任何模式下创建视图的权限。
grant create table,drop any table to lisa; grant create any table,select any table,create any view to tom;
4.对Lisa和tom的权限进行验证。
(1)用lisa用户登录,写出相应SQL语句验证在任何模式下删除表的权限,如果建立的表中有主键约束,需要预先授予lisa用户create any index的权限。
grant create any index to lisa; grant create any index to tom; create table lisa1 ( lno varchar2(10) primary key ); drop table lisa1;
(2)用tom用户登录,写出相应的SQL语句验证在任何模式下创建视图的权限。
create table tom1 ( tno varchar2(10) primary key ); create view tom.view2 as select * from lisa1; create table lisa.t2 ( name varchar2(10) ); select * from lisa.t2;
5.用系统帐户sys登录数据库,创建用户user1_admin,将角色权限DBA授予用户user1_admin,并将S、P、J、SPJ四张表导入到user1_admin模式下。
create user user1_admin identified by 123456 default tablespace users quota unlimited on users; grant dba to user1_admin;
6.用user_admin登录,完成以下授权。
(1)把对表s的插入权限授予用户lisa,并允许他再将此权限授予其他用户,在用户lisa下写出相应语句验证插入权限。
grant insert on s to lisa with grant option; insert into user1_admin.s values('s6','陕西','西安','1'); grant insert on user1_admin.s to tom; insert into user1_admin.s values('s8','4','3',null); select * from user1_admin.s;
(2)用户tom对s,p,j三个表有查询和插入权限,在tom用户下写出相应语句验证对s表的查询权限。
grant select,insert on s to tom; grant select,insert on p to tom; grant select,insert on j to tom; select * from user1_admin.s;
(3)收回lisa对s表的插入权限,收回权限后进行相应操作看权限是否收回。
revoke insert on s from lisa; insert into user1_admin.s values('s1','陕西','西安','1');
7.把对用户tom授予的所有权限收回,只保留登录权限。注意:系统权限和对象权限应该分别写语句收回。
revoke create any table,select any table,create any view from tom; revoke select,insert on s from tom; revoke select,insert on p from tom; revoke select,insert on j from tom; revoke create any index from tom;
8.用系统帐户sys登录数据库,创建用户user2_admin,将角色权限DBA授予此用户,在user2_admin的模式下导入Sudent、Course、Teacher、TC和SC表。
create user user2_admin identified by 123456 default tablespace users quota unlimited on users; grant dba to user2_admin;
9.使用user2_admin登录,创建角色school_manager,将user2_admin模式下五张表的插入、删除、修改和查询数据的权限授予角色school_manager,将角色的权限授予tom。
create role school_manager; grant insert,delete,update,select on student to school_manager; grant insert,delete,update,select on course to school_manager; grant insert,delete,update,select on teacher to school_manager; grant insert,delete,update,select on tc to school_manager; grant insert,delete,update,select on sc to school_manager; grant school_manager to tom;
10.对于通过school_manager角色授出的权限,挑选一个表上的一个数据操作权限在tom用户下执行相应的SQL语句进行验证。
select * from user2_admin.student;
这里我用的最简单的查询最为验证。
三、实验总结
1.简述Oracle中模式与用户的关系。
用户(user):Oracle用户是用连接数据库和访问数据库对象的。(用户是用来连接数据库访问数据库)。
模式(schema):模式是数据库对象的集合。模式对象是数据库数据的逻辑结构。(把数据库对象用模式分开成不同的逻辑结构)。
用户(user)与模式(schema)的区别:用户是用来连接数据库对象。而模式用是用创建管理对象的。(模式跟用户在oracle 是一对一的关系。)
2.在数据库中实现安全性控制的常用技术有哪些?
(1)用户身份鉴别
(2)存取控制
(3)视图机制
(4)审计
(5)数据加密
(6)其他