返回首页

Active Directory 中的 ACL:ACE 类型和控制权限

本文分解了 Active Directory 中的 22 种 ACE 类型、它们的分组、ACCESS_MASK 操作和控制访问权限。解释了 GENERIC 权限的缺失、继承以及 RBCD 的 AllExtendedRights 限制。

Active Directory 中 ACL 和 ACE 的深入分析
Advertisement 728x90

# Active Directory 中 ACL 深入解析:ACE 类型、ACCESS_MASK 和控制访问权限

Active Directory 使用 22 种 ACE 类型,分为 4 类用于访问管理。第一类包括 ACCESS_ALLOWED_ACE_TYPE、ACCESS_DENIED_ACE_TYPE、SYSTEM_AUDIT_ACE_TYPE、SYSTEM_MANDATORY_LABEL_ACE_TYPE 和 SYSTEM_SCOPED_POLICY_ID_ACE_TYPE。这些 ACE 针对 ACCESS_MASK 和主体的 SID 进行操作,实现基本的权限授予和拒绝。

第二类——ACCESS_ALLOWED_OBJECT_ACE_TYPE 和 ACCESS_DENIED_OBJECT_ACE_TYPE——扩展了功能。它支持 ACCESS_MASK、扩展权限的 GUID,以及向子对象的继承。这种类型在 AD 中占主导地位,因为其灵活性。

第三类(ACCESS_ALLOWED_CALLBACK_ACE_TYPE、ACCESS_DENIED_CALLBACK_ACE_TYPE、SYSTEM_AUDIT_CALLBACK_ACE_TYPE、SYSTEM_RESOURCE_ATTRIBUTE_ACE_TYPE)在 ACCESS_MASK 和 SID 上添加条件表达式。逻辑规则会评估访问令牌——例如,根据设备声明限制访问。

Google AdInline article slot

第四类将对象 ACE 与条件表达式结合:ACCESS_ALLOWED_CALLBACK_OBJECT_ACE、ACCESS_DENIED_CALLBACK_OBJECT_ACE、SYSTEM_AUDIT_CALLBACK_OBJECT_ACE、SYSTEM_AUDIT_OBJECT_ACE_TYPE。不过,此处的验证机制会忽略条件表达式。

安全描述符中缺少 GENERIC 权限

ACCESS_MASK 是一个 32 位字段,其中各个位定义权限。标准映射包括 GENERIC_READ、GENERIC_WRITE 和 GENERIC_ALL,但这些位在安全描述符中被禁止。设置它们会导致不可预测的结果,并且授权算法会忽略它们。

在通过 AccessCheckByTypeResultListAndAuditAlarmByHandle 进行访问检查时,带有 GenericMapping 的 GENERIC 位很重要。此参数将 GENERIC 权限映射到对象特定权限。AD 单独定义了自己的映射,与文件系统或服务的映射不同。

Google AdInline article slot

创建 ACE 时,GENERIC 位会被阻止。在实践中,GENERIC_ALL 只是基于 AD 标准映射的对象特定位的组合。

ACCESS_MASK 标志和控制访问权限

关键标志:

  • RIGHT_DS_CREATE_CHILD / RIGHT_DS_DELETE_CHILD:objectGUID 是子类型的 schemaID(例如 OU=Computers 中的 computer)。没有 GUID 时——适用于所有类型。
  • RIGHT_DS_LIST_CONTENTS:读取子对象;忽略 objectGUID。
  • RIGHT_DS_WRITE_PROPERTY_EXTENDED:objectGUID 用于验证写入,但通过属性名称检查。
  • RIGHT_DS_READ_PROPERTY / RIGHT_DS_WRITE_PROPERTY:objectGUID 是属性集或 schemaID。没有 GUID 时——所有属性。
  • RIGHT_DS_DELETE_TREE:删除对象树。
  • RIGHT_DS_LIST_OBJECT:对象在 List Object 模式下的可见性(dSHeuristics)。
  • RIGHT_DS_CONTROL_ACCESS:objectGUID 用于扩展权限。没有 GUID 时——所有。

控制访问权限:扩展权限、验证写入和属性集

控制访问权限分为三类:

Google AdInline article slot
  • 扩展权限——执行操作的权限(例如,域同步)。
  • 验证写入——带验证检查的特定属性修改。
  • 属性集——访问属性组,以实现更紧凑的 ACL。

计算机对象上的 AllExtendedRights 不会授予对 msDS-AllowedToActOnBehalfOfOtherIdentity(RBCD)的写入访问权限。这是来自 User-Account-Restrictions 属性集(GUID=4c164200-20c0-11d0-a768-00aa006e0529)的验证写入。它需要单独的 WRITE_PROPERTY 或属性集权限。

AD 层次结构中的 ACE 继承

带有 OBJECT_INHERIT_ACE、CONTAINER_INHERIT_ACE、NO_PROPAGATE_INHERIT_ACE、INHERIT_ONLY_ACE 和 INHERITED_ACE 等标志的 ACE 会传播到子对象。简单类型会继承到任何容器。对象 ACE(带 GUID)受 InheritedObjectType 限制。

关键要点

  • 22 种 ACE 类型分为 4 类:基本、对象、回调和对象回调。
  • GENERIC-* 位不会存储在 SD 中;它们仅用于检查期间的映射。
  • 控制访问权限包括扩展权限(操作)、验证写入(属性)和属性集(组)。
  • RBCD 需要验证写入权限,不受 AllExtendedRights 覆盖。
  • ACE 继承通过标志和 InheritedObjectType 进行精确控制。

— Editorial Team

Advertisement 728x90

继续阅读