你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
常见的 Azure Policy 示例
Azure Policy 有助于将治理应用于云资源。 此服务可帮助你创建防护措施,确保全公司都符合治理策略要求。 若要创建策略,请使用 Azure 门户或 PowerShell cmdlet。 本文提供 PowerShell cmdlet 示例。
注意
使用 Azure Policy 时,强制实施策略 (DeployIfNotExists
) 不会自动部署到现有虚拟机 (VM)。 需要修正才能使 VM 保持合规性。 有关详细信息,请参阅使用 Azure Policy 修正不合规的资源。
常见策略示例
以下部分描述了一些常用策略。
限制资源区域
法规和策略合规性通常取决于对部署资源的物理位置的控制。 可使用内置策略来允许用户仅在某些获准的 Azure 区域创建资源。
若要在门户中查找此策略,请在策略定义页上搜索“位置”。 或者,运行以下 cmdlet 来查找策略:
Get-AzPolicyDefinition | Where-Object { ($_.Properties.policyType -eq 'BuiltIn') `
-and ($_.Properties.displayName -like '*location*') }
以下脚本演示了如何分配策略。 更改 $SubscriptionID
值,使其指向要为其分配策略的订阅。 运行脚本之前,请使用 Connect-AzAccount
cmdlet 进行登录。
# Specify the value for $SubscriptionID.
$SubscriptionID = <subscription ID>
$scope = "/subscriptions/$SubscriptionID"
# Replace the -Name GUID with the policy GUID you want to assign.
$AllowedLocationPolicy = Get-AzPolicyDefinition -Name "e56962a6-4747-49cd-b67b-bf8b01975c4c"
# Replace the locations with the ones you want to specify.
$policyParam = '{ "listOfAllowedLocations":{"value":["eastus","westus"]}}'
New-AzPolicyAssignment -Name "Allowed Location" -DisplayName "Allowed locations for resource creation" -Scope $scope -PolicyDefinition $AllowedLocationPolicy -Location eastus -PolicyParameter $policyParam
还可使用此脚本来应用本文中讨论的其他策略。 只需将设置 $AllowedLocationPolicy
的行中的 GUID 替换为你想要应用的策略的 GUID 即可。
阻止某些资源类型
另一个用于控制成本的常见内置策略还可用于阻止某些资源类型。
若要在门户中查找此策略,请在策略定义页上搜索“允许的资源类型”。 或者,运行以下 cmdlet 来查找策略:
Get-AzPolicyDefinition | Where-Object { ($_.Properties.policyType -eq "BuiltIn") -and ($_.Properties.displayName -like "*allowed resource types") }
确定想要使用的策略后,可修改限制资源区域部分中的 PowerShell 示例来分配策略。
限制 VM 大小
Azure 提供各种 VM 大小来支持各种工作负载。 若要控制预算,可创建一个只允许订阅中的部分 VM 大小的策略。
部署反恶意软件
可使用此策略将具有默认配置的 Microsoft Antimalware 扩展部署到不受反恶意软件保护的 VM。
策略 GUID 为 2835b622-407b-4114-9198-6f7064cbe0dc
。
以下脚本演示了如何分配策略。 要使用脚本,请更改 $SubscriptionID
值,使其指向要为其分配策略的订阅。 运行脚本之前,请使用 Connect-AzAccount
cmdlet 进行登录。
# Specify the value for $SubscriptionID.
$subscriptionID = <subscription ID>
$scope = "/subscriptions/$subscriptionID"
$antimalwarePolicy = Get-AzPolicyDefinition -Name "2835b622-407b-4114-9198-6f7064cbe0dc"
# Replace location "eastus" with the value that you want to use.
New-AzPolicyAssignment -Name "Deploy Antimalware" -DisplayName "Deploy default Microsoft IaaSAntimalware extension for Windows Server" -Scope $scope -PolicyDefinition $antimalwarePolicy -Location eastus -AssignIdentity
后续步骤
了解其他可用的服务器管理工具和服务。