Azure Event Grid新手如何跟踪订阅内所有资源的增删改操作?
方案合理性与实现指南
1. 现有配置思路验证
你的当前配置完全可行,可以满足订阅级全资源操作追踪的需求:
- 选择
Microsoft.Resources.Subscriptions作为订阅级事件源是正确的,绑定待监控订阅后可以捕获该订阅下所有资源的操作事件 - 选择
Microsoft.Resources.ResourceDeleteSuccess、Microsoft.Resources.ResourceWriteSuccess两类事件,刚好对应资源删除、创建/修改成功的操作场景 - 后续要加冗余过滤规则直接在Event Grid触发的事件过滤配置页添加即可,支持按资源类型、资源ID前缀、操作名称等多维度过滤。
2. 资源操作详情获取方式
Event Grid触发Logic App后返回的事件负载已经包含你需要的全部信息,直接在工作流中引用对应字段即可:
- 被操作资源信息:取
subject字段即可获得被操作资源的完整资源ID,也可以通过data.resourceUri、data.resourceProvider、data.resourceType拆分获取资源路径、所属服务商、资源类型等分类信息 - 操作人信息:
data.claims.name字段为操作人显示名,data.claims.upn为操作人的用户主体名(通常为企业邮箱格式) - 操作类型:直接取
eventType字段即可区分是删除还是创建/修改操作 - 操作时间:取
eventTime字段获得UTC时间,可通过Logic App内置的时间转换函数转成你需要的时区
如果需要生成通知内容,直接拼接对应字段即可,举个邮件正文的示例:
【资源操作通知】
操作类型:@{triggerBody()?['eventType']}
操作时间:@{convertTimeZone(triggerBody()?['eventTime'], 'UTC', 'China Standard Time')}
操作人:@{triggerBody()?['data']?['claims']?['name']}(@{triggerBody()?['data']?['claims']?['upn']})
被操作资源ID:@{triggerBody()?['subject']}
如果需要获取资源的更多配置属性,可以在触发步骤后添加Azure Resource Manager的「获取资源」动作,传入上面拿到的资源ID即可拉取资源的全量配置信息。
3. 其他可选实现方案
如果仅需要做操作审计留存,不需要自定义通知、对接业务系统这类逻辑,也可以直接启用订阅级活动日志导出功能,直接把所有操作日志归档到存储账户或者Log Analytics工作区,不需要搭建工作流。但如果需要实时通知、自定义过滤规则、对接内部系统的场景,你当前选择的Event Grid + Logic App方案是灵活性最高的,后续调整成本也很低。
内容的提问来源于stack exchange,提问作者pgbfnf
相关产品推荐
相关产品推荐

