Azure管理组配置全拒绝策略后如何放行Terraform、Bicep部署
Azure 禁止门户手动操作、放行IaC部署的策略调整方案
你当前的策略没有区分请求来源,所以会拦截所有渠道的资源操作,可根据需求选择以下两种调整方案:
方案1:仅拦截Azure门户操作(适配当前需求)
在策略规则中新增Azure门户请求判定条件,即可实现仅拒绝门户操作、放行所有非门户渠道(包括Terraform、Bicep、Azure CLI等)的需求,修改后的策略如下:
{ "mode": "All", "policyRule": { "if": { "allOf": [ { "field": "type", "like": "Microsoft.*" }, { "field": "azurePortalRequest", "equals": "true" } ] }, "then": { "effect": "deny" } } }
方案2:严格仅允许指定IaC服务主体操作(生产环境更推荐)
如果需要避免手动通过Azure CLI、PowerShell执行的非IaC操作也被放行,可采用服务主体白名单方案,仅允许专门用于跑IaC部署的账号/服务主体操作资源:
- 提前获取用于执行Terraform、Bicep部署的服务主体/账号的Object ID
- 调整策略规则,将指定ID加入排除列表,示例如下:
{ "mode": "All", "policyRule": { "if": { "allOf": [ { "field": "type", "like": "Microsoft.*" }, { "field": "principalId", "notIn": [ "你的Terraform服务主体Object ID", "你的Bicep部署服务主体Object ID" ] } ] }, "then": { "effect": "deny" } } }
验证步骤
- 登录Azure门户尝试创建任意资源,确认触发策略拒绝报错
- 本地执行
terraform apply或Bicep部署命令,确认资源可正常创建
内容的提问来源于stack exchange,提问作者Nayden Van
相关产品推荐
相关产品推荐

