先来讲下这个事的背景,之前我们配置了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活动日志,这里已经连接好了,如果没连接的话,直接点击连接即可

图片1.png


之后到Policy这里查下Role assignment的ID

图片2.png


回到Log Analytics中,找到日志

图片5.png

输入查询语句,可以看到是可以查到相应的日志记录的

AzureActivity

| where ResourceId contains "/subscriptions/ /providers/Microsoft.Authorization/policyAssignments/18414da0cc1e4b8c8b4dd423"

| where ActivityStatus contains "Succeeded"

| where OperationName contains "write"

点击新建警报规则

图片6.png


根据需要,可以修改警报逻辑,调整报警的判断阈值等

图片7.png



之后再来定义所需的操作,这里直接发送邮件即可

图片8.png



之后尝试修改几次policy,稍等一段时间之后,可以看到警告已经出现了

图片9.png


图片10.png