应用程序和服务开发人员需要了解组的哪些内容

开发应用程序或服务时,可以使用组作为整体或部分,将管理或控制访问权限委托给应用程序或服务。 例如,应用程序可以控制谁可以执行各种管理操作。 为此,请创建向相应组授予指定访问权限的 ACE。 与拥有多个向单个用户或计算机授予访问权限的 ACE 相比,拥有向组授予访问权限的 ACE 是很好的编程做法。

建议应用程序在使用组时使用以下准则:

  • 不要对硬编码的组创建依赖项,如果删除或移动组,这可能会造成复杂情况。
  • 除非组的函数提供应用程序的特定需求,否则请避免使用内置组。 例如,不要求用户是管理员组的成员,只是为了向用户提供创建计算机帐户的权限。 这样做会为用户提供他们可能不需要的权限和特权,从而可能会导致安全漏洞。 相反,应创建具有所需特定权限的新安全组,并将用户添加到此新组。
  • 创建新组时,请记住以下建议:
    • 通过设置控制谁可以添加或删除成员的 ACE 来保护组。
    • 如果全局组用于对 Active Directory 域服务中的对象进行访问控制,请使用全局组。
    • 仅在必要时使用通用组(使用全局目录将全局需要成员数据;组可以包含任何用户/组)。 如果使用通用组,请将全局组放在通用组中,并从全局组中添加/删除用户。 避免过度更改通用组,以提高复制效率。
  • 请勿使用组成员身份进行访问控制。 请让系统执行访问检查,改用 ACE 和控制访问权限。

若要控制对不符合 Active Directory 域服务中对象的预定义访问权限的操作的访问,请使用 Windows 2000 中访问控制的控制访问权限功能。 有关详细信息,请参阅 ADS_RIGHTS_ENUM

使用控制访问权限来控制执行操作的权限

  1. 创建控制访问权限,用于定义对应用程序或服务的访问类型。 有关详细信息,请参阅控制访问权限
  2. 在 Active Directory 域服务中创建表示应用程序、服务或资源的对象。
  3. 将对象 ACE 添加到对象安全描述符中的 DACL,以授予或拒绝用户或组对该对象的控制访问权限。 有关详细信息,请参阅对对象设置访问权限
  4. 当用户尝试执行受保护的操作时,应用程序或服务使用 AccessCheckByTypeResultList 函数来确定是否向用户授予控制访问权限。 有关详细信息,请参阅在对象的 ACL 中检查控制访问权限
  5. 根据对象访问检查结果,应用程序或服务可以授予或拒绝用户访问应用程序或服务的权限。

服务应用程序还可以创建一个组,其成员将是各种服务实例。 例如,在整个企业中安装了多个计算机上的实例的服务可能有一个通用日志文件,所有服务实例都写入其中。 服务安装程序会创建日志文件,并使用 DACL 仅向组成员授予访问权限。 组成员是运行各种服务实例的用户帐户,或者如果服务在 LocalSystem 帐户下运行,则成员将是主机服务器的计算机帐户。