实验四:数据库安全性

一、实验目的

1.理解数据库安全性概念,了解关系数据库中常用的安全策略;

2.掌握自主存取控制的原理,掌握授权语句的使用;

3.掌握Oracle数据库中的用户管理、权限管理和角色管理;

4.理解Oracle中模式的概念,清楚模式与用户的关系。

二、实验内容

用SQL语句完成以下内容:

1.用系统帐户sys登录数据库,分别创建数据库用户lisa和tom,初始帐户口令都为“888888”,要求将密码设置为过期状态,初次登录时强制修改密码。为两个用户指定默认表空间为users,并且在users表空间中使用大小不受限制。

create user lisa identified  by 888888

      default tablespace users

      temporary tablespace temp

      quota unlimited on users ;

alter user lisa password expire;

create user tom identified  by 888888

      default tablespace users

      temporary tablespace temp

      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;

(grant create any index to lisa;

grant create any index to tom;)

4.分别用lisa和tom登录,写出相应的SQL语句验证为其授予的权限。

(如果建立的表中有主键约束,需要预先授予lisa和tom用户create any index的权限。)

create table lisa.l1(sno varchar(30) primary key,cno varchar(20),grade number);

drop table tom.t1;

drop table l1;

create table tom.t1(jno varchar(30) primary key,sr varchar(20),title varchar(20));

create table lisa.t2(jno varchar(30) primary key,sr varchar(20),title varchar(20));

select * from job3.sc;

select * from tom.t1;

create view tom.view1 as select * from job3.student where scollege='信息工程学院';

create view lisa.view2 as select * from l1;

5.用系统帐户sys登录数据库,创建用户user1_admin,将角色权限DBA授予用户user1_admin,并将S、P、J、SPJ四张表导入到user1_admin模式下。

create user user1_admin identified  by 888888

      default tablespace users

      temporary tablespace temp

      quota unlimited on users ;

grant DBA to user1_admin;

6.用user1_admin登录,完成以下授权。(要求授完权后,在lisa和tom用户下执行相应的

SQL语句验证授权是否成功,相同的权限只需验证一个即可。)

(1)把对表s的insert权力授予用户lisa,并允许他再将此权限授予其他用户。

(2)用户tom对s,p,j三个表有select和insert权力

(3)用户lisa对spj表有delete权力,对qty字段具有update权力。

(4)收回lisa对s表的插入权限。*/

grant insert on s to lisa with grant option;

insert into user1_admin.s values('s6','中华','西安','12222');

--允许他再将此权限授予其他用户。

grant insert on user1_admin.s to tom;

insert into user1_admin.s values('s8','2','3',null);

select * from user1_admin.s;

经验证,可以插入。

grant select,insert on s to tom;

select * from user1_admin.s;

insert into user1_admin.s values('s7','1','1',null);

grant select,insert on p to tom;

select * from user1_admin.p;

insert into user1_admin.p values('p7','1','1',20);

grant select,insert on j to tom;

select * from user1_admin.j;

insert into user1_admin.j values('j8','1','1');

grant delete on spj to lisa;

grant update(qty)on spj to lisa;

update user1_admin.spj set qty = 10 where sno= 's1';

delete from user1_admin.spj where sno ='s5' and pno='p2';

经验证,操作无误。

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 888888

      default tablespace users

      temporary tablespace temp

      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语句对权限进行验证。

Student表:

select * from user2_admin.Student;

insert into user2_admin.Student

values('203030','小红',null,null,null,null,null,null,null);

delete from user2_admin.Student where sno='203030';

update user2_admin.Student  set ssex = '男' where sno = '101101';

Course表:

select * from user2_admin.Course ;

insert into user2_admin.Course values('2030303','英语',null,null,null,null);

delete from user2_admin.Course where cno='2030303';

update user2_admin.Course  set credit = '2.5' where cno = '3094217' ;

Teacher表:

select * from user2_admin.Teacher ;

insert into user2_admin.Teacher values('203030','小红','女',null,null,null);

delete from user2_admin.Teacher where tno='203030';

update user2_admin.Teacher  set tsex = '男' where tno ='1202087';

SC表:

select * from user2_admin.SC;

insert into user2_admin.SC values('203030','1',null);

delete from user2_admin.SC where sno='203030';

update user2_admin.SC set grade = 100 where sno='101504';

TC表:

select * from user2_admin.TC;

insert into user2_admin.TC values('203030','1','1',null,null,null);

delete from user2_admin.TC where id='203030';

update user2_admin.TC  set tno = '1' where id ='1';

三、思考与回答

1.简述Oracle中模式与用户的关系。

用户:Oracle用户是用连接数据库和访问数据库对象的。(用户是用来连接数据库访问数据库)。

模式:模式是数据库对象的集合。模式对象是数据库数据的逻辑结构。(把数据库对象用模式分开成不同的逻辑结构)。

用户与模式的区别:用户是用来连接数据库对象。而模式用是用创建管理对象的。(模式跟用户在oracle 是一对一的关系。)

2.归纳总结数据库中常见的安全策略与方法。

用户身份鉴别;自主存取控制;强制存取控制;视图等等。

四、实验总结

1.本次实验通过写SQL语句创建用户,并给用户授以系统权限和对象权限,通过动手练习,对于语句更加熟悉。加深了对知识的理解。

2.创建角色,并给角色授权,再将角色授予给用户。对角色增加或删除权限时,被授予该角色的用户的权限也会相应的增加或删除权限。对于批量管理用户权限比较方便。

3.实验过程中,也出现了一些错误,比如表或试图不存在、权限不足等。在纠正错误的过程中,排查了自己的一些知识上的漏洞。

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、实验目的 使学生加深对数据库安全性和完整性的理解。并掌握SQL Server中有关用户、角色及操作权限的管理方法。熟悉通过SQL语句对数据进行完整性控制。 二、实验内容和要求   数据库安全性实验,在SQL Server企业管理器中,设置SQL Server的安全认证模式,实现对SQL Server的用户和角色管理,设置和管理数据操作权限。   具体内容如下:   设置SQL Server的安全认证模式(Windows或SQL Server和Windows(S)认证模式)。   登录的管理 创建一个登录用户   数据库用户的管理 登陆用户只有成为数据库用户(Database User)后才能访问数据库。每个数据库的用户信息都存放在系统表Sysusers中,通过查看Sysusers表可以看到该数据库所有用户的情况。SQL Server的数据库中都有两个默认用户:dbo(数据库拥有者用户)和(dba)。通过系统存储过程或企业管理器可以创建新的数据库用户。   角色的管理 创建一个角色,使创建的用户成为该角色的成员,并授予一定的操作权限。   在学生表中定义主键、外键约束。   在课程表的“课程名”字段上定义唯一约束。   在选课表的“成绩”字段上定义check约束,使之必须大于等于0且小于等于100.“课程号”字段只能输入数字字符。   定义规则,并绑定到读者表的“性别”字段,使之只能取“男、女”值。   在学生表中增加出生日期字段。定义缺省,并绑定到借阅表的“借阅日期”上,使之只能取当前日期。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值