通过 Active Directory 管理自定义外壳程序

来源:互联网 发布:腾讯游戏mac版 编辑:程序博客网 时间:2024/05/01 06:16

 通过 Active Directory 管理自定义外壳程序

 

http://msdn.microsoft.com/zh-cn/library/aa479087.aspx

通过 Active Directory 管理自定义外壳程序
发布日期 : 2006-11-29 | 更新日期 : 2006-11-29

适用于:
Active Directory

摘要:本文介绍基于 Windows 策略的管理,这种管理提供一种方便、简单的方法来保护服务点的桌面安全。本文还解释如何在零售企业内完成这一任务。

本页内容

简介 简介
Active Directory 入门 Active Directory 入门
创建单一的应用程序体验 创建单一的应用程序体验
自定义系统外壳程序 自定义系统外壳程序
将它们组合到一起 将它们组合到一起
小结 小结

简介

技术深透于生活的每个角落 - 从餐馆里的数字点菜单,到当地百货商店的赠品登记处 - 无所不在。作为消费者,我们在零售业的各个方面越来越多地使用到技术,零售业也愈发依赖于这些类型的设备,以便为最终用户提供服务。这些接触点(通常称为服务点)包括商店、游船、宾馆、娱乐场所或餐厅内的所有接触点。

Microsoft 为服务点提供了大量平台产品,包括 Windows XP Embedded、Windows XP Professional,以及更专门的 Windows Embedded for Point of Service。其中,每种平台都提供针对特定功能优化的功能,客户通常根据具体的部署或硬件要求来选择平台。

一点也不奇怪,每个平台都包括对 Windows 资源管理器(我们每次坐在 Windows PC 前,习惯看到并使用的操作系统外壳程序)的支持。作为每天使用计算机的基础,Windows 资源管理器俨然成为计算机的门户。Windows 资源管理器为我们提供了完成以下任务所必需的服务:与计算机上安装的应用程序进行交互,以及管理与 PC 相关的大部分常用设置。

虽然我们已经逐渐习惯于使用 Windows 资源管理器进行日常工作,但该桌面体验在设计时考虑到了家庭用户或办公室用户,创建了一个多任务、多活动的操作环境。然而当我们开始考虑服务点时,活动变得更特定于设备,而且在许多情况下(对于这些活动),Windows 资源管理器提供的服务变得有些脱节。事实上,大部分服务可能都不再是必需的。这些服务使最终用户能够更改设备的外观,或者访问其他系统服务 - 但这些系统服务通常不会为服务点的用户保留。

这使我们不禁要提出这样一个基本问题:如何保护最终用户的桌面安全,同时仍提供服务点所需的功能?幸运的是,Windows 提供了一个功能非常丰富的环境来"保护桌面的安全",包括内置的企业工具。当考虑到成百上千(甚至上万个)可能在零售企业内部署的设备时,这些工具可以产生规模经济。

本文,我们将介绍基于 Windows 策略的管理,这种管理提供一种方便、简单的方法来保护服务点桌面的安全。然后,我们将讨论如何在零售企业内完成这一任务。虽然本文并不能作为有关设备安全的完整参考,但确实为构建限制对服务点上的指定行为进行访问的安全准则提供了坚实的基础。

Active Directory 入门

Microsoft Active Directory 是 Windows 2000 产品系列中引入的目录服务。自发布以来,它历经几次更新,包括最近在 Windows Server 2003 R2 和 Windows XP Professional SP2 中的更新。目录服务(与计算机硬盘中的目录很类似)提供一种存储信息的有组织的结构。

提到 Active Directory 时,我们会想到组织公司内所有 IT 资源的目录服务。就零售企业而言,目录服务将包括商店中的服务器、所有服务点、用户,以及打印机之类的设备等。Active Directory 提供的计算组织能够映射到公司的组织结构。零售企业通常分布于各地、各个国家;在很多情况下,甚至存在洲际性零售企业。在每种情况下,通常都会有一些区域或地区,以及单独的实体(如商店)。Active Directory 为有效地表示该类型的组织结构提供了便利。

有了适当的组织,即可对用户、计算机和设备(如其所在公司的外围设备)进行分组了。所有这些都称为 Active Directory 对象,它们存储在名为组织单元 (OU) 的目录中。Active Directory 避免了管理这些对象间连接的复杂性,并且提供了组织的整体视图,这样就可根据业务情况(而非底层目录技术)来考虑结构了。

Active Directory 还负责确保组织内所有对象的安全。Active Directory 并不基于名为 Kerberos 的技术(该技术最初在麻省理工学院开发),它能够确保连接到网络的设备和用户能够安全地完成该任务,同时还能保护在它们之间传输的数据。保护首先确保用户能够仅以针对组织的方式使用 Windows 设备。对服务点而言,如果特性或功能并非面向最终用户,则限制它们的使用。

目录通过一个名为基于网络策略的管理 的机制来完成这项工作。基于策略的管理使服务器端的管理员能够定义针对以下情况的策略:允许或限制用户或设备访问特定配置设置或系统功能(更重要)。然后,将这些策略存储在 Active Directory 中。每个策略都针对用户或设备定义了特定的设置。管理员针对特定的组织单元应用这些设置。您可能还记得,这些组织单元构成了组织的 Active Directory 内的原子单元。之后,当用户或设备连接到网络时,Active Directory 则确保对用户或设备应用正确的策略。

组策略简介

组策略对象 (GPO) 包含上千种设置,用于控制对影响 Windows 安全、Windows 桌面、Internet Explorer 和 Windows 防火墙(甚至软件发布)的各种功能和设置的访问。虽然并不总是需要配置其中每一项设置,但了解可用的策略内容可极大地简化以下过程:保护设备的安全,最终限制用户在服务点对特定活动或应用程序的访问。

有两种类型的 GPO:本地组策略对象 (LGPO),以及非本地组策略对象(即网络组策略对象 GPO)。虽然我们将重点关注 GPO,但需要简单介绍一下 LGPO 以便了解二者之间的区别。请记住,与 LGPO 不同,GPO 作为基于网络策略的管理已在前面部分中进行了介绍并且完全由 Active Directory 管理。

本地组策略

相比于网络 GPO,本地组策略对象 (LGPO) 具有局限性,因为一台计算机上只能有一个 LGPO;该 LGPO 存储在系统驱动器上的隐藏文件夹中。这样,相比于网络 GPO,根据用户来控制单个设置的功能,或者根据"组织"内计算机的位置快速更改其配置的功能都会受到限制。只通过 LGPO 进行管理的计算机可用的设置很少,包括网络安全和软件限制。

对 LGPO 的访问通过"组策略对象编辑器"管理,该编辑器位于管理策略的计算机上。该 GPO 编辑器是一个名为 gpedit.msc 的 Microsoft 管理控制台 (MMC) 管理单元,它可以直接运行也可在"管理工具"下找到。图 1 显示 Windows XP Professional 中的组策略编辑器。

图 1. 本地组策略对象编辑器

关于管理本地组策略的最后一个注意事项是:虽然本地组策略模版 可用于简化 LGPO 的管理,但没有一种内置的报告机制用于审核对策略的更改。Power Users 组或 Administrators 组中的用户能够更改本地组策略;因此,如果没有足够的控制来防止更改,策略很有可能被更改。这与网络组策略完全不同,后者根据可配置的时间间隔进行刷新。

网络组策略

从企业角度看,网络组策略对象 (GPO) 更易于管理;它们集中进行配置,对每个策略集只配置一次,并且作为 Active Directory 的一个功能来实现。Active Directory 是 Windows 平台的一项服务;它受 Windows Server 的支持,并且提供管理强标识以及用户和计算机之间关系的手段。

强标识的概念意味着,它们是跨网络的,而不是仅存在于本地计算机中。配置设置可以根据以下情况进行管理:一个运行的用户标识、用户所属的组或组织单元,或计算机标识本身。与本地组策略对象不同,GPO 是集中进行管理的,当计算机连接到网络或用户登录到计算机时,系统将 GPO 部署到该计算机。

除了比 LGPO 拥有更多的控制外,网络 GPO 还以一个可配置的周期性间隔进行刷新。审核更改以及确保正确的策略准备就绪的过程得到了极大的简化。

创建单一的应用程序体验

服务点应用程序提供了一个通用的应用程序体验,它通常由一个简单或复合的应用程序组成,该应用程序提供了一致的外观。该体验通常根据设备的目的进行定义,或者根据设备服务于多种方案的登录用户进行定义。

网络 GPO 为设置和管理用户体验提供了一种方便的机制。由于 GPO 提供根据登录用户来控制设备外观的能力,因此可通过策略更改来快速调整设备的目标呈现。与 LGPO 十分相似,网络组策略使用 Active Directory 的组策略编辑器进行管理。图 2 显示 Active Directory 的组策略编辑器。

图 2. Active Directory 组策略对象编辑器

通过创建自定义的 GPO,管理员能够自定义设备或用户(将要运行服务点应用程序)的桌面及安全设置。完成 GPO 的创建后,只需很少的工作,即可将其部署到无限量的托管设备中(假设 Active Directory 基础结构已经准备就绪)。

例如,一个保护单个应用程序的桌面安全的示例 GPO 只能完成以下功能:

  • 更改用户的外壳程序,以使 Windows 资源管理器不能运行,从而删除对最常用桌面功能的访问。

  • 自动启动服务点应用程序并等待应用程序退出,然后采取适当的操作。例如,如果应用程序意外退出,则可注销用户或重新启动该应用程序。

  • 删除对常用的"Windows 安全性"对话框功能的访问,当用户按下 CTRL+ALT+DELETE 时,这些功能是可见的。

自定义系统外壳程序

为了进行说明,我们将创建一个限制用户对单个应用程序进行访问的 GPO。针对我们的应用程序,我将使用一个示例销售点应用程序。由于不需要 Windows 资源管理器外壳程序的服务,因此可将其替换为一个自定义的外壳程序,它只提供启动应用程序以及在程序退出时注销用户所需的服务。

自定义外壳程序

使用组策略,我们可以轻松地将 Windows 资源管理器外壳程序替换为我们自己的"自定义外壳程序"。在我们的示例中,我们将外壳程序替换为一个 Visual Basic 脚本,当用户登录时,Windows 脚本宿主将启动该 Visual Basic 脚本。我们的外壳程序将为用户提供以下服务:

  • 启动销售点应用程序

  • 监视销售点应用程序何时终止

  • 注销用户

尽管很简单,但这就是一个功能外壳程序所需的全部工作。在我们的示例中,我们将自定义外壳程序命名为 myshell.vbs - 这很重要,因为以后创建组策略对象时,需要指定该外壳程序。我们的脚本还大量使用了 Windows 管理规范 (WMI),以访问 Windows 的管理功能。虽然本文不对 WMI 进行深入的讨论,但其功能已记录在 Windows Platform SDK 中。

当我们的外壳程序启动时,首先必须启动我们的销售点应用程序,因为这是我们的外壳程序支持的唯一活动。我们使用 Win32_Process 类(该类是 WMI 的一部分)来完成这一任务。

strComputer = "."Set objWMIService = GetObject("winmgmts://" & strComputer & "/root/cimv2:Win32_Process") errResult = objWMIService.Create("C:/Retail/Application/POS.exe", "C:/Retail/Application/", null, intPosID)

通过使用 Win32_Process 类的 Create 方法,我们能够指示脚本启动位于 C:/Retail/Application 下的应用程序;为了进行说明,我们假定之前使用 Microsoft Systems Management Server 的服务、Active Directory 软件分发或其他软件分发服务,将销售点应用程序部署为仓库过程的一部分或商品集中推销的一部分。Create 方法返回应用程序的系统进程 ID,并将其存储在变量 intPosID 中。

一旦启动了应用程序,就需要订阅类事件,从而使我们能够发现应用程序何时退出。

我们的外壳程序将一直等待直到进程退出,方法是使用系统进程标识符监视来自进程的事件。如果接收到一个退出事件,我们会使用 Win32_OperatingSystem 类来注销用户。

Set objWMIService = GetObject("winmgmts://" & strComputer & "/root/cimv2")Set colProcesses = objWMIService.ExecNotificationQuery _    ("Select * From __InstanceDeletionEvent " _             & "Within 1 Where TargetInstance ISA 'Win32_Process'")Do Until False = True    Set objProcess = colProcesses.NextEvent    If objProcess.TargetInstance.ProcessID = intPosID Then        Exit Do    End IfLoop

我们可以选择采取其他一些操作(如重新启动应用程序),而不是注销用户。针对我们的示例,假定应用程序退出时,用户应该从系统中注销,这是因为外壳程序不支持其他活动。

组策略管理

既然创建了自定义外壳程序,现在就该将目标指向将接收该自定义外壳程序的用户,然后创建保护销售点应用程序的桌面安全的组策略对象。首先,使用组策略管理控制台 (GPMC),它是针对 Windows Server 2003 发布的。

GPMC 统一了组策略的管理,方法是为组织结构和组策略创建一个方便的视图 - 单个控制台上的相关设置。GPMC 可从 Microsoft 站点下载,它可以在 Windows Server 和 Windows XP 上运行。

首先,需要选择希望应用新策略的组织单元 (OU)。针对我们的示例,我们已经在 Active Directory 中为用户定义了一个名为 Point of Sale Users 的组织单元(参见图 3)。它可以很容易地成为 Active Directory 中其他已定义的组织单元。

图 3. Point of Sale Users OU

在 Point of Sale Users OU 中,我们定义了一个 John Smith 用户。稍后将使用该帐户来测试组策略对象。接下来,将新建一个名为 Custom Shell GPO 的 GPO,并将其链接到我们的 OU。

首先,打开组策略管理控制台,选择我们的 Point of Sale Users OU。接下来,右键单击该 OU,单击 Create and Link a GPO Here(参见图 4),命名新的 GPO。

图 4. 新建一个 GPO

命名了新的 GPO 并将其链接到 OU 之后,即可开始配置该对象的策略设置。编辑策略对象则通过使用"组策略对象编辑器"实现。

图 5 显示组策略管理控制台中 Point of Sales Users OU 下链接的新策略。

图 5. 新创建并链接的 GPO

配置组策略对象

由于我们所创建的策略是基于用户的,而不是基于计算机本身,因此我们将只修改策略对象的 User Configuration 部分。

在自定义 GPO 的 User Configuration 部分下,我们看到有 Administrative Templates(参见图 6),其中包括我们要修改的策略。

图 6. 自定义 GPO 的 Administrative Templates

下列各表详细说明在组策略对象中已配置的每个策略。

Shut Down 命令

我们已经删除了对 Shut Down 命令的访问。该命令通常出现在多个位置,包括按下 CTRL+ALT+DELETE 时出现的"Windows 安全性"对话框。

表 1. 开始菜单和任务栏

策略

设置

Remove and prevent access to the Shut Down command

启用

自定义用户界面

这是最重要的更改,因为我们已经将 Windows 资源管理器外壳程序替换为之前创建的自定义外壳程序脚本了。

表 2. 系统

策略

设置

Custom user interface

启用

Interface file name (例如,Explorer.exe)

wscript c:/scripts/myshell.vbs /nologo /b

保留的策略

保留的策略删除了对"indows 安全性"对话框中其他可用选项的访问。图 7 显示"Windows 安全性"对话框在没有定义策略的情况下通常的外观。

表 3. 系统/CTRL+ALT+DELETE 选项

策略

设置

Remove Change Password

启用

Remove Lock Computer

启用

Remove Logoff

启用

Remove Task Manager

启用

图 7. 标准的"Windows 安全性"对话框(未定义策略)

将它们组合到一起

创建了组策略对象并将其链接到 OU,并且将自定义外壳程序脚本和应用程序安装到客户端上之后,现在可以部署服务点了。John Smith 用户第一次登录到设备时,系统将部署我们所创建的 GPO。第一个显著的更改是缺少了图 8 中显示的标准桌面。

图 8. 标准的 Windows 桌面(未定义策略)

相反,当 John Smith 登录时,他将看到如图 9 所示的服务点应用程序界面。

图 9. 服务点应用程序 UI

如果 John Smith 按下 CTRL+ALT+DELETE,他将看到一个具有有限选项的"Windows 安全性"对话框,如图 10 所示。

图 10. 具有有限选项的"Windows 安全性"对话框(定义了策略)

在我们的 GPO 中定义的策略现在已得到了应用,而且,我们所设置的策略已经禁用了之前在对话框中可以访问的功能。只要 GPO 仍然链接到 John Smith 所在的 OU,他就不能访问"Windows 安全性"对话框或 Windows 资源管理器外壳程序。

小结

使用 GPO 可以调整上千种设置,其中许多设置都提供对用户访问应用程序和其他机器设置的更细粒度的控制。有了合适的基础结构以及对最终用户运行时要求的良好理解,创建一个适合您服务点的组策略即容易又易于管理。GPO 不仅提供了一种有效的方式来管理用户和设备,还创建了一种跨整个组织(从公司到商店)管理用户、设备和应用程序的规模经济。

原创粉丝点击