Partager via

在 Microsoft Entra ID 中撤销用户访问权限

可能需要管理员撤销用户的所有访问权限的情况包括已泄露帐户、员工离职和其他内部威胁。 根据环境的复杂性,管理员可以采取几个步骤来确保访问被撤销。 在某些情况下,从开始撤销访问到有效撤销访问之间可能有一段时间。

若要缓解此风险,必须了解令牌的工作原理。 令牌有许多种,且都属于本文中讨论的模式之一。

访问令牌和刷新令牌

访问令牌和刷新令牌经常用于厚客户端应用程序,还用于基于浏览器的应用程序,例如单页应用程序。

  • 当用户向属于 Microsoft Entra 的 Microsoft Entra ID 进行身份验证时,系统会评估授权策略,以确定是否可以授予用户访问特定资源的权限。
  • 授权后,Microsoft Entra ID 颁发访问令牌和资源的刷新令牌。
  • 如果身份验证协议允许,当访问令牌过期时,应用程序可以通过将刷新令牌传递给 Microsoft Entra ID 来无提示地重新对用户进行身份验证。 默认情况下,Microsoft Entra ID 颁发的访问令牌有效期为 1 小时。
  • 然后,Microsoft Entra ID 将重新评估其授权策略。 如果用户仍获得授权,Microsoft Entra ID 颁发新的访问令牌和刷新令牌。

访问令牌如果需要在其通常的一小时生命周期内的较短时间段内吊销,则可能会带来安全风险。 因此,Microsoft正积极努力对 Office 365 应用程序进行 持续访问评估 ,这有助于确保访问令牌几乎实时失效。

会话令牌(Cookie)

大多数基于浏览器的应用程序使用会话令牌,而不是访问和刷新令牌。

  • 当用户打开浏览器并通过 Microsoft Entra ID 对应用程序进行身份验证时,用户将收到两个会话令牌。 一个来自 Microsoft Entra ID,另一个来自应用程序。

  • 应用程序发出自己的会话令牌后,应用程序会基于其授权策略控制访问权限。

  • 当应用程序将用户发送回 Microsoft Entra ID 时,会经常重新评估 Microsoft Entra ID 的授权策略。 重估通常会以无提示方式发生,但频率取决于应用程序的配置方式。 只要会话令牌有效,应用可能永远不会将用户发回 Microsoft Entra ID。

  • 若要撤销会话令牌,应用程序必须根据自己的授权策略撤销访问权限。 Microsoft Entra ID 无法直接撤销应用程序颁发的会话令牌。

撤消对混合环境中用户的访问权限

对于本地 Active Directory 与 Microsoft Entra ID 同步的混合环境,Microsoft建议 IT 管理员执行以下操作。 如果您有仅适用于 Microsoft Entra 的环境,可以跳到“Microsoft Entra 环境”部分。

本地 Active Directory 环境

作为 Active Directory 中的管理员,请连接到本地网络,打开 PowerShell,然后执行以下操作:

  1. 禁用 Active Directory 中的用户。 请参阅 Disable-ADAccount

    Disable-ADAccount -Identity johndoe  
    
  2. 在 Active Directory 中重置用户密码两次。 请参阅 Set-ADAccountPassword

    注意

    更改用户密码两次的原因是为了降低传递哈希的风险,尤其是在本地密码复制出现延迟的情况下。 如果可以安全地假定此帐户未泄露,则只能重置密码一次。

    重要

    不要在以下 cmdlet 中使用示例密码。 请确保将密码更改为随机字符串。

    Set-ADAccountPassword -Identity johndoe -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "p@ssw0rd1" -Force)
    Set-ADAccountPassword -Identity johndoe -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "p@ssw0rd2" -Force)
    

Microsoft Entra 环境

作为 Microsoft Entra ID 中的管理员,打开 PowerShell,运行 Connect-MgGraph,然后执行以下操作:

  1. 在 Microsoft Entra ID 中禁用用户。 请参阅 Update-MgUser

    $User = Get-MgUser -Search UserPrincipalName:'johndoe@contoso.com' -ConsistencyLevel eventual
    Update-MgUser -UserId $User.Id -AccountEnabled:$false
    
  2. 撤销用户的 Microsoft Entra ID 刷新令牌。 请参阅 Revoke-MgUserSignInSession

    Revoke-MgUserSignInSession -UserId $User.Id
    
  3. 禁用用户的设备。 请参阅 Get-MgUserRegisteredDevice

    $Device = Get-MgUserRegisteredDevice -UserId $User.Id 
    Update-MgDevice -DeviceId $Device.Id -AccountEnabled:$false
    

注意

有关可以执行这些步骤的具体角色,请查看 Microsoft Entra 内置角色

注意

我们计划在 2024 年 3 月 30 日弃用 Azure AD PowerShell。 若要了解详细信息,请阅读弃用更新

我们建议迁移到 Microsoft Graph PowerShell,以便与 Microsoft Entra ID(以前称为 Azure AD)进行交互。 Microsoft Graph PowerShell 在 PowerShell 7 上提供,支持访问所有 Microsoft Graph API。 有关常见迁移查询的解答,请参阅迁移常见问题解答

访问已撤消时

管理员执行上述步骤后,用户无法获取绑定到 Microsoft Entra ID 的任何应用程序的新令牌。 吊销和用户失去访问权限之间的时间取决于应用程序授予访问权限的方式:

  • 对于使用访问令牌的应用程序,当访问令牌过期时,用户将失去访问权限。

  • 对于使用会话令牌的应用程序,现有会话在令牌过期后立即结束。 如果用户的禁用状态与应用程序同步,则应用程序可以自动撤销用户的现有会话(如果配置为这样做的话)。 所需时间取决于应用程序和 Microsoft Entra ID 之间的同步频率。

最佳实践

  • 部署自动预配和取消预配解决方案。 从应用程序中取消预配用户是撤销访问权限的有效方式,尤其是对于使用会话令牌或允许用户在没有 Microsoft Entra 或 Windows Server AD 令牌的情况下直接登录的应用程序。 开发一个进程,以便在不支持自动预配和取消预配的应用中取消预配用户。 确保应用程序撤销其自己的会话令牌,并停止接受 Microsoft Entra 访问令牌,即使它们仍然有效。

    • 使用 Microsoft Entra 应用预配。 Microsoft Entra 应用预配通常每 20-40 分钟自动运行一次。 配置 Microsoft Entra 预配以取消预配或停用 SaaS 和本地应用程序中的用户。 如果您使用 Microsoft Identity Manager 来自动处理从本地应用程序中取消用户的预配,您可以使用 Microsoft Entra 应用预配,通过 SQL 数据库非 AD 目录服务器其他连接器访问本地应用程序。

    • 对于使用 Windows Server AD 的本地应用程序,可以配置 Microsoft Entra 生命周期工作流,以便在员工离职时更新 AD 中的用户(预览版)

    • 为需要手动取消设置的应用程序标识和开发进程。 例如,使用 Microsoft Entra 权利管理创建的自动 ServiceNow 票证可以在员工失去访问权限时打开票证。 请确保管理员和应用程序所有者可以在需要时快速运行所需的手动任务以从这些应用中取消预配用户。

  • 使用 Microsoft Intune 管理设备和应用程序。 Intune 管理设备可以重置为出厂设置。 如果设备为非托管设备,可以从托管应用中擦除公司数据。 这些进程可用于从最终用户设备中删除可能敏感的数据。 但是,对于要触发的任一进程,设备必须连接到 Internet。 如果设备处于离线状态,则设备仍可访问所有本地存储的数据。

注意

擦除后,无法恢复设备上的数据。

后续步骤