如何调整现有KQL语句以查询近30天未登录服务的AAD用户
Kusto查询调整方案(获取近30天未登录企业服务用户)
实现逻辑
- 先拉取你租户下的全量有效用户列表,这里默认调用AAD内置的
IdentityInfo表,如果你有自定义的企业用户台账表,可直接替换 - 统计近30天内有成功登录记录的用户集合
- 对两个用户集合做差集匹配,最终输出无登录记录的用户
调整后完整查询代码
// 定义统计时间范围,可按需修改 let lookbackPeriod = 30d; // 1. 拉取租户全量有效用户,可按需添加过滤条件(比如只统计在职员工) let allValidUsers = IdentityInfo | where TimeGenerated > ago(1d) // 取最新的用户快照 | where AccountEnabled == true // 只保留启用的用户 | project UserPrincipalName, UserDisplayName, JobTitle, Department; // 2. 统计近30天有成功登录记录的用户 let loggedInUsers = SigninLogs | union ADFSSignInLogs | where TimeGenerated between (ago(lookbackPeriod) .. now()) | where TokenIssuerType in ('AzureAD', 'ADFederationServices') // 固定筛选可删掉原查询中的*参数判断逻辑 | extend errorCode = Status_dynamic.errorCode | where errorCode == 0 // 仅统计成功登录的记录 | distinct UserPrincipalName; // 3. 差集匹配得到未登录用户 allValidUsers | join kind=leftanti loggedInUsers on UserPrincipalName
可选适配调整
- 如果你需要筛选未登录指定应用的用户,可在
loggedInUsers的查询逻辑中添加| where AppDisplayName == "你的服务名称"筛选条件 - 原查询中的
'*'是AAD工作簿的参数占位符,如果你保留工作簿参数联动功能,可把固定筛选条件换回对应的参数判断逻辑 - 如果不需要部门、岗位等扩展信息,可删除
allValidUsers中对应project的字段
内容的提问来源于stack exchange,提问作者Airizzo
相关产品推荐
相关产品推荐

