SQL Server的安全机制概述
SQL Server的安全体系结构:
•操作系统的安全性。可以通过安装防火墙系统得以提高。
•SQL Server的登录安全性。允许哪些用户登录。
•数据库的使用安全性。规定用户登录以后可以使用哪些数据库。
•数据库对象的使用安全性。规定用户登录某一数据库后,可以操作哪些数据库对象以及怎样操作。
安全性是所有数据库管理系统的一个重要特征。理解安全性问题是理解数据库管理系统安全性机制的前提。
1.第一个安全性问题
当用户登录数据库系统时,如何确保只有合法的用户才能登录到系统中?这是一个最基本的安全性问题,也是数据库管理系统提供的基本功能。
在SQL Server系统中,通过身份验证模式和主体解决这个问题。
(1)身份验证模式
以Microsoft SQL Server 2008系统为例,提供了两种身份验证模式:Windows身份验证模式和混合模式。
•Windows身份验证模式:
在该模式中,用户通过Windows用户账户连接SQL Server时,使用Windows操作系统中的账户名和密码。
•混合模式:
在混合模式中,当客户端连接到服务器时,既可能采取Windows身份验证,也可能采取SQL Server身份验证。
查看与更改身份模式的示意图如下:


(2)主体
主体是可以请求系统资源的个体或组合过程。例如,数据库用户是一种主体,可以按照自己的权限在数据库中执行操作和使用相应的数据。
Microsoft SQL Server系统有多种不同的主体,不同主体之间的关系是典型的层次结构关系,位于不同层次上的主体其在系统中影响的范围也不同。位于层次比较高的主体,其作用范围比较大;位于层次比较低的主体,其作用范围比较小。
2.第二个安全性问题
当用户登录到系统中,他可以执行哪些操作、使用哪些对象和资源?
•在Microsoft SQL Server系统中,通过安全对象和权限设置来解决这个问题。
主体与安全对象的示意图如下:

3.第三个安全性问题
数据库中的对象由谁所有?如果是由用户所有,那么当用户被删除时,其所拥有的对象怎么办?
在Microsoft SQL Server系统中,这个问题是通过用户和架构分离来解决的。

创建登陆账户及相关操作
1.创建Windows登陆账户
示意图如下:







2.创建SQL Server登陆账户
示意图如下:



3.启用、禁用和解锁登陆
要启用、禁用或解锁一个登录的操作步骤:
(1)启动MicrosoftSQL Server Management Studio,在“对象资源管理器”视图中,连接到适当的服务器,然后向下浏览至“安全性”文件夹。
(2)展开“安全性”文件夹和“登录名”文件夹以列出当前的登录。右击一个登录,然后从快捷菜单中选择“属性”以查看此登录的属性。这样会打开“登录属性”对话框。
示意图如下:

(3)在“登录属性”对话框左侧列表中选择“状态”选项,打开“状态”页面

(4)然后可以进行以下操作:
•若要启动登录,在“登录”选项区下选择“启用”单选按钮。
•若要禁用登录,在“登录”选项区下选择“禁用”单选按钮。
•要解锁登录,清除“登录已锁定”复选框。
(5)最后单击“确定”按钮,完成操作。
4.修改登录
具体操作步骤如下:
(1)打开“登录属性”对话框

(2)单击“登录属性”对话框左侧的“用户映射”选项,可以为当前用户添加一个连接数据库“msdb”

5.删除登录
(1)在MicrosoftSQL Server Management Studio中删除登录账户
•启动MicrosoftSQL Server Management Studio,然后访问适当的服务器。
•在服务器的“安全性”文件夹中展开“登录名”文件夹。
•右击想要删除的登录,然后从快捷菜单中选择“删除”,要开“删除对象”对话框,
(2)使用Transact-SQL语句删除登录账户
命令格式如下:
DROP LOGIN login_name
角色
SQL Server中包含三种类型的数据库角色:
1.固定服务器角色
是微软提供的作为系统一部分的角色;固定服务器角色是服务器级别的主体,它们的作用范围是整个服务器。固定服务器角色已经具备了执行指定操作的权限,可以把其他登录名作为成员添加到固定服务器角色中,这样该登录名可以继承固定服务器角色的权限。
固定服务器角色的特点:
在SQL Server系统中,可以把登录名添加到固定服务器角色中,使登录名作为固定服务器角色的成员继承固定服务器角色的权限。
•对于登录名来说,可以选择其是否成为某个固定服务器角色的成员
2.用户定义的标准数据库角色
用户自己定义的角色,将Windows用户以一组自定义的权限分组;
3.应用程序角色
用来授予应用程序专门的权限,而非授予用户组或者单独用户。
权限
1. 常用的权限

2.操作权限
权限分为3种状态:授予、拒绝、撤销,可以使用如下的语句来修改权限的状态。
(1)授予权限(GRANT):授予权限以执行相关的操作。通过角色,所有该角色的成员继承此权限。
语法格式如下:
GRANT
{ALL|statement[,..n]}
TO security_account[,..n]
(2)撤销权限(REVOKE):撤销授予的权限,但不会显示阻止用户或角色执行操作。用户或角色仍然能继承其他角色的GRANT权限。
REVOKE{ALL|statement[,..n]}
FROMsecurity_account[,..n]
(3)拒绝权限(DENY):显式拒绝执行操作的权限,并阻止用户或角色继承权限,该语句优先于其他授予的权限。
DENY{ALL|statement[,..n]}
TO security_account[,..n]

