收集 Microsoft Entra ID 登录日志(以前称为 Azure Active Directory)
解析器版本:26.0
本文档介绍了如何通过设置 Google Security Operations Feed 来收集 Microsoft Entra ID(以前称为 Azure Active Directory)登录日志。您可以使用两种方法配置数据提取:Azure 事件中心(推荐)或第三方 API。
准备工作
请确保您满足以下前提条件:
- Google SecOps 实例。
- 对 Microsoft Azure 门户的特权访问权限。
- Microsoft Entra ID 中的安全管理员或全局管理员角色(诊断设置需要此角色)。
- 对于第三方 API 方法,用于授予管理员同意权限的角色如下:
- 全局管理员:可以为任何 API 的任何权限授予同意书。
- 特许角色管理员:可以为任何 API 的任何权限授予同意书。
- 云应用管理员:可以针对任何 API 授予任何权限的同意,但 Microsoft Graph 应用角色(应用权限)除外。
方法 1:Azure 事件中心(推荐)
此方法通过 Azure 事件中心使用诊断设置来流式传输 Microsoft Entra ID 登录日志。Google SecOps 使用 Azure Event Hub Feed 类型直接从 Event Hub 提取日志。
创建事件中心命名空间
事件中心命名空间是一个管理容器,用于容纳一个或多个事件中心。
- 在 Azure 门户中,搜索事件中心。
- 点击 + 创建。
提供以下配置详细信息:
设置 值 订阅 选择您的 Azure 订阅 资源组 选择现有组或创建新组 命名空间名称 输入唯一名称(例如 secops-entraid-signin)位置 选择离您的 Microsoft Entra 租户最近的区域 价格层级 标准(建议用于生产环境) 吞吐量单位 从 1 开始,启用自动充气功能(推荐) 点击 Review + create(检查 + 创建)。
查看概览,然后点击创建。
等待部署完成(1-2 分钟)。
创建事件中心
- 部署命名空间后,前往事件中心命名空间。
- 在左侧导航栏中,选择实体下的事件中心。
- 点击 + 活动中心。
提供以下配置详细信息:
设置 值 名称 输入唯一名称(例如 entraid-signin-logs)分区数 40(建议采用此值,以便实现最佳的 Google SecOps 伸缩) 消息保留 7 天(建议的最低限度) 拍摄 已停用(Google SecOps 不需要) 点击创建。
获取事件中心连接字符串
Google SecOps 需要连接字符串才能向事件中心进行身份验证。
方案 A:命名空间级连接字符串(推荐)
- 前往事件中心命名空间。
- 在左侧导航栏中,选择设置下的共享访问权限政策。
- 点击默认政策 RootManageSharedAccessKey。
- 复制连接字符串 - 主密钥。
- 请妥善保存此连接字符串。
示例:
Original: Endpoint=sb://secops-entraid-signin.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abc123==;EntityPath=entraid-signin-logs Remove EntityPath: Endpoint=sb://secops-entraid-signin.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abc123==
选项 B:事件中心级连接字符串
- 前往事件中心(而非命名空间)。
- 在左侧导航栏中,选择设置下的共享访问权限政策。
- 点击 + 添加以创建新政策。
- 提供以下配置详细信息:
- 政策名称:输入一个描述性名称(例如
chronicle-read) - 权限:仅选择收听(只读权限)
- 政策名称:输入一个描述性名称(例如
- 点击创建。
- 点击新创建的政策。
- 复制连接字符串 - 主密钥。
请妥善保存此连接字符串。
配置 Microsoft Entra ID 诊断设置
- 以至少安全管理员身份登录 Microsoft Entra 管理中心。
- 依次前往 Entra ID > 监控和运行状况 > 诊断设置。
- 点击 + 添加诊断设置。
- 提供以下配置详细信息:
- 诊断设置名称:输入一个描述性名称(例如
signin-logs-to-eventhub)。 - 在日志部分,选择要导出的登录日志类别:
- SignInLogs:交互式用户登录。
- NonInteractiveUserSignInLogs:非交互式用户登录(推荐)。
- ServicePrincipalSignInLogs:服务主账号登录信息(可选)。
- ManagedIdentitySignInLogs:托管式身份登录信息(可选)。
- ADFSSignInLogs:AD FS 登录日志(可选,如果使用 AD FS,则需要提供)。
- RiskyUsers:Microsoft Entra ID Protection 标记为有风险的用户(可选)。
- UserRiskEvents:有风险的登录事件详情(可选)。
- 在目标详细信息部分中,选择流式传输到事件中心。
- 订阅:选择包含 Event Hub 命名空间的订阅。
- 事件中心命名空间:选择您创建的命名空间(例如
secops-entraid-signin)。 - 事件中心名称:选择您创建的事件中心(例如
entraid-signin-logs)。 - 事件中心政策名称:选择 RootManageSharedAccessKey。
- 诊断设置名称:输入一个描述性名称(例如
点击保存。
(可选)配置 Azure Blob Storage 以进行检查点设置
Google SecOps 可以使用 Azure Blob Storage 来存储事件中心检查点,这些检查点用于跟踪已处理的事件。这样可以防止在 Feed 暂时中断时重复提取数据。
创建用于检查点设置的存储账号
- 在 Azure 门户中,搜索存储账号。
- 点击 + 创建。
提供以下配置详细信息:
设置 值 订阅 选择您的 Azure 订阅 资源组 使用与事件中心相同的资源组 存储账号名称 输入唯一名称(例如 secopsaadsignin)区域 与事件中心位于同一区域 性能 标准 冗余 LRS(本地冗余存储) 点击 Review + create(检查 + 创建)。
点击创建。
创建 Blob 容器
- 前往您创建的存储账号。
- 在左侧导航栏中,选择数据存储区下的容器。
- 点击 + 容器。
- 提供以下配置详细信息:
- 名称:输入
checkpoints - 公开访问权限级别:私密(不允许匿名访问)
- 名称:输入
- 点击创建。
获取存储账号凭据
- 在存储账号中,选择安全性 + 网络下的访问密钥。
- 点击显示密钥。
- 复制并保存:
- 存储账号名称:存储账号的名称。
- 密钥 1:访问密钥值。
(可选)创建专用消费者群组
默认情况下,事件中心提供名为 $Default 的消费者群组。对于生产环境,建议为 Google SecOps 创建专用消费者群组。
- 前往事件中心(而非命名空间)。
- 在左侧导航栏中,选择实体下的消费群体。
- 点击 + 消费群体。
- 提供以下配置详细信息:
- 名称:输入一个描述性名称(例如
chronicle)
- 名称:输入一个描述性名称(例如
点击创建。
在 Google SecOps 中配置 Feed 以注入 Microsoft Entra ID 登录日志
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 在下一页上,点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称(例如
Microsoft Entra ID Sign-In Logs - Event Hub)。 - 选择 Microsoft Azure Event Hub 作为来源类型。
- 选择 Microsoft Azure AD 作为日志类型。
- 点击下一步。
为以下输入参数指定值:
- 事件中心连接字符串:输入您之前捕获的事件中心连接字符串。
如果使用命名空间级连接字符串:
- 请确保您已移除
EntityPath参数。 - 您还必须在下一个字段中提供事件中心名称。
如果使用 Event Hub 级连接字符串:
- 按原样使用连接字符串(包括
EntityPath)。 事件中心名称字段可以留空。
- 事件中心名称:输入事件中心名称(例如
entraid-signin-logs)。
如果使用命名空间级连接字符串,则为必需属性。如果使用事件中心级连接字符串,则为可选。
- 事件中心名称:输入事件中心名称(例如
消费群组(可选):输入消费群组名称。
留空可使用默认的
$Default使用方群组。如果您创建了专用消费者群组,请输入其名称(例如
chronicle)。Blob Storage 容器名称(可选):对于检查点,请输入容器名称(例如
checkpoints)。
如果提供 Blob 存储空间用于检查点设置:
- Azure 存储账号名称:输入来自检查点配置的存储账号名称。
Azure 存储账号密钥:输入来自检查点配置的访问密钥。
资产命名空间:资产命名空间。
注入标签:要应用于此 Feed 中事件的标签。
点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
方法 2:第三方 API
此方法使用 Microsoft Graph API 直接从 Microsoft 租户检索 Microsoft Entra ID 登录日志。
配置 IP 许可名单
在创建 Feed 之前,您必须在 Microsoft Azure 网络设置或条件访问政策中将 Google SecOps IP 范围列入许可名单。
获取 Google SecOps IP 范围
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 记下 Feed 创建界面中显示的 IP 范围。
- 或者,您也可以使用 Feed Management API 以编程方式检索 IP 范围。
为工作负载身份配置条件访问权限(如果需要)
如果您的组织使用按位置限制访问权限的条件访问政策,请执行以下操作:
- 在 Microsoft Entra 管理中心内,依次前往保护 > 条件访问 > 命名位置。
- 点击 + 新地点。
- 提供以下配置详细信息:
- 名称:输入
Google SecOps IP Ranges。 - 标记为可信位置:可选,具体取决于您的安全政策。
- IP 范围:以 CIDR 表示法添加每个 Google SecOps IP 范围。
- 名称:输入
- 点击创建。
- 前往条件访问> 政策。
- 对于适用于工作负载身份的任何政策,请为
Google SecOps IP Ranges命名位置或特定服务正文配置排除对象。
配置 Microsoft Entra ID API 访问权限
创建应用注册
- 登录 Microsoft Entra 管理中心或 Azure 门户。
- 依次前往身份 > 应用 > 应用注册。
- 点击 New registration(新注册)。
提供以下配置详细信息:
- 名称:输入一个描述性名称(例如
Google SecOps Sign-In Logs Integration)。 - 支持的账号类型:选择仅此组织目录中的账号(单租户)。
- 重定向 URI:留空(服务正文身份验证不需要此字段)。
- 名称:输入一个描述性名称(例如
点击注册。
注册后,复制并保存以下值:
- 应用(客户端)ID
- 目录(租户)ID
配置 API 权限
此集成需要以下 Microsoft Graph 应用权限:
- 在应用注册中,前往 API 权限。
- 点击添加权限。
- 依次选择 Microsoft Graph > 应用权限。
- 选择以下权限:
- AuditLog.Read.All:读取登录日志所需的权限。
- Directory.Read.All:Microsoft Graph API 需要此权限才能访问登录日志(已知问题)。
- SecurityEvents.Read.All:Google Security Operations 需要此权限。
- 点击添加权限。
- 点击为 [您的组织]授予管理员同意书。
- 验证状态列是否针对所有三项权限显示已授予 [您的组织]。
| 权限 | 类型 | 说明 |
|---|---|---|
| AuditLog.Read.All | 应用 | 读取所有登录和审核日志数据 |
| Directory.Read.All | 应用 | 读取目录数据(API 访问权限必需) |
| SecurityEvents.Read.All | 应用 | 读取安全事件 |
创建客户端密钥
- 前往证书和密钥。
- 点击 New client secret(新建客户端密钥)。
提供以下配置详细信息:
- 说明:输入描述性名称(例如
Google SecOps Feed)。 - 失效:选择失效期限。
- 说明:输入描述性名称(例如
点击 Add(添加)。
重要提示:请立即复制客户端密钥值。此值仅显示一次,以后无法再检索。
在创建 Feed 之前验证 API 访问权限
在创建 Google SecOps Feed 之前,请验证服务正文是否可以成功进行身份验证并访问 Microsoft Graph API。
使用 PowerShell 测试身份验证
# Replace with your actual values $tenantId = "your-tenant-id" $clientId = "your-client-id" $clientSecret = "your-client-secret" # Token request parameters (must be lowercase) $tokenBody = @{ grant_type = "client_credentials" client_id = $clientId client_secret = $clientSecret scope = "https://graph.microsoft.com/.default" } # Request access token $tokenEndpoint = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token" $tokenResponse = Invoke-RestMethod -Method Post -Uri $tokenEndpoint -Body $tokenBody -ContentType "application/x-www-form-urlencoded" if ($tokenResponse.access_token) { Write-Host "✓ Successfully obtained access token" -ForegroundColor Green # Test API call to sign-ins endpoint $apiUrl = "https://graph.microsoft.com/v1.0/auditLogs/signIns?`$top=1" $headers = @{ Authorization = "Bearer $($tokenResponse.access_token)" } try { $signInResponse = Invoke-RestMethod -Method Get -Uri $apiUrl -Headers $headers Write-Host "✓ Successfully accessed sign-ins API" -ForegroundColor Green Write-Host "Sample sign-in log retrieved successfully" -ForegroundColor Green } catch { Write-Host "✗ Failed to access sign-ins API" -ForegroundColor Red Write-Host "Error: $($_.Exception.Message)" -ForegroundColor Red } } else { Write-Host "✗ Failed to obtain access token" -ForegroundColor Red }预期输出:
✓ Successfully obtained access token ✓ Successfully accessed sign-ins API Sample sign-in log retrieved successfully
使用 curl 测试身份验证
# Replace with your actual values TENANT_ID="your-tenant-id" CLIENT_ID="your-client-id" CLIENT_SECRET="your-client-secret" # Request access token curl -X POST "https://login.microsoftonline.com/$TENANT_ID/oauth2/v2.0/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=client_credentials" \ -d "client_id=$CLIENT_ID" \ -d "client_secret=$CLIENT_SECRET" \ -d "scope=https://graph.microsoft.com/.default" # Test API access curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ "https://graph.microsoft.com/v1.0/auditLogs/signIns?\$top=1"
在 Google SecOps 中配置 Feed 以注入 Microsoft Entra ID 登录日志
设置 Feed
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 在下一页上,点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称(例如
Microsoft Entra ID Sign-In Logs)。 - 选择第三方 API 作为来源类型。
- 选择 Microsoft Azure AD 作为日志类型。
- 点击下一步。
配置 Feed 参数
为以下输入参数指定值:
- OAuth 客户端 ID:应用注册中的应用(客户端)ID。
- OAuth 客户端密钥:您之前复制的客户端密钥值。
- 租户 ID:应用注册中的 Microsoft 租户 ID(UUID 格式,例如
0fc279f9-fe30-41be-97d3-abe1d7681418)。 API 完整路径:Microsoft Graph REST API 端点网址:
graph.microsoft.com/v1.0/auditLogs/signInsAPI 身份验证端点:Microsoft Active Directory 身份验证端点:
login.microsoftonline.com高级选项:
- Feed 名称:用于标识 Feed 的预填充值。
- 来源类型:第三方 API(用于将日志收集到 Google SecOps 中的机制)。
- 素材资源命名空间:Feed 将关联的素材资源命名空间。
- 提取标签:系统会将标签添加到相应 Feed 中的所有事件。
- 点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
区域端点
对于主权云中的 Microsoft Entra ID 部署,请使用相应的区域端点:
| 云环境 | API 完整路径 | API 身份验证端点 |
|---|---|---|
| 全球 | graph.microsoft.com/v1.0/auditLogs/signIns |
login.microsoftonline.com |
| 美国政府 L4 | graph.microsoft.us/v1.0/auditLogs/signIns |
login.microsoftonline.us |
| 美国政府 L5 (DOD) | dod-graph.microsoft.us/v1.0/auditLogs/signIns |
login.microsoftonline.us |
| 中国(世纪互联) | microsoftgraph.chinacloudapi.cn/v1.0/auditLogs/signIns |
login.chinacloudapi.cn |
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
activityDateTime |
principal.event_timestamp |
从 activityDateTime 字段解析。如果该字段未采用预期的“yyyy-MM-ddTHH:mm:ss.SSSZ”格式或“ISO8601”格式,解析器将尝试其他格式,例如“MM/dd/yyyy HH:mm:ss A”或“MM/d/yyyy HH:mm:ss A”。 |
activityDisplayName |
security_result.summary |
直接从 activityDisplayName 映射。 |
additionalDetails.0.value |
network.http.user_agent |
直接从 additionalDetails.0.value 映射。 |
additionalDetails.1.key |
target.resource.attribute.labels.key |
直接从 additionalDetails.1.key 映射。 |
additionalDetails.1.value |
target.resource.attribute.labels.value |
直接从 additionalDetails.1.value 映射。 |
additionalInfo.[].Key |
network.http.user_agent,target.url |
如果 Key 为 userAgent,则将 Value 映射到 network.http.user_agent 和 network.http.parsed_user_agent。如果 Key 为 alertUrl,则将 Value 映射到 target.url。 |
additionalInfo.[].Value |
network.http.user_agent,target.url |
如果 Key 为 userAgent,则将 Value 映射到 network.http.user_agent 和 network.http.parsed_user_agent。如果 Key 为 alertUrl,则将 Value 映射到 target.url。 |
am_category |
metadata.description |
直接从 am_category 映射。 |
am_tenantId |
metadata.product_deployment_id |
直接从 am_tenantId 映射。 |
appId |
target.resource.attribute.labels.value |
直接从 appId 映射,标签键为“应用 ID”。 |
appDisplayName |
target.application |
直接从 appDisplayName 映射。 |
appliedConditionalAccessPolicies.[].displayName |
security_result.[].rule_name,about.[].user.user_display_name |
直接从 appliedConditionalAccessPolicies.[].displayName 映射。 |
appliedConditionalAccessPolicies.[].enforcedGrantControls |
security_result.[].rule_labels.value |
直接从 appliedConditionalAccessPolicies.[].enforcedGrantControls 映射,标签键为“applied_conditional_access_policies_enforced_grant_controls”。 |
appliedConditionalAccessPolicies.[].enforcedSessionControls |
security_result.[].rule_labels.value |
直接从 appliedConditionalAccessPolicies.[].enforcedSessionControls 映射,标签键为“applied_conditional_access_policies_enforced_session_controls”。 |
appliedConditionalAccessPolicies.[].id |
security_result.[].rule_id,about.[].user.userid |
直接从 appliedConditionalAccessPolicies.[].id 映射。 |
appliedConditionalAccessPolicies.[].result |
security_result.[].detection_fields.value,about.[].labels.value |
直接从 appliedConditionalAccessPolicies.[].result 映射,标签键为“Result”。 |
authenticationDetails.[].authenticationMethod |
security_result.[].detection_fields.value |
直接从 authenticationDetails.[].authenticationMethod 映射,标签键为“authenticationMethod”。 |
authenticationDetails.[].authenticationMethodDetail |
security_result.[].detection_fields.value |
直接从 authenticationDetails.[].authenticationMethodDetail 映射,标签键为“authenticationMethodDetail”。 |
authenticationDetails.[].authenticationStepDateTime |
security_result.[].detection_fields.value |
直接从 authenticationDetails.[].authenticationStepDateTime 映射,标签键为“authenticationStepDateTime”。 |
authenticationDetails.[].authenticationStepRequirement |
security_result.[].detection_fields.value |
直接从 authenticationDetails.[].authenticationStepRequirement 映射,标签键为“authenticationStepRequirement”。 |
authenticationDetails.[].authenticationStepResultDetail |
security_result.[].detection_fields.value |
直接从 authenticationDetails.[].authenticationStepResultDetail 映射,标签键为“authenticationStepResultDetail”。 |
authenticationDetails.[].succeeded |
security_result.action |
如果值为“true”,则为 ALLOW;否则为 BLOCK。 |
authenticationRequirement |
additional.fields.value.string_value |
直接从 authenticationRequirement 映射,标签键为“AuthenticationRequirement”。 |
authenticationRequirementPolicies.[].detail |
security_result.detection_fields.value |
直接从 authenticationRequirementPolicies.[].detail 映射,标签键为“detail”。 |
authenticationRequirementPolicies.[].requirementProvider |
security_result.detection_fields.value |
直接从 authenticationRequirementPolicies.[].requirementProvider 映射,标签键为“requirementProvider”。 |
callerIpAddress |
principal.ip,principal.asset.ip |
直接从 callerIpAddress 映射。 |
category |
metadata.description |
直接从 category 映射。 |
clientAppUsed |
principal.application |
直接从 clientAppUsed 映射。 |
conditionalAccessStatus |
additional.fields.value.string_value |
直接从 conditionalAccessStatus 映射,标签键为“conditionalAccessStatus”。 |
correlationId |
network.session_id,security_result.detection_fields.value |
直接从 correlationId 映射。也可用作 security_result.detection_fields.value,标签键为“CorrelationId”。 |
createdDateTime |
when |
when 字段派生自 createdDateTime 字段。日期和时间使用 grok 从 createdDateTime 字段中提取,然后合并以形成 when 字段。 |
deviceDetail.browser |
network.http.user_agent |
直接从 deviceDetail.browser 映射。 |
deviceDetail.deviceId |
principal.asset.asset_id,principal.asset_id |
直接从 deviceDetail.deviceId 映射,并带有“设备 ID:”前缀。 |
deviceDetail.displayName |
principal.asset.hostname |
直接从 deviceDetail.displayName 映射。 |
deviceDetail.isCompliant |
principal.asset.attribute.labels.value |
直接从 deviceDetail.isCompliant 映射,标签键为“isCompliant”。 |
deviceDetail.isManaged |
principal.asset.attribute.labels.value |
直接从 deviceDetail.isManaged 映射,标签键为“isManaged”。 |
deviceDetail.operatingSystem |
principal.platform_version |
直接从 deviceDetail.operatingSystem 映射。 |
deviceDetail.trustType |
principal.asset.attribute.labels.value |
直接从 deviceDetail.trustType 映射,标签键为“trustType”。 |
durationMs |
additional.fields.value.string_value |
直接从 durationMs 映射,标签键为“durationMs”。 |
event.id |
- | 未按说明(第 3 点)进行映射。 |
id |
metadata.product_log_id |
直接从 id 映射。 |
identity |
target.user.user_display_name |
如果 identity 与 userId 不同且不是电子邮件地址,则直接从 identity 映射。 |
initiatedBy.user.displayName |
principal.user.user_display_name |
直接从 initiatedBy.user.displayName 映射。 |
initiatedBy.user.id |
principal.user.userid,principal.user.windows_sid |
直接从 initiatedBy.user.id 映射。 |
initiatedBy.user.ipAddress |
principal.ip,principal.asset.ip |
直接从 initiatedBy.user.ipAddress 映射。 |
initiatedBy.user.userPrincipalName |
principal.user.email_addresses,principal.user.userid |
直接从 initiatedBy.user.userPrincipalName 映射。如果它是电子邮件地址,则映射到 email_addresses,否则映射到 userid。 |
Level |
security_result.severity_details,level |
直接从 Level 映射。 |
level |
security_result.severity_details,security_result.severity |
直接从 level 映射。在转换为大写后,还映射到 security_result.severity。针对“信息”“信息性”“0”“4”“警告”“1”“3”“错误”“2”和“严重”值进行特殊处理。 |
location.city |
principal.location.city |
直接从 location.city 映射。 |
location.countryOrRegion |
principal.location.country_or_region |
直接从 location.countryOrRegion 映射。 |
location.geoCoordinates.altitude |
additional.fields.value.string_value |
直接从 location.geoCoordinates.altitude 映射,标签键为“location_geoCoordinates_altitude”。 |
location.geoCoordinates.latitude |
principal.location.region_latitude,principal.location.region_coordinates.latitude |
直接从 location.geoCoordinates.latitude 映射。 |
location.geoCoordinates.longitude |
principal.location.region_longitude,principal.location.region_coordinates.longitude |
直接从 location.geoCoordinates.longitude 映射。 |
location.state |
principal.location.state |
直接从 location.state 映射。 |
location |
principal.location.name |
直接从 location 映射。 |
log_type |
metadata.log_type |
直接从 log_type 映射。 |
networkLocationDetails.[].networkNames |
additional.fields.value.string_value |
来自 networkLocationDetails.[].networkNames 的串联值,标签键为“networkName {index}”。 |
networkLocationDetails.[].networkType |
security_result.detection_fields.value,additional.fields.value.string_value |
直接从 networkLocationDetails.[].networkType 映射,标签键为“networkType”。还可用作 additional.fields.value.string_value,标签键为“networkType {index}”。 |
operationName |
event_type |
如果 operationName 为“登录活动”,则为 USER_LOGIN。如果 operationName 是“向群组添加成员”,则为 USER_CHANGE_PERMISSIONS。 |
operationType |
security_result.action_details |
直接从 operationType 映射。 |
properties.activity |
security_result.summary |
直接从 properties.activity 映射。 |
properties.activityDateTime |
when |
从 properties.activityDateTime 字段解析。如果该字段未采用预期的“yyyy-MM-ddTHH:mm:ss.SSSZ”格式或“ISO8601”格式,解析器将尝试其他格式,例如“MM/dd/yyyy HH:mm:ss A”或“MM/d/yyyy HH:mm:ss A”。 |
properties.activityDisplayName |
security_result.summary |
直接从 properties.activityDisplayName 映射。 |
properties.additionalInfo |
network.http.user_agent,target.url |
解析为 JSON,如果键是 userAgent,则将值映射到 network.http.user_agent 和 network.http.parsed_user_agent。如果键是 alertUrl,则将值映射到 target.url。 |
properties.appliedConditionalAccessPolicies.[].displayName |
security_result.[].rule_name |
直接从 properties.appliedConditionalAccessPolicies.[].displayName 映射。 |
properties.appliedConditionalAccessPolicies.[].enforcedGrantControls |
security_result.[].rule_labels.value |
直接从 properties.appliedConditionalAccessPolicies.[].enforcedGrantControls 映射,标签键为“applied_conditional_access_policies_enforced_grant_controls”。 |
properties.appliedConditionalAccessPolicies.[].enforcedSessionControls |
security_result.[].rule_labels.value |
直接从 properties.appliedConditionalAccessPolicies.[].enforcedSessionControls 映射,标签键为“applied_conditional_access_policies_enforced_session_controls”。 |
properties.appliedConditionalAccessPolicies.[].id |
security_result.[].rule_id |
直接从 properties.appliedConditionalAccessPolicies.[].id 映射。 |
properties.appliedConditionalAccessPolicies.[].result |
security_result.[].detection_fields.value |
直接从 properties.appliedConditionalAccessPolicies.[].result 映射,标签键为“Result”。 |
properties.appId |
appId |
直接从 properties.appId 映射。 |
properties.appDisplayName |
target.application |
直接从 properties.appDisplayName 映射。 |
properties.authenticationDetails.[].authenticationMethod |
security_result.detection_fields.value |
直接从 properties.authenticationDetails.[].authenticationMethod 映射,标签键为“authenticationMethod”。 |
properties.authenticationDetails.[].authenticationMethodDetail |
security_result.detection_fields.value |
直接从 properties.authenticationDetails.[].authenticationMethodDetail 映射,标签键为“authenticationMethodDetail”。 |
properties.authenticationDetails.[].authenticationStepDateTime |
security_result.detection_fields.value |
直接从 properties.authenticationDetails.[].authenticationStepDateTime 映射,标签键为“authenticationStepDateTime”。 |
properties.authenticationDetails.[].authenticationStepRequirement |
security_result.detection_fields.value |
直接从 properties.authenticationDetails.[].authenticationStepRequirement 映射,标签键为“authenticationStepRequirement”。 |
properties.authenticationDetails.[].authenticationStepResultDetail |
security_result.detection_fields.value |
直接从 properties.authenticationDetails.[].authenticationStepResultDetail 映射,标签键为“authenticationStepResultDetail”。 |
properties.authenticationRequirement |
additional.fields.value.string_value |
直接从 properties.authenticationRequirement 映射,标签键为“AuthenticationRequirement”。 |
properties.authenticationRequirementPolicies.[].detail |
security_result.detection_fields.value |
直接从 properties.authenticationRequirementPolicies.[].detail 映射,标签键为“detail”。 |
properties.authenticationRequirementPolicies.[].requirementProvider |
security_result.detection_fields.value |
直接从 properties.authenticationRequirementPolicies.[].requirementProvider 映射,标签键为“requirementProvider”。 |
properties.clientAppUsed |
principal.application |
直接从 properties.clientAppUsed 映射。 |
properties.conditionalAccessStatus |
additional.fields.value.string_value |
直接从 properties.conditionalAccessStatus 映射,标签键为“conditionalAccessStatus”。 |
properties.crossTenantAccessType |
additional.fields.value.string_value |
直接从 properties.crossTenantAccessType 映射,标签键为“crossTenantAccessType”。 |
properties.detectedDateTime |
additional.fields.value.string_value |
直接从 properties.detectedDateTime 映射,标签键为“detectedDateTime”。 |
properties.detectionTimingType |
additional.fields.value.string_value |
直接从 properties.detectionTimingType 映射,标签键为“detectionTimingType”。 |
properties.homeTenantId |
additional.fields.value.string_value |
直接从 properties.homeTenantId 映射,标签键为“homeTenantId”。 |
properties.id |
metadata.product_log_id |
直接从 properties.id 映射。 |
properties.initiatedBy.user.displayName |
principal.user.user_display_name |
直接从 properties.initiatedBy.user.displayName 映射。 |
properties.initiatedBy.user.id |
principal.user.windows_sid |
直接从 properties.initiatedBy.user.id 映射。 |
properties.initiatedBy.user.ipAddress |
principal.ip,principal.asset.ip |
直接从 properties.initiatedBy.user.ipAddress 映射。 |
properties.initiatedBy.user.userPrincipalName |
principal.user.email_addresses,principal.user.userid |
直接从 properties.initiatedBy.user.userPrincipalName 映射。如果它是电子邮件地址,则映射到 email_addresses,否则映射到 userid。 |
properties.ipAddress |
principal.ip,principal.asset.ip |
直接从 properties.ipAddress 映射。 |
properties.isGuest |
additional.fields.value.string_value |
直接从 properties.isGuest 映射,标签键为“isGuest”。 |
properties.isDeleted |
additional.fields.value.string_value |
直接从 properties.isDeleted 映射,标签键为“isDeleted”。 |
properties.isProcessing |
additional.fields.value.string_value |
直接从 properties.isProcessing 映射,标签键为“isProcessing”。 |
properties.lastUpdatedDateTime |
additional.fields.value.string_value |
直接从 properties.lastUpdatedDateTime 映射,标签键为“lastUpdatedDateTime”。 |
properties.location.city |
principal.location.city |
直接从 properties.location.city 映射。 |
properties.location.countryOrRegion |
principal.location.country_or_region |
直接从 properties.location.countryOrRegion 映射。 |
properties.location.geoCoordinates.latitude |
principal.location.region_latitude,principal.location.region_coordinates.latitude |
直接从 properties.location.geoCoordinates.latitude 映射。 |
properties.location.geoCoordinates.longitude |
principal.location.region_longitude,principal.location.region_coordinates.longitude |
直接从 properties.location.geoCoordinates.longitude 映射。 |
properties.location.state |
principal.location.state |
直接从 properties.location.state 映射。 |
properties.networkLocationDetails.[].networkNames |
additional.fields.value.string_value |
将 properties.networkLocationDetails.[].networkNames 中的值与标签键“properties networkName {index}”串联。 |
properties.networkLocationDetails.[].networkType |
additional.fields.value.string_value |
直接从 properties.networkLocationDetails.[].networkType 映射,标签键为“properties networkType {index}”。 |
properties.riskEventType |
additional.fields.value.string_value |
直接从 properties.riskEventType 映射,标签键为“riskEventType”。 |
properties.riskLastUpdatedDateTime |
additional.fields.value.string_value |
直接从 properties.riskLastUpdatedDateTime 映射,标签键为“riskLastUpdatedDateTime”。 |
properties.riskLevel |
additional.fields.value.string_value |
直接从 properties.riskLevel 映射,标签键为“riskLevel”。 |
properties.riskLevelDuringSignIn |
additional.fields.value.string_value |
直接从 properties.riskLevelDuringSignIn 映射,标签键为“riskLevelDuringSignIn”。 |
properties.riskState |
additional.fields.value.string_value |
直接从 properties.riskState 映射,标签键为“riskState”。 |
properties.riskDetail |
additional.fields.value.string_value |
直接从 properties.riskDetail 映射,标签键为“riskDetail”。 |
properties.riskType |
additional.fields.value.string_value |
直接从 properties.riskType 映射,标签键为“riskType”。 |
properties.source |
additional.fields.value.string_value |
直接从 properties.source 映射,标签键为“source”。 |
properties.targetResources.0.id |
target.user.product_object_id |
直接从 properties.targetResources.0.id 映射。 |
properties.targetResources.modifiedProperties.0.newValue |
target.group.product_object_id |
直接从 properties.targetResources.modifiedProperties.0.newValue 映射。 |
properties.tokenIssuerType |
additional.fields.value.string_value |
直接从 properties.tokenIssuerType 映射,标签键为“tokenIssuerType”。 |
properties.userAgent |
network.http.user_agent,network.http.parsed_user_agent |
直接从 properties.userAgent 映射。 |
properties.userDisplayName |
target.user.user_display_name |
直接从 properties.userDisplayName 映射。 |
properties.userId |
target.user.product_object_id |
直接从 properties.userId 映射。 |
properties.userPrincipalName |
target.user.userid,target.user.email_addresses |
直接从 properties.userPrincipalName 映射。如果它是电子邮件地址,则映射到 email_addresses,否则映射到 userid。 |
result |
security_result.action,security_result.action_details |
如果 result 为“success”,则为 ALLOW。 |
resultDescription |
security_result.description |
直接从 resultDescription 映射。 |
resultSignature |
additional.fields.value.string_value |
直接从 resultSignature 映射,标签键为“resultSignature”。 |
resultType |
security_result.rule_id、action、security_result.summary |
如果 resultType 为“0”,则 ALLOW 为“Successful login occurred”。否则,为 BLOCK 和“登录失败”。 |
resourceId |
target.resource.id,target.resource.product_object_id |
直接从 resourceId 映射。 |
resourceDisplayName |
target.resource.name,appDisplayName |
直接从 resourceDisplayName 映射。 |
riskDetail |
additional.fields.value.string_value |
直接从 riskDetail 映射,标签键为“riskDetail”。 |
riskEventTypes.[]. |
additional.fields.value.string_value,additional.fields.value.list_value.values.string_value |
值会添加到 additional.fields 中以“riskEventTypes”为键的列表中。此外,每个值都会作为单独的字段添加到 additional.fields 中,键为“riskEventType”。 |
riskEventTypes_v2.[]. |
additional.fields.value.list_value.values.string_value |
值会添加到 additional.fields 中以“riskEventTypes_v2”为键的列表中。 |
riskLevelAggregated |
additional.fields.value.string_value |
直接从 riskLevelAggregated 映射,标签键为“riskLevelAggregated”。 |
riskLevelDuringSignIn |
additional.fields.value.string_value |
直接从 riskLevelDuringSignIn 映射,标签键为“riskLevelDuringSignIn”。 |
riskState |
additional.fields.value.string_value |
直接从 riskState 映射,标签键为“riskState”。 |
status.additionalDetails |
security_result.description |
直接从 status.additionalDetails 映射。 |
status.errorCode |
security_result.rule_id,errorCode |
直接从 status.errorCode 映射。 |
target.displayName |
resourceDisplayName |
直接从 target.displayName 映射。 |
target.id |
resourceId |
直接从 target.id 映射。 |
target.modifiedProperties.[].displayName |
target.resource.attribute.labels.key |
直接从 target.modifiedProperties.[].displayName 映射。 |
target.modifiedProperties.[].newValue |
target.resource.attribute.labels.value,target.resource.product_object_id |
直接从 target.modifiedProperties.[].newValue 映射。 |
target.modifiedProperties.[].oldValue |
target.resource.attribute.labels.value |
直接从 target.modifiedProperties.[].oldValue 映射。 |
target.type |
target.resource.type |
直接从 target.type 映射。 |
tenantId |
metadata.product_deployment_id |
直接从 tenantId 映射。 |
time |
when |
when 字段派生自 time 字段。日期和时间使用 grok 从 time 字段中提取,然后合并以形成 when 字段。 |
userAgent |
network.http.user_agent,network.http.parsed_user_agent |
直接从 userAgent 映射。 |
userDisplayName |
target.user.user_display_name |
直接从 userDisplayName 映射。 |
userId |
target.user.product_object_id |
直接从 userId 映射。 |
userPrincipalName |
target.user.userid、principal.administrative_domain、target.user.email_addresses |
直接从 userPrincipalName 映射。如果它是电子邮件地址,则会映射到 email_addresses,并提取网域部分映射到 principal.administrative_domain。否则,它会映射到 userid。 |
| (解析器逻辑) | event.idm.is_alert,event.idm.is_significant |
如果级别为“严重”,则设置为 true。 |
| (解析器逻辑) | event.idm.read_only_udm.metadata.event_type |
如果 has_target_user 为“true”,则设置为“USER_LOGIN”。如果 has_principal_user 为“true”,则设置为“USER_UNCATEGORIZED”。如果 has_principal 为“true”,则设置为“STATUS_UPDATE”。否则,设置为“GENERIC_EVENT”。 |
| (解析器逻辑) | event.idm.read_only_udm.metadata.vendor_name |
设置为“Microsoft”。 |
| (解析器逻辑) | event.idm.read_only_udm.metadata.product_name |
设置为“Azure AD”。 |
| (解析器逻辑) | event.idm.read_only_udm.extensions.auth.type |
设置为“SSO”。 |
| (解析器逻辑) | event.idm.read_only_udm.extensions.auth.mechanism |
如果 isInteractive 为“true”,则设置为“INTERACTIVE”。否则,请设置为“MECHANISM_OTHER”。 |
| (解析器逻辑) | security_result.action |
如果结果为成功,则设置为 ALLOW。 |
| (解析器逻辑) | security_result.action |
如果 resultType 为 0,则设置为 ALLOW。 |
| (解析器逻辑) | security_result.action |
如果 resultType 不为 0 且不为“”,则设置为 BLOCK。 |
| (解析器逻辑) | security_result.category |
如果 resultType 不为 0 且不为“”,则设置为“AUTH_VIOLATION”。 |
| (解析器逻辑) | security_result.description |
如果 operationName 为“将成员添加到群组”,且结果为“成功”,则设置为“群组成员资格已修改”。 |
| (解析器逻辑) | security_result.priority |
如果 properties.riskLevelDuringSignIn 为“medium”,则设置为“MEDIUM_PRIORITY”。 |
| (解析器逻辑) | security_result.summary |
如果 resultType 为 0,则设置为“成功登录”。 |
| (解析器逻辑) | security_result.summary |
如果 resultType 不为 0 且不为“”,则设置为“Failed login occurred”。 |
| (解析器逻辑) | security_result.summary |
设置为 properties.activityDisplayName(如果存在)。 |
| (解析器逻辑) | security_result.severity |
如果级别为“信息”“信息性”“0”或“4”,则设置为 INFORMATIONAL。如果级别为“警告”“1”或“3”,则设置为“中”。如果级别为“Error”或“2”,则设置为 ERROR。如果级别为“严重”,则设置为 CRITICAL。 |
| (解析器逻辑) | security_result.severity |
如果 resultType 不为 0 且不为“”,则设置为 ERROR。 |