【问题标题】:How can I create an Azure policy that validates Resource Group Names如何创建验证资源组名称的 Azure 策略
【发布时间】:2018-02-16 04:09:56
【问题描述】:

我正在尝试创建一个可以在订阅级别分配的 Azure 策略,并控制订阅中资源组的命名。

策略需要针对资源类型或以其他方式限制其应用,否则它们将全局应用于所有资源。

我可以使用什么资源类型(或其他方法)将我的验证限制为仅限于资源组名称?

这是我正在尝试的:

$definition = New-AzureRmPolicyDefinition -Name resourceGroupNamePatterns 
   -Description "Restrict resource group names to allowed prefixes only" -Policy '{
    "if": {
        "allOf": [
          {
            "not": {
              "field": "name",
              "like": "Pattern1-*"
            }
          },
          {
            "not": {
              "field": "name",
              "like": "Pattern2-*"
            }
          },
          {
            "field": "type",
            "equals": "Microsoft.Resources/subscriptions/resourcegroups"
          }
        ]
    },
    "then": {
        "effect": "deny"
    }
}'

【问题讨论】:

    标签: azure azure-powershell


    【解决方案1】:

    不确定这个问题是否仍然相关,但在发布时 Azure Policy 不支持对资源组进行评估。

    问题中提供的政策定义是正确的。

    请尝试更新您的 powershell 版本,并更新策略定义。它将默认为mode: all,这反过来将启用对资源组的策略评估。

    关于策略模式的文档:https://docs.microsoft.com/en-us/azure/azure-policy/policy-definition

    模式

    模式决定了将针对策略评估哪些资源类型。支持的模式有:

    • 全部:评估资源组和所有资源类型
    • 索引:仅评估支持标签和位置的资源类型

    我们建议您将模式设置为全部。通过门户创建的所有策略定义都使用 all 模式。如果使用 PowerShell 或 Azure CLI,则需要指定 mode 参数并将其设置为 all。

    【讨论】:

    • 谢谢,会尝试并报告
    • np。如果出现任何问题,请告诉我,我会尽力提供帮助。
    【解决方案2】:

    资源组为Microsoft.Resources/subscriptions/resourcegroups 类型。您可以从资源提供者的操作中推断出这一点:

    Get-AzureRmProviderOperation 'Microsoft.Resources/*'
    

    【讨论】:

    • 谢谢!我会试试这个,让您知道该类型是否适用于以资源组为目标的策略。我的 google-fu 无法发现这些特殊的信息 ;-)
    • 我尝试设置一个将其作为资源类型的策略。它应用到订阅 OK 但没有任何效果(仍然可以创建不同名称的 RG)
    • 我不确定它是否会影响资源组,tbh。我尝试了各种组合并且该策略有效,但不适用于资源组。至少在我的实验中
    • 是的,我也这么认为。我已经向我们的 MS 代表提到了它,如果他们回来了,我会在这里更新它作为答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2015-08-15
    • 1970-01-01
    相关资源
    最近更新 更多