收集 Microsoft Sentinel 日志
概览
此解析器从 Microsoft Sentinel JSON 日志中提取字段,执行 IP 地址提取和字符串操作等转换,并将提取的数据映射到 UDM,包括正文、目标、security_result 和元数据字段。它还可处理各种数据类型,并将提取的实体合并到 UDM 结构中。
准备工作
确保您满足以下前提条件:
- Google SecOps 实例。
- 对 Microsoft Sentinel 的访问权限。
设置 Feed
您可以通过两种不同的入口点在 Google SecOps 平台中设置 Feed:
- SIEM 设置 > Feed
- 内容中心 > 内容包
通过“SIEM 设置”>“Feed”设置 Feed
如需配置 Feed,请按以下步骤操作:
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 在下一页上,点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称,例如 Microsoft Sentinel 日志。
- 选择 Webhook 作为来源类型。
- 选择 Microsoft Sentinel 作为日志类型。
- 点击下一步。
- 可选:为以下输入参数指定值:
- 拆分分隔符:用于分隔日志行的分隔符,例如
\n
。
- 拆分分隔符:用于分隔日志行的分隔符,例如
- 点击下一步。
- 在最终确定界面中查看新的 Feed 配置,然后点击提交。
- 点击生成密钥,生成用于对此 Feed 进行身份验证的密钥。
- 复制并存储密钥,因为您无法再次查看此密钥。您可以再次生成新的密钥,但重新生成密钥会使之前的密钥失效。
- 在详情标签页中,从端点信息字段复制 Feed 端点网址。您需要在客户端应用中指定此端点网址。
- 点击完成。
设置来自内容中心的 Feed
为以下字段指定值:
- 拆分分隔符:用于分隔日志行的分隔符,例如
\n
。
高级选项
- Feed 名称:用于标识 Feed 的预填充值。
- 来源类型:用于将日志收集到 Google SecOps 中的方法。
- 资源命名空间:与 Feed 关联的命名空间。
提取标签:应用于相应 Feed 中所有事件的标签。
点击生成密钥,生成用于对此 Feed 进行身份验证的密钥。
复制并存储密钥,因为您无法再次查看此密钥。您可以再次生成新的密钥,但重新生成密钥会使之前的密钥失效。
在详情标签页中,从端点信息字段复制 Feed 端点网址。您需要在客户端应用中指定此端点网址。
为 Webhook Feed 创建 API 密钥
前往 Google Cloud 控制台 > 凭据。
点击创建凭据,然后选择 API 密钥。
将 API 密钥访问权限限制为 Google Security Operations API。
指定端点网址
- 在客户端应用中,指定 webhook Feed 中提供的 HTTPS 端点网址。
通过在自定义标头中指定 API 密钥和密钥来启用身份验证,格式如下:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
建议:将 API 密钥指定为标头,而不是在网址中指定。如果您的 Webhook 客户端不支持自定义标头,您可以使用以下格式的查询参数指定 API 密钥和密钥:
ENDPOINT_URL?key=API_KEY&secret=SECRET
替换以下内容:
ENDPOINT_URL
:Feed 端点网址。API_KEY
:用于向 Google Security Operations 进行身份验证的 API 密钥。SECRET
:您生成的用于验证 Feed 的密钥。
为 Microsoft Sentinel 事件配置逻辑应用
如需配置 Microsoft Sentinel 事件的逻辑应用,请按以下步骤操作:
- 登录 Azure 门户。
- 点击创建资源。
- 搜索逻辑应用。
- 点击创建以开始创建流程。
- 为以下输入参数指定值:
- 订阅:选择相应订阅。
- 资源组:选择资源组。
- 名称:输入逻辑应用的名称。
- 地区:选择相应区域。
- Log Analytics 工作区:选择 Log Analytics 工作区。
- 点击 Review + create(检查 + 创建)。
- 点击创建。
- 创建逻辑应用后,点击前往资源。
- 依次点击开发工具 > 逻辑应用设计器。
- 点击添加触发器。
- 搜索 Microsoft Sentinel。
- 选择 Microsoft Sentinel 事件作为触发器。
- 如果您尚未创建与 Microsoft Sentinel 的连接,则需要立即创建。点击创建新账号,然后按照提示进行身份验证。
- 点击插入新步骤。
- 点击添加操作。
- 搜索并选择 HTTP 作为操作。
- 为以下输入参数指定值:
- URI:Feed 端点网址。
- 方法:POST
- 标头:添加以下标头:
- Content-Type:application/json
- X-goog-api-key:用于向 Google Security Operations 进行身份验证的 API 密钥。
- X-Webhook-Access-Key:您生成的用于对 Feed 进行身份验证的密钥。
为 Microsoft Sentinel 警报配置逻辑应用
如需配置 Microsoft Sentinel 警报的逻辑应用,请按以下步骤操作:
- 前往 Azure 门户首页。
- 点击创建资源。
- 搜索逻辑应用。
- 点击创建以开始创建流程。
- 为以下输入参数指定值:
- 订阅:选择相应订阅。
- 资源组:选择资源组。
- 名称:输入逻辑应用的名称。
- 地区:选择相应区域。
- Log Analytics 工作区:选择 Log Analytics 工作区。
- 点击 Review + create(检查 + 创建)。
- 点击创建。
- 创建逻辑应用后,点击前往资源。
- 依次点击开发工具 > 逻辑应用设计器。
- 点击添加触发器。
- 搜索 Microsoft Sentinel。
- 选择 Microsoft Sentinel 提醒作为触发条件。
- 如果您尚未创建与 Microsoft Sentinel 的连接,则需要立即创建。点击创建新账号,然后按照提示进行身份验证。
- 点击插入新步骤。
- 点击添加操作。
- 搜索并选择 HTTP 作为操作。
- 为以下输入参数指定值:
- URI:Feed 端点网址。
- 方法:POST
- 标头:添加以下标头:
- Content-Type:application/json
- X-goog-api-key:用于向 Google Security Operations 进行身份验证的 API 密钥。
- X-Webhook-Access-Key:您生成的用于对 Feed 进行身份验证的密钥。
为 Microsoft Sentinel 配置自动化规则
如需配置 Microsoft Sentinel 的自动化规则,请按以下步骤操作:
- 前往 Microsoft Sentinel 工作区。
- 依次点击配置 > 自动化。
- 点击创建。
- 选择自动化规则。
- 为以下输入参数指定值:
- 名称:输入自动化规则的名称。
- 触发条件:选择当创建了突发事件时。
- 操作:依次选择运行 Runbook > 为突发事件创建的逻辑应用。
- 点击应用。
- 点击创建。
- 选择自动化规则。
- 为以下输入参数指定值:
- 名称:输入自动化规则的名称。
- 触发器:选择当突发事件更新时。
- 条件:依次点击添加 > 条件 (And) > 状态 > 已更改。
- 操作:依次选择运行 Runbook > 为突发事件创建的逻辑应用。
- 点击应用。
- 点击创建。
- 选择自动化规则。
- 为以下输入参数指定值:
- 名称:输入自动化规则的名称。
- 触发条件:选择在创建提醒时。
- 操作:依次选择运行 playbook > 为提醒创建的逻辑应用。
- 点击应用。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
AlertGenerationStatus |
security_result.detection_fields.AlertGenerationStatus |
在 JSON 解析后直接从 ExtendedProperties 字段映射。 |
AlertLink |
principal.labels.AlertLink |
直接映射。 |
AlertName |
security_result.rule_name |
直接映射。 |
AlertSeverity |
security_result.severity |
直接映射,转换为大写。如果该值为 HIGH、MEDIUM、LOW、CRITICAL 或 UNKNOWN_SEVERITY 之一,则会映射到 security_result.severity 。否则,它会映射到 security_result.severity_details 。 |
AlertType |
security_result.threat_name |
直接映射。 |
Category |
security_result.detection_fields.Category |
在 JSON 解析后直接从 ExtendedProperties 字段映射。 |
CompromisedEntity |
principal.resource.attribute.labels.CompromisedEntity |
直接映射。 |
CompromisedEntityId |
security_result.detection_fields.CompromisedEntityId |
在 JSON 解析后直接从 ExtendedProperties 字段映射。 |
ConfidenceLevel |
security_result.confidence_details |
直接映射。 |
ConfidenceScore |
security_result.detection_fields.ConfidenceScore |
直接映射。 |
cribl_pipe |
additional.fields.cribl_pipe |
直接映射。 |
Description |
security_result.description |
直接映射。 |
DestinationDevice |
security_result.detection_fields.DestinationDevice 或 target.ip |
从 JSON 解析后的 ExtendedProperties 字段映射。如果该值是有效的 IP 地址,则会映射到 target.ip 。否则,它会被映射为检测字段。 |
DestinationDeviceAddress |
target.ip |
从 JSON 解析后的 ExtendedProperties 字段映射,仅当为有效的 IP 地址时。 |
DeviceId |
security_result.detection_fields.DeviceId |
在 JSON 解析后直接从 ExtendedProperties 字段映射。 |
DisplayName |
security_result.summary |
直接映射。 |
EndTime |
about.labels.EndTime |
直接映射。 |
Entities.Address |
principal.asset.ip |
从 JSON 解析后的 Entities 数组中提取。仅映射 IP 地址。 |
Entities.HostName |
principal.asset.hostname 或 principal.asset.ip |
从 JSON 解析后的 Entities 数组中提取。如果该值是有效的 IP 地址,则会映射到 principal.asset.ip 。否则,它会映射到 principal.asset.hostname 。 |
Entities.IoTDevice.DeviceId |
security_result.detection_fields.IoTDeviceID |
从 JSON 解析后的 Entities 数组中提取。 |
Entities.IoTDevice.DeviceType |
security_result.detection_fields.IoTDeviceType |
从 JSON 解析后的 Entities 数组中提取。 |
Entities.IoTDevice.DeviceTypeId |
security_result.detection_fields.IoTDeviceTypeId |
从 JSON 解析后的 Entities 数组中提取。 |
Entities.IoTDevice.Importance |
security_result.detection_fields.IoTDeviceImportance |
从 JSON 解析后的 Entities 数组中提取。 |
Entities.IoTDevice.IoTSecurityAgentId |
security_result.detection_fields.IoTSecurityAgentId |
从 JSON 解析后的 Entities 数组中提取。 |
Entities.IoTDevice.Manufacturer |
security_result.detection_fields.IoT Manufacturer |
从 JSON 解析后的 Entities 数组中提取。 |
Entities.IoTDevice.OperatingSystem |
principal.asset.platform_software.platform_version |
从 JSON 解析后的 Entities 数组中提取,并移除了尾随空格。 |
Entities.IoTDevice.PurdueLayer |
security_result.detection_fields.IoT PurdueLayer |
从 JSON 解析后的 Entities 数组中提取。 |
Entities.IoTDevice.Sensor |
security_result.detection_fields.IoT Sensor |
从 JSON 解析后的 Entities 数组中提取。 |
ExtendedProperties.Protocol |
security_result.detection_fields.Protocol |
在 JSON 解析后直接从 ExtendedProperties 字段映射。 |
ExtendedProperties.SensorId |
security_result.detection_fields.SensorId |
在 JSON 解析后直接从 ExtendedProperties 字段映射。 |
ExtendedProperties.SourceDevice |
principal.ip 或 security_result.detection_fields.SourceDevice |
从 JSON 解析后的 ExtendedProperties 字段映射。如果该值是有效的 IP 地址,则会映射到 principal.ip 。否则,它会被映射为检测字段。 |
ExtendedProperties.SourceDeviceAddress |
principal.ip |
从 JSON 解析后的 ExtendedProperties 字段映射,仅当为有效的 IP 地址时。 |
IsIncident |
security_result.detection_fields.IsIncident |
直接映射,转换为字符串。 |
ProcessingEndTime |
about.labels.ProcessingEndTime |
直接映射。 |
ProductComponentName |
principal.resource.attribute.labels.ProductComponentName |
直接映射。 |
ProductName |
principal.resource.attribute.labels.ProductName |
直接映射。 |
ProviderName |
principal.resource.attribute.labels.ProviderName |
直接映射。 |
ResourceId |
principal.resource.product_object_id ,target.resource.name |
直接映射。 |
SourceComputerId |
principal.asset.asset_id |
直接映射,以“SourceComputerId:”为前缀。 |
SourceSystem |
security_result.detection_fields.SourceSystem |
直接映射。 |
StartTime |
about.labels.StartTime |
直接映射。 |
Status |
security_result.detection_fields.Status |
直接映射。 |
SystemAlertId |
metadata.product_log_id |
直接映射。 |
Tactics |
security_result.attack_details.tactics.name |
从 JSON 解析和反斜杠移除后的 Tactics 字段中提取。 |
Techniques |
security_result.attack_details.techniques.id |
从 JSON 解析和反斜杠移除后的 Techniques 字段中提取。 |
TenantId |
additional.fields.TenantId |
直接映射。 |
TimeGenerated |
about.labels.TimeGenerated |
直接映射。 |
timestamp |
metadata.event_timestamp ,events.timestamp |
直接映射。 |
VendorName |
metadata.vendor_name |
直接映射。 |
VendorOriginalId |
additional.fields.VendorOriginalId |
直接映射。 |
_time |
metadata.event_timestamp ,events.timestamp |
解析为使用 UNIX 或 UNIX_MS 格式的时间戳。 |
(解析器逻辑) | metadata.event_type |
如果存在主账号、目标和 ResourceId,则设置为“USER_RESOURCE_ACCESS”。否则,请设置为“GENERIC_EVENT”。 |
(解析器逻辑) | metadata.log_type |
设置为“MICROSOFT_SENTINEL”。 |
(解析器逻辑) | metadata.product_name |
设置为“MICROSOFT_SENTINEL”。 |
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。