那么,如果你将新的属性添加到部分属性集,全局编录服务器就进入了一个进程,其效果与下列过程非常相似:进入站点和服务插件,取消对域控制器上的全局编录复选框的选中,然后再次选定这个全局编录复选框,让它重建来自于森林中所有域的所有部分命名联系人。
那么,当这种情况发生的时候,服务实际没有受到任何形式的中断,全局编录服务器在后台进行作业。但是,你可能会注意到当这个过程发生的时候,全局编录服务上带宽和CPU的使用达到了一个高峰。
非常凑巧的是,应用程序,许多应用程序都愿意将附加属性添加到部分属性集,以便它们可以利用全局编录快速而简单的查询。这些应用程序的代表之一就是Microsoft Exchange 2000。
事实上,当你运行Exchange 2000的森林预备过程的时候,当架构在Active Directory中得到扩展的时候,属性就被添加到部分属性集中了。
在Windows Server 2003中,我们加入了一个功能,使全局编录服务器只复制被添加到部分属性集的属性,而不需要对全局编录进行全面的再次同步。如果Windows Server 2003全局编录能够找到一个可以从中获取添加属性的Windows Server 2003伙伴,这个机制就会起作用。
如果Windows Server 2003全局编录服务器只能为那个特殊的命名上下文找到一个合适的Windows 2000伙伴,它将对那个命名上下文进行全面的同步,但并不针对计算机上的所有命名上下文。
客户告诉我们另一件关于Active Directory中程序设计的事情是,他们很难将成库的数据转移到目录中。
我们特地告诉开发人员不要把非常易变的数据放进目录中,因为它有可能被复制到许多地方,被复制到许多域控制器,要是该数据变化得非常快,其结果是当它到达所有那些地方时,可能已不是最新的数据了。如果我每小时只复制一次,那么每隔5分钟更改一个数据也就变得毫无意义了。
为了解决这个问题,我们在Active Directory中提供了一个新功能,使开发人员可以利用Active Directory中丰富的数据存储,并使用目录中强大的查询和可扩展的架构机制,而不必负担复制成本。
我们使用了一个称为'应用程序分区'的功能来实现了这一点。现在,你们可以看一下我刚刚放在幻灯片上的这个图表,所显示的是在同一个森林中的两个域,每个域有3个域控制器。这些域控制器为各自的域的域命名上下文提供主机。
你可以把应用程序分区放到一个预控制器上,如果你不想再到其它地方,该分区将只存在于这个指定的域控制器上。那么,关于应用程序分区的使用,有一些地方需要警告大家。它们不能包含安全规则,即用户、组和计算机。
但是,它们可以包含其它任何层次的对象。你放在应用程序分区中的对象不会被复制到全局编录服务器。如果易变的数据可能会被复制到森林中的许多全局编录服务器上,那么你就不能将该数据放在这些应用程序分区里。 如果你决定通过你的应用程序来使用应用程序分区并要求'架构扩展',那么这些'架构扩展'需要被放到森林的架构中。应用程序分区没有自己的单独架构。
最后,如果你正在编写一个利用应用程序分区的应用程序,你还可以利用我们在软件开发包中提供的基于DNS的定位机制。那样的话,你的应用程序不需要知道是哪个域控制器在为应用程序分区提供主机,而只需知道应用程序分区的名称就可以了。
正如我刚才所暗示的,应用程序可以被复制到不同的域控制器。事实上,你可以将该幻灯片所示的应用程序分区复制到森林中任意的一套域控制器上。这些域控制器不必在同一个域中,可以来自几个不同的域。
这样,你就可以将这个应用程序数据放在重要的位置,而不是不需要它的位置上。好了,如果你看过我的目录策略和路线图演示文稿,你可能会认为Active Directory的应用程序模式功能与应用程序分区功能非常相似。
事实上,它们非常相似。我们要建议开发人员为客户提供一个潜在的选择,让客户根据自己的特定需求,选择将应用程序的数据安装到应用程序分区或Active Directory的应用程序模式目录中。最后,还有一件事要提一下。
如果你把应用程序分区放到森林中的多个域控制器上,当它们相互间进行复制的时候,它们将根据管理员为该森林所设置的时间表和站点结构进行复制。
如果你正在使用我们的DNS服务器,Windows Server 2003会将应用程序分区用于集成了DS的区域,以对其进行直接的利用。当前,如果你结合Windows 2000 Server来使用集成了DS的DNS,DNS数据就存储在域分区内,在域命名上下文中。
那意味着该域里的每一个域控制器都复制了一份DNS数据,而不管域控制器是否正在运行DNS服务器。在Windows Server 2003中,可以将DNS区域数据移动到两个自动配置的应用程序分区中。
有一个应用程序分区将复制到运行DNS服务器的域中的每一个域控制器。另一个我们所创建的应用程序分区将被复制到运行DNS服务器的森林中的每一个域控制器。
那样,你可以既快又容易地让运行于特定域或运行于整个森林的域控制器上的某个区域数据变得可用。
如果你想要一个极具自定义化的配置,你还可以为DNS区域数据设置任意一套应用程序分区。于是,通过在应用程序分区中存储该数据,我们可以不用将DNS数据复制到正在运行DNS服务器的域控制器。
这样,我们在复制方面会更有效率一些。但是即使复制效率有所改善,我们也不会将该DNS数据复制到全局编录服务器。其原因是,并不是每个全局编录服务器都真正需要该数据,而且你的森林中可能存在大量DNS数据。这就意味着,你可以在全局编录服务器上节省大量的空间。
对于开发人员来说,那意味着将应用程序从其它目录进行移植。我们还在我们的标准支持上做了一些工作。首先,我们实施了'虚拟列表查看协议'。它是一个LDAP扩展协议,允许你在窗口中查看非常大的结果集。
现在,在Windows 2000中,如果你得到了一个自域控制器返回的大型查询结果集,你可以在结果集中通过往后翻页,一次获取大量来自域控制器的信息,但是你只能向后翻页。
通过虚拟列表查看支持,你可以打开后面的窗口,即显示第100个到第200个和第200个到第300个的结果,然后又可以返回来查看第100个到第200个的结果。我们还对处理辅助类的方式做了一些更改,那就是Active Directory中对X500标准数据模型的一个具体实现。
事实上,根据我们对X500标准定义的认识和其它业者的实施方式,我们在Windows 2000中实施了辅助类。但是由于其它业者实施辅助类的方式与我们的不同,并且他们都同意使用这个不同的方式,因此现在,我们在Windows Server 2003中对该方式予以了同意。
如果你碰巧正从其它的目录开发商那里迁移目录应用程序,这个支持就非常重要了。我们还为.netOrgPerson用户类添加了本地支持。
在Windows 2000中,你可以将inetOrgPerson类添加到Active Directory的架构,但是坦率地说,它就不能被认为是一级用户,比如说用户和计算机插件。在Windows Server 2003中,你在插件中既可以看到用户,也可以看到inetOrgPerson用户。
而事实上,如果你需要的话,也可以通过插件来创建inetOrgPerson对象类用户。如果你正运行于森林方式,你还可以在闲暇的时候将用户转换成inetOrgPerson对象,或将inetOrgPerson对象转换为用户。
所以,如果你有一个需要inetOrgPerson的应用程序,但是目前你的所有用户都属于用户。当你完成了Windows Server 2003的升级,你就可以对它们进行转化。最后,我们添加了'动态项支持',也被称为'RFC 2589'。
'动态项支持'允许你标记一个对象,被标记的对象在特定的寿命期满后会自动被删除。这样,当你不再需要你所创建的对象的时候,不必记得回来执行删除操作。
但是,在使用'动态项支持'的时候,如果你要继续使用某个对象,而不想删除它,你就必须记得回来延长该对象的寿命。
在目录中,我们还针对我们乐于称之为外向型目录或超大型目录的情况做了一些核心改进。而事实上,我将要描述的这些功能中,有许多是可以应用于任何目录的,但是对于超大的外向型目录有着特别的重要意义。 首先,在相同的硬件上,Windows Server 2003中所有Active Directory的运行速度都要比相应的Windows 2000Active Directory快得多。我们还对目录中会减少磁盘空间的数据存储方式进行了修改。
我们特别实施了一个叫做'安全描述符单一实例存储'的特性。如果你熟悉我们在Active Directory中的对象上存储安全描述符或访问控制表(ACL)的方式,你就知道Windows 2000Active Directory中的每一个单一对象都有一个完整的安全描述符与之相关联。
那么,如果你执行这样的操作,比如添加一个可继承的访问控制项到域根,该继承的访问控制项将在域中每个对象的访问控制表上进行复制。 这样就稍微加大了域中每个对象的大小,而如果域中有大量的对象,Active Directory的点号或磁盘表示的大小会大大地增加。我们在Windows Server 2003中使用了一个单一实例存储机制。
该机制使系统可以不用在每个对象上存储一个单一的安全描述符,取而代之的是存储一组安全描述符来表示数据库内部唯一的安全描述符。
因此,假如你在你的Active Directory中拥有100,000或1,000,000个对象,但是只存在10个唯一的安全描述符,它们在目录中的这些对象上以各种方式进行复制。你只需要存储10个单一的安全描述符,每个对象就可以使用该安全描述符进行访问。
这可以大大减少Active Directory数据库所占用的磁盘空间。我们还对一种特殊的使用LDAP进行身份验证的应用程序实施了一个叫做'并发绑定'的特性。LDAP标准只允许你每次通过连接发送一个单一的绑定。
如果你通过连接发送了多个绑定,那么服务器会扔掉第一个绑定,而只关注下一个被发送来的绑定。那么,对于这些使用LDAP进行身份验证的应用程序,它们喜欢通过管道向服务器发送大量的绑定。
'并发绑定'使它们可以创建管道,并通过该所创建的管道来发送那些绑定,以达到最大的吞吐量。该特性针对那些应用程序,尤其是使用LDAP作为一种身份验证形式的网络信号登录型应用程序,而特别设计的。
最后,我们已经完全实现了Active Directory的64位化。如果你在64位的操作系统上运行Active Directory,我们就可以利用计算机上的所有的存储空间。能够利用64位计算机的大存储空间的最大好处是,你可以为Active Directory建立一个非常大的内存缓存区。
在32位平台上,Active Directory受到最大1GB的内存缓存的限制。所以,即便你拥有超大型的计算机,也只能利用这1GB的内存缓存。在64位模式中,当我们在创建目录缓存的时候,实际上可以利用无限大的内存。
如果你可以将整个目录载入内存,就意味着你不需要到磁盘上进行搜索。因此,可以极快地执行搜索,而只有在写入或更新的时候,你才需要动用磁盘。
对于承担繁重查询负载的域控制器,假设其查询负载创建了一个目录缓存区,该缓存区拥有一个超过1GB的工作集,那就意味着查询会不时地到磁盘上来完成操作,从而降低了你的查询性能。
我还要向你们介绍我们在Windows Server 2003中所做的一些与安全性相关的改进。
有一个特殊的攻击会有意或无意地在Active Directory上爆发,你现在应该予以关注。
这种攻击时这样的,如果我授权一个特定的用户或管理员在目录中创建对象,那么在目录的一些容器中,他们实际上可以通过在系统上简单地创建对象进行拒绝服务攻击,最终导致你耗尽域控制器和全局编录服务器上的磁盘空间。当你用完了磁盘空间,域控制器将发现自己无法进行更新,从而引发其它一些后继问题。
而事实上,这种拒绝服务的情况可以很简单地发生,比如说你使用一个自身存在缺陷的应用程序来创建对象,而创建的方法又不恰当,从而可能创建出比你所预料的要多的对象。
为了防止这种情况的发生,我们在Windows Server 2003中加入了一个我们称为之'对象配额'的功能。该功能使你可以向用户或组分配每个分区的配额,从而限制了他们在分区中所能拥有的对象数量。不是创建,而是拥有。 我说拥有是因为,系统实际上不仅仅要对用户所拥有的活动对象,而且要对已被用户删除而又未清除出系统的对象的'墓碑'进行计数。作为该特性,即定额机制,的一个额外功能,你还可以(如果你想的话)不将'墓碑'计为完整的对象。
在计算配额的时候,你可以将它们算为零点几个对象。如果一个用户或一个组拥有多个配额,如果我向一个用户分配了一个配额,而那个用户又发现自己是某个拥有配额的组的成员,那么将使用最高配额。
如果你有兴趣进一步了解'对象配额',你可以使用dsadd、dsmod和dsquery命令行工具来查看相关的功能。
出于安全性方面的原因,我们对Windows Server 2003中Active Directory的默认行为做了一些修改。其中有一个非常重要的是,你应该在部署Windows Server 2003前予以考虑的修改是,我们在域控制器上默认启用了SMB签名。
实际上,这意味着运行Windows 95和Windows NT 4.0 SP3以前版本的客户机将不能登录Windows Server 2003域控制器。你可以阅读部署规划工具包中提供的完整的详细资料,了解更多相关信息。有些办法可以放宽SMB签名限制,让那些客户机可以继续发挥作用。 但是,如果禁用该功能,会导致你易受某类劫持性攻击。我们还修改了Windows Server 2003中创建信任的默认行为。当你在Windows Server 2003域控制器上创建了一个新的信任,SID过滤将被默认启用。
当你创建了延伸到其它森林的外部信任,SID过滤可以保护你免受其它森林中恶意管理员的攻击。那么,如果你在执行迁移的过程中使用了SID历史功能,重要的是,如果你创建了信任,你要记得手动禁用SID过滤,以使SID历史继续运作。 另外,你可以在Windows Server 2003部署规划工具包中了解更多相关信息。
这是我们在Windows Server 2003中所做的其它一些与行为相关的修改。我们禁用了默认匿名查询。在Windows 2000中,经常会遇到默认匿名查询,我们允许对匿名查询进行处理,如果匿名用户被授权访问目录中的任何对象,我们会将查询结果返回用户。
然而,如果匿名用户并不能访问任何对象,就会使目录对拒绝服务的攻击敞开了大门。域控制器会继续处理该查询,确定该用户没有访问对象,并将一个空的结果集返回用户。
那么,随着该查询的继续,域控制器对一个完全没有结果的查询付出了大量的工作,从而占用了许多CPU和内存资源。这会导致一个严重的拒绝服务攻击。在Windows Server 2003中,除了对根DSE的查询外,在做出任何处理前,我们完全断绝了匿名查询。
那么,如果你希望并允许匿名用户查询你的Active Directory,在升级的时候,你需要记得启用匿名用户查询,以使你可以继续使用该功能。
在Windows Server 2003中,我们还在新安装的域上开启了一些有意义的审核设置。在你们使用Windows 2000 Server的时候,没有任何已被默认开启的审核设置。我们将一些有趣的设置都集合在了一起,将帮助你对Windows Server 2003中新安装的域进行更新跟踪。
如果你有兴趣对现有的Windows 2000部署应用这些审核设置,你可以从我们的站点:www.microsoft.com/activedirectory领取最好的实践安全性指南,并阅读其中包含这些审核设置的指南部分。
最后,我们更新了AdminSDHolder进程。如果你不熟悉AdminSDHolder进程,我可以介绍一下,它是一个周期性运行于域控制器的一个进程,用于调节属于Windows 2000中域管理组和管理员组成员的用户和组的访问控制列表。
这么做的理由是,如果你是某个具有高特权的组的成员,你发现自己在某个组织单位中的用户帐户被某位代理管理员控制了,而你不想让这个代理管理员操控你的帐户,因为他们可能会将自己转变为一位域管理员或普通管理员。
你可能注意过,如果你有一位用户属于这些组当中某一个的成员,你试图在该用户帐户更改上ACL,但是更改后,你会发现系统会周期性地将其更改回来。
通过Windows Server 2003,我们将AdminSDHolder进程扩展到所有内部的和众所周知的组,包括服务器操作员和帐户操作员。用户和域用户组是仅有的已被我们接受的组。
最后,我想稍微谈一下升级到Windows Server 2003 Active Directory能使你们得到哪些好处。
如果你现在正在运行Windows NT Server 4.0,那么在向Windows Server 2003升级时,你就有两种选择。你可以就地升级,也可以进行迁移。这完全取决于你的升级或迁移策略。通过阅读Windows Server 2003部署规划工具包中的信息,你可以进一步了解这两种升级选择。
如果你已经部署了Windows 2000 Server Active Directory,那么就可以非常简单地就地升级到Windows Server 2003。那么,在你进行升级前,你必须使用一个叫做adprep的工具执行一些准备工作,也就是说,你必须运行adprep/forestprep来对森林进行准备。
比如,添加架构扩展等。然后,对于森林中的每个域,在升级前,你应该运行adprep/domainprep。 你可以在部署规划工具包中,或者通过观看'如何升级到Windows Server 2003 Active Directory'虚拟会议会话,了解更多相关信息。
对于你们当中正从Windows NT 4.0进行迁移升级的人,我们有一个得到全面升级的Active Directory迁移工具,即ADMT v.2。在ADMT的这个版本中,客户特别关注的两个方面是:'密码迁移'和'脚本支持'。
'密码迁移'允许你在将用户密码从NT 4.0域迁移到新的Active Directory域的时候,保存相关密码。它还可以让你在进行重构操作并将用户从一个森林转移到另一个森林的时候,保存有关密码。
ADMT v.2中的'脚本支持'用于替换ClonePrincipal脚本。在Windows 2000中,如果你要构建任意个克隆操作或迁移操作脚本,你就可以使用ClonePrincipal脚本。在ADMT v.2中,'脚本支持'更为强大,而且还包含了命令行工具支持。
因此,如果你不想编写脚本,你就可以通过创建批处理文件或命令文件并串联命令行工具来替代脚本。
那么,如果你还在部署Windows 2000 Active Directory,而且还没有准备要使用Windows Server 2003,你也可以使用Windows Server 2003光盘上的ADMT v.2来进行从NT 4.0到Windows 2000的迁移。
现在,我想稍微介绍一下功能级的背景资料。你可以记得,我在本陈述的前面部分提到过某些要求对森林中的所有域控制器进行升级的特性。或者要求,在这些特性可用或自动被激活前,域中的所有控制器都得到升级。 这里的主要意思是说,你不想让旧的域控制器存在于森林中,或者不给它们存在于该森林的机会,因为一旦你激活了那些新的特性,旧的域控制器就无法认识它们了。
事实上,这与Windows 2000中本机模式的概念很相似。如果你记得的话,Windows 2000的某些特性,如通用组或组嵌套,只有在你升级到本机模式的时候才可用。
这是因为,Windows NT 4.0备份域控制器不知道如何处理通用组或组嵌套,所以当那些备份域控制器还存在于环境中的时候,你就必须防止这些特性的发生。
现在,我想花一点时间来评论一下本机模式的命名。在Windows 2000中,本机模式不算是一个好的概念,这个名字起得也不好。许多人以为,如果我要升级到Windows 2000中的本机模式,就意味着我必须升级我的客户机。
如果能对Windows 2000和我们所取的名称进行一次更改,我将把本地模式重命名为'无NT 4.0 BDC模式'。但是,你可以想象,在Windows Server 2003中,功能级主要影响的是域控制器而不是客户机。因此,可以升级到森林方式或域方式,而不用先升级客户计算机。
在这张幻灯片上,我提供了一个快速参考目录。一旦安装Windows Server 2003了,你就立即使用这上面所列的特性。你不需要升级到森林或域方式就可以使用所有这些特性。你可以马上使用它们。 在这张幻灯片上,快速参考目录所显示的是要求域级和要求森林级的特性。
总而言之,我们收到的关于Windows 2000部署的客户反馈对于我们修改Windows Server 2003 Active Directory至关重要。我们做了一系列革命性的修改,使Active Directory更易部署,而在你完成部署后,可以更容易、更灵活的对其进行管理。
我们还做了一些修改,可以使应用程序开发人员更容易地集成Active Directory以及将应用程序从其它目录转移到Active Directory。最后,从Windows 2000 Server到Windows Server 2003的升级非常简单,属于就地升级。
你不需要改变任何你在最初部署时所做的设计决定。Windows 2000和Windows Server 2003是完全可互操作的两个系统,在部署过程中,你可以不受时间限制地运行一个混合的环境。
以上就是对Windows Server 2003Active Directory所有新特性的介绍。非常感谢你们的观看。