如何检测和调查非活动用户帐户
本文内容
在大型环境中,当员工离开组织时,并不总是会删除用户帐户。 作为 IT 管理员,你希望检测和解决这些过时的用户帐户,因为它们会带来安全风险。
本文介绍了在 Microsoft Entra ID 中处理过时用户帐户的方法。
注意
本文仅适用于在 Microsoft Entra ID 中查找非活动用户帐户。 它不适用于在 Azure AD B2C 中查找非活动帐户。
先决条件
要使用 Microsoft Graph 访问 lastSignInDateTime
属性:
什么是非活动用户帐户?
非活动帐户是组织成员获取对资源的访问权限时不再需要的用户帐户。 非活动帐户的一个重要标志是,在一段时间 内未使用这些帐户登录到你的环境。 由于非活动帐户与登录活动相关联,因此可以使用帐户上次尝试登录时的时间戳来检测非活动帐户。
此方法的难点是定义一段时间 在你的环境中的含义。 例如,用户可能由于度假而在一段时间 内未登录到环境。 需要考虑未登录你的环境时的所有合法理由。 在许多组织中,非活动用户帐户的合理窗口介于 90 到 180 天之间。
上次登录日期可以提供关于用户是否仍需要访问资源的潜在见解。 它有助于确定是否仍需要组成员身份或应用访问权限,或者是否可以将其删除。 对于外部用户管理,可以确定外部用户是否仍在租户中处于活动状态或应删除。
如何查找非活动用户帐户
可以使用 Microsoft Entra 管理中心或 Microsoft 图形 API 查找非活动用户帐户。 虽然没有非活动用户帐户的内置报表,但可以使用上次登录日期和时间来确定用户帐户是否处于非活动状态。
若要查找用户的最后一次登录时间,可以在 Microsoft Entra 管理中心查看用户列表。 虽然所有用户都可以查看用户列表,但某些列和详细信息仅适用于具有相应权限的用户。
至少以报告读取者 身份登录到 Microsoft Entra 管理中心 。
浏览到“标识” “用户”>“所有用户”。
选择 管理视图 ,然后 编辑列 。
选择列表中的“+ 添加列 ”,然后选择“上次交互式登录时间 ”,最后选择“保存 ”。
现在,在所有用户列表中显示该列后,选择 添加筛选器 并使用筛选器选项为搜索设置时间范围。
选择 < = 作为运算符,然后选择日期,查找在所选日期之前的最后一次登录。
可以通过评估多个属性来检测非活动帐户。 lastSignInDateTime
属性由 Microsoft Graph API 的 signInActivity
资源类型公开 。 lastSignInDateTime 属性显示用户上次在 Microsoft Entra ID 中进行交互式登录尝试的时间。 使用此属性,可以为以下场景实现解决方案:
所有用户的上次登录日期和时间
生成所有用户上次登录日期的报告。 响应提供了所有用户的列表,以及每个用户最近一次的登录时间。
https://graph.microsoft.com/v1.0/users?$select=displayName,signInActivity
上次成功登录日期和时间
此查询类似于将最后一个登录日期添加到用户列表,并在 Microsoft Entra 管理中心按特定日期进行筛选。 可以使用指定日期之前的 lastSuccessfulSignInDateTime
或 lastSignInDateTime
请求用户列表。 此查询的响应提供用户的详细信息,但不提供用户的登录活动。 若要查看这些详细信息,请在“按名称排列的用户”方案中尝试查询。
https://graph.microsoft.com/v1.0/users?$filter=signInActivity/lastSuccessfulSignInDateTime le 2024-06-01T00:00:00Z
https://graph.microsoft.com/v1.0/users?$filter=signInActivity/lastSignInDateTime le 2024-06-01T00:00:00Z
按名称排序的用户
在此方案中,按名称搜索特定用户。 此查询的响应包括其上次登录的日期、时间和请求 ID。
请求 :
GET `https://graph.microsoft.com/v1.0/users?$filter=startswith(displayName,'Isabella Simonsen')&$select=displayName,signInActivity`
响应 :
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(displayName,signInActivity)",
"value": [
{
"displayName": "Stine Romund",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"signInActivity": {
"lastSignInDateTime": "2024-12-10T17:38:26Z",
"lastSignInRequestId": "20a94b1b-ade2-4f4e-9c55-609f7cd97600",
"lastNonInteractiveSignInDateTime": "2024-12-10T17:38:11Z",
"lastNonInteractiveSignInRequestId": "94c369e6-249e-4595-bb86-495ea9a81e00",
"lastSuccessfulSignInDateTime": "2024-12-10T17:38:26Z",
"lastSuccessfulSignInRequestId": "20a94b1b-ade2-4f4e-9c55-609f7cd97600"
}
}
]
}
lastSignInDateTime
:上次交互式登录尝试的日期和时间,包括登录失败。 如果上次登录尝试成功,则此属性的日期和时间将与 lastSuccessfulSignInDateTime
相同。
lastNonInteractiveSignInDateTime
:上次非交互式登录尝试的日期和时间。
lastSuccessfulSignInDateTime
:上次成功的交互式登录的日期和时间。
注意
signInActivity
属性支持 $filter
(eq
、ne
、not
、ge
、le
),不支持任何其他可筛选属性 。 在$select=signInActivity
时,必须指定 $filter=signInActivity
或 ,因为默认情况下不会返回 signInActivity 属性。
lastSignInDateTime 属性的注意事项
以下详细信息与 lastSignInDateTime
属性相关。
lastSignInDateTime 属性由 Microsoft Graph API 的 signInActivity 资源类型 公开。
不能通过 Get-MgAuditLogDirectoryAudit cmdlet 使用该属性。
每个交互式登录都会使基础数据存储更新。 通常,登录会在 6 小时内显示在相关登录报表中。
若要生成 lastSignInDateTime 时间戳,必须尝试登录。 无论登录尝试是否成功,只要记录在 Microsoft Entra 登录日志 中,都会生成 lastSignInDateTime 时间戳。 在以下情况下,lastSignInDateTime 属性的值可能为空:
用户的上一次登录发生在 2020 年 4 月之前。
受影响的用户帐户从未用于登录尝试。
上次登录日期将与用户对象关联。 此值将保留,直到用户下一次登录。 更新最多可能需要 24 小时。
如何在 Microsoft Entra 管理中心调查单个用户
如果需要查看用户的最新登录活动,可以在 Microsoft Entra ID 中查看用户的登录详细信息。 还可以使用上一部分 所述的 Microsoft Graph 用户(按名称) 方案。
至少以报告读取者 身份登录到 Microsoft Entra 管理中心 。
浏览到“标识” “用户”>“所有用户”。
从列表中选择用户。
在用户“概述”的我的源 区域中,找到登录 磁贴。
此磁贴上显示的上次登录日期和时间最多可能需要 24 小时才能更新,这意味着日期和时间可能不是最新的。 如果需要几乎实时查看活动,请选择“登录 ”磁贴上的查看所有登录 链接,以查看该用户的所有登录活动。
相关内容