使用Azure虚拟机实例视图REST API批量校验Windows VM备份配置的问询
可行方案如下
方案1:使用Azure Resource Graph批量查询(最优方案)
该方案完全不需要提前获取任何恢复服务保管库信息,支持跨订阅、跨资源组批量查询所有虚拟机的备份配置状态,完美适配批量校验场景,查询逻辑对Windows和Linux虚拟机统一生效。
仅需你的操作账号具备对应订阅的Microsoft.ResourceGraph/resources/read权限、以及虚拟机和恢复服务保管库的读取权限(常规只读角色即可满足),执行以下KQL查询语句即可获取结果:
Resources | where type == 'microsoft.compute/virtualmachines' // 关联备份受保护项数据 | join kind=leftouter ( RecoveryServicesResources | where type == 'Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems' | where properties.backupManagementType == 'AzureIaasVM' | extend protectedVmId = tolower(properties.sourceResourceId) | extend isBackupEnabled = true ) on $left.id == $right.protectedVmId // 补全未配置备份的虚拟机状态 | extend isBackupEnabled = coalesce(isBackupEnabled, false) // 可根据需求调整输出字段 | project vmName = name, resourceGroup, subscriptionId, vmId = id, isBackupEnabled
查询结果中isBackupEnabled字段为true即代表对应虚拟机已配置Azure VM备份。
方案2:枚举订阅保管库匹配校验
如果无法使用Azure Resource Graph,可通过以下步骤实现校验:
- 调用资源列表API枚举所有目标虚拟机所属订阅下的全部恢复服务保管库
- 遍历每个保管库,调用受保护项列表接口拉取该保管库下所有已备份的Azure虚拟机资源ID
- 将拉取到的已备份虚拟机ID列表,和你需要校验的虚拟机ID列表做比对,匹配成功即为已配置备份
补充说明:Windows虚拟机实例视图无备份扩展的原因
Windows版本的Azure备份快照扩展Microsoft.Azure.RecoveryServices.VMSnapshot为按需触发的临时扩展,仅在备份作业实际运行时才会临时注入到虚拟机中,作业完成后不会常驻在扩展列表中,因此无法通过虚拟机实例视图API查询到对应标识。而Linux版本的快照扩展为常驻扩展,所以可以通过实例视图查询到。
内容的提问来源于stack exchange,提问作者delucaezequiel
相关产品推荐
相关产品推荐

