提取 Microsoft Azure 活动日志
支持的语言:
Google SecOps
SIEM
本文档介绍了将 Microsoft Azure 活动日志 (AZURE_ACTIVITY
) 注入到 Google Security Operations 中所需的步骤。
配置存储账号
完成以下步骤以配置存储账号:
- 在 Azure 控制台中,搜索存储账号。
- 点击创建。
- 选择账号所需的订阅、资源组、区域、性能(建议使用“标准”)和冗余(建议使用 GRS 或 LRS),输入新存储账号的名称。
- 点击审核 + 创建,查看账号概览,然后点击创建。
- 在存储账号概览页面上,从窗口左侧导航栏中选择访问密钥。
- 点击显示密钥,然后记下存储账号的共享密钥。
- 从窗口的左侧导航栏中选择端点。
- 记下 Blob 服务端点。(https://<storageaccountname>.blob.core.windows.net/)
配置 Azure 活动日志记录
完成以下步骤以配置 Azure 活动日志记录:
- 在 Azure 控制台中,搜索监控。
- 点击页面左侧导航中的活动日志链接。
- 点击窗口顶部的导出活动日志。
- 点击添加诊断设置。
- 选择要导出到 Google SecOps 的所有类别。
- 在目标位置详细信息下,选择归档到存储账号。
- 选择您在上一步中创建的订阅和存储账号。
- 点击保存。
您可以通过两种不同的入口点在 Google SecOps 平台中设置 Feed:
- SIEM 设置 > Feed
- 内容中心 > 内容包
通过“SIEM 设置”>“Feed”设置 Feed
如需配置 Feed,请按以下步骤操作:
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 在下一页上,点击配置单个 Feed。
- 为字段名称输入一个唯一的名称。
- 选择 Microsoft Azure Blob Storage 作为来源类型。
- 选择 Microsoft Azure 活动作为日志类型。
- 点击下一步。
- 配置以下必需的输入参数:
- Azure URI:输入您之前记录的 Blob 服务端点值,后缀为 insights-activity-logs(例如 https://acme-azure-chronicle.blob.core.windows.net/insights-activity-logs)
- URI is a(URI 是一个):选择目录(包括子目录)。
- 源删除选项:指定是否在转移后删除文件和目录。
- 共享密钥:输入您之前捕获的共享密钥值。
- 点击下一步,然后点击提交。
设置来自内容中心的 Feed
为以下字段指定值:
- Azure URI:输入您之前记录的 Blob 服务端点值,后缀为 insights-activity-logs(例如 https://acme-azure-chronicle.blob.core.windows.net/insights-activity-logs)
- URI is a(URI 是一个):选择目录(包括子目录)。
- 源删除选项:指定是否在转移后删除文件和目录。
- 共享密钥:输入您之前捕获的共享密钥值。
高级选项
- Feed 名称:用于标识 Feed 的预填充值。
- 来源类型:用于将日志收集到 Google SecOps 中的方法。
- 资源命名空间:与 Feed 关联的命名空间。
- 提取标签:应用于相应 Feed 中所有事件的标签。
字段映射参考
此解析器代码首先将大量字段初始化为空字符串,然后执行一系列字符串操作和 JSON 解析操作,以从 Azure 活动日志消息中提取相关信息。最后,它会将提取的数据映射到统一数据模型 (UDM) 字段,对事件类型进行分类,并添加严重程度、正文信息和网络数据等其他详细信息来丰富事件。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
类别 | read_only_udm.security_result.category_details |
直接从原始日志中的“category”字段映射。 |
callerIpAddress | read_only_udm.principal.asset.ip ,read_only_udm.principal.ip |
直接从原始日志中的“callerIpAddress”字段映射。 |
correlationId | read_only_udm.security_result.detection_fields.correlationId |
直接从原始日志中的“correlationId”字段映射。 |
data.callerIpAddress | read_only_udm.principal.asset.ip ,read_only_udm.principal.ip |
直接从原始日志中“data”对象内的“callerIpAddress”字段映射。 |
data.correlationId | read_only_udm.security_result.detection_fields.correlationId |
直接从原始日志中“data”对象内的“correlationId”字段映射。 |
data.DeploymentUnit | read_only_udm.target.resource.name |
直接从原始日志中“data”对象内的“DeploymentUnit”字段映射。 |
data.details | read_only_udm.metadata.description |
直接从原始日志中“data”对象内的“details”字段映射,仅当“details”字段不是“Unknown”时才进行映射。 |
data.entity | read_only_udm.additional.fields.entity |
直接从原始日志中“data”对象内的“entity”字段映射。 |
data.EventName | read_only_udm.metadata.product_event_type |
直接从原始日志中“data”对象内的“EventName”字段映射。 |
data.hierarchy | read_only_udm.additional.fields.hierarchy |
直接从原始日志中“data”对象的“hierarchy”字段映射。 |
data.identity.authorization.action | read_only_udm.security_result.detection_fields.action |
直接从原始日志中“身份”对象的“授权”对象的“操作”字段映射。 |
data.identity.authorization.evidence.principalId | read_only_udm.principal.user.product_object_id 、read_only_udm.principal.resource.product_object_id 、read_only_udm.principal.group.product_object_id |
直接从原始日志中“identity”对象的“authorization”对象的“evidence”对象内的“principalId”字段映射。它映射到的具体 UDM 字段取决于“principalType”字段的值。如果“principalType”为“User”或“ServicePrincipal”,则映射到 principal.user.product_object_id 。如果“principalType”为“Group”,则映射到 principal.group.product_object_id 。如果“principalType”为“ServicePrincipal”,则映射到 principal.resource.product_object_id 。 |
data.identity.authorization.evidence.principalType | read_only_udm.principal.resource.resource_subtype |
直接从原始日志中“identity”对象的“authorization”对象的“evidence”对象内的“principalType”字段映射。 |
data.identity.authorization.evidence.role | read_only_udm.principal.user.role_name |
直接从原始日志中“身份”对象的“授权”对象的“证据”对象的“角色”字段映射。 |
data.identity.authorization.evidence.roleAssignmentId | read_only_udm.principal.resource.attribute.labels.roleAssignmentId |
直接从原始日志中“身份”对象的“授权”对象的“证据”对象内的“roleAssignmentId”字段映射。 |
data.identity.authorization.evidence.roleAssignmentScope | read_only_udm.principal.resource.attribute.labels.roleAssignmentScope |
直接从原始日志中“身份”对象的“授权”对象的“证据”对象的“roleAssignmentScope”字段映射。 |
data.identity.authorization.evidence.roleDefinitionId | read_only_udm.principal.resource.attribute.labels.roleDefinitionId |
直接从原始日志中“身份”对象的“授权”对象的“证据”对象内的“roleDefinitionId”字段映射。 |
data.identity.authorization.scope | read_only_udm.security_result.detection_fields.scope |
直接从原始日志中“身份”对象的“授权”对象的“范围”字段映射。 |
data.identity.claims.aio | read_only_udm.security_result.detection_fields.aio |
直接从原始日志中“身份”对象的“声明”对象的“aio”字段映射。 |
data.identity.claims.appid | read_only_udm.security_result.detection_fields.appid |
直接从原始日志中“identity”对象的“claims”对象的“appid”字段映射。 |
data.identity.claims.appidacr | read_only_udm.security_result.detection_fields.appidacr |
直接从原始日志中“身份”对象的“声明”对象内的“appidacr”字段映射。 |
data.identity.claims.aud | read_only_udm.security_result.detection_fields.aud |
直接从原始日志中“identity”对象的“claims”对象的“aud”字段映射。 |
data.identity.claims.exp | read_only_udm.security_result.detection_fields.exp |
直接从原始日志中“身份”对象的“声明”对象的“exp”字段映射。 |
data.identity.claims.http://schemas.microsoft.com/identity/claims/identityprovider |
read_only_udm.security_result.detection_fields.identityprovider |
直接从原始日志的“identity”对象的“claims”对象中的“http://schemas.microsoft.com/identity/claims/identityprovider”字段映射而来。 |
data.identity.claims.http://schemas.microsoft.com/identity/claims/objectidentifier |
read_only_udm.security_result.detection_fields.objectidentifier |
直接从原始日志中“identity”对象的“claims”对象内的“http://schemas.microsoft.com/identity/claims/objectidentifier”字段映射而来。 |
data.identity.claims.http://schemas.microsoft.com/identity/claims/tenantid |
read_only_udm.security_result.detection_fields.tenantid |
直接从原始日志的“identity”对象的“claims”对象中的“http://schemas.microsoft.com/identity/claims/tenantid”字段映射。 |
data.identity.claims.http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier |
read_only_udm.security_result.detection_fields.nameidentifier |
直接从原始日志中“身份”对象的“声明”对象内的“http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier”字段映射而来。 |
data.identity.claims.iat | read_only_udm.security_result.detection_fields.iat |
直接从原始日志中“identity”对象的“claims”对象内的“iat”字段映射。 |
data.identity.claims.iss | read_only_udm.security_result.detection_fields.iss |
直接从原始日志中“identity”对象的“claims”对象内的“iss”字段映射。 |
data.identity.claims.nbf | read_only_udm.security_result.detection_fields.nbf |
直接从原始日志中“identity”对象的“claims”对象内的“nbf”字段映射。 |
data.identity.claims.rh | read_only_udm.security_result.detection_fields.rh |
直接从原始日志中“identity”对象的“claims”对象内的“rh”字段映射。 |
data.identity.claims.uti | read_only_udm.security_result.detection_fields.uti |
直接从原始日志中“identity”对象的“claims”对象的“uti”字段映射。 |
data.identity.claims.ver | read_only_udm.security_result.detection_fields.ver |
直接从原始日志中“identity”对象的“claims”对象内的“ver”字段映射。 |
data.identity.claims.xms_tcdt | read_only_udm.security_result.detection_fields.xms_tcdt |
直接从原始日志中“身份”对象的“声明”对象内的“xms_tcdt”字段映射。 |
data.identity.UserName | read_only_udm.principal.user.user_display_name |
直接从原始日志中“identity”对象内的“UserName”字段映射。 |
data.level | read_only_udm.security_result.severity ,read_only_udm.security_result.severity_details |
直接从原始日志中“data”对象内的“level”字段映射。“level”字段还用于确定 severity 字段的值。如果“level”为“Information”或“Informational”,则 severity 设置为“INFORMATIONAL”。如果“level”为“Warning”,则 severity 设置为“MEDIUM”。如果“level”为“Error”,则将 severity 设置为“ERROR”。如果“level”为“Critical”,则将 severity 设置为“CRITICAL”。 |
data.location | read_only_udm.target.location.name |
直接从原始日志中“数据”对象内的“位置”字段映射。 |
data.operationName | read_only_udm.metadata.product_event_type |
直接从原始日志中“data”对象内的“operationName”字段映射。 |
data.properties.EventChannel | read_only_udm.additional.fields.properties EventChannel |
直接从原始日志中“data”对象的“properties”对象内的“EventChannel”字段映射。 |
data.properties.EventSource | read_only_udm.additional.fields.properties EventSource |
直接从原始日志的“data”对象的“properties”对象中的“EventSource”字段映射。 |
data.properties.EventId | read_only_udm.metadata.product_log_id |
直接从原始日志中“data”对象的“properties”对象内的“EventId”字段映射。 |
data.properties.eventProperties.cause | read_only_udm.security_result.detection_fields.cause |
直接从原始日志的“data”对象的“properties”对象的“eventProperties”对象中的“cause”字段映射。 |
data.properties.eventProperties.clientIPAddress | read_only_udm.principal.asset.ip ,read_only_udm.principal.ip |
直接从原始日志的“data”对象的“properties”对象的“eventProperties”对象中的“clientIPAddress”字段映射。 |
data.properties.eventProperties.compromisedHost | read_only_udm.principal.asset.hostname ,read_only_udm.principal.hostname |
直接从原始日志的“data”对象的“properties”对象的“eventProperties”对象中的“compromisedHost”字段映射。 |
data.properties.eventProperties.currentHealthStatus | read_only_udm.security_result.detection_fields.currentHealthStatus |
直接从原始日志中“data”对象的“properties”对象的“eventProperties”对象内的“currentHealthStatus”字段映射。 |
data.properties.eventProperties.previousHealthStatus | read_only_udm.security_result.detection_fields.previousHealthStatus |
直接从原始日志中“data”对象的“properties”对象的“eventProperties”对象内的“previousHealthStatus”字段映射。 |
data.properties.eventProperties.type | read_only_udm.security_result.detection_fields.type |
直接从原始日志的“data”对象的“properties”对象的“eventProperties”对象中的“type”字段映射。 |
data.properties.eventProperties.User | read_only_udm.principal.user.userid |
直接从原始日志中“data”对象的“properties”对象的“eventProperties”对象内的“User”字段映射。 |
data.properties.eventProperties.userName | read_only_udm.principal.user.user_display_name |
直接从原始日志的“data”对象的“properties”对象的“eventProperties”对象中的“userName”字段映射,并移除了“SECURE\”前缀。 |
data.properties.ipAddress | read_only_udm.principal.asset.ip ,read_only_udm.principal.ip |
直接从原始日志中“data”对象的“properties”对象内的“ipAddress”字段映射。 |
data.properties.legacyChannels | read_only_udm.security_result.detection_fields.legacyChannels |
直接从原始日志中“data”对象的“properties”对象内的“legacyChannels”字段映射。 |
data.properties.legacyEventDataId | read_only_udm.security_result.detection_fields.legacyEventDataId |
直接从原始日志中“data”对象的“properties”对象内的“legacyEventDataId”字段映射。 |
data.properties.legacyResourceId | read_only_udm.security_result.detection_fields.legacyResourceId |
直接从原始日志中“data”对象的“properties”对象内的“legacyResourceId”字段映射。 |
data.properties.legacyResourceGroup | read_only_udm.security_result.detection_fields.legacyResourceGroup |
直接从原始日志中“data”对象的“properties”对象内的“legacyResourceGroup”字段映射。 |
data.properties.legacyResourceProviderName | read_only_udm.security_result.detection_fields.legacyResourceProviderName |
直接从原始日志中“data”对象的“properties”对象内的“legacyResourceProviderName”字段映射。 |
data.properties.legacyResourceType | read_only_udm.security_result.detection_fields.legacyResourceType |
直接从原始日志中“data”对象的“properties”对象内的“legacyResourceType”字段映射。 |
data.properties.legacySubscriptionId | read_only_udm.security_result.detection_fields.legacySubscriptionId |
直接从原始日志中“data”对象的“properties”对象内的“legacySubscriptionId”字段映射。 |
data.properties.operationId | read_only_udm.security_result.detection_fields.operationId |
直接从原始日志中“data”对象的“properties”对象内的“operationId”字段映射。 |
data.properties.result | read_only_udm.security_result.action_details |
直接从原始日志中“data”对象的“properties”对象的“result”字段映射。 |
data.properties.statusCode | read_only_udm.network.http.response_code |
直接从原始日志中“data”对象的“properties”对象内的“statusCode”字段映射。 |
data.properties.suspiciousCommandLine | read_only_udm.target.process.command_line |
直接从原始日志中“data”对象的“properties”对象内的“suspiciousCommandLine”字段映射。 |
data.properties.suspiciousProcess | read_only_udm.target.process.file.full_path |
直接从原始日志中“data”对象的“properties”对象内的“suspiciousProcess”字段映射。 |
data.properties.suspiciousProcessId | read_only_udm.target.process.pid |
直接从原始日志中“data”对象的“properties”对象内的“suspiciousProcessId”字段映射。 |
data.properties.tlsVersion | read_only_udm.network.tls.version |
直接从原始日志中“data”对象的“properties”对象内的“tlsVersion”字段映射。 |
data.properties.userAgent | read_only_udm.network.http.user_agent ,read_only_udm.network.http.parsed_user_agent |
直接从原始日志中“data”对象的“properties”对象内的“userAgent”字段映射。 |
data.properties.userAgentHeader | read_only_udm.network.http.user_agent ,read_only_udm.network.http.parsed_user_agent |
直接从原始日志中“data”对象的“properties”对象内的“userAgentHeader”字段映射。 |
data.properties.userId | read_only_udm.target.user.product_object_id |
直接从原始日志中“data”对象的“properties”对象内的“userId”字段映射。 |
data.ReleaseVersion | read_only_udm.metadata.product_version |
直接从原始日志中“data”对象的“ReleaseVersion”字段映射。 |
data.resourceId | read_only_udm.target.resource.name |
直接从原始日志中“data”对象内的“resourceId”字段映射。 |
data.resourceType | read_only_udm.additional.fields.resourceType |
直接从原始日志中“data”对象内的“resourceType”字段映射。 |
data.resultDescription | read_only_udm.metadata.description |
直接从原始日志中“data”对象内的“resultDescription”字段映射。 |
data.resultSignature | read_only_udm.additional.fields.resultSignature |
直接从原始日志中“data”对象内的“resultSignature”字段映射。 |
data.resultType | read_only_udm.security_result.action_details ,read_only_udm.additional.fields.resultType |
直接从原始日志中“data”对象内的“resultType”字段映射。 |
data.RoleLocation | read_only_udm.target.location.name |
直接从原始日志中“data”对象内的“RoleLocation”字段映射。 |
data.time | read_only_udm.metadata.event_timestamp |
系统会解析原始日志中“data”对象内的“time”字段,以提取时间戳,然后将其映射到 event_timestamp 。 |
data.uri | read_only_udm.network.http.referral_url |
直接从原始日志中“data”对象内的“uri”字段映射。 |
read_only_udm.extensions.auth.mechanism |
INTERACTIVE |
如果原始日志中“data”对象的“properties”对象内的“isInteractive”字段为“true”,则设置为“INTERACTIVE”。否则,该值会设置为“MECHANISM_OTHER”。 |
read_only_udm.extensions.auth.type |
MACHINE |
如果原始日志中的“category”字段为“NonInteractiveUserSignInLogs”“ManagedIdentitySignInLogs”或“ServicePrincipalSignInLogs”,则设置为“MACHINE”。 |
read_only_udm.metadata.log_type |
AZURE_ACTIVITY |
硬编码为“AZURE_ACTIVITY”。 |
read_only_udm.metadata.vendor_name |
Microsoft |
硬编码为“Microsoft”。 |
read_only_udm.principal.platform |
WINDOWS 、MAC 、LINUX 、ANDROID |
根据“properties.test.deviceDetail.operatingSystem”字段的值确定。如果包含“Win”,则将 platform 设置为“WINDOWS”。如果包含“Mac”,则将 platform 设置为“MAC”。如果包含“Lin”,则将 platform 设置为“LINUX”。如果包含“Android”,则将 platform 设置为“ANDROID”。 |
read_only_udm.principal.resource.type |
SERVICE_ACCOUNT ,UNSPECIFIED |
根据“identity.authorization.evidence.principalType”字段的值确定。如果它是“ServicePrincipal”,则 type 会设置为“SERVICE_ACCOUNT”。否则,该值会设置为“UNSPECIFIED”。 |
read_only_udm.security_result.action |
ALLOW 、BLOCK 、UNKNOWN_ACTION |
根据“resultType”“status_errorcode”和“statusText”字段的值确定。如果“resultType”是“Success”“success”“Succeeded”“Started”“Resolved”“Active”“Updated”“Start”“Accept”“Accepted”“0”之一,或者“status_errorcode”为 0,或者“statusText”为“Success”,则将 action 设置为“ALLOW”。如果“resultType”为“Failure”或“Failed”,或者“status_errorcode”不为空,或者“resultType”不为空,则将 action 设置为“BLOCK”。否则,该值会设置为“UNKNOWN_ACTION”。 |
read_only_udm.target.cloud.environment |
MICROSOFT_AZURE |
硬编码为“MICROSOFT_AZURE”。 |