需要在Azure中分配策略,在该策略中仅使用指定的标记名称和值来部署资源。 我们需要添加一个Tag名称,根据情况,该名称可以有多个Tag值。
例如
标记名称:环境
标签值:产品,非产品,UAT,测试
因此,这里所有值的标签名称都是相同的,并且值将根据不同情况而相应地更改。相同的代码可能是什么?
答案 0 :(得分:0)
您可以使用Azure Policy Framework,并且有一个针对您的要求的内置定义-“强制存在标签。不适用于资源组。”
从门户创建分配的步骤已指定here。 这将不允许创建没有标签的资源。 您可以从Azure门户中查看更多内置定义的信息
答案 1 :(得分:0)
我认为您将必须使用Array参数,并为每个标签都有一个策略定义。我试图动态创建一个可用于不同标签的标签,然后再创建一个用于指定多个标签值的选项,但无法使其工作。 https://docs.microsoft.com/en-us/azure/governance/policy/how-to/author-policies-for-arrays
答案 2 :(得分:0)
我会给你我的代码,和你的情况有点类似..在我的情况下,这段代码工作正常:
{
"properties": {
"displayName": "Enforce Resource Group Tag Values",
"policyType": "Custom",
"mode": "All",
"parameters": {
"tagEnv": {
"type": "String",
"metadata": {
"displayName": "Tag Environment",
"description": "Name of the tag, such as 'environment'"
}
},
"allowedEnv": {
"type": "Array",
"metadata": {
"displayName": "Allowed environments",
"description": "The list of value that can be specified when deploying resources",
"strongType": "environment"
},
"allowedValues": [
"common",
"dev",
"test",
"prod",
"research"
],
"defaultValue": [
"common"
]
}
},
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"anyOf": [
{
"field": "[concat('tags[', parameters('tagEnv'), ']')]",
"exists": "false"
},
{
"not": {
"field": "[concat('tags[', parameters('tagEnv'), ']')]",
"in": "[parameters('allowedEnv')]"
}
}
]
}
]
},
"then": {
"effect": "deny"
}
}
}}