设为首页 收藏本站
| 数控仿真 | 技术文章 | 公路造价 | 文档管理软件 |
| 幸运之门彩票网 | 彩票新闻 | 免费招聘 | 百科问吧 | 百姓族谱 | 小游戏网 |
“釜底抽薪”除做炊具外,在古代还有一种重要的用途是?
文档管理 | 数据库技术 | 全文检索 | 中文分词 | 文件格式 | Lucene | FireBird | IIS | 免费小游戏 | 彩票论坛
Google
北京紫气东来网络公司 > 技术文章 > 数据库技术 > SQL SERVER安全规划
数据库技术 | FireBird | My SQL |
SQL SERVER安全规划

发表:北京紫气东来网络公司www.chianwiss.com,本文被阅读:1
在改进SQL Server 7.0系列所实现的安全机制的过程中,Microsoft建立了一种既灵活又强大的安全管理机制,它能够对用户访问SQL Server服务器系统和数据库的安全进行全面地管理。按照本文介绍的步骤,你可以为SQL Server 7.0(或2000)构造出一个灵活的、可管理的安全策略,而且它的安全性经得起考验。
一、验证方法选择
本文对验证(authentication)和授权(authorization)这两个概念作不同的解释。验证是指检验用户的身份标识;授权是指允许用户做些什么。在本文的讨论中,验证过程在用户登录SQL Server的时候出现,授权过程在用户试图访问数据或执行命令的时候出现。
构造安全策略的第一个步骤是确定SQL Server用哪种方式验证用户。SQL Server的验证是把一组帐户、密码与Master数据库Sysxlogins表中的一个清单进行匹配。Windows NT/2000的验证是请求域控制器检查用户身份的合法性。一般地,如果服务器可以访问域控制器,我们应该使用Windows NT/2000验证。域控制器可以是Win2K服务器,也可以是NT服务器。无论在哪种情况下,SQL Server都接收到一个访问标记(Access Token)。访问标记是在验证过程中构造出来的一个特殊列表,其中包含了用户的SID(安全标识号)以及一系列用户所在组的SID。正如本文后面所介绍的,SQL Server以这些SID为基础授予访问权限。注意,操作系统如何构造访问标记并不重要,SQL Server只使用访问标记中的SID。也就是说,不论你使用SQL Server 2000、SQL Server 7.0、Win2K还是NT进行验证都无关紧要,结果都一样。
如果使用SQL Server验证的登录,它最大的好处是很容易通过Enterprise Manager实现,最大的缺点在于SQL Server验证的登录只对特定的服务器有效,也就是说,在一个多服务器的环境中管理比较困难。使用SQL Server进行验证的第二个重要的缺点是,对于每一个数据库,我们必须分别地为它管理权限。如果某个用户对两个数据库有相同的权限要求,我们必须手工设置两个数据库的权限,或者编写脚本设置权限。如果用户数量较少,比如25个以下,而且这些用户的权限变化不是很频繁,SQL Server验证的登录或许适用。但是,在几乎所有的其他情况下(有一些例外情况,例如直接管理安全问题的应用),这种登录方式的管理负担将超过它的优点。
二、Web环境中的验证
即使最好的安全策略也常常在一种情形前屈服,这种情形就是在Web应用中使用SQL Server的数据。在这种情形下,进行验证的典型方法是把一组SQL Server登录名称和密码嵌入到Web服务器上运行的程序,比如ASP页面或者CGI脚本;然后,由Web服务器负责验证用户,应用程序则使用它自己的登录帐户(或者是系统管理员sa帐户,或者为了方便起见,使用Sysadmin服务器角色中的登录帐户)为用户访问数据。
这种安排有几个缺点,其中最重要的包括:它不具备对用户在服务器上的活动进行审核的能力,完全依赖于Web应用程序实现用户验证,当SQL Server需要限定用户权限时不同的用户之间不易区别。如果你使用的是IIS 5.0或者IIS 4.0,你可以用四种方法验证用户。第一种方法是为每一个网站和每一个虚拟目录创建一个匿名用户的NT帐户。此后,所有应用程序登录SQL Server时都使用该安全环境。我们可以通过授予NT匿名帐户合适的权限,改进审核和验证功能。
第二种方法是让所有网站使用Basic验证。此时,只有当用户在对话框中输入了合法的帐户和密码,IIS才会允许他们访问页面。IIS依靠一个NT安全数据库实现登录身份验证,NT安全数据库既可以在本地服务器上,也可以在域控制器上。当用户运行一个访问SQL Server数据库的程序或者脚本时,IIS把用户为了浏览页面而提供的身份信息发送给服务器。如果你使用这种方法,应该记住:在通常情况下,浏览器与服务器之间的密码传送一般是不加密的,对于那些使用Basic验证而安全又很重要的网站,你必须实现SSL(Secure Sockets Layer,安全套接字层)。
在客户端只使用IE 5.0、IE 4.0、IE 3.0浏览器的情况下,你可以使用第三种验证方法。你可以在Web网站上和虚拟目录上都启用NT验证。IE会把用户登录计算机的身份信息发送给IIS,当该用户试图登录SQL Server时IIS就使用这些登录信息。使用这种简化的方法时,我们可以在一个远程网站的域上对用户身份进行验证(该远程网站登录到一个与运行着Web服务器的域有着信任关系的域)。
最后,如果用户都有个人数字证书,你可以把那些证书映射到本地域的NT帐户上。个人数字证书与服务器数字证书以同样的技术为基础,它证明用户身份标识的合法性,所以可以取代NT的Challenge/Response(质询/回应)验证算法。Netscape和IE都自动在每一个页面请求中把证书信息发送给IIS。IIS提供了一个让管理员把证书映射到NT帐户的工具。因此,我们可以用数字证书取代通常的提供帐户名字和密码的登录过程。
由此可见,通过NT帐户验证用户时我们可以使用多种实现方法。即使当用户通过IIS跨越Internet连接SQL Server时,选择仍旧存在。因此,你应该把NT验证作为首选的用户身份验证办法。
三、设置全局组
构造安全策略的下一个步骤是确定用户应该属于什么组。通常,每一个组织或应用程序的用户都可以按照他们对数据的特定访问要求分成许多类别。例如,会计应用软件的用户一般包括:数据输入操作员,数据输入管理员,报表编写员,会计师,审计员,财务经理等。每一组用户都有不同的数据库访问要求。
控制数据访问权限最简单的方法是,对于每一组用户,分别地为它创建一个满足该组用户权限要求的、域内全局有效的组。我们既可以为每一个应用分别创建组,也可以创建适用于整个企业的、涵盖广泛用户类别的组。然而,如果你想要能够精确地了解组成员可以做些什么,为每一个应用程序分别创建组是一种较好的选择。例如,在前面的会计系统中,我们应该创建Data Entry Operators、Accounting Data Entry Managers等组。请记住,为了简化管理,最好为组取一个能够明确表示出作用的名字。
除了面向特定应用程序的组之外,我们还需要几个基本组。基本组的成员负责管理服务器。按照习惯,我们可以创建下面这些基本组:SQL Server Administrators,SQL Server Users,SQL Server Denied Users,SQL Server DB Creators,SQL Server Security Operators,SQL Server Database Security Operators,SQL Server Developers,以及 DB_Name Users(其中DB_Name是服务器上一个数据库的名字)。当然,如果必要的话,你还可以创建其他组。
创建了全局组之后,接下来我们可以授予它们访问SQL Server的权限。首先为SQL Server Users创建一个NT验证的登录并授予它登录权限,把Master数据库设置为它的默认数据库,但不要授予它访问任何其他数据库的权限,也不要把这个登录帐户设置为任何服务器角色的成员。接着再为SQL Server Denied Users重复这个过程,但这次要拒绝登录访问。在SQL Server中,拒绝权限始终优先。创建了这两个组之后,我们就有了一种允许或拒绝用户访问服务器的便捷方法。
为那些没有直接在Sysxlogins系统表里面登记的组授权时,我们不能使用Enterpris Managr,因为Enterprise Manager只允许我们从现有登录名字的列表选择,而不是域内所有组的列表。要访问所有的组,请打开Query Analyzer,然后用系统存储过程sp_addsrvrolemember以及sp_addrolemember进行授权。
对于操作服务器的各个组,我们可以用sp_addsrvrolemember存储过程把各个登录加入到合适的服务器角色:SQL Server Administrators成为Sysadmins角色的成员,SQL Server DB Creators成为Dbcreator角色的成员,SQL Server Security Operators成为Securityadmin角色的成员。注意sp_addsrvrolemember存储过程的第一个参数要求是帐户的完整路径。例如,BigCo域的JoeS应该是bigcojoes(如果你想用本地帐户,则路径应该是server_namejoes)。
要创建在所有新数据库中都存在的用户,你可以修改Model数据库。为了简化工作,SQL Server自动把所有对Model数据库的改动复制到新的数据库。只要正确运用Model数据库,我们无需定制每一个新创建的数据库。另外,我们可以用sp_addrolemember存储过程把SQL Server Security Operators加入到db_securityadmin,把SQL Server Developers加入到db_owner角色。
注意我们仍然没有授权任何组或帐户访问数据库。事实上,我们不能通过Enterprise Manager授权数据库访问,因为Enterprise Manager的用户界面只允许我们把数据库访问权限授予合法的登录帐户。SQL Server不要求NT帐户在我们把它设置为数据库角色的成员或分配对象权限之前能够访问数据库,但Enterprise Manager有这种限制。尽管如此,只要我们使用的是sp_addrolemember存储过程而不是Enterprise Manager,就可以在不授予域内NT帐户数据库访问权限的情况下为任意NT帐户分配权限。
到这里为止,对Model数据库的设置已经完成。但是,如果你的用户群体对企业范围内各个应用数据库有着类似的访问要求,你可以把下面这些操作移到Model数据库上进行,而不是在面向特定应用的数据库上进行。
四、允许数据库访问
在数据库内部,与迄今为止我们对登录验证的处理方式不同,我们可以把权限分配给角色而不是直接把它们分配给全局组。这种能力使得我们能够轻松地在安全策略中使用SQL Server验证的登录。即使你从来没有想要使用SQL Server登录帐户,本文仍旧建议分配权限给角色,因为这样你能够为未来可能出现的变化做好准备。
创建了数据库之后,我们可以用sp_grantdbaccess存储过程授权DB_Name Users组访问它。但应该注意的是,与sp_grantdbaccess对应的sp_denydbaccess存储过程并不存在,也就是说,你不能按照拒绝对服务器访问的方法拒绝对数据库的访问。如果要拒绝数据库访问,我们可以创建另外一个名为DB_Name Denied Users的全局组,授权它访问数据库,然后把它设置为db_denydatareader以及db_denydatawriter角色的成员。注意SQL语句权限的分配,这里的角色只限制对对象的访问,但不限制对DDL(Data Definition Language,数据定义语言)命令的访问。
正如对登录过程的处理,如果访问标记中的任意SID已经在Sysusers系统表登记,SQL将允许用户访问数据库。因此,我们既可以通过用户的个人NT帐户SID授权用户访问数据库,也可以通过用户所在的一个(或者多个)组的SID授权。为了简化管理,我们可以创建一个名为DB_Name Users的拥有数据库访问权限的全局组,同时不把访问权授予所有其他的组。这样,我们只需简单地在一个全局组中添加或者删除成员就可以增加或者减少数据库用户。
五、分配权限
实施安全策略的最后一个步骤是创建用户定义的数据库角色,然后分配权限。完成这个步骤最简单的方法是创建一些名字与全局组名字配套的角色。例如对于前面例子中的会计系统,我们可以创建Accounting Data Entry Operators、Accounting Data Entry Managers之类的角色。由于会计数据库中的角色与帐务处理任务有关,你可能想要缩短这些角色的名字。然而,如果角色名字与全局组的名字配套,你可以减少混乱,能够更方便地判断出哪些组属于特定的角色。
创建好角色之后就可以分配权限。在这个过程中,我们只需用到标准的GRANT、REVOKE和DENY命令。但应该注意DENY权限,这个权限优先于所有其他权限。如果用户是任意具有DENY权限的角色或者组的成员,SQL Server将拒绝用户访问对象。
接下来我们就可以加入所有SQL Server验证的登录。用户定义的数据库角色可以包含SQL Server登录以及NT全局组、本地组、个人帐户,这是它最宝贵的特点之一。用户定义的数据库角色可以作为各种登录的通用容器,我们使用用户定义角色而不是直接把权限分配给全局组的主要原因就在于此。
由于内建的角色一般适用于整个数据库而不是单独的对象,因此这里建议你只使用两个内建的数据库角色,,即db_securityadmin和db_owner。其他内建数据库角色,例如db_datareader,它授予对数据库里面所有对象的SELECT权限。虽然你可以用db_datareader角色授予SELECT权限,然后有选择地对个别用户或组拒绝SELECT权限,但使用这种方法时,你可能忘记为某些用户或者对象设置权限。一种更简单、更直接而且不容易出现错误的方法是为这些特殊的用户创建一个用户定义的角色,然后只把那些用户访问对象所需要的权限授予这个用户定义的角色。
六、简化安全管理
SQL Server验证的登录不仅能够方便地实现,而且与NT验证的登录相比,它更容易编写到应用程序里。但是,如果用户的数量超过25,或者服务器数量在一个以上,或者每个用户都可以访问一个以上的数据库,或者数据库有多个管理员,SQL Server验证的登录不容易管理。由于SQL Server没有显示用户有效权限的工具,要记忆每个用户具有哪些权限以及他们为何要得到这些权限就更加困难。即使对于一个数据库管理员还要担负其他责任的小型系统,简化安全策略也有助于减轻问题的复杂程度。因此,首选的方法应该是使用NT验证的登录,然后通过一些精心选择的全局组和数据库角色管理数据库访问。
下面是一些简化安全策略的经验规则:

· 用户通过SQL Server Users组获得服务器访问,通过DB_Name Users组获得数据库访问。
· 用户通过加入全局组获得权限,而全局组通过加入角色获得权限,角色直接拥有数据库里的权限。
· 需要多种权限的用户通过加入多个全局组的方式获得权限。
只要规划得恰当,你能够在域控制器上完成所有的访问和权限维护工作,使得服务器反映出你在域控制器上进行的各种设置调整。虽然实际应用中情况可能有所变化,但本文介绍的基本措施仍旧适用,它们能够帮助你构造出很容易管理的安全策略。


wiss文档协同管理系统三分钟解决一切文档管理的烦恼!!!
WiSS 产品更多功能http://www.chinawiss.com/product.htm

 北京紫气东来网络公司 > 技术文章 > 数据库技术
·异构平台的数据库安全技术 (4)
·SQL SERVER 安全检查列表 (4)
·如何手动更改SQL SERVER 2000服务账号口令 (4)
·SQL SERVER7.0的远程连接问题 (4)
·LINUX环境主要数据库简介 (5)
·MYSQL 数据导入与导出 (3)
·SQLSERVER 2005中如何列所有存储过程 (10)
·MYSQL 数据导入与导出 (3)
·SQL SERVER 安全检查列表 (4)
·如何手动更改SQL SERVER 2000服务账号口令 (4)
·SQL SERVER7.0的远程连接问题 (4)
·微软发布SQL SERVER 2000 安全工具 (5)
·SQL SERVER补丁版本的检查和安装过程中常见问题 (5)
·MYSQL数据库的安全配置、实用技巧 (5)
·SQL SERVER 2000自带"备份"功能对关键数据库备份 (5)
·数据库基础:利用图形界面 从SQL导入导出到MYSQL (5)
 最新文章
·MYSQL 数据导入与导出
·SQL SERVER安全规划
·异构平台的数据库安全技术
·SQL SERVER 安全检查列表
·如何手动更改SQL SERVER 2000服务账号口
·SQL SERVER7.0的远程连接问题
·LINUX环境主要数据库简介
·ORACLE数据的异地自动备份
·微软发布SQL SERVER 2000 安全工具
·SQL SERVER补丁版本的检查和安装过程中常
·MYSQL数据库的安全配置、实用技巧
·据库安全:保证ORACLE数据库安全性的策略
·正确设计关系数据库中保存大量XML文档的
·SQL SERVER 2000自带"备份"功能对关键数
·数据库基础:利用图形界面 从SQL导入导出
·数据库知识: 如何备份与恢复WIN 2003的
·数据库小知识: 关于 ORACLE 数据库的启
·ASP漏洞全接触---SQL注入一般步骤与注入
·原来如此! 一次特殊的SQL SERVER数据库
·数据库安全小知识: ORACLE数据库的灾难
·数据库安全: 并入子网后为什么无法连接
·数据库知识: 详述 SQL SERVER 补丁安装
·数据库安全防护: 数据库系统防黑客入侵
·数据库应用知识: 改善SQL SERVER内存管
·数据库安全:在SQL SERVER中进行快速删除
·数据库安全:ORACLE也受伤 注入漏洞的发
·数据库安全知识:关于 ORACLE数据库的备
·数据库安全:关于 ORACLE灾难防护的关键
·数据库安全:全面认识数据恢复为你的电脑
·以数据库基本原理 详析邮件服务器邮件存
·数据库应用:MICROSOFT SQL SERVER 连接
·数据库安全:怎样来限制 SQL SERVER指定
·数据库知识:关于MYSQL数据库的用户帐号
·数据库安全:简单介绍SQL SERVER 安全系
·数据库安全:SQL SERVER连接中三个常见的
·应用技巧:用ASP来连接各种不同数据库的
·数据库知识:浅谈数据库初学者 常存在的
·数据库安全:小知识—SQL SERVER 中系统
·数据库安全:十大绝招保护 SQL SERVER数
·数据库应用:在WINDOWS 2000下 优化ORAC
·数据库安全:数据库系统 防止黑客入侵之
·数据库安全:简述SYBASE 数据库安全性的
·安全知识:专家谈补丁管理不是毁掉而是拯
·数据库安全:关于数据库系统 防黑客入侵
·数据库安全:SQL SERVER 数据库安全规划
·数据库知识:SQL SERVER 仍占数据库市场
·数据库知识:数据复制理念 与复制技术面
·数据库知识:MICORSOFT SQL SERVER 2008
·数据库知识:ORACLE 10G DATAGUARD 日志
·数据库知识:SQL SERVER 需要避免的查询
 热门文章
·PDF转成WORD TXT EXCEL RTF软件
·对PDF文件的文本抽取(PDFBOX处理中文PDF
·PDF与WORD之间提取和转换经验浅谈
·JAVA抽取WORD和PDF格式文件的四种武器
·行政管理部门的职责与权利是什么?
·用C#制作PDF文件全攻略
·LUCENE索引文件格式分析
·如何整理好公司文档?
·再谈关于软件开发中的文档管理
·希望PDFLIB TET― 理想的文本提取软件包
·LUCENE系统结构分析
·DELPHI与WORD之间的融合技术
·电子文档管理
·C#抽取WORD文档内容
·怎么整理才有效讲文档保存好归类好?
·从HTML文件中抽取正文的简单方案
·VC实现类似EXCEL文件夹式样的标签控制
·中文分词技术三种歧义
·全文检索核心:几款免费中文分词模块介绍
·中文分词技术详解
·全文检索概念
·ANNOTATED LUCENE(中文版)
·电子文件归档与管理规范 GB/T 18894-200
·天灾还是人祸,让你知道最爱是谁?
·LUCENE的应用、特点及优势
·数据库的三重境界
·中文分词技术
·软件测试工程师笔试题中数据库试题集锦
·DELPHI自动化控制EXCEL
·软件文档知多少
免费小游戏
宠物连连看

真人美女换装

美女脱衣服

美女胴体猜猜看

调戏床上美女

黄金矿工
在一个家庭中,通常哪一位更具有节约意识?
| 2008-10-31 | 首页 | 功能介绍 | 免费下载 | 产品购买 | 在线服务 | 典型应用 | 技术文章 | 联系我们 |