10. 存取控制
存取控制简介
一般来说,当人们提到「Windows安全性」,即是指实作Windows的 存取控制 部份。存取控制可以被解释为指派及强制可以或不可以在安全对象上执行某些动作。Windows把存取控制用在一些系统对象上,并提供自订对象的安全机制。
安全对象
系统将安全性加到一些对象及系统提供的特色上。透过存取控制而取得安全性的任何对象皆被视为安全对象。表10-1显示出本书编写时,Windows 2000提供的安全对象类型(系统也提供一个称为SE_OBJECT_TYPE的列举类型,它包括每个类型的值)。如您所见,Windows中有许多主要元件可以利用存取控制功能,包括自订及私人对象的部份。
Windows 2000可让您的服务软件将应用程序定义的任何对象类型遵循Windows的存取控制。系统会管理对象安全的部份,而您的软件则结合安全与对象,并管理对象本身的功能。这种安全的管理称为 私人对象安全 ,本章稍后将会作详细的讨论。
| 表10-1 Windows 2000中的安全对象类型 |
| 种类 | SE_OBJECT_TYPE列举类型 | 叙述 |
|---|---|---|
| 文件对象 | SE_FILE_OBJECT | 在NTFS文件系统上的文件或目录。 |
| 服务对象 | SE_SERVICE | 系统上安装的服务或系统的服务控 制管理员(Service Control Manager ,SCM)。 |
| 打印机对象 | SE_PRINTER | 一个打印机或列印服务器。 |
| 登录机码 | SE_REGISTRY_KEY | Windows 2000系统上的登录机码。 |
| 分享对象 | SE_LMSHARE | 指出Windows 2000系统上的分享共 享目录对象。 |
| 核心对象 | SE_KERNEL_OBJECT | 系统可以保护以下所列之核心对象 安全:程序对象、线程对象、工 作对象、号志(Semaphore)对象、 事件对象、Mutex对象、文件对应 对象、可等待的计时对象、存取权 杖(Token)、命名管道及匿名管道。 |
| Windows对象 | SE_WINDOW_OBJECT | Window站台及桌面对象(本章稍后会加以叙述)。 |
| 目录服务对象 | SE_DS_OBJECT SE_DS_OBJECT_ALL | Windows 2000可让您将安全性运用在Active Directory的对象或目录服务上。 |
| WMI对象 | SE_WMIGUID_OBJECT | 揭露给WMI的对象。 |
| 安全提供者对象 | SE_PROVIDER_DEFINED_OBJECT | Windows 2000支援可置换的安全提供者,而且可以显示安全对象。 |
| 私人对象 | 由服务或系统保护之应用程序建立的自订对象。 |
Windows之存取控制的长处之一是确保对象类型间执行的主要对象安全程序是相同的。这种通用的设计使得管理者及程序设计师在保护不同对象的安全时,变得更为简单。每个安全对象皆保存着一个 存取控制清单 (Access Control List,ACL),用来决定谁可以或不可以在对象上执行某些安全动作。这个ACL是Windows 2000存取控制的核心,以下列叁种方式的组合与安全对象结合:
- 预设指派(Default assignment) Windows 2000提供一个弹性的预设安全结构,指派存取控制到没有明确经由新建软件取得安全性的对象。这个机制是最常用来指派安全性给对象的方式,也是所有忽视Windows 2000安全性软件使用的机制。对象被建立时,会指派预设的安全给对象。
- 继承(Inheritance) 存在父系—子系关系层级的系统及私人对象(例如文件及登录机码)可能也会受安全继承的管制。继承可让适用于父对象的安全传播到层级中的子对象。假如继承的存取控制项目(Access Control Entries,ACEs)是可用的,则它们适用新的对象,而非预设的安全。不管是否有指派外显的存取控制清单,继承皆被应用在对象上。
- 外显指派(Explicit assignment) 您可以在对象建立时或建立后,明确地指派存取控制到安全对象。这种指派安全的方式在服务软件中比在应用程序及客户端软件中更常见。
建立及指派ACLs给安全对象为本章首要的主题。
存取权利概述
尽管我们已经解释对象具有安全性,但还未讨论到安全对象的实际意义。Windows对安全对象上的可执行动作提供了一个很好的控制等级。只有在提出要求的信任成员拥有对对象的适当存取权利时,该安全的动作才会被执行。表10-2叙述了叁种可运用在对象上的存取权利群组。
| 表10-2 系统定义应用于对象上的存取权利 |
| 存取类型 | 叙述 |
|---|---|
| 标准权利 | 标准权利应用于系统的所有对象,包括删除对象或读取对象等安全性的权利。有关Windows 2000定义的所有标准权利清单,请参阅 表10-13 的内容。 |
| 特殊权利 | 特殊权利只应用在特殊类型的安全对象上。举例来说,某个文件对象的特殊权利可能会是新增资料或从文件中读取资料的权利。 |
| 通用权利 | 通用权利指某个对象的标准及特殊权利的集合。系统定义了四个通用的权利:读取、写入、执行及所有。每个通用权利的意义与对象对对象的情形不同。 |
我会详细讨论每种权利的类型。而此时先把权利看成允许或不允许使用者对对象作某些事是重要的。例如,一个文件可让使用者读取,但不让使用者删除:这是有可能的,因为系统为读取及删除定义了不同的权利。
当使用者企图在对象上执行安全性工作时,系统会执行 存取检查 的动作。存取检查会搜寻被指派给对象的权利,并与尝试动作的使用者身分作对照。假如系统判定使用者已经要求存取对象,则动作被执行。若使用者没有适当的存取,则该动作不会被执行,代表使用者执行的软件会接收到「拒绝存取」的错误讯息。
