帐户数据库
Active Directory 提供 密钥分发中心 (KDC) 用于获取有关域中 安全主体 的信息的帐户数据库。 每个主体由 目录中的帐户对象表示。 用于与用户、计算机或服务通信的 加密密钥 存储为该安全主体的帐户对象的属性。
只有域控制器是 Active Directory 服务器。 每个域控制器都保留目录的可写副本,因此可以在任何域控制器上创建帐户、重置密码和修改组成员身份。 对目录的一副本 (replica) 所做的更改会自动传播到所有其他副本。 Windows 使用专有的多主数据库复制协议复制 Active Directory 的信息存储,该协议使用复制伙伴之间的安全远程过程调用连接。 该连接使用 Kerberos 身份验证协议 来提供相互 身份验证 和加密。
帐户数据的物理存储由 目录系统代理管理,该代理是与 域控制器上的本地安全机构 (LSA) 集成的受保护进程。 目录服务的客户端永远不会获得对数据存储的直接访问权限。 任何想要访问目录信息的客户端都必须连接到目录系统代理,然后搜索、读取和写入目录对象及其属性。
访问目录中的对象或属性的请求受 Windows 访问控制机制的验证。 与 NTFS 文件系统中的文件和文件夹对象一样,Active Directory 中的对象受 访问控制列表 (ACL) 的保护,这些列表指定谁可以以何种方式访问对象。 但是,与文件和文件夹不同,Active Directory 对象的每个属性都有一个 ACL。 因此,与为帐户的其他属性授予的权限相比,敏感帐户信息的属性可以受到更严格的权限的保护。
当然,有关帐户的最敏感信息是其密码。 尽管帐户对象的 password 属性存储从密码派生的加密密钥,而不是密码本身,但此密钥对入侵者同样有用。 因此,仅向帐户持有者授予对帐户对象的 password 属性的访问权限,绝不授予任何其他人,甚至不授予管理员。 仅允许具有受信任计算基础权限的进程(在 LSA 的安全 上下文 中运行的进程)读取或更改密码信息。
为了阻止有权访问域控制器备份磁带的人员的脱机攻击,帐户对象的密码属性受到使用系统密钥的第二个加密的进一步保护。 此加密密钥可以存储在可移动媒体上,以便可以单独进行保护,也可以存储在域控制器上,但受分散机制保护。 管理员可以选择系统密钥的存储位置,以及使用多种算法中的哪一种来加密密码属性。