SQLServer数据库的安全机制_第1页
SQLServer数据库的安全机制_第2页
SQLServer数据库的安全机制_第3页
SQLServer数据库的安全机制_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、6-3 SQL Server 数据库的安全机制MicrosoftSQL Server 是一个高性能、多用户的关系型数据库管理系统。它是专为客户机,服务器计算环境设计的,是当前最流行的数据库服务器之一。它的内置数据复制功能、强大的管理工具和开放式的系统体系结构为基于事务的企业级管理方案提供了一个卓越的平台。6.3.1SQL Server 的安全体系结构在 Windows 操作系统上, SQL Server 的安全体系中包括操作系统的安全管理机制,同时拥有自身的安全技术。SQL Server 数据库管理系统、Windows全体系。 SQL Server 的安全体系结构如图6-5操作系统和网络技术一

2、起构成数据库系统的安所示。Windows(指Windows NT、Windows 2000及更高版本的windows网络操作系统)用户或其他系统下的用户要想获得对SQL Server数据库的访问,必须通过以下四道安全防线。1)操作系统的安全防线。用户需要一个有效的登录账户,才能对网络系统进行访问。2) SQL Server 的身份验证防线。 SQL Server 通过登录账户来创建附加安全层,一旦用户登录成功,将建立与 SQL Server 的一次连接。3) SQL Server 为数据库用户(用户数据库身份验证安全防线。当用户与SQL Server 建立连接后,还必须成ID 必须在数据库系统

3、表中),才有权访问数据库。4) SQL Server 数据库对象的安全防线。用户登录到要访问的数据库后,要使用数据库内的对象,必须得到相应权限。4 层安全防线中, 第一层涉及网络操作系统安全技术,便形成了 SQL Server 的安全管理。本章不再讨论。 后三层综合起来,6.3.2 Server 的安全管理安全管理数据库管理系统必须提供的功能,其中包含两个层次,一是对用户是否有权限登录到系统及如何登录的管理; 二是对用户能否使用数据库中的对象并执行相应操作的管理。SQL Server 的安全管理主要包括以下4 个方面。数据库登录管理。数据库用户管理。数据库角色管理。数据库权限管理。1. 数据库

4、登录管理访问 SQL Server 的第一步必须建立到SQL Server 的连接,建立连接是通过登录IE 实现的。登录 ID 是账户标识符,用来控制对任何 SQL Server 系统的访问权限, SQL Server 只有在首先验证了指定的登录 ID 及密码有效后,才完成连接。这种登录验证称为身份认证。SQL Server 提供了两种身份认证,种身份认证派生出两种身份认证模式,Windows Windows身份认证和SQL Server 身份认证,由这两身份认证模式和混合模式。1)Windows 身份认证。 Windows 身份认证使用Windows 操作系统的内置安全机制,也就是使用Win

5、dows 的用户或组账号控制用户对SQL Server 的访问。在这种模式下, 用户只需通过Windows 的认证,就可以连接到SQL Server,而 SQL Server本身不再需要管理一套登录数据。Windows 身份认证采用了Windows 安全特性的许多优点,包括加密口令、口令期限、域范围的用户账号及基于Windows 的用户管理等,从而实现了SQL Server 与 Windows 登录安全的紧密集成。在网络环境中, 如果连接客户机和服务器的所有通信协议都是信任连接协议(即Namedpipes 和 TCP/IP )时,应采用 Windows 认证模式。 在这种认证模式下系统只是使用

6、Windows认证进程来确认用户信息。Windows 认证模式的优点是,密码一次性访问,不必再记住SQL Server 密码。缺点在于,只有通过多协议网库( Multi Protocol Net Library,MPNL) 或命名管道( Named Pipes,NP)通信协议才是可用的,因此可能出现因网络原因而阻止Windows 认证模式的使用。2)混合身份认证。两种身份认证派生出实际使用的第二种身份验证模式:混合模式。在混合模式下,如果用户在登录时提供了SQL Server 登录 ID ,则系统将使用SQL server 身份认证,如果没有提供SQL Server 登录 ID 而提供的是请求

7、Windows 身份认证,则使用Windows身份验证。系统使用哪种模式可以在安装过程中或使用SQL Server 的企业管理器指定。的默认身份认证模式是Windows 身份认证模式,这也是建议使用的一种模式。对 SQL Server 数据库登录的管理, 通常有两种方法, 一种是通过企业管理器SQL Server (SQL ServerEnterprise Manager) 来实现;一种是通过系统存贮过程理用户、角色和权限。所有的登录账号信息存储在sp 来实现。这两种方法同样适用于管master 数据库的系统表sysxlogins 中。SQL Server 有一个默认登录账号(System A

8、dministrator ,SA),它拥有 SQL Server的全部权限, 可以执行所有的操作。此外, Windows 系统的管理员Administrator 也拥有系统SQLServer 系绕的全部权限,对应账号分别为Builtin/Administrator和Administratoror2数据库用户管理登录 ID 成功地进行了身份验证后, 只是建立了到及数据库对象的访问,可通过两种途径来实现,一种是登录SQL Server 的连接, 要实现对数据库ID 必须与相应数据库中的用户ID 相关联才能访问数据库,另一种是如果登录ID 不能与任何数据库用户ID 关联,但此数据库启用了Guest

9、客户,则可以与Guest 客户相关联。后一种方法不提倡采用,因为任何没有数据库限的用户都可通过Guest 客户获取数据库的访问权限,这样降低了安全性。SQL Server 数据库用户, 用于管理对指定数据库使用的对象,控制对数据库及数据库对象的访问权限。一般地,登录ID 与数据库用户ID 是相同的(建议这样做,便于管理)。一个登录 ID 可以与多个数据库用户相关联。用户信息均存储在数据库的系统表sysusers 中。权限的分配是通过数据库用户ID 实现的,根据用户的性质合理分配最小权限。在权配上要充分利用Windows “组”和SQL Server 的“角色” 。组是 Windows 系统中的

10、一个概念,把用户编成逻辑组,并分配一定权限,有助于管理用户和实现安全。具体做法是将每个域中的用户指派到 windows 全局组,将各个域中的全局组放入 Windows 本地组, 授予 Windows 本地组登录到 SQL Server 的权限, 最后将该本地组与具定权限的数据库用户或角色相关联。 这样从 Windows 系统及 SQL Server 两方面授权,有助于安全。3数据库角色管理数据库角色是指为管理相同权限的用户而设置的用户组,也就是说, 同一角色下的用户权限都是相同的。在 SQL Server 数据库中,把相同权限的一组用户设置为某一角色后,当对该角色进行权限设置时,这些用户就自动

11、继承修改后的权限。这样, 只要对角色进行权限管理,就可以实现对属于该角色的所有用户的权限管理,极大地减少了工作量。需要指出的是,一个用户可以同时属于不同的角色,也就是说一个用户可以同时个角色中的权限,但这些权限不能冲突,否则只能拥有最小的权限。SQL Server 数据库的角色通常可以分为3 类,数据库服务器角色、数据库角色和应用程序角色。 前两种是系统预定义的。服务器角色的作用域在服务器范围内,是独立于数据库的管理特权分组,主要实现SA 、数据库创建者及安全性管理员职能。具有服务器角色的用户必须绝对可靠, 并且人员要少。 数据库角色在数据库级别上定义,提供数据库层管理特权的分组, 主要实现数

12、据库的访问、 备份与恢复及安全性等职能。 用户定义的数据库角色只适用于数据库级别,通过用户定义的角色可以轻松地管理数据库中的权限。4数据库权限管理设置用户对数据库的操作权限称为授权, SQL Server 中未授权的用户将无法访问或存取数据库数据。 SQL Server 通过权限管理指明哪些用户被批准使用哪些数据库对象和Transact-SQL 语句。SQL Server 中的权限可授予用户安全账户或用户安全账户所属的组或角色。SQL Server中权限可识别4 类用户,不同类型的用户形成不同层次。1) 系统管理员 (SA) :服务器层权限,在服务器的所有数据库中对任何用户对象有全部权限。2)

13、数据库拥有者(DBO) :数据库层权限,在其拥有的数据库中对任何用户对象有全部权限。3)数据库对象拥有者:数据库对象层。4)数据库对象的一般用户:数据库对象用户层。在应用系统开发过程中,要根据实际情况把用户分出层次,分别授予权限。在授予权限时,要注意 SQL Server 的 3 类权限,对象权限、语句权限、暗示权限,根据实际情况及权限特点合埋授予。1)对象权限:对象权限( SELECT 、UPDATE 、INSERT 、DELETE 、EXEC 、DRI) 管理由哪些数据库用户来使用哪些数据库对象,是处理数据或执行过程时需要的权限类别,由数据库对象拥有者授予、废除或撤消。在授予对象权限时,要

14、非常细心地为用户、用户组及角色授予权限, 尤其是工作于较大的、复杂的安全体系和敏感数据中。用户必须只授予在其工作范围之内的权限,而禁止其在工作范围之外的所有活动(最小权限),以确保数据安全。2)语句权限:指允许对数据库对象 (包括表、视图)进行查询、添加、修改和删除 ( CREATEDA TABASE 、CREATE DEFAULT 、 CREATE RULE 、 CREATE TABLE 、CREATE VIEW 、CREATE PROCEDURE 、CREATE FUNCTION、 BACKUP DATABASE、BACKUP LOG)等操作。语句权限是针对数据库的,只能由SA或数据库拥有

15、者授予。合理使用语句权限,是确保系统安全的一个重要方面。3)暗示权限: 暗示权限控制那些只能由预定义系统角色的成员或数据库对象所有者执行的活动。权限管理主要针对对象权限和语句权限,通帝权限有 3 种状态,即授予权限、撤消权限、拒绝访问。对权限的管理可通过如下方式进行。1)“企业管理器”管理权限: SQL Server 可通过两种途径,即面向单一用户和面向数据库对象的权限设置来实现对语句权限和对象权限的管理,从而实现对用户权限的设定。2)使用 Transact-SQL 语句管理权限。总之,权限验证是系统安全的重要方面,要制定出科学的权限分配计划,使每类用户在自己权限范围内工作。6.3.3SQL

16、Server 的安全策略微软的 SQL Server 是一种被广泛使用的数据库,很多电子商务网站、企业内部信息化平台等都是基于SQL Server 构建的,但是数据库的安全性仍没有象操作系统和网络那样受到重视, 这给数据库的安全带来了极大隐患。 因此,采用恰当和健全的安全策略就显得十分必要。SQL Server的安全策略主要包括安全密码和安全账号、数据库安全配置、 操作系统安全设置、 日志记录检测、扩展存储过程管理、网络及协议安全管理等方面的策略。下面介绍常用的 4 种安全策略。1安全密码和安全账号策略SQL Server 的认证模式有Windows 身份认证和混合身份认证两种。如果数据库管理

17、员不希望操作系统管理员通过操作系统登录来接触数据库的话,可以在账号管理中把系统账号“BUILTIN/Administrators ”删除。数据库账号的密码设置简单或为空对于数据库系统的安全威胁极大,例如,MicrosoftSQL Slammer 就是利用管理员“ sa”密码为空进行攻击。设置数据库安全密码和安全账号的策略主要如下:1)避免让“ sa”账号的密码写于应用程序或者脚本中。2) SQL Server 2000 安装的时候,如果是使用混合模式,那么就需要输入“sa”的密码,除非确认必须使用空密码。3)养成定期修改密码的好习惯。号。比如使用下面的SQL 语句。数据库管理员应该定期查看是否

18、有不符合密码要求的账Use masterSelect name, Password from syslogins where password is null4)确保“ sa”账号安全。由于SQL Server不能更改“sa”用户名称,也不能删除这个超级用户,所以,必须对这个账号进行最强的保护。当然,包括使用一个非常健壮的密码,最好不要在数据库应用中使用“sa”账号,只有当没有其他方法登录到SQL Server 。时(如当其他系统管理员不可用或忘记了密码)才使用“sa”。5)建议数据库管理员新建一个拥有与“sa”一样权限的超级用户来管理数据库。很多主机使用数据库只是用来进行查询、修改等简单功能

19、,请根据实际需要分配账号,并赋予仅仅能够满足应用要求和需要的权限。比如, 只要查询功能的,那么使用一个简单的public 账号能够 select 就可以了。6)安全账号策略要求用户在进行数据库查询、修改等简单的数据库应用时,根据实际需要分配账号,即按照应用要求来授予最低限度的权限,而不要使用LocalSystem 或Administrator账号。如果不需要guest,就把账号从数据库中删除,以防止未经验证的用户登录到数据库。7)使用强口令机制保护“ sa”和“ probe”账号。给它们分配强口令,并将这些口令锁放在安全的位置。注意: “ probe”账号用于性能分析和分布式处理,在标准模式下

20、使用时,给该账号分配口令会削弱其功能。2日志审计策略日志记录包括数据库日志和操作系统日志,由于 NTFS 分区具有较高的安全性,应确保将这些日志文件都保存在NTFS 系统上。 同时对文件赋予合适的权限,并定期查看日志以检查是否有可疑的登录事件发生。审计数据库日志记录主要是审核登录事件的安全性,可在实例属性中选择“安全性”,将审核级别选为“全部”,这样在数据库日志和操作系统日志里就详细记录了所有账号的登录事件。从操作系统日志记录可以获得与数据库运行相关的信息如数据库的启动、用户登录、执行命令等内容,从而判断是否提高数据库系统的安全级别。加强数据库日志的记录,特别是审核数据库登录事件的“失败和成功

21、”。定期查看SQLServer日志,检查是否有可疑的登录事件发生。例如,在Windows命令窗口下,用findstr命令寻找关键字符串。审计使用空口令进行注册的行为。使用下列代码检测空口令。Use masterSelect namePassword3扩展存储过程管理策略SQL Server 为用户提供了丰富的系统存储过程,其中包括了大量扩展存储过程,这些存储过程很容易被恶意利用来提升权限或进行破坏。存在安全隐患的扩展存储过程主要有以下3 种:系统操作存储过程、自动操作存储过程和注册表存储过程。例如,数据库用户通过存储过程xp_cmdshell ,能调用 Windows NT 系统的内置命令,它

22、也能成为攻击者进入操作系统的捷径, 因此该存储过程对系统安全具有极大威胁。 如果不需要扩展存储过程 xp_cmdshell ,则应把它从系统中删除,或通过 SQL Server 企业管理器将其删除。再如 OLE 自动存储过程有可能被攻击者利用而威胁到系统安全,造成管理器中的某些特征不能使用。管理员需要根据数据库应用的实际需要,删除不必要的存储过程,并限制用户账号调用扩展存储过程的权限。4网络及协议安全管理策略应选择一个能给系统提供最大安全而又不会影响系统性能的网络协议,并删除不必要的网络协议库。目前 SQL Server 支持的通信协议有:1)命名管道 ( Named Pipes):使用 SM

23、B 的端口 (137、 138、 139)进行通信。2) TCP/IP 协议栈:使用 TCP 端口 1433(缺省)进行通信。3)多协议 ( Multi protocol) :client 端需 NT RPCs 支持,使用TCP 端口通信,数据加密传送。4) NWLink IPX/SQX:数据未加密,易被Sniffer5) AppleTalk :数据未加密,易被Sniffer 窃取。6) banyan Vines:数据未加密,易被Sniffer 窃取。窃取。系统缺省情况下,如果是纯Windows系统网络环境,采用命名管道连接方式,并使用Windows 集成的身份验证模式应该是最安全的。如果并不

24、是所有客户端都支持这种方式,那采用多协议连接还是最有效的,而且,多协议连接还支持传递口令及数据的加密,这对安全性要求高的网络来说也是比较好的选择。如果由于其他原因必须使用IPSockets,则不要使用缺省的端口。 如对于 TCP/IP ,默认情况下SQL Server 通常使用1433 端口接收数据, 管理员可以在实例属性中选择“TCP/IP 协议属性”,进一步选择“隐藏SQL Server 实例”,并将TCP/IP 使用的默认端口改为“其他端口”。此外,如果用户将SQL Server 连接到因特网,那么应该考虑通过代理服务器MicrosoftProxy Server 连接到 SQL Serv

25、er 。 Microsoft Proxy Server是一种独立应用程序,它能够阻止未授权用户连接到用户私有网络中,保证敏感数据的安全性。防火墙是保护系统免受外部攻击的最有效方法之一。通过授权给Windows 用户或者禁止数据通过指定TCP/IP 端口传送,防火墙都能够控制两个方向上的访问。SQL Server 2000数据库系统本身没有提供网络连接的安全控制,但是可以通过防火墙对IP 连接进行限制,保证授权的IP 能够访问, 并拒绝其他IP 进行端口连接,对来自网络上的安全威胁进行有效的控制。Web 站点通常使用端口80,为了便于外网用户能够访问Web 站点,则需要启用该端口。如果网站只利用ASP 或其他服务器方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论