如何通过脚本配置Azure资源策略限制资源部署位置?
使用PowerShell脚本配置Azure资源允许位置策略
前提准备
- 安装最新版Azure PowerShell模块:
Install-Module -Name Az -Force -AllowClobber - 登录Azure账号:
Connect-AzAccount
完整脚本示例
# 定义核心参数 $allowedLocations = @("eastus", "westus") # 替换为你需要的目标位置 $policyName = "AllowedLocationsPolicy" $policyDescription = "限制资源仅能部署到指定允许位置" $policyScope = "/subscriptions/你的订阅ID" # 可替换为资源组ID,格式:"/subscriptions/xxx/resourceGroups/xxx" # 创建策略定义 $policyDefinition = New-AzPolicyDefinition ` -Name $policyName ` -DisplayName "允许的资源部署位置" ` -Description $policyDescription ` -Policy '{ "mode": "Indexed", "policyRule": { "if": { "allOf": [ { "field": "location", "notIn": "[parameters(''allowedLocations'')]" }, { "field": "location", "notEquals": "global" }, { "not": { "field": "type", "in": [ "Microsoft.AAD/domainServices", "Microsoft.Blueprint/blueprints", "Microsoft.Blueprint/blueprintAssignments" ] } } ] }, "then": { "effect": "Deny" } }, "parameters": { "allowedLocations": { "type": "Array", "metadata": { "description": "允许资源部署的位置列表", "displayName": "允许的位置" } } } }' ` -Parameter '{ "allowedLocations": { "value": ["' + ($allowedLocations -join '","') + '"] } }' # 将策略分配到指定作用域 New-AzPolicyAssignment ` -Name "$policyName-Assignment" ` -PolicyDefinition $policyDefinition ` -Scope $policyScope
关键配置说明
- 允许位置调整:直接修改
$allowedLocations数组,填入Azure官方支持的位置名称(如southeastasia、northeurope等) - 作用域选择:
$policyScope可设置为订阅或资源组级别,按需切换 - 特殊资源排除:脚本默认排除了部分不受位置限制的资源类型(如Azure AD域服务),若需新增排除项,直接在策略规则的
type数组中添加对应资源类型即可 - 生效模式:当前使用
Deny效果会直接阻止违规部署,也可改为Audit仅记录操作不阻止
验证策略生效
执行脚本后,可通过以下命令查看已分配的策略:
Get-AzPolicyAssignment -Scope $policyScope | Where-Object { $_.Name -like "*$policyName*" }
内容的提问来源于stack exchange,提问作者cloud
相关产品推荐
相关产品推荐

