0

我制定了一项政策来监控资源的命名约定。我们有一个特定的指导方针,提供了一些变化,我想我已经准确地捕捉到了它。

以此为样本

https://docs.microsoft.com/en-us/azure/governance/policy/samples/allow-multiple-name-patterns

我想出了以下我认为可行的方法。问题是当我去部署它时,Azure Policy api 说我定义了参数,但它们没有被使用,而且很明显它们是。寻求有关使用参数创建多名称模式的帮助,如果可能的话。

    "properties": {
        "displayName": "Match multiple name patterns.",
        "description": "Allows one of multiple naming patterns for resources.",
        "mode": "Indexed",
        "parameters": {
            "buName": {
               "type": "String",
               "metadata": {
                  "description": "Abbreviated Business Unit / i.e. USNR, SHSD, MAXD"
               }
            },
            "regionShortCode": {
               "type": "String",
               "metadata": {
                  "description": "Shortcode for the region / i.e. CUS, NCU, EUS"
               }
            },
            "environmentShortCode": {
                "type": "String",
                "metadata": {
                   "description": "Environment code / i.e. D (dev), U (uat), P (prod)"
                }
             }
         },
        "policyRule": {
            "if": {
                "allOf": [
                    {
                        "not": {
                            "field": "name",
                            "match": "[parameters('buName')]-[parameters('regionShortCode')]-[parameters('environmentShortCode')]-???-###"
                        }
                    },
                    {
                        "not": {
                            "field": "name",
                            "match": "[parameters('buName')]-[parameters('regionShortCode')]-[parameters('environmentShortCode')]-???"
                        }
                    },
                    {
                        "not": {
                            "field": "name",
                            "match": "[parameters('regionShortCode')]???[parameters('environmentShortCode')]##"
                        }
                    },
                    {
                        "not": {
                            "field": "name",
                            "match": "[parameters('regionShortCode')]???[parameters('environmentShortCode')]###"
                        }
                    }
                ]
            },
            "then": {
                "effect": "audit"
            }
        }
    }
} ```
4

2 回答 2

1

您应该只使用一次括号并将所有内容连接在一起。尝试使用此方法: [concat(parameters('buName'), '-', parameters('regionShortCode'), '-', parameters('environmentShortCode'), '-???-###')]

于 2020-01-15T21:49:18.733 回答
0

你得到的错误是在分配时间吗?

另外,对于您正在使用的参数?是否有明确的用户必须使用的列表?如果它只是一个模式约定,比如总线它是一个 4 个字母的名称,那么你应该使用通配符。

请记住,在分配时您必须指定每个参数。

于 2020-01-09T00:09:39.563 回答