欢迎投稿

今日深度:

把SQL Server放入保险箱(1)

把SQL Server放入保险箱(1)


安全模式简介

从系统结构上来讲SQL Server有两种安全模式。
第一种是“仅Windows”模式,这种模式只允许拥有受信任的Windows NT账户的用户登录,是SQL Server默认的安全模式,也是较安全的选项,用户登录SQL Server的前提是该用户使用Windows NT的域账户登录Windows操作系统。

另一种是“SQL与Windows用户身份验证”模式,是在SQL Server中建立登录用户,所有基于Windows操作系统的用户只要使用这个SQL账户就可以实现标准的SQL登录。这种模式安全性相对而言较差一些,容易被恶意入侵者使用暴力破解sa账户,而且也容易遭受注入式攻击,但是管理简单,目前很有市场。

虽然第一种模式安全性高一些,但是什么事情都是相对的,因为使用Windows身份验证时,所有的用户信息和密码都存储在系统目录中的SAM文件中,只要搞到并破解了SAM文件,那么也就没有安全可言了。使用SQL身份验证时,所有的密码信息也会以某种方式存储在注册表和日志文件中。其实漏洞肯定是存在的,只是有没有被发现而已,应对这种无奈的现实,只能尽量打好补丁,提高警惕,减少出现已知漏洞的可能。

登录与用户的概念

很多人对SQL Server两种基本安全级别“登录”和“用户”的概念不够清晰,甚至把它们混为一谈。其实这是两个不同的概念。

登录是指允许用户访问服务器并拥有服务器级别权限的账户,属于系统级别,权限的大小取决于系统赋予该登录账户的权限级别,如sa账户,它是sysadmin级别,那么使用sa登录就可以取得数据库系统的最高权限。用户属于数据库级别,拥有对数据库及其单独对象的访问权限,可以精确到表、行、字段等。

在系统验证时,它们之间的根本区别在于,当Windows用户登录数据库服务器时,SQL Server验证的是登录,当用户登入数据库系统后,访问数据库及其对象时,SQL Server验证的是用户。登录账户可以没有具体的数据库对象访问权限,但是具备数据库访问权限的用户必定是使用登录账户登录的。
另外,SQL Server的安全性并不仅仅是SQL Server的问题,还需要联合Windows的安全性考虑,互相配合,才能使安全性发挥的最好。

为了减少权限管理的复杂度,笔者建议采用“仅Windows”安全模型,在Windows NT创建三个用户组,一组用于SQL管理员,一组具有读写数据库权限,第三组只有查询权限,再把相应的账号指派给对应组,然后在SQL Server中创建三个组,并指派给相应的NT组。


www.htsjk.Com true http://www.htsjk.com/shujukuaq/16855.html NewsArticle 把SQL Server放入保险箱(1) 安全模式简介 从系统结构上来讲SQL Server有两种安全模式。 第一种是“仅Windows”模式,这种模式只允许拥有受信任的Windows NT账户的用户登录,是SQL Server默认的...
评论暂时关闭