先来讲下这个事的背景,之前我们配置了Azure Policy,来限制在订阅中可以使用的Azure Service以及VM size, 这样可以避免一些不必要的额外费用,加强IT管理员对合规性的控制,但是有一个问题是,如果有一些拥有修改Policy权限的用户对Policy做了一些修改,无论是有意还是无意,都会导致我们的管理规范受到影响,如果管理员没发现这个问题,仍然以为Policy还在正常工作的话,那么就失去了设置Policy的意义,相反还可能导致比不设置Policy更严重的问题,所以我们需要有有一个通知的机制,当策略受到了修改的时候,及时通知到管理员,这也是这篇博客需要做的事
首先,完成这个任务我们需要有log,任何对policy修改的log其实都会被记录在Azure中,我们手动查询的时候是可以查到的,但是默认不会有任何通知,所以我们需要做的就是要增加一个触发的机制
要做到这点的话我们可以借助于Azure monitor以及Log Analytics, 首先可以通过Log Analytics,把活动日志都发送到Log Analytics中
在Log Analytics中,找到Azure活动日志,这里已经连接好了,如果没连接的话,直接点击连接即可
之后到Policy这里查下Role assignment的ID
回到Log Analytics中,找到日志
输入查询语句,可以看到是可以查到相应的日志记录的
AzureActivity
| where ResourceId contains "/subscriptions/ /providers/Microsoft.Authorization/policyAssignments/18414da0cc1e4b8c8b4dd423"
| where ActivityStatus contains "Succeeded"
| where OperationName contains "write"
点击新建警报规则
根据需要,可以修改警报逻辑,调整报警的判断阈值等
之后再来定义所需的操作,这里直接发送邮件即可
之后尝试修改几次policy,稍等一段时间之后,可以看到警告已经出现了