Windows权限继承机制

Windows 的权限继承机制是其安全模型的重要部分,用于简化访问控制管理,特别是在文件系统、注册表或 Active Directory 等对象层次结构中。以下是 Windows 权限继承机制的简要说明:

0.1. 基本概念

  • 安全描述符(Security Descriptor):每个对象(如文件、文件夹、注册表项等)都有一个安全描述符,包含 DACL(自主访问控制列表)和 SACL(系统访问控制列表)。DACL 定义访问权限,SACL 定义审计规则。
  • 继承:子对象可以从父对象继承 DACL 和 SACL 中的访问控制条目(ACE),以减少手动配置权限的工作量。

0.2. 继承标志

权限继承由安全描述符中的控制标志和 ACE 的继承属性控制:

  • DACL_AUTO_INHERITED:DACL 支持自动继承,子对象会从父对象继承 DACL 中的 ACE。
  • SACL_AUTO_INHERITED:SACL 支持自动继承,子对象会从父对象继承 SACL 中的审计规则。
  • DACL_PROTECTED / SACL_PROTECTED:阻止 DACL 或 SACL 从父对象继承,子对象使用显式定义的权限或审计规则。
  • 继承标志在 ACE 中
    • INHERITED_ACE:表示该 ACE 是从父对象继承的。
    • CONTAINER_INHERIT_ACE:ACE 应用于容器对象(如文件夹、注册表键)的子对象。
    • OBJECT_INHERIT_ACE:ACE 应用于非容器对象(如文件)。
    • NO_PROPAGATE_INHERIT_ACE:ACE 仅应用于直接子对象,不继续向下传播。
    • INHERIT_ONLY_ACE:ACE 仅用于继承,不直接应用于当前对象。

0.3. 继承工作原理

  • 父对象到子对象:当创建一个新对象(如子文件夹或文件)时,父对象的 DACL 和 SACL 中标记为可继承的 ACE 会自动应用到子对象,除非子对象设置了保护标志(如 DACL_PROTECTED)。
  • 动态更新:如果父对象的 DACL 或 SACL 发生变化,支持继承的子对象会自动更新其继承的 ACE(除非被保护)。
  • 显式权限优先:子对象上显式定义的 ACE(非继承)优先级高于继承的 ACE。

0.4. 继承的两种类型

  • 自动继承:当安全描述符设置了 DACL_AUTO_INHERITED 或 SACL_AUTO_INHERITED,系统自动管理继承过程。
  • 手动继承:管理员可以手动配置继承行为,例如通过文件夹属性界面勾选“将权限继承到子对象”。