模仿
模拟是在与拥有线程的进程上下文不同的安全上下文中执行线程的能力。 在客户端的安全上下文中运行时,服务器“是”客户端,在某种程度上。 服务器线程使用表示客户端凭据的访问令牌来获取对客户端有权访问的对象的访问权限。
模拟的主要原因是对客户端标识执行访问检查。 使用客户端的标识进行访问检查可能会导致访问受到限制或扩展,具体取决于客户端有权执行的作。 例如,假设文件服务器包含包含机密信息的文件,并且其中每个文件都受 ACL 保护。 为了帮助防止客户端获取对这些文件中信息的未经授权的访问,服务器可以在访问文件之前模拟客户端。
用于模拟的访问令牌
访问令牌是描述进程或线程的安全上下文的对象。 它们提供的信息包括用户帐户的标识以及用户帐户可用的特权子集。 每个进程都有一个 主访问令牌,用于描述与进程关联的用户帐户的安全上下文。 默认情况下,当进程的线程与安全对象交互时,系统将使用主令牌。 但是,当线程模拟客户端时,模拟线程同时具有主访问令牌和 模拟令牌。 模拟令牌表示客户端的安全上下文,此访问令牌是用于模拟期间访问检查的令牌。 模拟结束时,线程将还原为仅使用主访问令牌。
可以使用 OpenProcessToken 函数获取进程的主令牌的句柄。 使用 OpenThreadToken 函数获取线程模拟令牌的句柄。
相关主题