如何在不锁定子资源的情况下保护Azure专用DNS区域免遭误删
Azure专用DNS区域资源锁:避免子资源继承限制的解决方案
首先明确:Azure原生的资源锁不支持取消对子资源的继承——所有应用在父资源(这里的专用DNS区域)上的锁,会自动覆盖其所有子资源(包括虚拟网络链接),没法单独排除特定子资源。
给你两个可行的替代方案,既能保护DNS区域不被误删,又能自由删除虚拟网络链接:
方案1:改用Delete锁
如果你之前加的是ReadOnly锁,换成Delete锁就行。Delete锁的作用很明确:只阻止整个DNS区域被删除,但允许对DNS区域本身以及所有子资源做修改操作(包括删除虚拟网络链接)。
注意:Delete锁不限制资源配置的修改,只防删除,刚好匹配你的需求。
方案2:用Azure Policy替代资源锁
放弃资源锁,创建自定义Azure Policy,专门针对Microsoft.Network/privateDnsZones类型的资源限制删除操作,不对子资源生效。参考的Policy规则如下:
{ "mode": "All", "policyRule": { "if": { "allOf": [ { "field": "type", "equals": "Microsoft.Network/privateDnsZones" }, { "field": "action", "equals": "delete" } ] }, "then": { "effect": "deny" } }, "parameters": {} }
这个Policy只会拒绝删除专用DNS区域的请求,完全不影响虚拟网络链接的删除或修改。
额外提醒
- 切换锁类型时,要先删原有锁再加新锁,这段时间DNS区域处于无锁状态,建议选业务低峰期操作。
- Azure Policy配置后不会立即生效,大概需要等5-10分钟再测试效果。
内容的提问来源于stack exchange,提问作者Amateur
相关产品推荐
相关产品推荐

