【SQL】实验十二 SQL Server数据库的安全性控制

【SQL】实验十二 SQL Server数据库的安全性控制,第1张

一、实验目的

1.熟悉通过SQL对数据进行安全控制。

2.掌握GRANT与REVOKE语句的使用,熟悉数据库用户的创建和授权。

二、实验内容

本实验使用数据库为SCHOOL数据库。

下面内容先采用图形用户界面进行设置权限,然后试着采用SQL命令方式完成上述设计。

1.设置 SQL Server 的安全认证模式。

2.创建登录帐户U1,U2,U3,采用默认设置,并测试登录。登录后,并尝试是否有权限查看SCHOOL数据库。(建议创建登录用户时,取消“强制实施密码策略”。注意登录(服务器)用户与数据库用户的区别)

默认设置为windows身份认证,不需要密码

3.创建数据库用户U1,U2,U3,采用默认设置。尝试分别能通过登录帐户U1,U2,U3登陆SCHOOL数据库。

和上一题的步骤一样,然后继续在那个界面选择用户权限

 

数据库安全性的 *** 作:写下4-8题的SQL命令

4.为U1账户设置对Student表的权限,让它查询Student,修改除了Stu-id之外的其他字段,并验证。

grant select,update
on Student
to U1
revoke update(Stu_id)
on Student
from U1
exec sp_helplogins U1

验证权限如下图可以直接查看权限,或者连接用户U1直接对Student表 *** 作验证权限,后面的验证权限都类似,故不再具体解释 

5.设置数据库角色。设置数据库角色A1,A1能查询、更新Course表,并把此角色赋予U2并验证U2是否具有此权限

grant select,insert,update,delete
on Course
to A1
with grant option
exec sp_addrolemember 'A1','U2'

将角色赋予用户(直接 *** 作):将U2用户映射到数据库school中,并选择数据库角色成员身份(在数据库-安全性-登录名 点开登录名U2,双击,再选择左侧栏中的用户映射,即可),如下

 6.删除角色A1

exec sp_droprole A1

消息 15144,级别 16,状态 1,第 1 行
该角色有多个成员。角色必须为空后才能删除。

报错如下,因为上一题我们将u2设置为了A1的用户,删除u2再删除A1即可

exec sp_droplogin U2

消息 15138,级别 16,状态 1,第 1 行
数据库主体在该数据库中拥有 架构,无法删除。

此时又报错,因为A1的架构没有删除,如下图找到A1后双击,找到A1的架构名字

我电脑中的架构名为 db_accessadmin

再新建一个用户,将架构移走,即可删除A1 

ALTER AUTHORIZATION ON SCHEMA::db_accessadmin TO db_accessadmin
exec sp_droprole A1

7. 把用户U1修改学生姓名的权限收回。

revoke update(Stu_id)
on Student
from U1

8. 在第4题的基础上修改U1的权限,让 它具有传递性,并传递给U3,并验证。(提示:传递给U3的代码需要进入到U1服务器,右键,新建查询,执行代码)

grant select,update
on Student
to U1
with grant option
revoke update(Stu_id)
on Student
from U1  cascade

登录U1后,新建查询

use school
grant select
on Student
to U3

消息 916,级别 14,状态 2,第 1 行
服务器主体 "U1" 无法在当前安全上下文下访问数据库 "school"。 

因为trustworthy数据库属性用于指明 SQL Server 实例是否信任该数据库以及其中的内容。默认情况下,此设置为 OFF,但是可以使用 ALTER DATABASE 语句将其设置为 ON。

ALTER AUTHORIZATION ON DATABASE::school TO U3

再执行还是不行

消息 15151,级别 16,状态 1,第 2 行
无法对 数据库 'school' 执行 查找,因为它不存在,或者您没有所需的权限。
消息 15151,级别 16,状态 1,第 3 行
无法对 对象 'Student' 执行 查找,因为它不存在,或者您没有所需的权限。
 

因为要添加数据库用户

重新建立一个U5,使用sp_adduser 添加

exec sp_addlogin U5,123
use school
exec sp_adduser U5

再执行赋权限 *** 作 

use school
grant select
on Student
to U3

消息 15151,级别 16,状态 1,第 2 行
无法对 对象 'Student' 执行 查找,因为它不存在,或者您没有所需的权限。

然后我在U1登录的数据库中查看school表的数据,发现school数据库不含任何表,即在U5中,只能授权,不能查找表

use school
grant select
to U5

三、实验小结

1.什么是数据库的安全性?思考如何真正实现数据库的安全?

数据的安全性是指保护数据库以防止不合法使用所造成的数据泄露,更改或者破坏

要真正实现数据库的安全主要从两方面考虑:非法 *** 作与数据泄露,层层创建一个安全的 *** 作环境,且对数据进行层层加密保护等

2.试述实现数据库安全性控制的常用方法和技术。

用户标识与控制,存取控制,视图控制,审计,数据加密等

3. 简述用户和角色的关系。

角色是被命名的一组与数据库 *** 作相关的权限,角色是权限的集合,可以为一组具有拥有相同权限的用户创建一个角色,而用户是应用系统的具体 *** 作者,用户可以自己拥有权限信息,二者为多对多的关系

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/991751.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存