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