分享
 
 
 

SQLServer2000安全模型

王朝mssql·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

简介

本白皮书面向的对象是 Microsoft SQL Server 管理员和开发人员,主要是介绍 SQL Server 2000 Service Pack 3 (SP3) 的安全功能。本文讨论了安全方面的一些最佳做法,给出了详细的建议信息,并提供了一些源代码示例。最后,列出了安全最佳做法检查表。本白皮书的重点是 SQL Server 引擎。有关复制、分析服务或数据转换服务的详细讨论,请参阅 http://go.microsoft.com/fwlink/?LinkId=15402。

前提

SQL Server 2000 安全是基于 Microsoft Windows NT 4.0® 和 Windows 2000 安全模型实现的,因此,阅读本白皮书的前提是读者对 Windows NT 4.0 和 Windows 2000 安全有一个基本的了解。另外一个前提就是,读者理解域、全局组、本地组和用户帐户应用于 Windows NT 4.0 安全上下文时的概念,以及 Windows 2000 中 Microsoft Active Directory ®的概念。

对于那些对代码示例感兴趣的读者,学习 Microsoft Visual Basic® 和结构化查询语言 (SQL) 有助于增强理解。此外,有使用 SQL 分布式管理对象 (SQL-DMO) 的经验对理解本白皮书中的内容也大有好处。

但是,即便是那些对 Windows NT 4.0、Windows 2000 或 SQL Server 知之甚少的读者,通过阅读本文,也将对使用这些产品时的安全性有一个大概的了解。

SQL Server 2000 安全模型

SQL Server 2000 安全模型是基于 Windows 安全模型实现的。有关 Windows 安全最佳做法的详细讨论,请参阅 http://go.microsoft.com/fwlink/?LinkId=15392。

应该按图 1 所示保护 SQL Server 2000 的安全。

图 1:Windows 用户和组为 SQL Server 管理员提供了强大且灵活的安全模型

上图中的步骤可以总结为如下几点:

1. 将每个域中的用户指派到 Windows 全局组。

2. 将各个域中的 Windows 全局组放入 Windows 本地组。

3. 授予 Windows 本地组登录 SQL Server 2000 的权限。

4. 授予 Windows 本地组访问适当数据库的权限。此 Windows 本地组可能与步骤 3 中被授予登录权限的本地组不同。因此,通常重复步骤 1 和 2 来按需要的访问权限组织用户。

5. 为 Windows 本地组分配对特定数据库对象的访问权限。

另一种实现安全的途径是基于角色的使用,通常通过如图 2 所示的方式来实现。

图 2:基于角色的安全是 SQL Server 2000 中的另一个安全选项

当使用角色来分配对象权限时,仍然需要使用建议的方法为各个用户授予对服务器和数据库的访问权限。

步骤 1 到步骤 4 与图 1 中基本相同,所不同的只是可能不必创建多个 Windows 全局组和本地组。同时,它还对 Windows 2000 通用组提供完全支持。

步骤 5:将各个 Windows 帐户和 Windows 组分配给某个角色。

步骤 6:为角色分配对象访问权限。

使用角色,通过在 SQL Server 2000 内组织用户而减少了在 Windows 内组织用户的需要。

身份验证模式

SQL Server 2000 提供两种身份验证模式来保护对服务器访问的安全:Windows 身份验证模式和混合模式。

Windows 身份验证模式

Windows 身份验证模式是 SQL Server 2000 中的默认身份验证模式。在 Windows 身份验证模式下,SQL Server 2000 仅依赖用户的 Windows 身份验证。然后,授予 Windows 用户或组对 SQL Server 的访问权限。使用此模式与服务器建立的连接称为信任连接。

当使用 Windows 身份验证模式时,数据库管理员通过授予用户登录 SQL Server 2000 的权限来允许他们访问运行 SQL Server 的计算机。Windows 安全标识符 (SID) 用于跟踪已经过 Windows 验证的登录。使用 Windows SID,数据库管理员可以直接授予 Windows 用户或组登录权限。

混合模式

在混合模式下,可以使用 Windows 身份验证或 SQL Server 身份验证对用户进行验证。SQL Server 负责维护经过 SQL Server 身份验证的用户的用户名和密码对。

如果客户端和服务器能够使用 NTLM 或 Kerberos 登录身份验证协议,则以混合模式连接的 SQL Server 就像使用 Windows 身份验证模式一样,也依赖 Windows 来验证用户身份。如果客户端无法使用标准 Windows 登录,则 SQL Server 要求提供用户名和密码对,并将其与存储在系统表中的用户名和密码对进行比较。依赖用户名和密码对的连接称为非信任连接或 SQL 连接。

在内部使用安全标识号

SQL Server 使用 SID 跟踪信任的登录。可以直接对 Windows 用户和组授予对数据库或特定数据库对象的访问权限。例如,Jane 同时是 Windows 中 SALES 和 MARKETING 组的成员。SALES 组被授予了登录 SQL Server 以及访问 pubs 数据库的权限。管理员可以通过 Jane 的 Windows 名称 REDMONDJane 授予其访问 authors 表的权限。Windows 帐户必须通过域和用户名来引用。在这种情况下,Jane 的 SID 将存储在 pubs 数据库的系统表中。SQL Server 2000 不支持用户主体名 (UPN)。例如,如果 Windows 登录包含域 SALES 和用户名 SOMEONE,那么登录到 SQL Server 时应使用 SALESSOMEONE,而不能使用 Windows 2000 Active Directory 所支持的 SOMEONE@MYCOMPANY.COM 形式的登录。

角色

角色的使用与 Windows 组的使用很相似。通过角色,可以将用户集中到一个单元中,然后对这个单元应用权限。对角色授予、拒绝或吊销权限时,将对其中的所有成员生效。可以用角色来代表一个组织中某一类工作人员所执行的某项工作,然后对该角色授予权限。当工作人员执行该项工作时,便成为该角色的成员;而当不再执行该项工作时,便不再是该角色的成员。这样,就不必在用户接受或离开某项工作时,反复地授予、拒绝或吊销每个用户的权限。

角色的功能之所以如此强大,其中涉及到了许多关键的概念。首先,除固定的服务器角色外,其他角色都是在数据库内部实现的。这意味着数据库管理员无需依赖 Windows 管理员来组织用户。第二,角色可以嵌套。嵌套的深度没有限制,但不允许循环嵌套。第三,数据库用户可以同时是多个角色的成员。

因为角色的这些特性,使得数据库管理员可以安排权限的层次结构,以反映使用数据库的组织的管理结构。例如,财务部门可能包含分别负责应付帐款和应收帐款的不同组。数据库管理员可以分别为 APEmployees 和 AREmployees 创建不同的数据库角色,并只对每个角色分配完成相应工作的雇员所需的权限。然后,数据库管理员可以创建一个 FinManagers 角色,并使之包含这两个限制较多的角色(APEmployees 和 AREmployees)。这样,FinManagers 将具有他们的直接下属雇员的所有权限。当某个负责应付帐款的雇员被提升为管理人员时,数据库管理员只需要将其添加到 FinManagers 角色中即可。

public 角色

public 角色在每个数据库(包括系统数据库 master、msdb、tempdb 和 model)中都存在。public 角色提供数据库中用户的默认权限,不能删除。其功能相当于 Windows NT 4.0 环境中的 Everyone 组。每个数据库用户都自动是此角色的成员,因此,无法在此角色中添加或删除用户。

预定义角色

SQL Server 2000 包括几个预定义的角色。这些角色具有预定义的、不能授予其他用户帐户的内在权限。有两种类型的预定义角色:固定服务器角色和固定数据库角色。

固定服务器角色

固定服务器角色的作用域在服务器范围内。它们存在于数据库之外。固定服务器角色的每个成员都能够向该角色中添加其他登录。

注意 Windows BUILTINAdministrators 组(本地管理员组)的所有成员都默认是 sysadmin 角色的成员。

表 1列出了 SQL Server 2000 中存在的固定服务器角色。

表 1:SQL Server 2000 固定服务器角色

要将用户添加到固定服务器角色中,请使用下列 Transact-SQL 语句:

/* Add Bob to the sysadmin server role */

exec sp_addsrvrolemember "REDMONDBob", "sysadmin"

可以将 Windows 用户和组添加到服务器角色中。下列代码显示了如何使用 SQL 分布式管理对象 (DMO) 集合将用户添加到服务器角色中:

' Declare variables

Dim oServer As SQLDMO.SQLServer

' Create a server object and connect

Set oServer = CreateObject("SQLDMO.SQLServer")

oServer.Connect ("SERVERNAME")

' Add Bob to the sysadmin server role

oServer.ServerRoles("sysadmin").AddMember ("REDMONDBob")

有关如何使用固定服务器角色的详细信息,请参阅 SQL Server 联机丛书。

固定数据库角色

固定数据库角色在数据库级别定义,并在每个数据库中都存在。db_owner 和 db_security 管理员角色的成员可以管理固定数据库角色的成员身份;但是,只有 db_owner 角色可以将其他用户添加到 db_owner 固定数据库角色中。

表 2 列出了 SQL Server 2000 中存在的固定数据库角色。

表 2:SQL Server 2000 固定数据库角色

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有