⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 203001.htm

📁 探索Windows 2000发展策略以及中介层技术设计的基本概念
💻 HTM
字号:
<html><body><span  id=Layer1><p><font size=2 color=#3c3c3c face=arial>分散式安全性是一项重要的课题。Microsoft Windows 2000的开发者、管理员、以及其他相关人员最终必需要了解此作业系统所提供的这一大套安全性服务和是如何提供它们的。本章首先检视Windows 2000分散式安全性的基本结构,然後再仔细看一看Kerberos在Windows 2000中最重要的分散式安全性服务。</span><span  id=Layer2></font></p><p><font size=2 color=#3c3c3c face=arial>分散式安全性复杂但却重要</span><span  id=Layer3></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>分散式安全性复杂但却重要</span><span  id=Layer4></font></p><hr><a name=203001><font color=#3e70d7 face=arial size=5><b>Windows 2000的分散式安全性</span><span  id=Layer5></b></font><p><font size=2 color=#3c3c3c face=arial>虽然已经在</span><span  id=Layer6>&nbsp;<a target='_new' href=201.htm#>第一章</span><span  id=Layer7></a>&nbsp;中介绍过分散式安全性服务,但让我们再回想一下其中最重要的四个。它们是:</span><span  id=Layer8></font></p><font size=2 color=#3c3c3c face=arial><ul><font size=2 face=arial color=#3c3c3c><li>验证(Authentication) 证明你就是你所说的人。</span><span  id=Layer9></li><br></font><font size=2 face=arial color=#3c3c3c><li>授权(存取控制)(Authorization, access control) 决定你可以做什麽。</span><span  id=Layer10></li><br></font><font size=2 face=arial color=#3c3c3c><li>资料完整性(Data integrity) 保证资料传输过程中不会被更改。</span><span  id=Layer11></li><br></font><font size=2 face=arial color=#3c3c3c><li>资料私密性(Data privacy) 保证资料传输过程中不会被读取。</span><span  id=Layer12></li><br></font></ul></font><p><font size=2 color=#3c3c3c face=arial>分散式安全性包含几个不同的服务</span><span  id=Layer13></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>分散式安全性包含几个不同的服务</span><span  id=Layer14></font></p><hr><p><font size=2 color=#3c3c3c face=arial>另一个由分散式安全性延伸而来之重要的服务是稽核(auditing)。稽核通常是为发生在特定系统或网域的、引起兴趣的事件保留一份记录,有时也称为稽核追踪记录(audit trial)。能引起兴趣的事件相当多样化,但有一些常见的例子,包括失败的登入尝试以及变更密码。除了刚刚所列的以外,事实上Windows 2000可以稽核相当多的事件,包括任何存取档案、目录、或Active Directory物件...等等。</span><span  id=Layer15></font></p><p><font size=2 color=#3c3c3c face=arial>一个更重要的安全性原理是principal的概念。可以把principal想像是拥有帐号与密码的任何东西。在Windows 2000,每个使用者和网与中的每台电脑都是principal。当验证发生时,真正查验的是牵涉的principal的身分。</span><span  id=Layer16></font></p><p><font size=2 color=#3c3c3c face=arial>每个principal都有一个身分,能用来验证</span><span  id=Layer17></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>每个principal都有一个身分,能用来验证</span><span  id=Layer18></font></p><hr><p><font size=2 color=#3c3c3c face=arial>在分散式安全性服务与目录服务间存在着密切的合作关系。两者都必须储存以及存取各式各样的资讯,而且两者都能从资讯的复制(replication)中获益。别太惊讶,在Windows 2000,分散式安全性服务与Active Directory紧密地整合在一起。如图3-1所示,Windows 2000并没有为分散式安全性维护一个分开的资料库。取代的做法是把必要的资讯,例如网域内每个使用者的帐号与密码,存放在Active Directory物件里。因此,Windows 2000 Kerberos服务需执行在网域控制站上以允许它可以直接存取Active Directory资料库。</span><span  id=Layer19></font></p><p><font size=2 color=#3c3c3c face=arial>Windows 2000分散式安全性依赖Active Directory</span><span  id=Layer20></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>Windows 2000分散式安全性依赖Active Directory</span><span  id=Layer21></font></p><hr><p><font size=2 color=#3c3c3c face=arial>实际上,Kerberos服务与Active Directory LDAP伺服器执行在同一个行程里。)</span><span  id=Layer22></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b> 附注</b></font><p><font size=2 color=#3c3c3c face=arial>实际上,Kerberos服务与Active Directory LDAP伺服器执行在同一个行程里。)</span><span  id=Layer23></font></p><hr><font color=#3e72d7 face=arial size=4><b>Security Support Provider interface (SSPI)</span><span  id=Layer24></b></font><p><font size=2 color=#3c3c3c face=arial>在Windows 2000,Secure Sockets Layer (SSL)/Transport Layer Security (TLS)、NTLM、以及也许还有其他的安全性协定分别实作在不同模组,称为Security Service Provider(SSP)。以相同的方式存取每一个SSP:透过Security Support Provider Interface(SSPI)。SSPI建立於由Internet Engineering Task Force (IETF)定义於RFC 2078的Generic Security Service API(GSS-API)基础上。</span><span  id=Layer25></font></p><p><font size=2 color=#3c3c3c face=arial>Security Service Provider可经由Security Service Provider Interface存取</span><span  id=Layer26></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>Security Service Provider可经由Security Service Provider Interface存取</span><span  id=Layer27></font></p><hr><br><center><a target=_new href=imagesh/3-1.gif><img border=0 src='imagesl/3-1.gif'></a></center></span><span  id=Layer28><center><table border=0 ><td align=center><font color=#3c3c3c face=arial size=2><font size=2 face=arial color=#3e80d7><b>&nbsp;图3-1</span><span  id=Layer29>&nbsp;</b></font>Windows 2000 Kerberos服务依赖储存於Active Directory资料库的资讯。</span><span  id=Layer30></td></table></font></center><p><font size=2 color=#3c3c3c face=arial>SSPI并不是Windows 2000新加入的,自Microsoft Windows NT 3.5起就是系统的一部分。然而,它的广泛应用可算是新的部分。如图3-2所示,SSPI提供Windows 2000分散式服务与SSP之间的共通介面。以SSP与底层SSPI的方式实作每一个分散式安全性服务,使得以相同方式存取任何安全性服务的应用程式协定成为可能。</span><span  id=Layer31></font></p><p><font size=2 color=#3c3c3c face=arial>大多数情况下,应用程式开发者不会直接使用SSPI。代替的做法是,个别的应用程式协定有它们自己的(通常比较简单)介面。例如,DCOM应用程式的创作者使用DCOM提供的安全性API,而以HTTP为基础的应用程式可能使用为此环境定义的WinInet介面。然而,所有的这些介面最终都是依赖SSPI。</span><span  id=Layer32></font></p><p><font size=2 color=#3c3c3c face=arial>开发者通常不会直接使用SSPI</span><span  id=Layer33></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>开发者通常不会直接使用SSPI</span><span  id=Layer34></font></p><hr><br><center><a target=_new href=imagesh/3-2.gif><img border=0 src='imagesl/3-2.gif'></a></center></span><span  id=Layer35><center><table border=0 ><td align=center><font color=#3c3c3c face=arial size=2><font size=2 face=arial color=#3e80d7><b>&nbsp;图3-2</span><span  id=Layer36>&nbsp;</b></font>所有种类的应用程式可以透过SPPI存取分散式安全性服务。</span><span  id=Layer37></td></table></font></center><p><font size=2 color=#3c3c3c face=arial>然而,支援多种安全性协定引发一个问题:两个系统如何在使用哪个协定上意见一致呢?全型在Windows 2000,使用称为SNEGO的协定。由IETF定义,SNEGO允许客户端送出包含有客户端想要使用的安全性协定的指示(indication)到伺服端,这通常是客户端较喜欢的协定。如果伺服端接受客户端的提议,它会回应那个安全性协定所想要的资讯。最常见的情况下,使用SNEGO并不会增加网路的往返次数(round-trip)。如果伺服端不支援客户端所要求的协定的话,它会送回它支援协定的指示给客户端,而客户端得再试一次。使用SNEGO,应用程式必须做适当的SSPI要求,而且差不多所有的Windows 2000分散式服务都是这麽做。在Windows 2000环境中,Kerberos总是预设的安全性协定选择,但是使用SSPI以及SNEGO使得应用程式也能使用其他的安全性协定。</span><span  id=Layer38></font></p><p><font size=2 color=#3c3c3c face=arial>SNEGO允许客户端与伺服端协商要使用那个安全性协定</span><span  id=Layer39></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>SNEGO允许客户端与伺服端协商要使用那个安全性协定</span><span  id=Layer40></font></p><hr><font color=#3e72d7 face=arial size=4><b>执行授权</span><span  id=Layer41></b></font><p><font size=2 color=#3c3c3c face=arial>Kerberos与SSL都能提供验证、资料完整性、以及资料私密性-这部份将在本章和</span><span  id=Layer42>&nbsp;<a target='_new' href=204.htm#>下一章</span><span  id=Layer43></a>&nbsp;将做更详细的描述-但是这两项技术都没有提及授权。这应该不会令人惊讶。授权一般发生在伺服器行程所执行的机器上,所以那不是如Kerberos与SSL之类的协定所能解决的问题。不过幸运的是,Windows 2000自己有标准的授权方法。而就像SSPI一样,这个方法也不是新加入的-从Windows NT第一版就有了。</span><span  id=Layer44></font></p><p><font size=2 color=#3c3c3c face=arial>Windows 2000支援传统的Windows NT授权机制</span><span  id=Layer45></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>Windows 2000支援传统的Windows NT授权机制</span><span  id=Layer46></font></p><hr><p><font size=2 color=#3c3c3c face=arial>如图3-3所示,基本概念相当简单:客户端联络伺服端行程要求存取某些资源,例如档案或Active Directory物件。为了识别自己,客户端提供它的授权资料,就是一组描述使用者的资讯。一旦伺服端有了这些资料,一个称为Local Security Authority (LSA)的Windows 2000标准元件会使用这些资料建构security access token。伺服端行程利用这个token模拟使用者的身分,然後试着存取客户端有兴趣的资源。档案、Active Directory物件、以及很多其他的资源被指定有安全性描述元(security descriptor),用以指明什麽使用者和群组能存取什麽。除了别的之外,每个安全性描述元包含一个存取控制项目(Access Control Entry(ACE))的清单,有时也被统称为存取控制清单(Access Control List(ACL))。当模拟的伺服端试图存取时,作业系统会自动检查ACL。如果伺服端模拟的使用者有权执行要求的存取动作的话,允许存取;否则,拒绝存取。</span><span  id=Layer47></font></p><p><font size=2 color=#3c3c3c face=arial>资源有包含ACL的安全性描述元</span><span  id=Layer48></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>资源有包含ACL的安全性描述元</span><span  id=Layer49></font></p><hr><p><font size=2 color=#3c3c3c face=arial>对於与伺服端行程执行在同一机器的客户端而言,使用者的授权资料由作业系统传递。然而,如果使用者登入异於伺服端行程的电脑上,使用者的授权资料必须由Keberos、SLL、或某些其他协定跨网路传递。授权资料由各式各样的事物组成,但最重要的资讯大概是一组安全性识别码(security identifier(SID))。SID是一个全世界唯一的值,而在Windows 2000每个使用者与群组指定一个SID。执行中的行程有关联的SID,一个SID识别使用者的身分,其他的SID指出使用者隶属的群组。如Kerberos的协定要解决的一个基本问题是如何安全地从客户端传递授权资料到位於其他机器的伺服端行程。下一节将描述Kerberos如何达成。</span><span  id=Layer50></font></p><p><font size=2 color=#3c3c3c face=arial>安全性协定能跨网路传递授权资料</span><span  id=Layer51></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>安全性协定能跨网路传递授权资料</span><span  id=Layer52></font></p><hr><br><center><a target=_new href=imagesh/3-3.gif><img border=0 src='imagesl/3-3.gif'></a></center></span><span  id=Layer53><center><table border=0 ><td align=center><font color=#3c3c3c face=arial size=2><font size=2 face=arial color=#3e80d7><b>&nbsp;图3-3</span><span  id=Layer54>&nbsp;</b></font>伺服端依赖使用者的授权资料以模拟使用者,然後试图存取特定的物件。</span>
	</body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -