Security Descriptor(安全描述符) 是 Windows 操作系统中用于存储与对象(如文件、文件夹、注册表键、进程等)相关的安全信息的数据结构。它定义了如何管理对这些对象的访问控制以及如何执行审计。这些安全描述符包含了与对象相关的权限和身份信息,决定了哪些用户或组可以访问该对象,以及他们能执行哪些操作(例如读取、写入、执行等)。

Security Descriptor(安全描述符) 是 Windows 操作系统中用于存储与对象(如文件、文件夹、注册表键、进程等)相关的安全信息的数据结构。它定义了如何管理对这些对象的访问控制以及如何执行审计。这些安全描述符包含了与对象相关的权限和身份信息,决定了哪些用户或组可以访问该对象,以及他们能执行哪些操作(例如读取、写入、执行等)。

安全描述符的关键组成部分

  1. 所有者(Owner SID)

    • 这是对象的所有者身份。所有者通常是一个用户或组,并用 安全标识符(SID) 来表示。SID 唯一地标识用户或组。
  2. 主组(Primary Group SID)

    • 这是与对象关联的组。主组在文件系统中更为常见,尤其是在支持 Unix 风格权限的情况下,尽管在 Windows 中较少使用。
  3. 自愿访问控制列表(DACL,Discretionary Access Control List)

    • DACL 定义了哪些用户或组可以访问该对象及其具体权限(例如读、写、删除等)。它包含一系列的访问控制条目(ACE,Access Control Entries),每个 ACE 描述了一个用户或组的访问权限。
      • 允许/拒绝访问:每个 ACE 会定义允许或拒绝的操作。
      • 访问掩码:指定允许或拒绝的具体权限(例如读取、写入、删除)。
  4. 系统访问控制列表(SACL,System Access Control List)

    • SACL 用于定义对象的审计设置,决定哪些操作应该被记录(例如,成功或失败的访问尝试)。它同样由一系列的 ACE 组成,不过它的作用是记录访问事件,而不是直接控制访问。
  5. 控制标志(Control Flags)

    • 这些标志提供了有关安全描述符状态的信息,表示该描述符是否已初始化,是否包含 DACL 或 SACL 等。常见的控制标志包括:
      • SE_DACL_PRESENT:表示存在 DACL。
      • SE_SACL_PRESENT:表示存在 SACL。
      • SE_OWNER_DEFAULTED:表示所有者信息是从父对象继承的。
      • SE_GROUP_DEFAULTED:表示组信息是从父对象继承的。

安全描述符的应用

安全描述符在 Windows 中的应用非常广泛,主要包括:

  • 文件系统的访问控制: 当你右键点击一个文件或文件夹,选择属性,然后切换到安全选项卡,你就可以看到该文件或文件夹的安全描述符。这些信息展示了 DACL(包括不同用户的权限)和其他安全设置。

  • 活动目录对象: 每个活动目录对象(例如用户、组、计算机)都有一个安全描述符,用于控制对这些对象的访问。

  • 注册表键: Windows 注册表中的每个注册表项也有一个安全描述符,用于控制谁可以访问或修改注册表项。

示例:一个文件的安全描述符

假设我们有一个文件,文件的安全描述符可能包含以下信息:

  • 所有者:用户 "Alice"(SID 为 Alice 的 SID)
  • 主组:用户组 "Users"(SID 为 Users 组的 SID)
  • DACL
    • ACE 1:允许 Alice 对文件拥有完全控制(读取、写入、执行、删除等)。
    • ACE 2:拒绝用户 "Bob" 访问该文件。
    • ACE 3:允许 "Administrators" 组对文件拥有完全控制。
  • SACL
    • 审计 ACE:记录所有对文件的访问尝试(成功或失败)。

如何工作

当用户或应用程序尝试访问某个对象时,Windows 会检查该对象的安全描述符来确定是否允许访问。如果访问被允许,则 Windows 根据 DACL 中的 ACE 来检查是否有合适的权限。如果没有相应的 ACE 或者存在拒绝权限,访问请求会被拒绝。

SACL 主要用于审计。当有访问行为发生时,SACL 会记录这些事件,生成日志以供管理员后续查看,帮助进行安全监控和合规性检查。

 

安全描述符 是 Windows 安全机制的核心,决定了对系统资源的访问权限以及如何记录和审计访问行为。它由多个部分组成,包括所有者信息、DACL、SACL 和控制标志,能够细粒度地管理资源的安全性和审计信息。

 

安全描述符 是 Windows 操作系统使用的一种数据结构,用于存储与对象(如文件、目录、注册表键和其他系统资源)相关的安全信息。它定义了这些对象的访问控制和安全设置,决定了谁可以访问这些对象,以及他们被允许执行哪些操作。

安全描述符的关键组成部分

安全描述符由几个元素组成,这些元素定义了对象的安全属性。它们包括:

  1. 所有者(Owner SID)

    • 这是标识拥有该对象的用户或组。它由一个安全标识符(SID)表示,SID 唯一地标识 Windows 系统中的一个用户或组账户。
  2. 主组(Primary Group SID)

    • 这是与该对象关联的组。它主要用于 Unix 系统中的文件,但在 Windows 中通常不太常用,除非在某些特定的对象中。
  3. 自愿访问控制列表(DACL,Discretionary Access Control List)

    • DACL 定义了访问控制条目(ACE),这些条目确定哪些用户或组被允许或拒绝访问该对象,以及他们可以执行哪些操作(如读取、写入、执行、删除等)。
      • 每个 DACL 中的 ACE 包括:
        • SID:标识用户或组。
        • 访问掩码(Access Mask):指定允许或拒绝的访问权限(如读取、写入、完全控制)。
        • 访问控制类型(Access Control Type):指定该 ACE 是允许条目还是拒绝条目。
  4. 系统访问控制列表(SACL,System Access Control List)

    • SACL 定义了对象的审计设置,决定哪些访问尝试应该被系统记录以供审计使用。与 DACL 类似,SACL 也由 ACE 组成,但 SACL 中的 ACE 定义了特定访问控制操作发生时应该记录的事件(例如,当用户尝试访问对象时)。
      • 审计条目:定义哪些操作(如成功或失败的登录)应该被审计。
  5. 控制标志(Control Flags)

    • 这些标志提供有关安全描述符状态的信息,例如它是否已正确初始化,是否存在 SACL 或 DACL 等。常见的控制标志包括:
      • SE_DACL_PRESENT:表示存在 DACL。
      • SE_SACL_PRESENT:表示存在 SACL。
      • SE_OWNER_DEFAULTED:表示所有者信息是从父对象继承的。
      • SE_GROUP_DEFAULTED:表示组信息是从父对象继承的。

理解安全描述符的上下文

安全描述符在 Windows 中的作用非常重要,它决定了操作系统如何控制对对象的访问,如何进行审计,并且为管理员提供了管理系统资源安全的工具。通过了解安全描述符的组成和各个部分的作用,用户和管理员可以更好地理解如何设置和控制 Windows 系统中的权限和审计策略。

安全描述符在管理系统资源访问中至关重要。它们在不同的场景中发挥作用,例如:

文件系统访问控制:

当你右键点击文件或文件夹,选择“属性”并进入“安全”选项卡时,你正在查看该对象的安全描述符。它显示了 DACL(针对不同用户的权限)以及文件的其他安全信息。

Active Directory 对象:

Active Directory 中的每个对象(例如,用户、组、计算机)都有一个安全描述符,控制其访问控制和审计设置。

注册表项:

Windows 注册表存储操作系统和应用程序的配置设置。每个注册表项也有一个安全描述符,用来控制谁可以访问或修改该项。

安全描述符的示例:

以下是一个简化的示例,展示 Windows 中文件对象的安全描述符可能的样子:

  • 所有者:用户“爱丽丝”(爱丽丝的 SID)
  • 主组:组“Users”(Users 组的 SID)
  • DACL
    • ACE 1:允许爱丽丝拥有完全控制权限(读取、写入、执行、删除)。
    • ACE 2:拒绝用户“鲍勃”访问该文件。
    • ACE 3:允许“管理员”组拥有完全控制权限。
  • SACL
    • 审计 ACE:审计任何用户对文件的成功访问尝试(例如,记录某人打开文件的日志)。

操作安全描述符的功能和 API:

Windows 提供了一组 API 用于管理和操作安全描述符,如:

  • GetSecurityDescriptorDacl:从安全描述符中检索 DACL。
  • SetSecurityDescriptorDacl:为安全描述符设置 DACL。
  • GetSecurityDescriptorOwner:从安全描述符中检索所有者信息。
  • SetSecurityDescriptorOwner:为安全描述符设置所有者。
  • SetSecurityDescriptorSacl:为安全描述符设置 SACL。

这些 API 允许开发人员读取和修改系统资源的安全设置。

安全描述符与访问控制的关系:

当应用程序或用户尝试访问资源时,Windows 会检查安全描述符以确定是否应允许访问。它将用户的凭据(SID)与 DACL 中的条目进行比较,查看是否有任何 ACE 允许或拒绝请求的访问。如果 DACL 缺失,则资源被视为完全开放;如果没有拒绝条目(deny ACE),则会允许访问。

SACL 用于系统记录访问尝试,以便进行审计。SACL 中定义的事件会被记录到安全事件日志中,帮助管理员跟踪对敏感资源的访问。

 

安全描述符是 Windows 安全基础架构中的关键元素,决定了各种资源的访问控制策略。通过结合所有者、DACL 和 SACL,Windows 提供了对资源访问权限和执行操作的精细控制,并进行访问尝试的审计,以便合规性检查和安全监控。


 

posted @ 2024-12-08 03:48  suv789  阅读(25)  评论(0编辑  收藏  举报