组策略对象(GPO)是基于活动目录(AD)的对象,用户可以通过它集中地对Win2K台式机和服务器系统进行配置,它的功能包括从NT 4.0台式机的锁定到安全性配置和软件安装等。
这篇文章主要讲述组策略是如何对系统起作用的、系统内部的工作原理以及在Win2K环境中采用这一技术时应该注意的问题。
一、组策略是什么?
GPO是一种与域、地址或组织单元相联系的物理策略。在NT 4.0系统中,一个单一的系统策略文件(例如ntconfig.pol)包括所有的可以执行的策略功能,但它依赖于用户计算机中的系统注册表的设置。在Win2K中,GPO包括文件和AD对象。通过组策略,可以指定基于注册表的设置、使用NT 4.0格式.adm模板文件的运行Win2K的本地计算机、域的安全设置和使用Windows安装程序的网络软件安装,这样在安装软件时就可以对文件夹进行重定向。
微软管理控制台(MMC)中的组策略编辑器(GPE)插件与NT 4.0中的系统策略编辑器poledit.exe相当。在GPE中的每个功能节点(例如软件设置、Windows 设置、管理模块等)都是MMC插件扩展,在MMC插件中扩展是可选的管理工具,如果你是应用程序开发者,可以通过定制的扩展拓展GPO的功能,从而针对你的应用程序提供附加的策略控制。
只有运行Win2K的系统可以执行组策略,运行NT 4.0和Windows 9x的客户机则无法识别到或运行具有AD架构的GPO。
二、组策略和AD
要充分发挥GPO的功能,需要有AD域架构的支持,利用AD可以定义一个集中的策略,所有的Win2K服务器和工作站都可以采用它。然而,每台运行Win2K的计算机都有一个本地GPO(驻留在本地计算机文件系统上的GPO),通过本地GPO,可以为每台工作站指定一个策略,它在AD域中不起作用。例如,出于安全原因,你不会在AD域中配置公用的计算机。利用本地GPO,可以通过修改本地策略来得到安全性和对台式机的限制使用而无需利用基于AD域的GPO。访问本地GPO的方法有2种,第1种方法,在需要修改GPO的计算机的“开始”菜单上选择“运行”,然后键入:gpedit.msc。
这个操作的作用与NT 4.0中的poledit.exe相同,可以打开本地策略文件。第2种方法,可以通过在MMC控制台中选择GPE插件,并选择本地或远程计算机来人工地编辑本地GPO。
本地GPO支持除软件安装和文件夹重定向之外的所有缺省扩展,因此,只利用本地GPO你不能完成这些工作,如果想充分发挥GPO的功能,还是需要AD的支持。
三、GPO的多样性和继承
在AD中,可以在域、组织单位(OU)或地址三个不同的层次上定义GPO。OU是AD中的一个容器,可以指派它对用户、组、计算机等对象进行管理,地址是网络上子网的集合,地址形成了AD的复制分界线。GPO的名字空间被划分为计算机配置和用户配置两个大类,只有用户和计算机可以使用GPO,象打印机对象甚至用户组都不能应用GPO。
在一个域或组织单位(OU)中编辑策略的途径有几种。在活动目录用户或计算机MMC插件中,右击一个域或组织单位(OU),在菜单中选择“属性”,然后选择“组策略”标签。在编辑地址中的策略时,需要右击“活动目录地址和服务”插件,然后右击需要的地址得到其GPO。此外,还可以从“开始”菜单,选择“运行”,然后键入: mmc.exe 启动MMC,选择“控制台”,“增加/删除”插件,然后选择“组策略”插件、“浏览”,在AD域内的GPO就会显示出来,可以选择一个GPO进行编辑。
根据GPO在AD名字空间中的不同位置,可以有几个GPO对用户对象或计算机对象起作用。只有域中的其他对象是通过继承生成时GPO才是通过继承生成的。Win2K通过下面的方式执行GPO,首先,操作系统执行现有的本地系统上的策略,然后,Win2K执行定义的地址级的GPO、域一级的GPO和基于OU的GPO,微软把这一优先顺序取其首个字母缩写为LSDOU(执行的顺序依次是本地、地址、域、OU层次的GPO),用户可以在这个链上的许多层次上定义GPO。我们以pilot域为例说明如何察看一个系统中的GPO,启动“活动目录用户和计算机MMC”工具,右击pilot域名,从菜单中选择“属性”项,然后选择组策略标签。在这个列表顶端的GPO(例如域范围的安全策略)有最高的优先权,因此,Win2K最后才会执行它。除了本地系统外,可以在每个层次上定义几个GPO,因此如果不能严格地管理GPO,就会出现不必要的问题。
GPO的继承模型与Novell公司的Zenworks策略方式截然不同。在Zenworks中,如果在Novell目录服务(NDS)树上的不同点使用多个策略包,只有距离用户对象最近的策略包才起作用。在Win2K中,如果在AD的不同层次上定义四个GPO,操作系统使用“LSDOU”优先顺序来执行这些策略,对计算机或用户的作用是这四个策略执行的“和”。此外,有时在一个GPO中的设置会被其他GPO中的设置抵销。通过AD级GPO,用户可以拥有更多的策略控制委托,例如,公司的安全部门负责在域一级上设计用于所有系统设备的安全GPO。通过使用GPO,可以让某个OU的系统管理员拥有在OU上安装软件的权利。在Zenworks模型中,必须在希望使用策略的所有层次上复制这些策略,而且策略对用户或计算机对象的作用并非是所有策略的“和”。
为了进一步地控制GPO,微软提供了三种设置来限制GPO继承的复杂性。在地址、域、OU三个层次上用户都可以通过选择一个检查框阻止从更高一个层次上进行继承,同样,在每一个层次上,用户可以选择缺省的域策略选项,方法是打开“活动目录用户和计算机”插件,右击GPO所在的域或OU,从菜单中选择“属性”,然后选择“组策略”标签。让你希望修改的项目变亮,然后选择“选项”按钮,可供选择的选项有“不覆盖”或“禁止”。如果选择了“不覆盖”选项,即使选择了不能继承的检查框,该GPO还是会起作用。如果想在任何一个地方执行一个GPO时,这一功能就很有用处。如果一个OU的管理员试图阻止对安全策略的继承,包含安全策略的GPO仍然会被系统执行。“禁止”检查框可以完全禁止一个GPO执行,这一功能在你对一个GPO进行编辑而不想让其他的用户执行它时特别有效。
四、GPO的执行和过滤
只有用户和计算机对象才能执行组策略。在计算机的启动和关闭时,Win2K执行在GPO的计算机配置部分定义的策略,在用户登录和注销时,Win2K执行在GPO中用户配置部分定义的策略。事实上,在用户登录时可以通过手动方式执行一些的策略,例如可以在命令行方式下运行secedit.exe程序执行安全策略应用程序。此外,通过管理员模块策略可以定期地对用户和计算机的GPO设置进行刷新,缺省情况下,这种刷新每90分钟进行一次,这种刷新可以使其他用户不容易修改通过组策略定义的策略。但是,软件安装策略是不会刷新的,因为没有人希望周期性地改变策略引起软件的“?载”,尤其是有其他用户在使用时,就更是这样了。计算机、用户对象只有在计算机启动或用户登录时才会软件安装策略。
尽管只有AD中的计算机和用户对象才能执行GPO,但我们可以过滤GPO的效果。使用Win2K中的安全组、应用组策略━━这是Win2K中的一项新的安全特性,可以使特定的用户组不能执行某一个GPO。右击MMC中GPO的名字,选择“属性”,然后再选择“安全”,就可以看到GPO目前的安全设置。认证用户组具有应用组策略权利,从而附属这一GPO的所有用户可以执行它。在Win2K中,安全组可以包括用户和计算机对象。因此,利用安全组可以仔细地调整用户、计算机对象如何执行一个GPO。你还可以对个别的应用程序应用安全组,可以指派一个GPO的软件安装部分。例如,假设你在一个GPO中发布10个应用程序,可以指定只让金融用户用户组访问其中的5个,其他用户登录到这个域时,它们也不会发现这5个应用程序。
五、GPO的内部构成
一个GPO是由两部分组成的:组策略容器(GPC)和组策略模板(GPT)。GPC是GPO在AD中的一个实例,在一个特殊的被称作系统的容器内有一个128位的全球唯一的ID码(GUID)。在“活动用户目录用户和计算机”插件中选择“浏览”,从MMC菜单中选择“高级属性”,就可以看到“系统”容器。GPT是组策略在Win2K文件系统中的表现,与一个GPO有关的所有文件依赖于GPT。
六、GPO带来的难题
虽然GPO的功能很强大,但要掌握它可不容易。最难掌握的是如何判断一条有效的策略如何对域中的计算机或用户起作用,由于GPO可以存在于AD链中不同的层次上,这种判断就特别困难。同时,由于可以指派一个GPO的控制,因此不大容易清楚其他的GPO是否会对你没有控制权的容器中的GPO有影响。因此,计算一个计算机或用户对象接收的“策略的结果集”(RSoP)是相当困难的。尽管微软还没有提供计算RSoP的工具,但已经有第三方厂商提供了相应的计算RSoP的工具。
另一个难题是策略的执行。如果在AD链上的许多层次上都存在有GPO,在用户每次登录或系统启动时都会执行所有的GPO。在Win2K系统中,微软推出了一些新的功能来优化系统的性能。首先,GPO的版本信息依赖于工作站和GPO,如果GPO没有变化,系统就不会执行它。另外,在GPE的属性页上,可以禁止用户或计算机对GPO的执行。如果建立一个GPO用来分发关闭系统或启动系统时的脚本,禁用GPO的用户配置部分,这样会使工作站不能解析GPO并判断它是否已经发生了什么变化。
最后的一个难题起源于GPC和GPT是两个单独的实体。GPC是AD中的一个对象,它与GPT中包含的文件的复制不同步,这意味着创建一个GPO时,在GPT开始向域控制器上的Sysvol复制文件之前GPC可能已经开始进行复制了。
所有问题的起源都是由于AD使用了一种多主体的复制模式。理论上,当另一个系统管理员在一个域控制器上编辑一个GPO时,你也可以在某个域上对它进行编辑。因此,当建立一个GPE时,缺省状态下指的是在“操作主体”中充当PDC的域控制器。(“操作主体”是AD基础结构中的一系列托管功能,用作PDC的服务器可以兼容运行NT和Win9x的工作站。)一般情况下,可以通过只向少数的系统管理员授予编辑GPO的权利来避免这种情况的发生,并保证如果有人在编辑GPO时,让其他的人都知道。此外,需要注意的是,在对一个GPO进行编辑时,要“禁止”它,修改结束后重新使能。