Azure ARM 策略部署拒绝特定 sku.name

Azure ARM policy deployment deny specific sku.name

我对策略的arm部署非常困惑,希望有人能帮我解决这个问题。

我想制定一项政策,根据他们的 Sku.name.

拒绝数据库部署

没错,我想允许创建 standardBasic 的数据库,并拒绝所有其他 sku。

我有这个 json 配置,但它部分有效。

{
    "properties": {
      "displayName": "Not allowed resource types",
      "policyType": "BuiltIn",
      "mode": "All",
      "description": "This policy enables you to specify the resource types that your organization cannot deploy.",
      "parameters": {
        "listOfAllowedSKUs": {
          "type": "Array",
          "metadata": {
            "description": "The list of resource types that cannot be deployed.",
            "displayName": "Not allowed resource types",
            "strongType": "resourceTypes"
          }
        }
      },
      "policyRule": {
        "if": {
          "field": "type",
          "in": "[parameters('listOfAllowedSKUs')]"
        },
        "then": {
          "effect": "Deny"
        }
      }
    },
    "id": "/providers/Microsoft.Authorization/policyDefinitions/6c112d4e-5bc7-47ae-a041-ea2d9dccd749",
    "type": "Microsoft.Authorization/policyDefinitions",
    "name": "6c112d4e-5bc7-47ae-a041-ea2d9dccd749"
  }

参数:

{
    "listOfAllowedSKUs": {
    "type": "Array",
    "allowedValues": [
      "Standard",
      "Basic"
    ],
    "metadata": {
      "displayName": "Allowed SKUs",
      "description": "The list of SKUs that can be specified for databases."
    }
  }
}

和规则:

{
    "if": {
        "not": {
          "field": "Microsoft.Sql/servers/databases/sku.name",
            "in": "[parameters('listOfAllowedSKUs')]"
          }
    },
    "then": {
      "effect": "deny"
    }
}

当我部署此策略时,我只能部署 Basic Sku,而所有其他(包括 Standard)都被拒绝。

如何允许同时创建 BasicStandard

非常感谢愿意花宝贵时间帮助我理解这一点的人。

查看 documentation:

  • sku 等级:特定 SKU 的等级或版本,例如基本版、高级版。
  • sku名称:SKU的名称,一般为字母+数字代码,如P3.

因此,在您的情况下,您需要在 sku 等级 上进行过滤。 对于 Basic,名称和等级相同。
对于标准,等级是标准,但名称可以是 S1...S12

{
    "if": {
        "not": {
          "field": "Microsoft.Sql/servers/databases/sku.tier",
            "in": "[parameters('listOfAllowedSKUs')]"
          }
    },
    "then": {
      "effect": "deny"
    }
}