收集 Azure MDM Intune 日志
本文档介绍了如何将 Microsoft Intune 日志收集到 Google Security Operations。您可以使用以下三种方法配置数据提取:Azure Event Hub(推荐)、第三方 API 或 Microsoft Azure Blob Storage V2。
Microsoft Intune 是一种基于云的端点管理解决方案,可管理用户对组织资源的访问权限,并简化移动设备、台式机和虚拟端点等各种设备上的应用和设备管理。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- 对 Microsoft Azure 门户的特权访问权限
- 拥有 Intune 管理员或 Global Administrator Microsoft Entra 角色的用户(针对 Intune 租户)
- 租户的有效 Intune 许可
方法 1:Azure 事件中心(推荐)
此方法通过启用了捕获功能的 Azure 事件中心来流式传输 Intune 日志,并将数据写入 Azure Blob Storage。然后,Google SecOps 使用 Azure Blob Storage V2 Feed 类型从 Blob 存储中提取日志。
配置 Azure 存储账号
创建存储账号
- 在 Azure 门户中,搜索存储账号。
- 点击 + 创建。
提供以下配置详细信息:
设置 值 订阅 选择您的 Azure 订阅 资源组 选择现有组或创建新组 存储账号名称 输入唯一名称(例如 secopsintuneeh)区域 选择离您的事件中心命名空间最近的区域 性能 标准(推荐) 冗余 LRS(本地冗余存储)或 GRS(地理位置冗余存储) 点击 Review + create(检查 + 创建)。
查看概览,然后点击创建。
等待部署完成。
获取存储账号凭据
- 前往您创建的存储账号。
- 在左侧导航栏中,选择安全性 + 网络下的访问密钥。
- 点击显示密钥。
- 复制并保存以下内容:
- 存储账号名称
- 密钥 1 或密钥 2:共享访问密钥。
创建事件中心命名空间和事件中心
创建事件中心命名空间
- 在 Azure 门户中,搜索事件中心。
- 点击 + 创建。
提供以下配置详细信息:
设置 值 订阅 选择您的 Azure 订阅 资源组 选择与存储账号相同的资源组 命名空间名称 输入唯一名称(例如 secops-intune-logs)位置 选择与存储账号相同的区域 价格层级 标准(对于事件中心捕获是必需的) 点击审核 + 创建,然后点击创建。
等待部署完成。
创建事件中心
- 前往您创建的事件中心命名空间。
- 点击顶部的 + 活动中心。
- 提供以下配置详细信息:
- 名称:输入一个名称(例如
intune-logs)。 - 分区数:2(默认值,增加可提高吞吐量)。
- 清理政策:删除。
- 保留时间(小时):24(最低值,如果需要提高弹性,可以增加)。
- 名称:输入一个名称(例如
- 点击审核 + 创建,然后点击创建。
启用事件中心捕获
- 前往您创建的事件中心(位于命名空间内)。
- 在左侧导航栏中,选择拍摄。
- 将捕获设置为开启。
提供以下配置详细信息:
设置 值 时间范围(分钟) 5(或更低,用于近乎实时) 大小窗口(MB) 300 拍摄提供程序 Azure Blob Storage Azure 订阅 选择订阅 存储账号 选择您创建的存储账号 Blob 容器 创建或选择容器(例如 intune-capture)点击保存。
配置 Intune 诊断设置
- 登录 Microsoft Intune 管理中心。
- 依次选择报告 > 诊断设置。
- 点击添加诊断设置。
- 提供以下配置详细信息:
- 诊断设置名称:输入一个描述性名称(例如
intune-to-eventhub)。 - 在日志部分,选择以下类别:
- OperationalLogs
- DeviceComplianceOrg
- 设备
- 在目标详细信息部分中,选择流式传输到事件中心。
- 订阅:选择包含 Event Hub 命名空间的订阅。
- 事件中心命名空间:选择您创建的命名空间(例如
secops-intune-logs)。 - 事件中心名称:选择您创建的事件中心(例如
intune-logs)。 - 事件中心政策名称:选择 RootManageSharedAccessKey。
- 诊断设置名称:输入一个描述性名称(例如
点击保存。
在 Google SecOps 中配置 Feed 以注入 Intune 日志
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 在下一页上,点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称(例如
Microsoft Intune - Event Hub)。 - 选择 Microsoft Azure Blob Storage V2 作为来源类型。
- 选择 Microsoft Intune 作为日志类型。
- 点击下一步。
为以下输入参数指定值:
Azure URI:输入 Blob 服务端点网址,并附带捕获容器路径:
https://<storage-account>.blob.core.windows.net/intune-capture/将
<storage-account>替换为您的 Azure 存储账号名称。
- 来源删除选项:根据您的偏好选择删除选项:
- 永不:转移后永不删除任何文件。
- 删除已转移的文件:在成功转移后删除文件。
- 删除已转移的文件和空目录:成功转移后删除文件和空目录。
- 文件存在时间上限:包含在过去指定天数内修改的文件。默认值为 180 天。
- 共享密钥:输入存储账号中的共享访问密钥值。
- 资产命名空间:资产命名空间。
- 提取标签:要应用于相应 Feed 中事件的标签。
点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
配置 Azure 存储防火墙(如果已启用)
如果您的 Azure 存储账号使用防火墙,则必须添加 Google SecOps IP 范围。
- 在 Azure 门户中,前往您的存储账号。
- 在安全性 + 网络下,选择网络。
- 在防火墙和虚拟网络下,选择从所选虚拟网络和 IP 地址启用。
- 在防火墙部分的地址范围下,点击 + 添加 IP 范围。
- 以 CIDR 表示法添加每个 Google SecOps IP 范围。
- 请参阅 IP 许可名单文档。
- 或者使用 Feed Management API 以编程方式检索这些信息。
- 点击保存。
方法 2:第三方 API
此方法使用 Microsoft Graph API 直接从 Microsoft 租户检索 Intune 审核日志和操作日志。
配置 Microsoft Entra 应用注册
创建应用注册
- 登录 Microsoft Entra 管理中心或 Azure 门户。
- 依次前往身份 > 应用 > 应用注册。
- 点击 New registration(新注册)。
- 提供以下配置详细信息:
- 名称:输入一个描述性名称(例如
Google SecOps Intune Integration)。 - 支持的账号类型:选择仅此组织目录中的账号(单租户)。
- 重定向 URI:留空(服务正文身份验证不需要此字段)。
- 名称:输入一个描述性名称(例如
- 点击注册。
- 注册后,从概览页面复制并保存以下值:
- 应用(客户端)ID
- 目录(租户)ID
配置 API 权限
- 在应用注册中,前往 API 权限。
- 点击添加权限。
- 依次选择 Microsoft Graph > 应用权限。
- 搜索并选择以下权限:
- DeviceManagementApps.Read.All
- DeviceManagementConfiguration.Read.All
- DeviceManagementManagedDevices.Read.All
- DeviceManagementServiceConfig.Read.All
- DeviceManagementRBAC.Read.All
- 点击添加权限。
- 点击为 [您的组织]授予管理员同意书。
验证状态列是否针对所有权限显示已向 [您的组织]授予。
所需 API 权限
| 权限 | 类型 | 用途 |
|---|---|---|
| DeviceManagementApps.Read.All | 应用 | 读取应用管理数据和审核事件 |
| DeviceManagementConfiguration.Read.All | 应用 | 读取设备配置和合规性政策 |
| DeviceManagementManagedDevices.Read.All | 应用 | 读取受管理设备的信息 |
| DeviceManagementServiceConfig.Read.All | 应用 | 读取 Intune 服务配置 |
| DeviceManagementRBAC.Read.All | 应用 | 读取基于角色的访问权限控制设置 |
创建客户端密钥
- 在应用注册中,前往证书和密钥。
- 点击 New client secret(新建客户端密钥)。
提供以下配置详细信息:
- 说明:输入描述性名称(例如
Google SecOps Feed)。 - 失效:选择失效期限。
- 说明:输入描述性名称(例如
点击 Add(添加)。
立即复制客户端密钥值。
重要提示:密钥值仅显示一次,离开此页面后便无法检索。如果您丢失了该值,则必须创建新的客户端密钥。
在 Google SecOps 中配置 Feed 以注入 Microsoft Intune 日志
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 在下一页上,点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称(例如
Microsoft Intune Logs)。 - 选择第三方 API 作为来源类型。
- 选择 Microsoft Intune 作为日志类型。
- 点击下一步。
为以下输入参数指定值:
- OAuth 客户端 ID:输入应用注册中的应用(客户端)ID(例如
1234abcd-1234-abcd-1234-abcd1234abcd)。 - OAuth 客户端密钥:输入您之前复制的客户端密钥值。
- 租户 ID:输入应用注册中的目录(租户)ID,格式为 UUID(例如
0fc279f9-fe30-41be-97d3-abe1d7681418)。 API 完整路径:输入 Microsoft Graph REST API 端点网址。默认值:
graph.microsoft.com/beta/deviceManagement/auditEventsAPI 身份验证端点:输入 Microsoft Active Directory 身份验证端点。默认值:
login.microsoftonline.com资产命名空间:资产命名空间。
提取标签:要应用于相应 Feed 中事件的标签。
- OAuth 客户端 ID:输入应用注册中的应用(客户端)ID(例如
点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
设置完成后,Feed 会开始从 Microsoft Graph API 中检索 Intune 审核日志和操作日志。
区域端点
对于主权云中的 Microsoft Intune 部署,请使用相应的区域端点:
| 云环境 | API 完整路径 | API 身份验证端点 |
|---|---|---|
| 全球 | graph.microsoft.com/beta/deviceManagement/auditEvents |
login.microsoftonline.com |
| 美国政府 L4 | graph.microsoft.us/beta/deviceManagement/auditEvents |
login.microsoftonline.us |
| 美国政府 L5 (DOD) | dod-graph.microsoft.us/beta/deviceManagement/auditEvents |
login.microsoftonline.us |
| 中国(世纪互联) | microsoftgraph.chinacloudapi.cn/beta/deviceManagement/auditEvents |
login.chinacloudapi.cn |
方法 3:Microsoft Azure Blob Storage V2
此方法通过以下方式收集 Microsoft Intune 日志:将诊断数据导出到 Azure 存储账号,并配置 Google SecOps Feed 以从 Azure Blob Storage 注入数据。
配置 Azure 存储账号
创建存储账号
- 在 Azure 门户中,搜索存储账号。
- 点击 + 创建。
提供以下配置详细信息:
设置 值 订阅 选择您的 Azure 订阅 资源组 选择现有组或创建新组 存储账号名称 输入唯一名称(例如 intunelogs)区域 选择区域(例如 East US)性能 标准(推荐) 冗余 GRS(地理位置冗余存储)或 LRS(本地冗余存储) 点击 Review + create(检查 + 创建)。
查看概览,然后点击创建。
等待部署完成。
获取存储账号凭据
- 前往您创建的存储账号。
- 在左侧导航栏中,选择安全性 + 网络下的访问密钥。
- 点击显示密钥。
- 复制并保存以下内容:
- 存储账号名称:您在创建时提供的名称。
- 密钥 1 或密钥 2:共享访问密钥。
获取 Blob 服务端点
- 在同一存储账号中,从左侧导航栏中选择端点。
- 复制并保存 Blob 服务端点网址。
- 示例:
https://intunelogs.blob.core.windows.net/
- 示例:
配置 Microsoft Intune 诊断设置
- 登录 Microsoft Intune 管理中心。
- 依次选择报告 > 诊断设置。
- 点击添加诊断设置。
- 提供以下配置详细信息:
- 诊断设置名称:输入一个描述性名称(例如
export-to-secops)。 - 在日志部分,选择以下类别:
- OperationalLogs
- DeviceComplianceOrg
- 设备
- 在目标详细信息部分中,选中归档到存储账号复选框。
- 订阅:选择包含您的存储空间的订阅。
- 存储账号:选择您之前创建的存储账号。
- 诊断设置名称:输入一个描述性名称(例如
点击保存。
在 Google SecOps 中配置 Feed 以从 Blob Storage 注入 Microsoft Intune 日志
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 在下一页上,点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称(例如
Microsoft Intune Blob Storage)。 - 选择 Microsoft Azure Blob Storage V2 作为来源类型。
- 选择 Microsoft Intune 作为日志类型。
- 点击下一步。
为以下输入参数指定值:
Azure URI:输入包含容器路径的 Blob 服务端点网址。为每个日志类别创建单独的 Feed:
对于运维日志:
https://<storage-account>.blob.core.windows.net/insights-logs-operationallogs/对于设备合规性组织日志:
https://<storage-account>.blob.core.windows.net/insights-logs-devicecomplianceorg/对于设备:
https://<storage-account>.blob.core.windows.net/insights-logs-devices/
将
<storage-account>替换为您的 Azure 存储账号名称。- 来源删除选项:根据您的偏好选择删除选项:
- 永不:转移后永不删除任何文件
- 删除已转移的文件:在成功转移后删除文件
- 删除已转移的文件和空目录:成功转移后删除文件和空目录
- 文件存在时间上限:包含在过去指定天数内修改的文件。默认值为 180 天。
- 共享密钥:输入存储账号中的共享访问密钥值。
- 资产命名空间:资产命名空间。
- 提取标签:要应用于相应 Feed 中事件的标签。
点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
重复执行第 1-10 步,为每个 Intune 日志类别容器创建其他 Feed。
配置 Azure 存储防火墙(如果已启用)
如果您的 Azure 存储账号使用防火墙,则必须添加 Google SecOps IP 范围。
- 在 Azure 门户中,前往您的存储账号。
- 在安全性 + 网络下,选择网络。
- 在防火墙和虚拟网络下,选择从所选虚拟网络和 IP 地址启用。
- 在防火墙部分的地址范围下,点击 + 添加 IP 范围。
- 以 CIDR 表示法添加每个 Google SecOps IP 范围。
- 请参阅 IP 许可名单文档
- 或者使用 Feed Management API 以编程方式检索这些信息
点击保存。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
AADDeviceId_label |
additional.fields |
已合并 |
AADTenantId_label |
additional.fields |
已合并 |
ComplianceState_label |
additional.fields |
已合并 |
DeviceHealthThreatLevel_loc_label |
additional.fields |
已合并 |
EnrollmentType_label |
additional.fields |
已合并 |
FailureCategory_label |
additional.fields |
已合并 |
FailureReason_label |
additional.fields |
已合并 |
InGracePeriodUntil_label |
additional.fields |
已合并 |
IntuneAccountId_label |
additional.fields |
已合并 |
IntuneDeviceId_label |
additional.fields |
已合并 |
IntuneUserId_label |
additional.fields |
已合并 |
LastContact_label |
additional.fields |
已合并 |
ManagementAgents_label |
additional.fields |
已合并 |
ManagementAgents_loc_label |
additional.fields |
已合并 |
MessageId_label |
additional.fields |
已合并 |
Os_label |
additional.fields |
已合并 |
RetireAfterDatetime_label |
additional.fields |
已合并 |
ScaleUnit_label |
additional.fields |
已合并 |
activityOperationType_label |
additional.fields |
已合并 |
activityResult_label |
additional.fields |
已合并 |
category_label |
additional.fields |
已合并 |
componentName_label |
additional.fields |
已合并 |
correlationId_label |
additional.fields |
已合并 |
current_perm |
additional.fields |
已合并 |
displayName_label |
additional.fields |
已合并 |
id_label |
additional.fields |
已合并 |
old_label |
additional.fields |
已合并 |
resultType_label |
additional.fields |
已合并 |
start_time_utc |
additional.fields |
已合并 |
temp_label |
additional.fields |
已合并 |
tenantId_label |
additional.fields |
已合并 |
properties.Description |
metadata.description |
直接映射 |
time |
metadata.event_timestamp |
解析为 ISO8601 |
when |
metadata.event_timestamp |
解析为 yyyy-MM-dd HH:mm:ss |
event_type |
metadata.event_type |
已重命名/已映射 |
activityType |
metadata.product_event_type |
直接映射 |
operationName |
metadata.product_event_type |
直接映射 |
properties.BatchId |
metadata.product_log_id |
直接映射 |
properties.SessionId |
network.session_id |
直接映射 |
actor.applicationDisplayName |
principal.application |
直接映射 |
properties.Actor.Application |
principal.application |
直接映射 |
properties.DeviceId |
principal.asset.asset_id |
直接映射 |
_hardware |
principal.asset.hardware |
已合并 |
properties.DeviceName |
principal.asset.hostname |
直接映射 |
properties.DeviceId |
principal.asset_id |
直接映射 |
properties.DeviceName |
principal.hostname |
直接映射 |
properties.OS |
principal.platform |
直接映射 |
properties.OSVersion |
principal.platform_version |
直接映射 |
properties.OsVersion |
principal.platform_version |
直接映射 |
actor.applicationId |
principal.resource.id |
直接映射 |
actor_type_label |
principal.user.attribute.labels |
已合并 |
auditActorType_label |
principal.user.attribute.labels |
已合并 |
activityOperationType |
principal.user.attribute.roles |
已映射:Create → role |
activityType |
principal.user.attribute.roles |
映射的值(总共 5 个,例如“创建 Windows Autopilot 部署配置文件”。WindowsAutopilotD... |
role |
principal.user.attribute.roles |
已合并 |
properties.UserEmail |
principal.user.email_addresses |
已合并 |
actor.userId |
principal.user.product_object_id |
直接映射 |
properties.UserName |
principal.user.user_display_name |
直接映射 |
actor.userPrincipalName |
principal.user.userid |
直接映射 |
properties.Actor.UPN |
principal.user.userid |
直接映射 |
properties.AlertType |
security_result.description |
直接映射 |
detection_AlertDisplayName |
security_result.detection_fields |
已合并 |
detection_DeviceDnsDomain |
security_result.detection_fields |
已合并 |
detection_DeviceHostName |
security_result.detection_fields |
已合并 |
detection_DeviceNetBiosName |
security_result.detection_fields |
已合并 |
detection_DeviceOperatingSystem |
security_result.detection_fields |
已合并 |
detection_OSDescription |
security_result.detection_fields |
已合并 |
detection_OS_loc |
security_result.detection_fields |
已合并 |
detection_OperationalLogCategory |
security_result.detection_fields |
已合并 |
detection_ScenarioName |
security_result.detection_fields |
已合并 |
detection_UPNSuffix |
security_result.detection_fields |
已合并 |
detection_UserDisplayName |
security_result.detection_fields |
已合并 |
detection_application_id |
security_result.detection_fields |
已合并 |
detection_object_identity |
security_result.detection_fields |
已合并 |
operationName |
security_result.detection_fields |
已映射:Reprovision CloudPCModel → detection_object_identity、Reprovision CloudPCModel... |
application |
target.application |
已重命名/已映射 |
deployment_status |
target.asset.deployment_status |
已重命名/已映射 |
activityType |
target.asset.software |
已映射:Patch DeviceConfiguration → software2、Patch DeviceConfiguration → software3... |
software |
target.asset.software |
已合并 |
software1 |
target.asset.software |
已合并 |
software2 |
target.asset.software |
已合并 |
software3 |
target.asset.software |
已合并 |
software4 |
target.asset.software |
已合并 |
auditResourceType_label |
target.resource.attribute.labels |
已合并 |
display_name_label |
target.resource.attribute.labels |
已合并 |
resources.0.resourceId |
target.resource.id |
直接映射 |
resources.0.type |
target.resource.name |
直接映射 |
resource_type |
target.resource.resource_type |
已重命名/已映射 |
operationName |
target.user.email_addresses |
已映射:Reprovision CloudPCModel → upn_identity |
upn_identity |
target.user.email_addresses |
已映射:^.+@.+$ → upn_identity |
user_identity |
target.user.email_addresses |
已映射:^.+@.+$ → user_identity |
user_id |
target.user.userid |
直接映射 |
user_identity |
target.user.userid |
直接映射 |
| 不适用 | metadata.product_name |
常量:AZURE MDM INTUNE |
| 不适用 | metadata.vendor_name |
常量:Microsoft |
| 不适用 | principal.platform |
常量:MAC |
| 不适用 | target.cloud.environment |
常量:MICROSOFT_AZURE |
resources.auditResourceType |
event.idm.read_only_udm.target.resource.attribute.labels |
从变更日志映射 |
resultType", "properties.AADDeviceId", "properties.IntuneDeviceId", "properties.IntuneUserId", "properties.MessageId", "properties.ScaleUnit", and "properties.Os |
additional.fields |
从变更日志映射 |
properties.EnrollmentType" and "properties.FailureReason |
additional.fields |
从变更日志映射 |
properties.OsVersion", "principal.platform_version", and "properties.StartTimeUtc |
additional.fields |
从变更日志映射 |
properties.OperationalLogCategory", "properties.ScenarioName", "properties.UserDisplayName", "properties.UPNSuffix", "properties.DeviceOperatingSystem", "AlertDisplayNameproperties.AlertDisplayName, "properties.DeviceDnsDomain", "properties.DeviceNetBiosName", and "properties.DeviceHostName |
security_result.detection_fields |
从变更日志映射 |
identity" and "user_id |
target.user.userid |
从变更日志映射 |
properties.SerialNumber |
_hardware.serial_number |
从变更日志映射 |
tenantId", "properties.IntuneAccountId", "properties.AADTenantId", "properties.LastContact", "properties.DeviceHealthThreatLevel_loc", "properties.ComplianceState", "properties.InGracePeriodUntil", "properties.RetireAfterDatetime", "properties.ManagementAgents", and "properties.ManagementAgents_loc |
additional.fields |
从变更日志映射 |
properties.OS_loc" and "properties.OSDescription |
security_result.detection_fields |
从变更日志映射 |