MSSQL数据库安全实验
1、数据库安全的概念
对任何企业组织来说,数据的安全性最为重要。安全性主要是指允许那些具有相应的数据访问权限的用户能够登录到数据库,并访问数据以及对数据库对象实施各种权限范围内的操作,但是要拒绝所有的非授权用户的非法操作。因此安全性管理与用户管理是密不可分的。
2、SQL Server的安全性
SQL Server 2000 的安全性管理是建立在认证(authentication)和访问许可(permission)两者机制上的。认证是用来确定登录SQL Server 的用户的登录账号和密码是否正确,以此来验证其是否具有连接SQL Server 的权限。但是通过认证阶段并不代表该用户能够访问SQL Server 中的数据,用户只有在获取访问数据库的权限之后,才能够对服务器上的数据库进行权限许可下的各种操作(主要是针对数据库对象,如表、视图、存储过程等),这种用户访问数据库权限的设置是通过用户账号来实现的,同时在SQL Server 中,角色作为用户组的代替物大大地简化了安全性管理。
3、SQL Server的认证模式
SQL Server提供了2种安全管理模式,即Windows 身份验证模式和混合身份验证模式,数据库设计者和数据库管理员可以根据实际情况进行选择。每个用户必须通过登录帐户建立自己的身份验证,以获得对SQL Server 实例的访问权限。
SQL Server 2000提供了两种确认用户的登录认证模式:Windows认证模式和混合认证模式。
(1)Windows认证模式
SQL Server数据库系统通常运行在NT服务器平台或基于NT 构架的Windows 2000上,而NT作为网络操作系统,本身就具备管理登录、验证用户合法性的能力,所以Windows认证模式正是利用这一用户安全性和账号管理的机制,允许SQL Server也可以使用NT的用户名和口令。在该模式下,用户只要通过Windows的认证就可连接到SQL Server,而SQL Server本身也不需要管理一套登录数据。
(2)混合认证模式
在混合认证模式下,Windows认证和SQL Server 认证这两种认证模式都是可用的。NT的用户既可以使用NT认证,也可以使用SQL Server 认证。
在SQL Server认证模式下,用户在连接SQL Server时必须提供登录名和登录密码,这些登录信息存储在系统表syslogins中,与NT的登录账号无关。SQL Server自己执行认证处理,如果输入的登录信息与系统表syslogins 中的某条记录相匹配则表明登录成功。
4、SQL Server权限管理
SQL Server数据库管理系统利用角色设置、管理用户的权限。登录名本身并不能让用户访问服务器中的数据库资源。要访问具体数据库中的资源,还必须有该数据库的用户名。新的登录创建以后,才能创建数据库用户,数据库用户在特定的数据库内创建,必须和某个登录名相关联。数据库用户创建后,通过授予用户权限来指定用户访问特定对象的权限。通过角色,可以将用户集中到一个单元中,然后对这个单元应用权限。对角色授予或收回权限时,将对其中的所有成员生效。利用角色进行权限设置可以实现对所有用户权限的设置,大大减少了管理员的工作量。
本实验通过练习以掌握管理数据库登录的方法;掌握管理数据库用户的方法;掌握管理数据库角色的方法;掌握管理数据库权限的方法,实验任务共分为五部分,详情如下:
管理SQL Server认证模式
确认 SQL Server 验证
管理数据库登录
(1)使用企业管理器管理Windows身份验证的登录帐号。
创建新用户winuser
添加winuser的隶属
新建student数据库
给数据库添加登录名
服务器角色中 设置登录用户winuser的服务器角色为系统管理员。
用户映射,列出了该账号可以访问的数据库
数据库用户创建成功
设置好adminstrator的密码后开始验证用新建的winuser账号登录mysql
点击链接,连接成功
(2)使用SQL Server Management Studio管理SQL Server身份验证的登录帐号。
新建sqluser登录名
使用sql sever身份验证方式登录
登陆成功
管理数据库用户
数据库用户对数据的访问权限以及对数据库对象的所有关系都是通过用户账号来控制的。在数据库中,用户账号与登录账号是两个不同的概念。一个合法的登录账号只表明该账号通过了Windows认证或SQL Server 认证,但不能表明其可以对数据库数据和数据对象进行某种或某些操作,只有其同时拥有了用户账号后,才能够访问数据库。所以一个登录账号总是与一个或多个数据库用户账号(这些账号必须分别存在相异的数据库中)相对应,这样才可以访问数据库。
(1)创建数据库用户
(2)修改用户信息
打开用户属性界面修改
删除时需要先将架构删除
管理数据库角色
SQL Server有自己的固有角色。固有角色是指 SQL Server预先定义好的系统角色。用户不能修改这些角色的任何属性,也不能创建新的服务器固有角色和数据库固有角色。
数据库角色是在数据库的安全级别上创建,一个数据库角色只在其所在的数据库中有效,对其他数据库无效。在数据库中,除了有固有的数据库角色外,还可以自定义数据库角色,同时根据需要,可以为数据库角色添加成员或删除自定义角色。
1.创建数据库角色
2)删除自定义的数据库角色
注意:不能删除一个有成员的角色,在删除角色之前,应先删除其成员。
管理数据库权限
权限用来指定授权用户可以使用的数据库对象和这些授权用户可以对这些数据库对象执行的操作。用户在登录到SQL Server之后,其用户账号所归属的NT组或角色所被赋予的权限决定了该用户能够对哪些数据库对象执行哪种操作以及能够访问、修改哪些数据。在SQL Server中包括语句级权限和对象级权限。
(1)进行语句级权限管理:
许可权限中复选框单击为勾号时:表示授予该权限。
许可权限中复选框单击为叉号时:表示角色或用户不具有该操作权限。
许可权限中复选框既没勾号,也没叉号时:表示角色或用户是否具有该操作权限要根据隐含规则来决定。
1、 SQL Server的Windows认证模式和混合认证模式的区别?
Windows 身份验证模式是 SQL Server 2000 中的默认身份验证模式。在 Windows 身份验证模式下,SQL Server 2000 仅依赖用户的 Windows 身份验证。然后,授予 Windows 用户或组对 SQL Server 的访问权限。使用此模式与服务器建立的连接称为信任连接。
当使用 Windows 身份验证模式时,数据库管理员通过授予用户登录 SQL Server 2000 的权限来允许他们访问运行 SQL Server 的计算机。混合模式
在混合模式下,可以使用 Windows 身份验证或 SQL Server 身份验证对用户进行验证。SQL Server 负责维护经过 SQL Server 身份验证的用户的用户名和密码对。
如果客户端和服务器能够使用 NTLM 或 Kerberos 登录身份验证协议,则以混合模式连接的 SQL Server 就像使用 Windows
身份验证模式一样,也依赖 Windows 来验证用户身份。如果客户端无法使用标准 Windows 登录,则 SQL Server
要求提供用户名和密码对,并将其与存储在系统表中的用户名和密码对进行比较。依赖用户名和密码对的连接称为非信任连接或 SQL 连接。
2、 分析数据库各种角色权限的异同,自定义数据库,并进行权限管理,深入理解实验原理。
MySQL各种权限(共27个)
usage
连接(登陆)权限,建立一个用户,就会自动授予其usage权限(默认授予)
select
必须有select的权限,才可以使用select table
create
必须有create的权限,才可以使用create table
create routine
必须具有create routine的权限,才可以使用{create |alter|drop} {procedure|function}
create temporary tables(注意这里是tables,不是table)
必须有create temporary tables的权限,才可以使用create temporary tables.
create view
必须有create view的权限,才可以使用create view
create user
要使用CREATE USER,必须拥有mysql数据库的全局CREATE USER权限,或拥有INSERT权限。
insert
必须有insert的权限,才可以使用insert into ….. values….
alter
必须有alter的权限,才可以使用alter table
alter routine
必须具有alter routine的权限,才可以使用{alter |drop} {procedure|function}
update
必须有update的权限,才可以使用update table
delete
必须有delete的权限,才可以使用delete from ….where….(删除表中的记录)
drop
必须有drop的权限,才可以使用drop database db_name; drop table tab_name;
show database
通过show database只能看到你拥有的某些权限的数据库,除非你拥有全局SHOW DATABASES权限。
show view
必须拥有show view权限,才能执行show create view。
index
必须拥有index权限,才能执行[create |drop] index
excute
执行存在的Functions,Procedures
lock tables
必须拥有lock tables权限,才可以使用lock tables
references
有了REFERENCES权限,用户就可以将其它表的一个字段作为某一个表的外键约束。
reload
必须拥有reload权限,才可以执行flush [tables | logs | privileges]
replication client
拥有此权限可以查询master server、slave server状态。
replication slave
拥有此权限可以查看从服务器,从主服务器读取二进制日志。
Shutdown
关闭MySQL:
grant option
拥有grant option,就可以将自己拥有的权限授予其他用户(仅限于自己已经拥有的权限)
file
拥有file权限才可以执行 select ..into outfile和load data infile…操作,但是不要把file, process, super权限授予管理员以外的账号,这样存在严重的安全隐患。
super
这个权限允许用户终止任何查询;修改全局变量的SET语句;使用CHANGE MASTER,PURGE MASTER LOGS。
process
通过这个权限,用户可以执行SHOW PROCESSLIST和KILL命令。默认情况下,每个用户都可以执行SHOW PROCESSLIST命令,但是只能查询本用户的进程。
3、 查阅近期数据库安全事件,分析攻击原理,掌握数据库安全的重要性
数据库系统的漏洞很容易导致服务器系统被入侵。这是任何在线服务提供商都需要防范的事情。小则中中毒死死机网页被挂马网络崩溃,大则资料泄密,重要数据文件遗失。及时升级补丁是不错的选择。