You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Microsoft Sentinel登录日志中对提取的UserDomains过滤内外部域名?

在Microsoft Sentinel中区分内部与外部用户域名的KQL实现

你已经通过extend UserDomains = split(UserPrincipalName,'@')[1]提取出了用户域名,接下来可以通过以下几种方式区分内部、外部域名:

1. 标记域名类型(内部/外部)

如果需要在结果里直接标注每条日志的域名类型,可以用case函数匹配已知的内部域名:

// 提取域名
extend UserDomains = split(UserPrincipalName,'@')[1]
// 标记内部/外部域名
extend DomainType = case(
    UserDomains in ('contoso.com', 'contoso.cn', 'contoso.onmicrosoft.com'), '内部域名',
    '外部域名'
)

把in括号里的域名替换成你公司实际使用的内部域名(包括Azure AD租户默认的onmicrosoft.com域名),匹配到的会标记为「内部域名」,其余自动归为「外部域名」。

2. 直接过滤内部/外部域名日志

如果只需要筛选出内部域名的日志,用where配合in:

extend UserDomains = split(UserPrincipalName,'@')[1]
| where UserDomains in ('contoso.com', 'contoso.cn')

如果要筛选外部域名的日志,在in前加!取反:

extend UserDomains = split(UserPrincipalName,'@')[1]
| where UserDomains !in ('contoso.com', 'contoso.cn')

3. 处理带通配符的内部域名

如果内部包含多个子域名(比如dev.contoso.com、hr.contoso.com),可以用has_endswith匹配后缀:

extend UserDomains = split(UserPrincipalName,'@')[1]
| extend DomainType = case(
    UserDomains has_endswith '.contoso.com', '内部域名',
    '外部域名'
)

更复杂的规则可以用正则匹配,比如同时匹配.com和.cn后缀的子域名:

extend UserDomains = split(UserPrincipalName,'@')[1]
| extend DomainType = case(
    UserDomains matches regex '^.*\\.contoso\\.(com|cn)$', '内部域名',
    '外部域名'
)

内容的提问来源于stack exchange,提问作者Shabarinath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 20:10:43