使用 Azure Monitor 监视安全事件
Azure Monitor 活动日志是 Azure 中的一种平台日志,它提供订阅级事件的见解。 活动日志包括何时修改了资源或何时启动了虚拟机等信息。 可以在 Azure 门户中查看活动日志,或在 PowerShell 和 Azure CLI 中检索条目。 本文介绍如何查看活动日志并将其发送到不同的目标。
对于额外功能,出于以下原因,请创建诊断设置以将活动日志发送到这些位置中的一个或多个:
发送到 Azure Monitor 日志,以进行更复杂的查询和提醒以及延长保留期限(最长 2 年)。
发送到 Azure 事件中心以在 Azure 外部转发。
发送到 Azure 存储以实现更经济的长期存档。
活动日志中的条目是系统生成的,无法更改或删除。
活动日志中的条目表示控制平面变更,如虚拟机重启,任何非相关条目都应写入 Azure 资源日志。
保留期
活动日志事件在 Azure 中保留 90 天,然后被删除。 在此期间,日志项都是免费存储的,与卷无关。 要实现额外功能(例如更长的保留时间),请创建一个诊断设置并根据需要将条目路由到另一个位置。 请参阅前面部分中的条件。
查看活动日志
可以通过 Azure 门户中的大多数菜单访问活动日志。 你从中打开它的菜单确定了它的初始筛选器。 如果从“监视器”菜单打开它,则唯一的筛选器将基于订阅。 如果从某个资源的菜单打开它,则筛选器将设置为该资源。 始终可以更改筛选器来查看所有其他条目。 选择“添加筛选器”可向筛选器添加更多属性。
下载活动日志
选择“下载为 CSV”,在当前视图中下载事件。
查看更改历史记录
对于某些事件,可以查看“更改历史记录”,其中显示了该事件期间进行的更改。 从活动日志中选择要更深入地查看的事件。 选择“更改历史记录”选项卡,以查看操作前后最多 30 分钟内对资源所做的任何更改。
如果有与事件关联的任何更改,你将看到可选择的更改列表。 选择一项更改可打开“更改历史记录”页。 此页显示对资源所做的更改。 在以下示例中,可以看到已更改的 VM 大小。
检索活动日志事件的其他方法
还可以使用以下方法来访问活动日志事件:
- 在 PowerShell 中使用 Get-AzLog cmdlet 检索活动日志。 请参阅 Azure Monitor PowerShell 示例。
- 在 CLI 中使用 az monitor activity-log 检索活动日志。 请参阅 Azure 监视器 CLI 示例。
- 在 REST 客户端中使用 Azure Monitor REST API 检索活动日志。
发送到 Log Analytics 工作区
将活动日志发送到 Log Analytics 工作区以启用 Azure Monitor 日志功能,使用此功能可以:
- 将活动日志数据与 Azure Monitor 收集的其他监视数据相关联。
- 将来自多个 Azure 订阅和租户的活动日志合并到同一位置一起进行分析。
- 使用日志查询来执行复杂分析,并深入了解活动日志条目。
- 将日志警报与活动条目配合使用,以实现更复杂的警报逻辑。
- 活动日志项的存储时间需要长于活动日志保留期。
- Log Analytics 工作区中存储的活动日志数据不会产生数据引入或保留费用。
- Log Analytics 中的默认保持期为 90 天。
选择“导出活动日志”以将活动日志发送到 Log Analytics 工作区。 可以将任一订阅中的活动日志发送到最多五个工作区。
Log Analytics 工作区中的活动日志数据存储在名为 AzureActivity 的表中,可以在 Log Analytics 中使用日志查询来检索该表。 此表的结构因日志条目类别而异。
在某些情况下,AzureActivity 字段中的值可能具有不同于其他等效值的大小写。 在 AzureActivity 中查询数据时,请注意使用不区分大小写的运算符进行字符串比较,或使用标量函数在进行任何比较之前强制字段采用统一大小写。 例如,在执行字符串比较时,在字段上使用 tolower() 函数,以强制其始终为小写或 =~ 运算符。
发送到 Azure 存储
如果要将日志数据保留超过 90 天以进行审核、静态分析或备份,请将活动日志发送到 Azure 存储帐户。 如果只需将事件保留 90 天或更短时间,则无需设置为存档到存储帐户。 活动日志事件将在 Azure 平台中保留 90 天。
将活动日志发送到 Azure 时,一旦发生事件,就会在存储帐户中创建一个存储容器。
每个 PT1H.json blob 都包含一个 JSON 对象,其中包含在 Blob URL 中指定的小时内收到的日志文件中的事件。 在当前小时内,事件在收到时会追加到 PT1H.json 文件中,而不管这些事件在何时生成。 URL 中的分钟值 m=00 始终为 00,因为系统以小时为间隔创建 blob。