数据库实验课堂作业- 3安全性

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pfl_327/article/details/84028024
  					数据库实验课堂作业

3.安全性

内容:
(1)设置SQL server 的安全认证模式
(2)建立一个名为“李勇”的登录用户,数据库用户。
(3)演示在SQL中取消“李勇”这个用户
(4)分别通过SQL和SQL语言的数据控制功能,设置和管理数据操作系统权限。对新建
用户李勇授予school数据库中students表的select权限。
(4)实现对SQL的用户和角色管理。具体是创建一个数据库角色OP_of_students,代表一个可以对sudents表进行操作的操作员,对角色的权限进行设置,并将“李勇”,“Web”添加到这个角色中。
(5)创建在选课表choices上的视图CS_view,授权给计算机系的讲授计算科学这门课程(课程号 10010)的数据库用户李勇,让其具有视图上的select权限。
(6)对视图上的score属性列的update权限授予用户李勇,可以修改学生成绩,但是不能对学生的基本信息,如学号,选课号进行修改。
(7)创建test登录用户以public访问数据库,在school数据库的students表上授权查询操作给public,验证test用户是否可以查询students,在撤销public权限,在验证是否可以查询。
(8)在school数据库的students表上授权查询操作给public,并授权给test用户,验证test用户是否可以查询students,先撤销public权限,验证是否可以查询,在撤销test权限,在验证是否可以查询。
(9)查询操作给public,并授权给test用户,验证test用户是否可以查询students,先撤销test权限,验证是否可以查询,在撤销public权限。
(10)创建一个user1的登录用户,采用SQL身份验证,密码user1,允许其访问数据库test,并加入bdowner的构架和角色成员,用user1登录,创建表a,并查询表a。
(11)以管理员账户登录,再次创建表a,看执行是否正确,看是否出现两个表a,若出现,执行一段插入语句insert a values,在管理工具看数据插入到哪个表中?
(12)分别管理员帐户和user1账户下新建查询,执行查询语句对表啊的执行查询,分别记录查询结果,并说明系统分别对哪个表a进行查询?

二、实验代码

--3.1 用户标识与鉴别
exec sp_addlogin ’李勇’,’123456’,’school’,’English’
go
use school
go
expc sp_grantdbaccess ’李勇’
--建立一个服务器用户

use school
exec sp_revokedbaccess’李勇’;
exec sp_droplogin ’李勇’;
--撤销李勇这个登录账户

--3.2 自主存取控制
select * from students

use school
grant select on students to 李勇

--3.3 视图机制在自主存取控制的应用
use school
go
create view CS_View as
  select * from choices
  where cid=’10010’
--在choiuces表上创建视图cs_view

use school
go
grant select on CS_View
  to 李勇
--给用户李勇授予select权限

use school
go
grant update on dbo.[CS_View]([score])
  to 李勇
--将视图CS_View上score列的权限授予用户“李勇”

use school
go
select * from CS_view
--以用户李勇登录,对CS_view进行查询操作

use school
go
update CS_view set score=90
   where no=500024940
select * from CS_view
--对no为500024940的学生的成绩进行修改,改为90分

--3.4public 角色在安全性中的应用
grant select on students to public
--在school数据库的students表上授权查询操作给public

select * from students
--对students表进行查询

revoke select on students to public
--撤销public权限

grant select on students to public
grant select on students to test
--在school数据库的students表上授权查询操作给public和test

revoke select on students to test
--撤销test权限

--3.5理解架构的安全性管理
create table a(a1 char(1),a2,char(2))

select * from a

insert into a values(’a’,’aa’)

--3.6数据库中加密机制的安全管理
create master key
encryption by password=’p@ssword’
--创建主密钥master key,并对主密钥分配密码

create certificate mycert
with
 subject=’my certificate’
expiry_date=’2012-09-23-20:56:30’
--创建数字证书,使得主密钥对该数字证书加密,并设置证书终止时间

create symmetric key sym_my
with algorithm=desx encryption by certificate mycert
--创建对称密钥,使得数字证书对其加密

create table dbo.log_in
(ID int identity primary key,[pwd] nvarchar(100))
--创建用户登录表log_in来验证加密解密过程

open symmetric key sym_my
decryption by certificate mycert
--使用证书解开对称密钥
insert into log_in(pwd) values(encryptbykey(key_guid(’sym_my’),N’mypassword1’))
values(encryptbykey(key_guid(’sym_my’),N’mypassword2’))
values(encryptbykey(key_guid(’sym_my’),N’mypassword3’))
--对pwd字段数据进行加密
close symmetric key sym_my
--关闭对称密钥
select * from dbo.log_in
--对加密后的log_in表进行查询

open symmetric key sym_my decryption by certificate mycert
--再一次使用证书解开对称密钥
select ID,cast(decryptbykey(pwd) as nvarchar) as [pwd] from dbo.log_in
--对解密的表进行查询

猜你喜欢

转载自blog.csdn.net/pfl_327/article/details/84028024