预备知识
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认证模式
(1)确认 SQL Server 验证
如果“对象资源管理器”不可见,则选择“视图”菜单上的“对象资源管理器”。(由于“对象资源管理器”可见,所以未进行该操作)
管理数据库登录
(1)使用企业管理器管理Windows身份验证的登录帐号。
设定的密码为123456,只是为简单方便。
(2)使用SQL Server Management Studio管理SQL Server身份验证的登录帐号。
注销winuser,切换到administrator用户不进行展示了
理由同上,密码1234567
管理数据库用户
(1)创建数据库用户
(2)修改用户信息
(3)删除数据库用户。
管理数据库角色
1.创建数据库角色
(2)删除自定义的数据库角色
管理数据库权限
(1)进行语句级权限管理:
课后习题
问题与分析
1、Windows 身份验证模式会启用 Windows 身份验证并禁用 SQL Server 身份验证,程序安装时在sql server加入了Administrators用户名。混合模式会同时启用 Windows 身份验证和 SQL Server 身份验证。Windows 身份验证始终可用,并且无法禁用。
2、固定数据库角色
db_owner 可以执行数据库中技术所有动作的用户
db_accessadmin 可以添加、删除用户的用户
db_datareader 可以查看所有数据库中用户表内数据的用户
db_datawriter 可以添加、修改或删除所有数据库中用户表内数据的用户
db_ddladmin 可以在数据库中执行所有DDL操作的用户
db_securityadmin 可以管理数据库中与安全权限有关所有动作的用户
db_backoperator 可以备份数据库的用户(并可以发布DBCC和CHECKPOINT语句,这两个语句一般在备份前都会被执行)
db_denydatareader 不能看到数据库中任何数据的用户
db_denydatawriter 不能改变数据库中任何数据的用户
public 一种特殊的固定数据库角色,数据库的每个合法用户都属于该角色。它为数据库中的用户提供了所有默认权限。
3、误删有效数据、非授权的访问—读取,或非授权的写入—增加,删除,修改等。恶意破坏:存心不良的编程人员,技术支持人员和执行数据库管理功能的人员的破坏,毁损及其他行为。
攻击原理主要为正常业务需要访问数据库时,令授权用户不能正常得到数据库的数据服务,存心不良的编程人员,技术支持人员和执行数据库管理功能的人员实施对数据库内存储数据的非授权的访问—读取,或非授权的写入—增加,删除,修改等