您好,欢迎来到易榕旅网。
搜索
您的当前位置:首页SQLServer数据策略

SQLServer数据策略

来源:易榕旅网
2006年8月第8期August󰀁2006

No.8

现代情报

SQLServer数据访问安全策略

杨应全󰀁李雪茹

(重庆科技学院,重庆400042)

󰀁摘󰀁要󰀁󰀂介绍与访问MicrosoftSQLServer相关的重要安全问题的解决方案,并提供从分布式应用程序访问数据的一些建议。

󰀁关键词󰀁󰀂SQLServer;数据库访问;安全问题

󰀁Abstract󰀁󰀁ThispaperintroducessolutionstoseveralvitalproblemsofsecureaccesstoMicrosoftSQLServer,andputsforwardtheproposaltoaccessdatabasefromdistributedapplication.

󰀁Keywords󰀁󰀁SQLServer;databaseaccess;securityproblem

󰀁中图分类号󰀁TP309󰀁2󰀁󰀂文献标识码󰀁A󰀁󰀂文章编号󰀁1008-0821(2006)08-0161-02

󰀁󰀁MicrosoftSQLServer(以下简称SQLServer)作为数据存SQL通过检查是否已设置SQL登录账户,以及指定的密码储,以其低价位、功能多、用户界面友好,以及与Windows是否与以前记录的密码匹配进行身份验证。在数据库客户系统的全面集成而广泛的应用于各行各业,它在大多数分端和数据库服务器被一个禁止使用Windows身份验证的防布式Web应用程序中扮演着重要的角色。这种数据存储可火墙隔开,在应用程序需要使用多个标识来连接到一个或以包含所有类型的数据,包括用户应用程序首选项、机密多个数据库,在ASP󰀁NET中没有一种安全方式来以特定的的人事记录与医疗记录、读者借还档案、审核日志与安全Windows用户身份运行代码时,就需要使用SQL身份验证。日志,甚至还包括用户访问应用程序时所需的凭据。显而这时必须在应用程序服务器上以及在从服务器传输到数据易见,在存储这类数据以及对其执行读/写操作时都需要保库的过程中保护数据库用户凭据。

证它们的安全,以确保只有具备相应授权权限的用户才能在使用SQL身份验证时,应使用权限最少的账户连接对其进行访问。本文将介绍访问SQLServer相关的重要安到SQL,用户名和密码(凭据)在网络上以明文形式传递全问题的解决方案,并提供从分布式Web应用程序访问数传递,因此必须对其进行保护,必须保护SQL连接字符串据的一些建议,希望能对SQLServer数据库管理的维护人(它包含凭据),用户名和密码不应以明文形式存储在配置员、开发人员及用户有所启发。

文件中。

1󰀁身份验证

2󰀁授󰀁权

在连接到SQLServer之前应如何对SQLServer的客户端SQLServer提供了许多基于角色的授权方法,这些方法进行身份验证?通常有Windows身份验证(使用NTLM或都围绕SQLServer支持的用户定义的数据库角色、应用程Kerberos)和SQL身份验证(使用SQLServer的内置身份验序角色、固定的数据库角色三种角色。证机制)两种模式。

2󰀁1󰀁不同角色的授权

1󰀁1󰀁Windows身份验证

固定的数据库角色存在于所有数据库中,并可用于将Windows身份验证允许用户通过Windows用户账户进行数据库中一组特定的读取权限快速授予某个用户;用户定连接。它比SQL身份验证更安全,原因是它具有:管理凭义的数据库角色用于将数据库中拥有相同安全权限的用户据,并且不通过网络传输凭据,可以避免在连接字符串中组合成组。如可以创建SQLServer登录,并将它们映射到嵌入用户名和密码,通过设置密码到期期限、最小长度以特定的数据库用户,然后再将数据库用户添加到数据库角及在多次无效登录请求后锁定账户等方法提高登录安全性,色,并使用这些角色来确定各个数据库对象的权限;应用从而可以减轻字典攻击带来的威胁等优点。

程序角色与用户数据库角色的相似之处是:在创建对象权使用了受信任的子系统模型并且使用一个固定标识连限时需要使用它们,但与用户数据库角色不同的是,它们接到SQLServer应使用Windows身份验证。使用Windows身不包含用户或组,而是必须由一个使用内置存储过程的应份验证从ASP󰀁NET应用程序连接到SQLServer时,建议通用程序激活,激活后,授予角色的权限决定了应用程序的过在Web服务器上将密码更改为某个已知值来配置本地数据访问能力。应用程序角色允许数据库管理员向指定的ASP󰀁NET进程标识,然后在数据库服务器上通过创建具有数据库对象授予访问所选应用程序的权限。

相同用户名和密码的本地用户来创建镜像账户。

2󰀁2󰀁使用多个数据库角色

1󰀁2󰀁SQL身份验证

如果应用程序有多个用户类别,而同一类别内的用户当用户使用指定的登录名称和密码进行非信任连接,

需要数据库中的相同权限,那么应用程序就需要多个角色。

收稿日期:2006󰀁02󰀁20

作者简介:杨应全,毕业于西南师范大学信息管理系图书馆学专业,现任重庆科技学院图书馆副馆长,副研究馆员,发表论文30余篇。

󰀁161󰀁󰀁

工作

研究现代情报

2006年8月August󰀁2006

第8期No.8

Regedt32.exe的注册表项,同时对存储的数据进行加密。

各个角色分别需要数据库中不同的一组权限。例如,Inter-net用户角色的成员需要对数据库中的大多数表具有只读权限,而管理员或操作员角色的成员则可能需要读/写权限。

使用多个用户定义的SQLServer数据库角色时,应按照如下流程进行:首先创建多个服务账户,以用于数据库访问并为每个账户创建SQLServer登录;其次创建数据库用户,以授予对数据库的登录访问权限并将每个数据库用户添加到用户定义的数据库角色,为数据库中的每个角色授予必要的数据库权限;最后在应用程序中向用户授权,然后使用数据访问层中的应用逻辑来确定使用哪个账户连接到数据库。也可以用声明方式将各个方法配置为只允许那些属于一组角色的用户使用。然后,在方法代码中添加强制角色检查,以确定正确的角色成员身份,该成员身份决定了要使用的连接。

4󰀁4󰀁存储单向密码哈希

使用窗体身份验证的Web应用程序常常需要在数据库中存储包含密码的用户凭据。为安全起见,不应在数据库中存储无论是采用明文还是加密的形式密码,而应存储密码的单向哈希(在需要验证密码时重新计算哈希)。同时将密码哈希与Salt值(加密技术很强的随机数)结合使用,可以减轻字典攻击带来的威胁。

5󰀁选择适当的SQL账户

5󰀁1󰀁选择用于连接的SQL账户

󰀁󰀁连接SQL的账户应该是使用具有强密码的最少权限账户,而不要将内置的sa账户或作为SQLServersysadmin固定服务器角色或db󰀁owner固定数据库角色的成员的任何账户用于数据访问。因为sysadmin的成员可以在SQLServer中执行任何活动,db󰀁owner的成员在数据库中的权限不受限制。

󰀁

3󰀁安全通信

在大多数数据存取应用程序的应用方案之中,都需要保证应用程序服务器与数据库之间通信链路的安全。即必须对

数据进行加密,确保其保密性;还必须为数据签名,确保其不被篡改,即完整性。在SQL中有两个选项可以确保应用程序服务器与数据库服务器之间网络链路的安全性,即IPSec和SSL。SQLServer利用服务器证书支持SSL,IPSec可用于对客户端计算机与数据库服务器之间的通信进行加密。

要注意的是,只有在使用SQL身份验证而非Windows身份验证时,才能在网络上公开登录凭据。否则,必须确保用户名和密码不会被网络监视软件泄露。

5󰀁2󰀁选择用于运行SQL的账户

使用具有最少权限的本地账户运行SQLServer。安装SQLServer时可以选择使用本地SYSTEM账户或指定的账户运行SQLServer服务。建议不要使用SYSTEM账户或管理员账户,应该使用具有最少权限的本地账户,也无需向此账户授予任何特定权限,因为在安装过程中向指定的账户授予了必要的权限。

如果SQLServer需要访问远程计算机,例如,为了进行网络备份和恢复或复制,需要使用具有最少权限的域账户或在远程服务器上创建具有相同用户名和密码的重复的本地账户。

4󰀁安全存储数据库连接字符串

如果应用程序使用SQL身份验证连接到SQLServer时,使用连接字符串登录,其中包括明文形式的用户名和密码。用户名和密码不应以明文形式存储在配置文件中,在SQL

6󰀁防止SQL注入式攻击

SQL注入式攻击是将额外的恶意SQL代码附加到应用程序内包含的合法SQL代码中的行为。如果使用未筛选的输入来生成SQL字符串,则应用程序可能会遭受恶意用户输入的攻击。因为,在将用户输入插入一个将要成为可执行语句的字符串中时,恶意用户可以利用转义符将SQL命令附加到要用的SQL语句中,生成自己的命令。因此,在处理作为SQL命令组成部分的用户输入时,应特别注意可能发生的SQL注入式攻击。

作4󰀁1󰀁使用DPAPI

R󰀁

研Windows2000和更高版本的操作系统均提供了Win32究数据保护API(DPAPI)来对数据进行加密和解密,它还能

够解决使用加密的应用程序所带来的密钥管理问题。加密能确保数据安全,但必须采取额外的步骤来确保密钥的安全性。DPAPI使用与调用DPAPI函数的代码相关联的用户账户密码,以便派生加密密钥,能够与计算机存储或用户存储配合使用,可提供额外的安全层,因为它限制了哪些用户能够访问机密数据。只有加密数据的用户才能解密数据。

Server系统中可以有几种选项灵活配置连接字符串的存储。

6󰀁1󰀁使用Parameters集合

在生成SQL语句或调用存储过程时使用Parameters集合,则不管恶意用户在输入中包含什么内容,该输入都会当作文本进行处理。同时,使用Parameters集合还可以执行类型和长度检查,超出范围的值会触发异常。

4󰀁2󰀁使用Machine󰀁config

不要以明文形式在Web.config中存储密码,因为直接对包含配置文件的文件夹拥有访问权限的用户可看到用户名和密码。而Machine.config被视为一个比Web.config更安全的存储位置,理由是它位于Web应用程序的虚拟目录之外的系统目录(带有ACL)中。

6󰀁2󰀁从用户输入中筛选SQL字符

在SQL字符串中,两个连续的撇号被视为字符串内撇号字符,而不是分隔符。通过确保在字符串中使用的任何撇号上再附加一个撇号进行转义来确保在简单的SQL比较(等于、小于、大于)语句中使用的任何字符串都是安全的。

4󰀁3󰀁使用注册表

还可以在Windows注册表中使用自定义项来存储连接字符串。存储的这些信息可以保存在HKEY󰀁LOCAL󰀁MA-CHINE(HKLM)或HKEY󰀁CURRENT󰀁USER(HKCU)注册表配置单元中。但使用此方法时,要用ACL来保护使用

6󰀁3󰀁限制输入的大小和类型

通过限制输入的大小和类型,在前端应用程序防止无效输入。限制输入的大小和类型,可大大降低破坏的可能性。例如,如果数据库查找字段长度为11个字符并且全部由数字字符组成,则强制执行该规则。(下转第165页)

󰀁162󰀁2006年8月August󰀁2006

󰀁󰀁如图是我院新建图书馆拟采用的一个双光纤交换机的

SAN存储系统架构,从其结构的物理角度看,包括4大类组件:终端用户平台、服务器、存储设备与存储子系统、网络连接设备。主要特点是:

第8期No.8

现代情报

3󰀁1󰀁大容量存储设备数据共享和高速交换

在目前的复合图书馆中需要存储的数字化资源越来越多,如电子全文图书和期刊库、各种类型的全文数据库、多媒体视听资料库等,数据总容量超过几个TB,并且每年新增数据量也多达几百GB容量。SAN存储系统提供了大容量存储设备共享的解决方案,并且实现了计算机与存储设备之间的高速互联。随着计算机技术的不断发展,内存容量、存储设备容量和图书馆数字化资源的不断增多,要求存储设备的数据传输速度必须适应计算机网络的整体性能,基于SAN的存储系统采用光纤网络,不仅为主机和存储设备之间提供了Gigabit/s的高速互联,而且在存储设备的数量和传输距离上有了大幅度提高,为基于Client/Server或Internet/Intranet结构的复合图书馆的大容量数据的频繁访问奠定了完备的物理基础。

建立在SAN上的服务器、存储设备和磁带设备可以按设备的不同用途划分为不同的区,分别建立虚拟专用网,使得服务器访问SAN上的存储设备十分方便,并且数据传输距离可达10公里。同时,新建立的SAN存储系统还具有良好的兼容性,不但可以连接光纤通道设备,而且可以连接SCSI设备。通过交换机和网桥可以将SCSI存储设备,如磁盘阵列、磁带机和磁带库连接到光纤通道SAN上,图书馆建设前期的基于SCSI的磁盘阵列和现在基于光纤通道的存储设备可以很好地兼容使用。

3󰀁4󰀁数据的可靠性和安全性

数据的可靠性和安全性是当前数据存储系统的重要问题。存储设备中的单点故障可能引起巨大的经济损失。在以前的SCSI设备中,SCSI的损坏可能引起多个存储设备失效。在SAN存储系统中采用双环的方式,建立存储设备和计算机之间的多条通路,提高了数据的可用性。同时由于建立虚拟专用网可以提高数据的可靠性和安全性。另外,在SAN中也可以通过建立双机容错、多机集群,实现RAID校验等方式进一步保证数据的安全性和作业的连续性。

DAS、NAS和SAN3种数据存储系统各有其优缺点,复合图书馆可根据其自身实际环境需求来选择一种或几种模式的复合。随着SAN标准的逐步统一和价格的下降,从复合图书馆长远的需求考虑,以数据为中心的存储解决方案的架构当以SAN为佳。

󰀁

3󰀁2󰀁理想快速的数据备份

数据备份对于图书馆来说是非常必要的。图书馆日常业务管理数据,如馆藏书目数据、采编数据、流通管理中的读者信息与读者借阅数据,这些数据每天都在不停地更新中,一旦丢失,会造成不可估量的损失。SAN存储系统提供了理想的快速备份工具,两个存储设备(如一个磁盘阵列,一个磁带库)都连接在SAN上,进行数据备份、镜像时,十分理想,可不占用LAN/WAN的带宽,直接通过SAN存储网络进行备份。如果进行磁带备份,还可以将要备份的设备隔离开来,不受其它设备的干扰,完全实现LANfreeBackup。

参考文献

[1]张蕊,侯建海.数字图书馆网络存储解决方案的设计[J].图书情报工作,2004,(8).

[2]王东闽.现代图书馆存储技术方案的选择和应用[J].情报资料工作,2004,(5).

[3]李华.SAN在数字图书馆的应用研究[J].现代情报,2005,(4).

[4]张莉.数字图书馆海量存储体系选择与比较[J].新世纪图书馆,2005,(2).

3󰀁3󰀁存储配置的灵活性与兼容性

主机服务器和存储设备的分离是当今计算机存储发展的大趋势。由于存储容量的不断增加,存储设备已不再仅仅是某个主机服务器的外设,而是很多计算机的共享设备。(上接第162页)

工作研

用具有强密码的自定义账户、使用数据库角色来限制SQL究

件添加ACL、对连接字符串进行加密并考虑对凭据存储使用DPAPI等步骤来提高安全性。当对SQL使用窗体身份验证时,应采取预防措施来防范SQL注入式攻击。不要将用户密码存储在数据库中以进行用户验证,应存储带有Salt值的密码哈希,而不是明文密码或加密密码。由于Windows身份验证可保护凭据,但不能保护应用程序数据,因此,保护通过网络发送给SQLServer或从SQLServer中发出的机密数据,应使用IPSec或SSL技术。

6󰀁4󰀁用具有最少权限的账户运行SQL代码

用具有最少权限的账户运行SQL代码可以大大减轻可能造成的损害。例如,如果用户要注入SQL,以便从数据库中删除表,但是SQL连接所使用的账户没有相应的权限,则SQL代码将失败。这也是不应将sa账户或db󰀁owner的成员用于应用程序的SQL连接的原因。

Server中每个账户的权限、向任何用于存储连接字符串的文

6󰀁5󰀁出现异常时不暴露SQL错误

在SQL代码中出现异常时,不要向最终用户暴露数据库引起的SQL错误,而应只显示用户友好的记录错误信息。这样可以避免泄露可能对攻击者有帮助的不必要的详细信息。

参考文献

[1]刘卫宏.SQLServer2000实用教程[M].北京:科学出版社,2003.

[2]刘湛清,王强.SQLServer2000经典范例50讲[M].北京:科学出版社,2003.

[3]防范Sql注入式攻击[EB].http:󰀁www.ccnet.org.cn/bbs/topicdisp.asp?bd=24&id=204

总之,要能安全访问MicrosoftSQLServer数据,应尽可

7󰀁小󰀁结

能对SQLServer使用Windows身份验证,在连接到SQLServ-er时使用具有最少权限的本地账户来运行企业服务,在数据库中使用具有最少权限的账户,使用用户定义的数据库角色来进行授权。如果使用的是SQL身份验证,则采取使

󰀁165󰀁

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrd.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务