仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 558|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL网站制作之SQL Server平安计划全攻略

[复制链接]
深爱那片海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:34:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
首先我们要知道,或许有一项技术存在很多理由让我们可以选择使用MySQL学习教程,但是让我们不使用它往往只要有一个理由就足够了。server|平安|攻略|计划Microsoft创建了一种既天真又壮大的平安办理机制,它可以对用户会见SQLServer服务器体系和数据库的平安举行周全地办理。依照本文先容的步骤,你能够为SQLServer7.0(或2000)机关出一个天真的、可办理的平安战略,并且它的平安性经得起磨练。
1、考证办法选择

本文对考证(authentication)和受权(authorization)这两个观点作分歧的注释。考证是指查验用户的身份标识;受权是指同意用户做些甚么。在本文的会商中,考证历程在用户登录SQLServer的时分呈现,受权历程在用户试图会见数据或实行命令的时分呈现。
机关平安战略的第一个步骤是断定SQLServer用哪一种体例考证用户。SQLServer的考证是把一组帐户、暗码与Master数据库Sysxlogins表中的一个清单举行婚配。WindowsNT/2000的考证是哀求域把持器反省用户身份的正当性。一样平常地,假如服务器能够会见域把持器,我们应当利用WindowsNT/2000考证。域把持器能够是Win2K服务器,也能够是NT服务器。不管在哪一种情形下,SQLServer都吸收到一个会见标志(AccessToken)。会见标志是在考证过程当中机关出来的一个特别列表,个中包括了用户的SID(平安标识号)和一系列用户地点组的SID。正如本文前面所先容的,SQLServer以这些SID为基本授与会见权限。注重,操纵体系怎样机关会见标志其实不主要,SQLServer只利用会见标志中的SID。也就是说,不管你利用SQLServer2000、SQLServer7.0、Win2K仍是NT举行考证都可有可无,了局都一样。
假如利用SQLServer考证的登录,它最年夜的优点是很简单经由过程EnterpriseManager完成,最年夜的弱点在于SQLServer考证的登录只对特定的服务器无效,也就是说,在一个多服务器的情况中办理对照坚苦。利用SQLServer举行考证的第二个主要的弱点是,关于每个数据库,我们必需分离地为它办理权限。假如某个用户对两个数据库有不异的权限请求,我们必需手工设置两个数据库的权限,大概编写剧本设置权限。假如用户数目较少,好比25个以下,并且这些用户的权限变更不是很频仍,SQLServer考证的登录也许合用。可是,在几近一切的其他情形下(有一些破例情形,比方间接办理平安成绩的使用),这类登录体例的办理包袱将凌驾它的长处。
2、Web情况中的考证

即便最好的平安战略也经常在一种情况前屈从,这类情况就是在Web使用中利用SQLServer的数据。在这类情况下,举行考证的典范办法是把一组SQLServer登录称号和暗码嵌进到Web服务器上运转的程序,好比ASP页面大概CGI剧本;然后,由Web服务器卖力考证用户,使用程序则利用它本人的登录帐户(大概是体系办理员sa帐户,大概为了便利起见,利用Sysadmin服务器脚色中的登录帐户)为用户会见数据。
这类布置有几个弱点,个中最主要的包含:它不具有对用户在服务器上的举动举行考核的才能,完整依附于Web使用程序完成用户考证,当SQLServer必要限制用户权限时分歧的用户之间不容易区分。假如你利用的是IIS5.0大概IIS4.0,你能够用四种办法考证用户。第一种办法是为每个网站和每个假造目次创立一个匿名用户的NT帐户。今后,一切使用程序登录SQLServer时都利用该平安情况。我们能够经由过程授与NT匿名帐户符合的权限,改善考核和考证功效。
第二种办法是让一切网站利用Basic考证。此时,只要当用户在对话框中输出了正当的帐户和暗码,IIS才会同意他们会见页面。IIS依托一个NT平安数据库完成登录身份考证,NT平安数据库既能够在当地服务器上,也能够在域把持器上。当用户运转一个会见SQLServer数据库的程序大概剧本时,IIS把用户为了扫瞄页面而供应的身份信息发送给服务器。假如你利用这类办法,应当记着:在一般情形下,扫瞄器与服务器之间的暗码传送通常为不加密的,关于那些利用Basic考证而平安又很主要的网站,你必需完成SSL(SecureSocketsLayer,平安套接字层)。
在客户端只利用IE5.0、IE4.0、IE3.0扫瞄器的情形下,你可使用第三种考证办法。你能够在Web网站上和假造目次上都启用NT考证。IE会把用户登录盘算机的身份信息发送给IIS,当该用户试图登录SQLServer时IIS就利用这些登录信息。利用这类简化的办法时,我们能够在一个远程网站的域上对用户身份举行考证(该远程网站登录到一个与运转着Web服务器的域有着信托干系的域)。
最初,假如用户都有团体数字证书,你能够把那些证书映照到当地域的NT帐户上。团体数字证书与服务器数字证书以一样的手艺为基本,它证实用户身份标识的正当性,以是能够代替NT的Challenge/Response(质询/回应)考证算法。Netscape和IE都主动在每个页面哀求中把证手札息发送给IIS。IIS供应了一个让办理员把证书映照到NT帐户的工具。因而,我们能够用数字证书代替一般的供应帐户名字和暗码的登录历程。
因而可知,经由过程NT帐户考证用户时我们可使用多种完成办法。即便当用户经由过程IIS超过Internet毗连SQLServer时,选择仍然存在。因而,你应当把NT考证作为首选的用户身份考证举措。
3、设置全局组

机关平安战略的下一个步骤是断定用户应当属于甚么组。一般,每个构造或使用程序的用户都能够依照他们对数据的特定会见请求分红很多种别。比方,管帐使用软件的用户一样平常包含:数据输出操纵员,数据输出办理员,报表编写员,管帐师,审计员,财政司理等。每组用户都有分歧的数据库会见请求。
把持数据会见权限最复杂的办法是,关于每组用户,分离地为它创立一个满意该组用户权限请求的、域内全局无效的组。我们既能够为每个使用分离创立组,也能够创立合用于全部企业的、涵盖普遍用户种别的组。但是,假如你想要可以准确地懂得构成员能够做些甚么,为每个使用程序分离创立组是一种较好的选择。比方,在后面的管帐体系中,我们应当创立DataEntryOperators、AccountingDataEntryManagers等组。请记着,为了简化办理,最好为组取一个可以明白暗示出感化的名字。
除面向特定使用程序的组以外,我们还必要几个基础组。基础组的成员卖力办理服务器。依照习气,我们能够创立上面这些基础组:SQLServerAdministrators,SQLServerUsers,SQLServerDeniedUsers,SQLServerDBCreators,SQLServerSecurityOperators,SQLServerDatabaseSecurityOperators,SQLServerDevelopers,和DB_NameUsers(个中DB_Name是服务器上一个数据库的名字)。固然,假如需要的话,你还能够创立其他组。
创立了全局组以后,接上去我们能够授与它们会见SQLServer的权限。起首为SQLServerUsers创立一个NT考证的登录并授与它登录权限,把Master数据库设置为它的默许数据库,但不要授与它会见任何其他数据库的权限,也不要把这个登录帐户设置为任何服务器脚色的成员。接着再为SQLServerDeniedUsers反复这个历程,但此次要回绝登录会见。在SQLServer中,回绝权限一直优先。创立了这两个组以后,我们就有了一种同意或回绝用户会见服务器的便利办法。
为那些没有间接在Sysxlogins体系内外面挂号的组受权时,我们不克不及利用EnterprisManagr,由于EnterpriseManager只同意我们从现有登录名字的列表选择,而不是域内一切组的列表。要会见一切的组,请翻开QueryAnalyzer,然后用体系存储历程sp_addsrvrolemember和sp_addrolemember举行受权。
关于操纵服务器的各个组,我们能够用sp_addsrvrolemember存储历程把各个登录到场到符合的服务器脚色:SQLServerAdministrators成为Sysadmins脚色的成员,SQLServerDBCreators成为Dbcreator脚色的成员,SQLServerSecurityOperators成为Securityadmin脚色的成员。注重sp_addsrvrolemember存储历程的第一个参数请求是帐户的完全路径。比方,BigCo域的JoeS应当是bigcojoes(假如你想用当地帐户,则路径应当是server_namejoes)。
要创立在一切新数据库中都存在的用户,你能够修正Model数据库。为了简化事情,SQLServer主动把一切对Model数据库的修改复制到新的数据库。只需准确使用Model数据库,我们无需定制每个新创立的数据库。别的,我们能够用sp_addrolemember存储历程把SQLServerSecurityOperators到场到db_securityadmin,把SQLServerDevelopers到场到db_owner脚色。
注重我们仍旧没有受权任何组或帐户会见数据库。现实上,我们不克不及经由过程EnterpriseManager受权数据库会见,由于EnterpriseManager的用户界面只同意我们把数据库会见权限授与正当的登录帐户。SQLServer不请求NT帐户在我们把它设置为数据库脚色的成员或分派工具权限之前可以会见数据库,但EnterpriseManager有这类限定。只管云云,只需我们利用的是sp_addrolemember存储历程而不是EnterpriseManager,就能够在不授与域内NT帐户数据库会见权限的情形下为恣意NT帐户分派权限。
到这里为止,对Model数据库的设置已完成。可是,假如你的用户群体对企业局限内各个使用数据库有着相似的会见请求,你能够把上面这些操纵移到Model数据库长进行,而不是在面向特定使用的数据库长进行。
4、同意数据库会见

在数据库外部,与迄今为止我们对登录考证的处置体例分歧,我们能够把权限分派给脚色而不是间接把它们分派给全局组。这类才能使得我们可以轻松地在平安战略中利用SQLServer考证的登录。即便你历来没有想要利用SQLServer登录帐户,本文仍然倡议分派权限给脚色,由于如许你可以为将来大概呈现的变更做好筹办。
创立了数据库以后,我们能够用sp_grantdbaccess存储历程受权DB_NameUsers组会见它。但应当注重的是,与sp_grantdbaccess对应的sp_denydbaccess存储历程其实不存在,也就是说,你不克不及依照回绝对服务器会见的办法回绝对数据库的会见。假如要回绝数据库会见,我们能够创立别的一个名为DB_NameDeniedUsers的全局组,受权它会见数据库,然后把它设置为db_denydatareader和db_denydatawriter脚色的成员。注重SQL语句权限的分派,这里的脚色只限定对工具的会见,但不限定对DDL(DataDefinitionLanguage,数据界说言语)命令的会见。
正如对登录历程的处置,假如会见标志中的恣意SID已在Sysusers体系表挂号,SQL将同意用户会见数据库。因而,我们既能够经由过程用户的团体NT帐户SID受权用户会见数据库,也能够经由过程用户地点的一个(大概多个)组的SID受权。为了简化办理,我们能够创立一个名为DB_NameUsers的具有数据库会见权限的全局组,同时不把会见权授与一切其他的组。如许,我们只需复杂地在一个全局组中增加大概删除成员就能够增添大概削减数据库用户。
5、分派权限

实行平安战略的最初一个步骤是创立用户界说的数据库脚色,然后分派权限。完成这个步骤最复杂的办法是创立一些名字与全局组名字配套的脚色。比方关于后面例子中的管帐体系,我们能够创立AccountingDataEntryOperators、AccountingDataEntryManagers之类的脚色。因为管帐数据库中的脚色与帐务处置义务有关,你大概想要延长这些脚色的名字。但是,假如脚色名字与全局组的名字配套,你能够削减凌乱,可以更便利地判别出哪些组属于特定的脚色。
创立好脚色以后就能够分派权限。在这个过程当中,我们只需用到尺度的GRANT、REVOKE和DENY命令。但应当注重DENY权限,这个权限优先于一切其他权限。假如用户是恣意具有DENY权限的脚色大概组的成员,SQLServer将回绝用户会见工具。
接上去我们就能够到场一切SQLServer考证的登录。用户界说的数据库脚色能够包括SQLServer登录和NT全局组、当地组、团体帐户,这是它最可贵的特性之一。用户界说的数据库脚色能够作为各类登录的通用容器,我们利用用户界说脚色而不是间接把权限分派给全局组的次要缘故原由就在于此。
因为内建的脚色一样平常合用于全部数据库而不是独自的工具,因而这里倡议你只利用两个内建的数据库脚色,,即db_securityadmin和db_owner。其他内建数据库脚色,比方db_datareader,它授与对数据库内里一切工具的SELECT权限。固然你能够用db_datareader脚色授与SELECT权限,然后有选择地对一般用户或组回绝SELECT权限,但利用这类办法时,你大概健忘为某些用户大概工具设置权限。一种更复杂、更间接并且不简单呈现毛病的办法是为这些特别的用户创立一个用户界说的脚色,然后只把那些用户会见工具所必要的权限授与这个用户界说的脚色。
6、简化平安办理

SQLServer考证的登录不但可以便利地完成,并且与NT考证的登录像比,它更简单编写到使用程序里。可是,假如用户的数目凌驾25,大概服务器数目在一个以上,大概每一个用户都能够会见一个以上的数据库,大概数据库有多个办理员,SQLServer考证的登录不简单办理。因为SQLServer没有显现用户无效权限的工具,要影象每一个用户具有哪些权限和他们为什么要失掉这些权限就加倍坚苦。即便关于一个数据库办理员还要担当其他义务的小型体系,简化平安战略也有助于加重成绩的庞大水平。因而,首选的办法应当是利用NT考证的登录,然后经由过程一些经心选择的全局组和数据库脚色办理数据库会见。
上面是一些简化平安战略的履历划定规矩:


  • 用户经由过程SQLServerUsers组取得服务器会见,经由过程DB_NameUsers组取得数据库会见。
  • 用户经由过程到场全局组取得权限,而全局组经由过程到场脚色取得权限,脚色间接具有数据库里的权限。
  • 必要多种权限的用户经由过程到场多个全局组的体例取得权限。
只需计划得得当,你可以在域把持器上完成一切的会见和权限保护事情,使得服务器反应出你在域把持器长进行的各类设置调剂。固然实践使用中情形大概有所变更,但本文先容的基础措施仍然合用,它们可以匡助你机关出很简单办理的平安战略。
DBaaS和其他云服务之间的区别是:DBaaS专注于提供类似关系数据库管理系统RDBMS(比如SQLServer、MySQL和Oracle)的数据库功能。事实上,RDBMS已被证明是一种适合于在各种情况下管理结构化数据的有效工具。
小女巫 该用户已被删除
沙发
发表于 2015-1-19 16:58:21 | 只看该作者
从项目平台的选择上讲,我们关心的,应该是一款产品能不能满足任务需求,而不是网上怎么说。
变相怪杰 该用户已被删除
板凳
发表于 2015-1-25 15:57:31 | 只看该作者
然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情
再见西城 该用户已被删除
地板
发表于 2015-2-3 06:04:46 | 只看该作者
习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。
金色的骷髅 该用户已被删除
5#
发表于 2015-2-8 19:55:48 | 只看该作者
很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。
山那边是海 该用户已被删除
6#
发表于 2015-2-26 00:46:48 | 只看该作者
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。
简单生活 该用户已被删除
7#
发表于 2015-3-8 10:59:22 | 只看该作者
不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理?
柔情似水 该用户已被删除
8#
发表于 2015-3-15 22:24:00 | 只看该作者
始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。
因胸联盟 该用户已被删除
9#
发表于 2015-3-22 17:08:17 | 只看该作者
现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 16:32

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表