标题：数据库安全
特征
数据库系统的安全特性主要是针对数据而言的，包括数据独立性、数据安全性、数据完整性、并发控制、故障恢复等几个方面。下面分别对其进行介绍1．数据独立性数据独立性包括物理独立性和逻辑独立性两个方面。物理独立性是指用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的；逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。2．数据安全性操作系统中的对象一般情况下是文件，而数据库支持的应用要求更为精细。通常比较完整的数据库对数据安全性采取以下措施：
（1）将数据库中需要保护的部分与其他部分相隔。
（2）采用授权规则，如账户、口令和权限控制等访问控制方法。
（3）对数据进行加密后存储于数据库。3．数据完整性数据完整性包括数据的正确性、有效性和一致性。正确性是指数据的输入值与数据表对应域的类型一样；有效性是指数据库中的理论数值满足现实应用中对该数值段的约束；一致性是指不同用户使用的同一数据应该是一样的。保证数据的完整性，需要防止合法用户使用数据库时向数据库中加入不合语义的数据4．并发控制如果数据库应用要实现多用户共享数据，就可能在同一时刻多个用户要存取数据，这种事件叫做并发事件。当一个用户取出数据进行修改，在修改存入数据库之前如有其它用户再取此数据，那么读出的数据就是不正确的。这时就需要对这种并发操作施行控制，排除和避免这种错误的发生，保证数据的正确性。5．故障恢复由数据库管理系统提供一套方法，可及时发现故障和修复故障，从而防止数据被破坏。数据库系统能尽快恢复数据库系统运行时出现的故障，可能是物理上或是逻辑上的错误。比如对系统的误操作造成的数据错误等。
SQL server数据库安全策略
SQL Server 2000[1]的安全配置在进行SQL Server 2000数据库的安全配置之前，首先必须对操作系统进行安全配置，保证操作系统处于安全状态。然后对要使用的操作数据库软件（程序）进行必要的安全审核，比如对ASP、PHP等脚本，这是很多基于数据库的Web应用常出现的安全隐患，对于脚本主要是一个过滤问题，需要过滤一些类似“,; @ /”等字符，防止破坏者构造恶意的SQL语句。接着，安装SQL Server2000后请打上最新SQL补丁SP3。 
SQL Server的安全配置 
1．使用安全的密码策略 
我们把密码策略摆在所有安全配置的第一步，请注意，很多数据库账号的密码过于简单，这跟系统密码过于简单是一个道理。对于sa更应该注意，同时不要让sa账号的密码写于应用程序或者脚本中。健壮的密码是安全的第一步，建议密码含有多种数字字母组合并9位以上。SQL Server2000安装的时候，如果是使用混合模式，那么就需要输入sa的密码，除非您确认必须使用空密码，这比以前的版本有所改进。同时养成定期修改密码的好习惯，数据库管理员应该定期查看是否有不符合密码要求的账号。 
2．使用安全的账号策略 
由于SQL Server不能更改sa用户名称，也不能删除这个超级用户，所以，我们必须对这个账号进行最强的保护，当然，包括使用一个非常强壮的密码，最好不要在数据库应用中使用sa账号，只有当没有其他方法登录到 SQL Server 实例（例如，当其他系统管理员不可用或忘记了密码）时才使用 sa。建议数据库管理员新建立个拥有与sa一样权限的超级用户来管理数据库。安全的账号策略还包括不要让管理员权限的账号泛滥。 
SQL Server的认证模式有Windows身份认证和混合身份认证两种。如果数据库管理员不希望操作系统管理员来通过操作系统登录来接触数据库的话，可以在账号管理中把系统账号“BUILTIN\Administrators”删除。不过这样做的结果是一旦sa账号忘记密码的话，就没有办法来恢复了。很多主机使用数据库应用只是用来做查询、修改等简单功能的，请根据实际需要分配账号，并赋予仅仅能够满足应用要求和需要的权限。比如，只要查询功能的，那么就使用一个简单的public账号能够select就可以了。 
3．加强数据库日志的记录 
审核数据库登录事件的“失败和成功”，在实例属性中选择“安全性”，将其中的审核级别选定为全部，这样在数据库系统和操作系统日志里面，就详细记录了所有账号的登录事件。请定期查看SQL Server日志检查是否有可疑的登录事件发生，或者使用DOS命令。
4．管理扩展存储过程
对存储过程进行大手术，并且对账号调用扩展存储过程的权限要慎重。其实在多数应用中根本用不到多少系统的存储过程，而SQL Server的这么多系统存储过程只是用来适应广大用户需求的，所以请删除不必要的存储过程，因为有些系统的存储过程能很容易地被人利用起来提升权限或进行破坏。如果您不需要扩展存储过程Xp_cmdshell请把它去掉。使用这个SQL语句：
use master 
sp_dropextendedproc 'Xp_cmdshell' 
Xp_cmdshell是进入操作系统的最佳捷径，是数据库留给操作系统的一个大后门。如果您需要这个存储过程，请用这个语句也可以恢复过来。 
sp_addextendedproc 'xp_cmdshell', 'xpSQL70.dll' 
如果您不需要请丢弃OLE自动存储过程（会造成管理器中的某些特征不能使用）。 
这些过程如下： Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty
Sp_OAMethod Sp_OASetProperty Sp_OAStop 
去掉不需要的注册表访问的存储过程，注册表存储过程甚至能够读出操作系统管理员的密码来，命令如下： 
Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue 
Xp_regenumvalues Xp_regread Xp_regremovemultistring 
Xp_regwrite 
还有一些其他的扩展存储过程，也最好检查检查。在处理存储过程的时候，请确认一下，避免造成对数据库或应用程序的伤害。 
5．使用协议加密 
SQL Server 2000使用的Tabular Data Stream协议来进行网络数据交换，如果不加密的话，所有的网络传输都是明文的，包括密码、数据库内容等，这是一个很大的安全威胁。能被人在网络中截获到他们需要的东西，包括数据库账号和密码。所以，在条件容许情况下，最好使用SSL来加密协议，当然，您需要一个证书来支持。
6．不要让人随便探测到您的TCP/IP端口 
默认情况下，SQL Server使用1433端口监听，很多人都说SQL Server配置的时候要把这个端口改变，这样别人就不会轻易地知道使用的什么端口了。可惜，通过微软未公开的1434端口的UDP探测可以很容易知道SQL Server使用的什么TCP/IP端口。不过微软还是考虑到了这个问题，毕竟公开而且开放的端口会引起不必要的麻烦。在实例属性中选择TCP/IP协议的属性。选择隐藏 SQL Server实例。如果隐藏了SQL Server实例，则将禁止对试图枚举网络上现有的 SQL Server实例的客户端所发出的广播作出响应。这样，别人就不能用1434来探测您的TCP/IP端口了（除非用Port Scan）。 
7．修改TCP/IP使用的端口 
请在上一步配置的基础上，更改原默认的1433端口。在实例属性中选择网络配置中的TCP/IP协议的属性，将TCP/IP使用的默认端口变为其他端口。
8．拒绝来自1434端口的探测
由于1434端口探测没有限制，能够被别人探测到一些数据库信息，而且还可能遭到DoS攻击让数据库服务器的CPU负荷增大，所以对Windows 2000操作系统来说，在IPSec过滤拒绝掉1434端口的UDP通信，可以尽可能地隐藏您的SQL Server。
9．对网络连接进行IP限制 
SQL Server 2000数据库系统本身没有提供网络连接的安全解决办法，但是Windows 2000提供了这样的安全机制。使用操作系统自己的IPSec可以实现IP数据包的安全性。请对IP连接进行限制，只保证自己的IP能够访问，也拒绝其他IP进行的端口连接，对来自网络上的安全威胁进行有效的控制。 
上面主要介绍的一些SQL Server的安全配置，经过以上的配置，可以让SQL Server本身具备足够的安全防范能力。当然，更主要的还是要加强内部的安全控制和管理员的安全培训，而且安全性问题是一个长期的解决过程，还需要以后进行更多的安全维护。　
数据库安全威胁种类
近两年，拖库现象频发，黑客盗取数据库的技术在不断提升。虽然数据库的防护能力也在提升，但相比黑客的手段来说，单纯的数据库防护还是心有余而力不足。数据库审计已经不是一种新兴的技术手段，但是却在数据库安全事件频发的今天给我们以新的启示。数据库受到的威胁大致有这么几种：1、内部人员错误　　数据库安全的一个潜在风险就是“非故意的授权用户攻击”和内部人员错误。这种安全事件类型的最常见表现包括：由于不慎而造成意外删除或泄漏，非故意的规避安全策略。在授权用户无意访问敏感数据并错误地修改或删除信息时，就会发生第一种风险。在用户为了备份或“将工作带回家”而作了非授权的备份时，就会发生第二种风险。虽然这并不是一种恶意行为，但很明显，它违反了公司的安全策略，并会造成数据存放到存储设备上，在该设备遭到恶意攻击时，就会导致非故意的安全事件。例如，笔记本电脑就能造成这种风险。2、社交工程　　由于攻击者使用的高级钓鱼技术，在合法用户不知不觉地将安全机密提供给攻击者时，就会发生大量的严重攻击。这些新型攻击的成功，意味着此趋势在 2012年继续。在这种情况下，用户会通过一个受到损害的网站或通过一个电子邮件响应将信息提供给看似合法的请求。应当通知雇员这种非法的请求，并教育他们不要做出响应。此外，企业还可以通过适时地检测可疑活动，来减轻成功的钓鱼攻击的影响。数据库活动监视和审计可以使这种攻击的影响最小化。3、内部人员攻击　　很多数据库攻击源自企业内部。当前的经济环境和有关的裁员方法都有可能引起雇员的不满，从而导致内部人员攻击的增加。这些内部人员受到贪欲或报复欲的驱使，且不受防火墙及入侵防御系统等的影响，容易给企业带来风险。4、错误配置　　黑客可以使用数据库的错误配置控制“肉机”访问点，借以绕过认证方法并访问敏感信息。这种配置缺陷成为攻击者借助特权提升发动某些攻击的主要手段。如果没有正确的重新设置数据库的默认配置，非特权用户就有可能访问未加密的文件，未打补丁的漏洞就有可能导致非授权用户访问敏感数据。5、未打补丁的漏洞　　如今攻击已经从公开的漏洞利用发展到更精细的方法，并敢于挑战传统的入侵检测机制。漏洞利用的脚本在数据库补丁发布的几小时内就可以被发到网上。当即就可以使用的漏洞利用代码，再加上几十天的补丁周期（在多数企业中如此），实质上几乎把数据库的大门完全打开了。6、高级持续性威胁　　之所以称其为高级持续性威胁，是因为实施这种威胁的是有组织的专业公司或政府机构，它们掌握了威胁数据库安全的大量技术和技巧，而且是“咬定青山不放松”“立根原在"金钱（有资金支持）"中”，“千磨万击还坚劲，任尔东西南北风”。这是一种正甚嚣尘上的风险：热衷于窃取数据的公司甚至外国政府专门窃取存储在数据库中的大量关键数据，不再满足于获得一些简单的数据。特别是一些个人的私密及金融信息，一旦失窃，这些数据记录就可以在信息黑市上销售或使用，并被其它政府机构操纵。鉴于数据库攻击涉及到成千上万甚至上百万的记录，所以其日益增长和普遍。通过锁定数据库漏洞并密切监视对关键数据存储的访问，数据库的专家们可以及时发现并阻止这些攻击。[1]