实验七 SQL Server数据库的安全性控制
一、实验目的
1.熟悉通过SQL对数据进行安全控制。
2.掌握GRANT与REVOKE语句的使用,熟悉数据库用户的创建和授权。
二、实验内容
(一)、第一部分:以上先采用图形用户界面进行设置权限,然后试着采用SQL命令方式完成上述设计。
1.设置 SQL Server 的安全认证模式。
2.创建登录帐户U1,U2,U3,采用默认设置,并测试登录。登录后,并尝试是否有权限查看SCHOOL数据库。(建议创建登录用户时,取消“强制实施密码策略”。注意登录(服务器)用户与数据库用户的区别)
3.创建数据库用户U1,U2,U3,采用默认设置。尝试分别通过登录帐户U1,U2,U3登陆SCHOOL数据库。
4.为U1账户设置对Student表的权限,让它拥有对Student表的select权限,并测试、验证U1的权限。
为U1账户设置对Teacher表的teac_id和teac_name具有select权限,并测试、验证U1的权限。
设置数据库角色。
设置数据库角色R1,R1能查询、更新Course表,并把数据库用户U2添加为角色R1的成员,并验证U2是否具有此角色R1的权限。
对U2进行授权,让它拥有对StudentGrade的Grade具有增删改查的权限,且具有传递授权权限;
并且U2将其所有权限传递给U3。
测试、验证U2、U3的权限。
收回U2对Course表的更新权限,并测试、验证U2的权限。
(二)、第二部分:远程连接SQL SERVER
1. 查看所创建的用户,以及该用户的权限,并请用表格形式列出(一)中创建的用户及其权限。
2.两人一组,通过SQL SERVER用户创建、权限设置,通过所创建的用户登录目的服务器。步骤如下:
(1).在服务器端创建SQL登录用户并授权(GRANT、REVOKE);
(2).设置服务器的登录方式:右键单击树形目录中的SQL服务器->属性->安全性->身份验证:设置为SQL+Windows;
(3).客户端,新建SQL注册,选择要登录的SQL服务器->连接使用:SQL登录->输入登录用户名、密码。
(4).测试用户权限(测试服务器授予的各种权限(在(一)中所授的各种权限),测试越权行为并分析、体会系统的反应)。
前期准备:

在属性中选择安全性,身份验证模块。确认并重启:

在安全性的登录名界面进行修改和设置


密码使用的是比较简单:1234567890
默认的语言是繁体中文。数据库是school数据库。
用户名为Chris

但是回复我一个密码比较简单的信息。
那么只好进行修改咯,
修改多次结果还是回馈给我密码太简单。最后发现是因为勾选了“强制密码策略”;
最终该用户的密码被我设定为:qwertyuiop[

Chris 的用户密码又被修改为123456789;但是回馈给我无权访问!

看来是我没有进行用户权限的分配,Chris用户不具有任何的数据库操作权限。

准备让Chris——user用户有school数据库的使用权限。

成功进入该数据库但是没有任何表。权限还没有设置好。返回到super用户将权限设置一下,
在用户的属性中安全对象选择:


设置相应的权限控制。

刷新一下就有可以对数据库中的数据进行查看和修改(当然是在用户权限给予)
设置数据库角色

数据库角色方便日后的用户权限设置

设置过程基本和用户一致的。
三、实验要求
写下(一)中4-6题的SQL命令
1.为U1账户设置对Student表的权限,让它拥有对Student表的select权限。
1,

grant selecton studentto U1
2.为U1账户设置对Teacher表的teac_id和teac_name具有select权限。
2

grant select(teac_id,teac_name)on teacherto U1
3.设置数据库角色。设置数据库角色R1,R1能查询、更新Course表,并把数据库用户U2添加为角色R1的成员,并验证U2是否具有此角色R1的权限。
3

exec sp_addrolemember 'R1','U2'grant select,updateon courseTo R1
4.对U2进行授权,让它拥有对StudentGrade的Grade具有增删改查的权限,且具有传递授权权限;并且U2将其所有权限传递给U3。(考虑:如何将U2的权限传递给U3?)
4.

grant update(grade),select(grade),delete,alteron studentgradeto U2with grant option
因为delete和alter的不确定性故不需要进行grade的限定。
5.收回U2对Course表的更新权限,并验证。
5,

反馈“casacade”连级


验证成功。
revoke update(grade),select(grade),delete,alteron studentgradefrom U2 cascade
完成(二)中的第1题
1. 查看所创建的用户,以及该用户的权限,并请用表格形式列出(一)中创建的用户及其权限。
四、实验小结
1.什么是数据库的安全性?思考如何真正实现数据库的安全?
课本对于数据库安全性的定义如下(见P133 4.1)
数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露,更改或破坏。
个人的理解和回答如下:
数据安全性是保障数据库里的的数据不被非法地修改删除读取等等操作的一种特性。
实现数据库的安全:
用户权限的合理设置。
数据库管理员需要合理分配给相应的用户权限,需要尽量避免权限所导致的间接数据流露破坏等等。
用户自我权限的严密保护。
不同的用户需要保证自己的用户密码,做到不流传给不法分子和不恶意破坏修改数据等等不良行为。
硬件层面和网络协议。
社会或者政府机构等等共同建立相应的准则和法规维护数据库安全。
2.试述实现数据库安全性控制的常用方法和技术。
参考链接:数据库安全性常用方法
https://jingyan.baidu.com/article/9faa72316e5502073c28cb98.html
在课本P137 4.2 数据库安全性控制中也有提及和讲解。



个人总结:
用户身份鉴别。
最外层保护只有成功鉴别的用户方可进入数据库。
多存取控制。
通过用户权限来限制合法的相应操作。
审计。
该功能是将用户所有对数据操作的行为自动记录到审计日志的功能。
视图。
将一些需要隐藏起来的数据通过试图隐蔽以达到保护的作用。
数据加密。
通过将直接的明文进行一些加密的方式变成密文,掩盖之前的原本的数据。
3. 什么是角色?使用角色有哪些优点?
参考课本P145 4.2.5 数据库角色
被命名的一组与数据库操作相关的权限集合称为角色。
使用角色的优点:节省时间,方便操作,当超级用户要为多个用户设置相同权限时,不需要重复设置这些权限,直接引用该角色即可,也就是说可以简化授权过程。
4.SQL SERVER数据库有哪些权限?分别有什么特点?
参考连接:一文看懂SQLserver数据库角色和权限管理。
http://www.360doc.com/content/19/0520/00/49586_836823198.shtml

特点:
常用权限是直接面向数据本身的。操作权限是基于用户自身的。
5. 简述用户和角色的关系。
一个用户可以拥有多个角色。
一个用户可以有多种权限集合,例如老师可以是角色里面的,“改分员”和“查阅者”,那么老师就拥有不同的角色的权限集合。通过这就可以扩大该用户的权限范围。
各位帅气漂亮的大大们
你懂得
十八【殷勤脸】





