组成员身份更改不会通过某些 VPN 连接更新

本文介绍 VPN 用户在组成员身份更改后可能会遇到资源访问或配置问题的情况。

适用于: 所有受支持的 Windows 客户端版本

症状

为了应对新冠肺炎疫情,越来越多的用户在家工作、学习和社交。 它们使用 VPN 连接连接到工作区。 这些 VPN 用户报告,当他们添加到安全组或从安全组中删除时,更改可能不会按预期生效。 它们报告如下症状:

  • 对网络资源访问的更改不会生效。
  • 组策略对象 (面向特定安全组的 GPO) 未正确应用。
  • 文件夹重定向策略未正确应用。
  • 面向特定安全组的 Applocker 规则不起作用。
  • 创建映射驱动器(包括用户主文件夹或 GPP 驱动器映射)的登录脚本不起作用。
  • 命令 whoami /groups (命令提示符下运行,) 报告用户的本地安全上下文的组成员身份的过期列表。
  • 命令 gpresult /r (命令提示符下运行,) 报告组成员身份的过期列表。

如果用户在客户端仍连接到 VPN 时锁定并解锁 Windows,则其中一些症状会自行解决。 例如,某些资源访问更改生效。 随后,如果用户注销 Windows,然后重新登录 (关闭使用网络资源的所有会话) ,则更多症状会得到解决。 但是,登录脚本可能无法正常工作,并且该 gpresult /r 命令可能仍不反映组成员身份更改。 用户无法使用 命令在客户端上启动新的 Windows 会话来解决此问题 runas 。 此命令仅使用相同的凭据信息来启动新会话。

本文的范围包括已在域中实现身份验证机制保证 (AMA) 的环境,以及用户必须使用智能卡进行身份验证才能访问网络资源的环境。 有关详细信息,请参阅 Windows 交互式登录方案中的 AMA 用法说明

原因

在办公环境中,用户在工作日结束时注销 Windows 很常见。 当用户第二天登录时,客户端已连接到网络,并且可以直接访问域控制器。 在这些情况下,对组成员身份的更改会很快生效。 用户第二天 (下次登录) 时具有正确的访问级别。 同样,对组策略的更改似乎在用户登录一两次后一两天 (内生效,具体取决于计划应用) 的策略。

在家庭环境中,用户可能会在工作日结束时断开与 VPN 的连接,并锁定 Windows。 他们可能不会注销。当用户第二天早上解锁 Windows (或登录) 时,在用户解锁 Windows 或登录之前,客户端不会连接到 VPN (,并且无法访问域控制器) 。 客户端使用缓存凭据(而不是通过联系域控制器获取新凭据)将用户登录到 Windows。 Windows 基于缓存的信息为用户生成安全上下文。 Windows 还基于本地组策略缓存异步应用组策略。 这种缓存信息的用法可能会导致以下行为:

  • 用户可能有权访问他们不应拥有的资源,并且可能无权访问他们应该拥有的资源。
  • 组策略设置可能未按预期应用,或者组策略设置可能已过期。

出现此行为是因为 Windows 在用户登录时使用缓存的信息来提高性能。 Windows 还使用缓存信息在未连接到网络的已加入域的客户端上登录用户。 如果客户端仅使用 VPN 连接到网络,并且客户端在用户登录之前无法建立 VPN 连接,则会发生意外后果。

重要

此行为仅在交互式登录方案中相关。 对网络资源的访问按预期工作,因为网络登录不使用缓存的信息。 相反,组信息来自域控制器查询。

对用户安全上下文和访问控制的影响

如果用户登录时客户端无法连接到域控制器,Windows 会将用户安全上下文基于缓存的信息。 Windows 创建用户安全上下文后,它不会更新上下文,直到用户下次登录。

例如,假设用户在脱机时被分配到 Active Directory 中的组。 用户登录到 Windows,然后连接到 VPN。 如果用户打开命令提示符窗口,然后运行 whoami /groups 命令,则组列表不包括新组。 用户锁定桌面,然后解锁桌面,同时仍连接到 VPN。 该 whoami /groups 命令仍生成相同的结果。 最后,用户注销 Windows。 用户再次登录后,命令 whoami /groups 会生成正确的结果。

缓存信息对用户访问资源的影响取决于以下因素:

  • 资源是在客户端上还是在网络上
    网络上的资源需要额外的身份验证步骤 (网络登录,而不是交互式登录) 。 此步骤意味着资源用于确定访问权限的组信息始终来自域控制器,而不是客户端缓存。
  • 资源是否使用 Kerberos 票证或其他技术 (如 NTLM 访问令牌) 对用户进行身份验证和授权
  • 用户是恢复现有资源会话还是启动新资源会话
  • 在连接到 VPN 时,用户是否锁定和解锁客户端
    如果用户在连接到 VPN 时锁定客户端,然后解锁该客户端,则客户端会更新其用户组缓存。 但是,此更改不会影响现有用户安全上下文或用户锁定客户端时正在运行的任何会话。
  • 用户是否在连接到 VPN 时注销客户端,然后再次登录
    注销然后登录的效果会有所不同,具体取决于用户在连接到 VPN 时是否首先锁定和解锁了客户端。 锁定客户端,然后解锁客户端会更新客户端在下一次登录时使用的用户信息的缓存。

依赖于 NTLM 身份验证的资源

此类别的资源包括:

  • 客户端上的用户会话

  • 客户端上依赖于 NTLM 身份验证的任何资源会话

  • 网络上依赖于 NTLM 身份验证的任何资源会话

    重要

    当用户访问网络上需要 NTLM 身份验证的资源时,客户端会提供来自用户安全上下文的缓存凭据。 但是,资源服务器会查询域控制器以获取最新的用户信息。

这些资源会话(包括客户端上的用户会话)不会过期。 它们将继续运行,直到用户结束会话,例如当用户注销 Windows 时。 锁定然后解锁客户端不会结束现有会话。

依赖于 Kerberos 票证的资源

当用户连接到 VPN,然后尝试访问依赖于 Kerberos 票证的网络资源时,Kerberos 密钥分发中心 (KDC) 从 Active Directory 获取用户的信息。 KDC 使用 Active Directory 中的信息对用户进行身份验证,并创建票证授予票证 (TGT) 。 TGT 中的组成员身份信息在创建 TGT 时是最新的。

然后,Windows 使用 TGT 获取所请求资源的会话票证。 会话票证反过来使用 TGT 中的组信息。

客户端缓存 TGT,并在用户每次启动新的资源会话(无论是本地还是网络上)时继续使用 TGT。 客户端还会缓存会话票证,以便它可以继续连接到资源 (,例如资源会话过期) 。 会话票证过期后,客户端会重新提交 TGT 以获取新的会话票证。

重要

如果用户的组成员身份在用户启动资源会话后发生更改,则以下因素控制更改何时实际影响用户的资源访问:

  • 组成员身份的更改不会影响现有会话。
    现有会话会一直持续到用户注销或以其他方式结束会话,或会话过期为止。 会话过期时,会发生以下情况之一:
    • 客户端重新提交会话票证或提交新的会话票证。 此操作会续订会话。
    • 客户端不会再次尝试连接。 会话不会续订。
  • 组成员身份的更改不会影响当前 TGT 或使用该 TGT 创建的任何会话票证。
    票证授予服务 (TGS) 使用 TGT 中的组信息来创建会话票证,而不是查询 Active Directory 本身。 在用户锁定客户端或注销之前,TGT 不会续订,或者直到 TGT 过期 (通常为 10 小时) 。 TGT 可以续订 10 天。

可以使用 klist 命令 手动清除客户端的票证缓存。

注意

票证缓存存储计算机上所有用户会话的票证。 可以使用 klist 命令行选项将命令定向到特定用户或票证。

对启动和登录过程的影响

组策略服务经过优化,可加快组策略的应用并减少对客户端性能的不利影响。 有关详细信息,请参阅了解快速登录优化和快速启动对组策略的影响。 本文深入介绍了组策略如何与启动和登录过程交互。 组策略服务可以在启动、登录) 前台 (或在用户会话) 期间在后台 (运行。 服务按以下方式处理组策略:

  • 异步处理 是指不依赖于其他进程结果的进程。
  • 同步处理 是指依赖于彼此结果的进程。 因此,同步进程必须等待上一个进程完成,然后下一个进程才能启动。

下表汇总了触发前台或后台处理的事件,以及处理是同步处理还是异步处理。

Trigger 同步或异步 前景或背景
计算机启动或关闭 同步或异步 前景
用户登录或注销 同步或异步 前景
在用户会话) 期间计划的 ( 异步 背景
用户操作 (gpupdate /force) 异步 背景

为了应用配置更改,某些客户端扩展 (CSE) 需要在用户登录或计算机启动) 时进行同步处理 (。 在这种情况下,CSE 会在后台处理期间确定需要更改。 用户下次登录或计算机启动时,CSE 会在同步处理阶段完成更改。

其中一些 CSE 还有一个额外的复杂问题:在同步处理运行时,它们必须连接到域控制器或其他网络服务器。 文件夹重定向和脚本 CSE 是此类别中的两个 CSE。

此设计在办公环境中有效工作。 但是,在家庭办公环境中,用户可能无法在连接到域时注销并重新登录。 在客户端联系域控制器或任何其他服务器之前,同步处理必须完成。 因此,某些策略无法正确应用或更新。

例如,更改文件夹重定向需要满足以下所有条件:

  • 用户登录) 期间前台同步处理 (。
  • 连接到域控制器。 在处理运行时,连接必须可用。
  • 连接到承载重定向目标文件夹的文件服务器。 在处理运行时,连接必须可用。

事实上,此更改可能涉及两个登录。在第一次登录期间,客户端上的文件夹重定向 CSE 会检测更改的需要,并请求前台同步处理运行。 在下一次登录期间,CSE 将实施策略更改。

对组策略报告的影响

组策略服务在客户端、Windows Management Instrumentation (WMI) 和注册表中维护组成员身份信息。 WMI 存储用于运行 gpresult /r) 生成的策略结果集报表 (。 它不用于决定应用哪些 GPO。

注意

可以通过启用“关闭策略的结果集”日志记录策略来关闭 策略的结果集报告 函数。

在以下情况下,组策略服务不会更新 WMI 中的组信息:

  • 组策略在后台运行。 例如,在计算机启动或用户登录后定期刷新期间,或者在用户运行gpupdate /force命令以刷新组策略期间。
  • 组策略正在从组策略缓存运行。 例如,当用户在客户端无权访问域控制器时登录时。

此行为意味着仅 VPN 客户端上的组列表可能始终过时,因为组策略服务无法在用户登录期间连接到网络。 当组策略运行且不更新 WMI 中的组信息时,组策略服务可能会记录类似于以下内容的事件:

GPSVC (231c.2d14) 11:56:10:651 CSessionLogger::Log: 还原旧的安全 grps

可以确定,仅当正在检查的帐户的组策略服务日志中出现以下行时,WMI 和 的输出gpresult /r才会更新:

GPSVC (231c.2d14) 11:56:10:651 CSessionLogger::Log: logging new security grps

解决方案

若要解决本文介绍的问题,请使用可在用户登录之前与客户端建立 VPN 连接的 VPN 解决方案。

解决办法

如果无法使用在用户登录之前建立客户端连接的 VPN,这些解决方法可以缓解本文介绍的问题。

用户安全上下文和访问控制的解决方法

将用户添加到组或从组中删除用户后,请向用户提供以下步骤。 此过程提供唯一受支持的解决方法,可在用户登录前未连接到 VPN 的客户端上刷新用户安全上下文。

重要

在用户开始此过程之前,请留出足够的时间让成员身份更改在域控制器之间复制。

  1. 登录到客户端计算机,然后像往常一样连接到 VPN。
  2. 确定客户端计算机已连接到 VPN 时,请锁定 Windows。
  3. 解锁客户端计算机,然后注销 Windows。
  4. 再次登录到 Windows。

组成员身份信息 (和资源访问) 现已更新。

可以通过打开命令提示符窗口,然后运行 whoami /all来验证组成员身份信息。

注意

可以使用以下Windows PowerShell脚本自动执行此过程的锁定和解锁步骤。 在此过程中,用户必须登录到 Windows,然后在脚本运行后注销 Windows。

$fullname = $env:userdnsdomain + "\" + "$env:username" 
$MyCred = Get-Credential -Username $fullname -Message "Update Logon Credentials"
Start-Process C:\Windows\System32\cmd.exe -ArgumentList ("/C", "exit 0") -Credential $MyCred -WindowStyle Hidden -PassThru -Wait

登录过程的解决方法,包括组策略

可以通过手动更改配置、更改脚本以便在用户登录后运行脚本,或者让用户连接到 VPN 然后注销 Windows 来缓解某些问题。 可能需要合并这些方法。 特别是对于组策略,关键是了解组策略何时以及如何发挥作用。

注意

映射驱动器连接和登录脚本具有与文件夹重定向相同的前台同步处理要求,但它们确实需要域控制器和资源服务器连接。

有关组策略 CSE 处理要求的详细列表,请参阅了解快速登录优化和快速启动对组策略的影响