允许用于存储帐户和虚拟机的 SKU

此策略需要存储帐户和虚拟机使用已批准的 SKU。 使用内置策略以确保使用已批准的 SKU。 指定已批准的虚拟机 SKU 数组和已批准的存储帐户 SKU 数组。

如果没有 Azure 订阅,可在开始前创建一个试用帐户

示例模板

{
   "properties": {
      "displayName": "Allowed SKUs for Storage Accounts and Virtual Machines",
      "description": "This policy allows you to specify what skus are allowed for storage accounts and virtual machines",
      "parameters": {
         "LISTOFALLOWEDSKUS_1": {
            "type": "Array",
            "metadata": {
               "displayName": "VM SKUs",
               "strongType": "vmSKUs"
            }
         },
         "LISTOFALLOWEDSKUS_2": {
            "type": "Array",
            "metadata": {
               "displayName": "Storage Account SKUs",
               "strongType": "storageSkus"
            }
         }
      },
      "policyDefinitions": [
         {
            "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/cccc23c7-8427-4f53-ad12-b6a63eb452b3",
            "parameters": {
               "listOfAllowedSKUs": {
                  "value": "[parameters('LISTOFALLOWEDSKUS_1')]"
               }
            }
         },
         {
            "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/7433c107-6db4-4ad1-b57a-a76dce0154a1",
            "parameters": {
               "listOfAllowedSKUs": {
                  "value": "[parameters('LISTOFALLOWEDSKUS_2')]"
               }
            }
         }
      ],
      "metadata": {
         "category": "Cost Control"
      }
   }
}

可使用 Azure 门户或将其与 PowerShell 配合使用来部署此模板。

使用门户进行部署

“部署到 Azure”

使用 PowerShell 进行部署

本示例需要 Azure PowerShell 模块 5.1.1 或更高版本。 运行 Get-Module -ListAvailable AzureRM 即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure PowerShell 模块

运行 Connect-AzureRmAccount -Environment AzureChinaCloud,创建与 Azure 的连接。

$policydefinitions = "https://raw.githubusercontent.com/Azure/azure-policy/master/samples/PolicyInitiatives/skus-for-multiple-types/azurepolicyset.definitions.json"
$policysetparameters = "https://raw.githubusercontent.com/Azure/azure-policy/master/samples/PolicyInitiatives/skus-for-multiple-types/azurepolicyset.parameters.json"

$policyset= New-AzureRmPolicySetDefinition -Name "skus-for-multiple-types" -DisplayName "Allowed SKUs for Storage Accounts and Virtual Machines" -Description "This policy allows you to speficy what skus are allowed for storage accounts and virtual machines" -PolicyDefinition $policydefinitions -Parameter $policysetparameters 

New-AzureRmPolicyAssignment -PolicySetDefinition $policyset -Name <assignmentName> -Scope <scope>  -LISTOFALLOWEDSKUS_1 <VM SKUs> -LISTOFALLOWEDSKUS_2 <Storage Account SKUs>

清理 PowerShell 部署

运行以下命令删除策略分配和定义。

Remove-AzureRmPolicyAssignment -Name <assignmentName>
Remove-AzureRmPolicySetDefinitions -Name "skus-for-multiple-types"

使用 Azure CLI 进行部署

若要运行此示例,请确保已安装最新的 Azure CLI 2.0。 若要开始,请运行 az login 以创建与 Azure 的连接。

Note

在运行 az login 之前,请先运行 az cloud set -n AzureChinaCloud 以更改云环境。 如果要切换回全球 Azure,请再次运行 az cloud set -n AzureCloud

此示例在 Bash shell 中正常工作。 有关在 Windows 客户端上运行 Azure CLI 脚本的选项,请参阅在 Windows 上安装 Azure CLI

az policy set-definition create --name "skus-for-multiple-types" --display-name "Allowed SKUs for Storage Accounts and Virtual Machines" --description "This policy allows you to speficy what skus are allowed for storage accounts and virtual machines" --definitions "https://raw.githubusercontent.com/Azure/azure-policy/master/samples/PolicyInitiatives/skus-for-multiple-types/azurepolicyset.definitions.json" --params "https://raw.githubusercontent.com/Azure/azure-policy/master/samples/PolicyInitiatives/skus-for-multiple-types/azurepolicyset.parameters.json"

az policy assignment create --name <assignmentName> --scope <scope> --policy-set-definition "skus-for-multiple-types" --params "{ 'LISTOFALLOWEDSKUS_1': { 'value': <VM SKU Array> }, 'LISTOFALLOWEDSKUS_2': { 'value': <Storage Account SKU Array> } }"

清理 Azure CLI 部署

运行以下命令删除策略分配和定义。

az policy assignment delete --name <assignmentName>
az policy set-definition delete --name "skus-for-multiple-types"

后续步骤