你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
关于特权 Azure 角色分配的警报
特权 Azure 角色(例如参与者、所有者或用户访问管理员)是强大的角色,可能会给系统带来风险。 在分配这些或其他角色时,你可能希望通过电子邮件或短信收到通知。 本文介绍如何通过使用 Azure Monitor 创建警报规则,在订阅范围内收到特权角色分配的通知。
先决条件
若要创建警报规则,必须具备:
- 对 Azure 订阅的访问权限
- 在订阅中创建资源组和资源的权限
- Log Analytics 已配置 ,使其有权访问 AzureActivity 表
使用 Azure Monitor 之前请估算成本
与使用 Azure Monitor 和警报规则相关的成本。 该成本基于执行查询和所选通知的频率。 有关详细信息,请参阅 Azure Monitor 定价。
创建警报规则
若要获得特权角色分配的通知,请在 Azure Monitor 中创建警报规则。
登录到 Azure 门户。
转到“监视器”。
在左侧导航栏中,单击“警报”。
单击“ 创建”>“警报规则”。 “创建警报规则”页打开。
在“范围 ”选项卡上,选择你的订阅。
在“条件 ”选项卡上,选择“自定义日志搜索”信号名称。
在“日志查询”框中,添加以下 Kusto 查询,该查询将在订阅的日志上运行并触发警报。
此查询对在所选订阅范围内分配参与者、所有者或用户访问管理员角色的尝试进行筛选。
AzureActivity | where CategoryValue =~ "Administrative" and OperationNameValue =~ "Microsoft.Authorization/roleAssignments/write" and (ActivityStatusValue =~ "Start" or ActivityStatus =~ "Started") | extend Properties_d = todynamic(Properties) | extend RoleDefinition = extractjson("$.Properties.RoleDefinitionId",tostring(Properties_d.requestbody),typeof(string)) | extend PrincipalId = extractjson("$.Properties.PrincipalId",tostring(Properties_d.requestbody),typeof(string)) | extend PrincipalType = extractjson("$.Properties.PrincipalType",tostring(Properties_d.requestbody),typeof(string)) | extend Scope = extractjson("$.Properties.Scope",tostring(Properties_d.requestbody),typeof(string)) | where Scope !contains "resourcegroups" | extend RoleId = split(RoleDefinition,'/')[-1] | extend RoleDisplayName = case( RoleId =~ 'b24988ac-6180-42a0-ab88-20f7382dd24c', "Contributor", RoleId =~ '8e3af657-a8ff-443c-a75c-2fe8c4bcb635', "Owner", RoleId =~ '18d7d88d-d35e-4fb5-a5c3-7773c20a72d9', "User Access Administrator", "Irrelevant") | where RoleDisplayName != "Irrelevant" | project TimeGenerated,Scope, PrincipalId,PrincipalType,RoleDisplayName
在“度量”部分中,设置以下值:
- 度量:表行
- 聚合类型:Count
- 聚合粒度:5 分钟
对于“聚合粒度”,可以将默认值更改为所需的频率。
在“按维度拆分”部分中,将“资源 ID 列”设置为“不拆分”。
在“警报逻辑”部分中,设置以下值:
- 运算符:大于
- 阈值:0
- 评估频率:5 分钟
对于“评估频率”,可以将默认值更改为所需的频率。
在“操作”选项卡上,创建操作组或选择现有操作组。
操作组定义触发警报时执行的操作和通知。
创建操作组时,必须指定资源组以将操作组放入其中。 然后选择触发警报规则时调用的通知(Email/短信/推送/语音操作)。 可以跳过“操作”和“标记”选项卡。 有关详细信息,请参阅在 Azure 门户中创建和管理操作组。
在“详细信息”选项卡上,选择资源组以保存警报规则。
在“警报规则详细信息”中选择“严重性”,并指定“警报规则名称”。
对于“区域”,可以选择任何区域,因为 Azure 活动日志是全局的。
跳过“标记”选项卡。
在“查看 + 创建”选项卡上,单击“创建”以创建警报规则。
测试警报规则
创建警报规则后,可以测试它是否触发。
在订阅范围内分配参与者、所有者或用户访问管理员角色。 有关详细信息,请参阅使用 Azure 门户分配 Azure 角色。
等待几分钟,即可根据聚合粒度和日志查询评估频率接收警报。
在“警报”页上,监视在操作组中指定的警报。
下图显示电子邮件警报的示例。
删除警报规则
按照以下步骤删除角色分配警报规则并停止额外的成本。
在“监视器”中,导航到“警报”。
在导航栏中,单击“警报规则”。
在要删除的警报规则旁边添加一个复选标记。
单击“删除”以删除警报。