提取 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 的所有类别。
 - 在目标位置详细信息下,选择归档到存储账号。
 - 选择您在上一步中创建的订阅和存储账号。
 - 点击保存。
 
设置 Feed
您可以通过两种不同的入口点在 Google SecOps 平台中设置 Feed:
- SIEM 设置 > Feed > 添加新 Feed
 - 内容中心 > 内容包 > 开始
 
如何设置 Microsoft Azure 活动 Feed
- 点击 Azure 平台包。
 - 找到 Microsoft Azure 活动 Feed。
 为以下字段指定值:
- 来源类型:Microsoft Azure Blob Storage V2
 - Azure URI:输入您之前记录的 Blob 服务端点值,后缀为 insights-activity-logs(例如 https://acme-azure-chronicle.blob.core.windows.net/insights-activity-logs)
 - 源删除选项:指定是否在转移后删除文件和目录。
 - 文件存在时间上限:包含在过去指定天数内修改的文件。 默认值为 180 天。
 - 共享密钥:输入您之前捕获的共享密钥值。
 
高级选项
- Feed 名称:用于标识 Feed 的预填充值。
 - 资源命名空间:与 Feed 关联的命名空间。
 - 提取标签:应用于相应 Feed 中所有事件的标签。
 
点击创建 Feed。
如需详细了解如何为相应产品系列中的不同日志类型配置多个 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 | 
直接从原始日志的“identity”对象的“authorization”对象的“evidence”对象中的“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 | 
直接从原始日志的“identity”对象的“authorization”对象的“evidence”对象中的“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 | 
直接从原始日志中“身份”对象的“声明”对象的“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 | 
直接从原始日志的“identity”对象的“claims”对象中的“http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier”字段映射。 | 
| data.identity.claims.iat | read_only_udm.security_result.detection_fields.iat | 
直接从原始日志中“身份”对象的“声明”对象的“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 | 
直接从原始日志中“identity”对象的“claims”对象内的“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”。 |