Azure Policy调整:排除Function Apps与App Services避免创建被阻
修正后的Azure Policy配置
{ "mode": "Indexed", "policyRule": { "if": { "allOf": [ { "field": "type", "equals": "Microsoft.Storage/storageAccounts" }, { "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction", "notEquals": "Deny" }, { "not": { "anyOf": [ { "field": "tags['ms-resource-usage']", "equals": "azure-function-app" }, { "field": "tags['createdBy']", "equals": "Microsoft.Web" } ] } } ] }, "then": { "effect": "[parameters('effect')]" } }, "parameters": { "effect": { "type": "String", "metadata": { "displayName": "执行效果", "description": "策略规则匹配时执行的操作" }, "allowedValues": [ "Audit", "Deny", "Disabled" ], "defaultValue": "Audit" } } }
原策略问题分析
- 逻辑条件错误:原策略用
anyOf包含两个条件,导致所有存储账户(无论公网访问是否禁用)都会触发规则,违背了"仅约束未禁用公网访问的存储账户"的核心需求。需将anyOf改为allOf,确保只针对「存储账户 + 公网访问未禁用」的资源。 - 未排除关联存储账户:部署Function App或App Service时会自动创建关联存储账户,这类存储默认不禁用公网访问,会被原策略拦截。需通过标签(如
ms-resource-usage)或创建者标识筛选排除这类特殊存储。
验证与调整建议
- 测试阶段将
effect设为Audit,确认规则仅匹配需要约束的存储账户后,再改为Deny。 - 若自动创建的存储账户标签与示例不同,可在Azure门户查看目标存储的标签/属性,调整
anyOf内的筛选条件。
内容的提问来源于stack exchange,提问作者Aryan
相关产品推荐
相关产品推荐

