概述
Azure安全中心(Azure Security Center)是微软提供的一体化安全管理系统,能够帮助用户强化云环境的安全性、检测潜在威胁并响应安全事件。其核心功能之一是日志分析,通过集成Azure Monitor和Log Analytics工作区,收集来自虚拟机、网络设备、应用程序及安全代理的详细日志数据,实现对安全态势的全面可视化。
日志数据采集机制
Azure安全中心能够自动从受监控资源中采集安全相关日志,涵盖登录尝试、恶意软件警报、网络流量异常和系统配置变更等关键信息。这些数据会被发送至指定的Log Analytics工作区,以结构化形式存储,便于后续的查询与深度分析。
主要配置步骤包括:
- 启用安全中心的“标准”定价层以开启高级日志收集功能。
- 为虚拟机部署Microsoft Monitoring Agent(MMA)或使用Azure Monitor Agent。
- 配置需要收集的数据源,例如Linux系统的Syslog和Windows系统的Windows Event Logs。
使用Kusto查询语言分析日志
在Log Analytics工作区中,可通过功能强大的Kusto查询语言(KQL)高效检索和分析安全事件。掌握KQL是进行有效安全数据分析的核心技能。以下是一个基础示例,查询最近24小时内发生的失败登录尝试:
// 查询SecurityEvent表中类型为4625(失败登录)的事件
SecurityEvent
| where EventID == 4625
| summarize count() by Account, Computer
| top 10 by count_
该查询首先筛选出身份验证失败的事件记录,随后按账户和主机名进行分组统计,最终返回尝试次数最多的前10个目标,这有助于快速识别潜在的暴力破解攻击。
下表列举了常见的安全日志类型及其用途:
| 日志类型 |
来源系统 |
典型用途 |
| SecurityEvent |
Windows/Linux 系统 |
审计用户登录、权限变更等安全事件 |
| CommonSecurityLog |
防火墙/入侵检测系统 |
分析网络层攻击与异常流量 |
| AzureActivity |
Azure Resource Manager |
监控资源管理操作与策略合规性 |
日志从收集到分析响应的核心流程如下图所示:
graph TD
A[在Azure资源上启用安全中心] --> B[部署代理并收集安全日志]
B --> C[日志集中发送至Log Analytics工作区]
C --> D[使用KQL进行查询分析与仪表板展示]
D --> E[触发自动化告警或响应动作]
配置与采集:构建日志基线
理解日志架构与数据源
Azure安全中心依赖于Azure Monitor日志(原Log Analytics)作为其核心的日志存储与分析引擎,所有安全数据均通过工作区进行集中化管理。
其数据源主要包括以下几种类型:
- 操作系统日志:通过代理收集的Windows事件日志与Linux syslog。
- 网络流日志:来自网络安全组(NSG)的Flow Logs,提供虚拟网络内部及外部的流量可视化。
- 安全配置评估:定期扫描虚拟机配置,评估其是否符合CIS(互联网安全中心)等安全基准。
- Azure资源诊断日志:来自Azure防火墙、WAF、Key Vault等PaaS服务的原生诊断日志。
配置Log Analytics工作区
为实现跨系统日志的统一管理,首先需要在Azure门户中创建Log Analytics工作区。该工作区作为日志数据的核心存储与分析引擎,支持从虚拟机、应用服务及网络设备中采集日志。
使用Azure CLI可以快速完成工作区的部署:
az monitor log-analytics workspace create \
--resource-group my-rg \
--workspace-name law-demo \
--location eastus
上述命令在名为my-rg的资源组中,于美国东部区域创建了一个名为law-demo的工作区。
启用高级防护与验证日志
在Azure门户中导航至“Microsoft Defender for Cloud”,选择“环境设置”,针对目标订阅启用“高级保护”。此操作将自动部署必要的系统扩展,以增强对虚拟机、存储账户和数据库等资源的威胁监控能力。
| 启用后,可通过简单的KQL查询来验证日志数据是否正常流入工作区: |
查询语句 |
用途说明 |
SecurityAlert \| take 5 |
检查最近是否有安全警报被记录,确认威胁检测功能已生效。 |
利用诊断设置扩展日志收集
诊断设置是Azure平台内实现资源日志集中化收集的核心机制。通过为各类PaaS或IaaS资源(如虚拟机、应用服务、数据库)配置诊断设置,可以将日志导出到Log Analytics工作区、存储账户或事件中心。
一个典型的诊断设置配置(ARM模板片段)如下,它定义了启用应用程序日志并保留30天的策略:
{
"properties": {
"logs": [
{
"category": "ApplicationLogs",
"enabled": true,
"retentionPolicy": {
"days": 30,
"enabled": true
}
}
]
},
"location": "eastus",
"type": "microsoft.insights/diagnosticSettings"
}
其中category指定日志类型,retentionPolicy控制数据保留周期,有助于在满足合规性要求的同时管理存储成本。

图:Azure资源诊断设置的配置界面
查询分析与威胁检测
Kusto查询语言(KQL)基础
Kusto查询语言(KQL)是专为高效处理大规模日志和时序数据而设计的查询语言。其语法以管道(|)串联操作,逻辑清晰且表达力强。
一个基础的查询结构通常包含数据表、时间过滤和结果投影:
// 查询最近一小时内出现的错误级别日志
Logs
| where Timestamp > ago(1h)
| where Level == "Error"
| project Timestamp, Message, UserId
其中,where用于条件过滤,ago(1h)表示一小时前至今的时间范围;project则用于指定输出字段,可以有效减少数据传输量。
构建自定义威胁检测查询
通用安全规则难以覆盖所有场景,通过构建自定义KQL查询,可以精准识别符合组织特定风险模型的异常行为。
例如,以下查询用于检测可能存在风险的成功登录行为,它关注非工作时间、来自非内网IP地址的登录:
// 检测高风险登录行为
SecurityEvent
| where EventID == 4624 // 成功登录事件
| where TimeGenerated > ago(1d)
| where not(IPAddress has_any ("192.168.0.", "10.0.0.")) // 排除可信内网IP段
| summarize LoginCount = count() by User, IPAddress, Country
| where LoginCount >= 5 // 短时间内多次登录
| project User, IPAddress, Country, LoginCount
此查询能帮助发现如暴力破解成功后的账户访问、或账户在异常地理位置登录等潜在威胁。
实践:分析恶意登录模式
在实际运维中,可以从原始日志(如Linux系统的auth.log)中提取模式。使用命令行工具进行初步分析:
grep "Failed password" /var/log/auth.log | \
awk '{print $1,$2,$3,$9,$11}' | \
sort | uniq -c | \
awk '$1 > 5 {print $2,$3,$4,$5}'
该命令链用于分析SSH失败登录,统计并输出尝试次数超过5次的源IP地址及对应用户名,为后续更精细的行为建模提供数据基础。
典型的攻击模式包括:
- 暴力破解:单一IP地址在短时间内尝试大量不同的用户名和密码。
- 撞库攻击:多个不同的IP地址集中尝试同一个用户名。
- 地理跳跃:同一用户账户的登录IP地址在短时间内出现在地理上无关联的地区。
构建合规审计与可视化体系
基于Azure Policy实现持续合规
Azure Policy是强制执行组织标准并持续评估资源合规性的服务。通过定义策略,可以自动检查资源配置是否符合内部安全基线或外部法规(如GDPR、HIPAA)要求。
以下策略示例展示了如何禁止在非指定区域创建虚拟机,实现事前控制:
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Compute/virtualMachines"
},
{
"field": "location",
"notIn": ["eastus", "westus"]
}
]
},
"then": {
"effect": "deny"
}
}
策略评估结果会在Azure门户的合规性仪表板中可视化展示,同时相关数据也可导出至Log Analytics,用于构建自动化运维监控与响应流程。
使用Workbook创建交互式审计仪表板
Azure Monitor Workbook支持创建高度定制化的交互式仪表板。对于合规审计场景,可以结合KQL查询,动态展示资源合规状态、策略评估结果和安全建议。
例如,使用以下查询为仪表板生成安全建议风险分布数据:
SecurityRecommendation
| summarize Count = count() by RecommendationName, Severity
| order by Count desc
在Workbook中,可以添加参数控件(如下拉列表选择订阅或资源组),使所有图表联动响应,极大提升审计效率。
集成告警实现实时响应
Azure Monitor Alerts支持对指标或日志查询结果设置告警规则。当检测到异常(如特定的高危安全事件出现)时,可以实时触发通知。
告警规则需要绑定一个“操作组”来定义响应动作,支持邮件、短信、Webhook等多种方式。通过Webhook,可以将告警信息推送到企业内部IM工具或SOAR平台,触发自动化剧本。

图:配置Azure Monitor告警规则的界面
实践:导出审计日志以满足合规要求
为满足GDPR、SOX等法规的审计要求,需要定期导出并安全归档审计日志。自动化脚本是关键。
例如,使用AWS CLI导出CloudTrail日志并加密的流程如下(Azure活动日志也有类似导出功能):
# 查询指定日期的审计事件并导出为JSON
aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventTime,AttributeValue="2023-10-01" \
--output json > audit-log-20231001.json
# 使用GPG加密导出的日志文件,确保传输和存储安全
gpg --encrypt --recipient compliance-team@company.com audit-log-20231001.json
| 导出的日志应至少包含以下核心字段,以确保操作的可追溯性: |
字段名 |
说明 |
| eventTime |
操作发生的时间戳(ISO 8601格式) |
| userName |
执行操作的用户或服务主体身份 |
| eventSource |
产生事件的服务端点 |
| eventName |
具体的操作类型(如CreateVM, DeleteStorageAccount) |
| sourceIPAddress |
发起操作的客户端IP地址 |
总结与展望
通过系统化地配置Azure安全中心的日志采集、深入运用KQL进行威胁狩猎、并依托Azure Policy与Monitor构建自动化合规审计工作流,企业能够在云原生环境下建立起一套主动、持续的安全运营与合规体系。未来,随着AI驱动的安全分析、与更广泛的SOAR(安全编排、自动化与响应)平台集成,云上安全运维将向着更智能、更自动化的方向持续演进。

图:从被动监控到主动、智能安全的演进路径