你当前正在访问 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

后续步骤

了解其他可用的服务器管理工具和服务。