如何检测和调查非活动用户帐户

在大型环境中,当员工离开组织时,并不总是会删除用户帐户。 作为 IT 管理员,你希望检测和解决这些过时的用户帐户,因为它们会带来安全风险。

本文介绍了在 Microsoft Entra ID 中处理过时用户帐户的方法。

注意

本文仅适用于在 Microsoft Entra ID 中查找非活动用户帐户。 它不适用于在 Azure AD B2C 中查找非活动帐户。

先决条件

要使用 Microsoft Graph 访问 lastSignInDateTime 属性:

  • 需要 Microsoft Entra ID P1 或 P2 版本许可证。

  • 需要向应用授予以下 Microsoft Graph 权限:

    • AuditLog.Read.All
    • User.Read.All

什么是非活动用户帐户?

非活动帐户是组织成员获取对资源的访问权限时不再需要的用户帐户。 非活动帐户的一个重要标志是,在一段时间内未使用这些帐户登录到你的环境。 由于非活动帐户与登录活动相关联,因此可以使用帐户上次尝试登录时的时间戳来检测非活动帐户。

此方法的难点是定义一段时间在你的环境中的含义。 例如,用户可能由于度假而在一段时间内未登录到环境。 在定义非活动用户帐户的增量时,需要考虑未登录到环境的所有合理原因。 在许多组织中,非活动用户帐户的增量为 90 到 180 天。

通过上次登录可窥见用户对持续访问资源的需要。 它有助于确定是否仍需要组成员身份或应用访问权限,或者是否可以将其删除。 对于外部用户管理,你可以了解外部用户在租户内是否仍处于活动状态,或者是否应将其清除。

使用 Microsoft Graph 检测非活动用户帐户

可以通过评估多个属性来检测非活动帐户,其中一些属性在 Microsoft Graph API 的 beta 终结点上可用。 我们不建议在生产环境中使用 beta 终结点,但邀请你尝试一下。

lastSignInDateTime 属性由 Microsoft Graph API 的 signInActivity 资源类型公开。 lastSignInDateTime 属性显示用户上次在 Microsoft Entra ID 中进行交互式登录尝试的时间。 使用此属性,可以为以下场景实现解决方案:

  • 所有用户的上次登录日期和时间:在此方案中,需要生成所有用户上次登录日期的报告。 请求一个包含所有用户的列表,以及每个用户最后的 lastSignInDateTime:

    • https://graph.microsoft.com/v1.0/users?$select=displayName,signInActivity
  • 用户(按用户名):在此场景中,按用户名搜索特定用户,这样可以评估 lastSignInDateTime

    • https://graph.microsoft.com/v1.0/users?$filter=startswith(displayName,'Isabella Simonsen')&$select=displayName,signInActivity
  • 用户(按日期):在此场景中,使用指定日期之前的 lastSignInDateTime 请求用户列表:

    • https://graph.microsoft.com/v1.0/users?$filter=signInActivity/lastSignInDateTime le 2019-06-01T00:00:00Z
  • 上次成功登录日期和时间(beta 版本):此方案仅在 Microsoft Graph API 的 beta 终结点上可用。 可以使用指定日期之前的 lastSuccessfulSignInDateTime 请求用户列表:

    • https://graph.microsoft.com/beta/users?$filter=signInActivity/lastSuccessfulSignInDateTime le 2019-06-01T00:00:00Z

注意

signInActivity 属性支持 $filtereqnenotgele,不支持任何其他可筛选属性 。 在列出用户时,必须指定 $select=signInActivity$filter=signInActivity,因为默认情况下不会返回 signInActivity 属性。

lastSignInDateTime 属性的注意事项

以下详细信息与 lastSignInDateTime 属性相关。

  • lastSignInDateTime 属性由 Microsoft Graph APIsignInActivity 资源类型公开。

  • 不能通过 Get-MgAuditLogDirectoryAudit cmdlet 使用该属性。

  • 每个交互式登录都会使基础数据存储更新。 通常,登录会在 6 小时内显示在相关登录报表中。

  • 若要生成 lastSignInDateTime 时间戳,必须尝试登录。 无论登录尝试是否成功,只要记录在 Microsoft Entra 登录日志中,都会生成 lastSignInDateTime 时间戳。 在以下情况下,lastSignInDateTime 属性的值可能为空:

    • 用户的上一次登录发生在 2020 年 4 月之前。
    • 受影响的用户帐户从未用于登录尝试。
  • 上次登录日期将与用户对象关联。 此值将保留,直到用户下一次登录。 更新最多可能需要 24 小时。

如何在 Microsoft Entra 管理中心调查单个用户

提示

本文中的步骤可能因开始使用的门户而略有不同。

如果需要查看用户的最新登录活动,可以在 Microsoft Entra ID 中查看用户的登录详细信息。 还可以使用上一部分所述的 Microsoft Graph 用户(按名称)方案。

  1. 至少以报告读取者身份登录到 Microsoft Entra 管理中心

  2. 浏览到“标识”>“用户”>“所有用户”。

  3. 从列表中选择用户。

  4. 在用户“概述”的我的源区域中,找到登录磁贴。

    Screenshot of the user overview page with the sign-in activity tile highlighted.

此磁贴上显示的上次登录日期和时间最多可能需要 24 小时才能更新,这意味着日期和时间可能不是最新的。 如果需要几乎实时查看活动,请选择登录磁贴上的查看所有登录链接,以查看该用户的所有登录活动。

后续步骤