如何找到Azure Policy的流程
how to find the flow of azure policy
我正在创建 Azure Policy,在很多帮助下我能够获得以下 json 策略,但它的行为方式与我预期的不同。
根据我的理解(如果我错了请纠正我):Azure Policy 基本上是一个 [if] 和 [then] 语句。在 [if] 之后,allof 标签出现在说明这一点的图片中。 If Condition [Type : Resource Group] Matches and [Tag Name Env != prod ] 和 [Tag Name OS != windows ] [then] deny.
但上述策略的结果是:如果我在单个 ResourceGroup 中指定 [Env = prod 并指定 OS = Linux],则该策略允许用户创建资源组。
这不应该是政策的结果。
预期结果应该是:
场景 1(策略表现 正确):如果我只指定 [Env = prod] 那么它应该允许我创建 ResourceGroup 或者如果我指定任何其他内容则阻止我
场景 2(策略表现 正确):[OS = Windows] 那么它应该允许我创建 RG 否则阻止我,如果我指定任何其他内容。
场景 3(策略表现 不正确):[env = prod and OS = linux] 那么它应该阻止我,因为第二个 TAG 是不正确。
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"field": "tags.Env",
"notEquals": "Prod"
},
{
"field": "tags.OS",
"notEquals": "windows"
}
]
},
"then": { "effect": "deny" }
}
您提供的策略定义按预期工作。它只会在 tags.Env != "Prod" && tags.OS != "Windows"
时拒绝资源组。如果翻转此条件,您可以看到它将 允许 任何 tags.Env == "Prod" || tags.OS == "Windows"
的资源组,这就是您所经历的。
以下策略定义将拒绝任何没有预期标签的资源组:
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"anyOf": [
{
"field": "tags.Env",
"notEquals": "Prod"
},
{
"field": "tags.OS",
"notEquals": "windows"
}
]
}
]
},
"then": {
"effect": "deny"
}
}
我正在创建 Azure Policy,在很多帮助下我能够获得以下 json 策略,但它的行为方式与我预期的不同。
根据我的理解(如果我错了请纠正我):Azure Policy 基本上是一个 [if] 和 [then] 语句。在 [if] 之后,allof 标签出现在说明这一点的图片中。 If Condition [Type : Resource Group] Matches and [Tag Name Env != prod ] 和 [Tag Name OS != windows ] [then] deny.
但上述策略的结果是:如果我在单个 ResourceGroup 中指定 [Env = prod 并指定 OS = Linux],则该策略允许用户创建资源组。 这不应该是政策的结果。
预期结果应该是:
场景 1(策略表现 正确):如果我只指定 [Env = prod] 那么它应该允许我创建 ResourceGroup 或者如果我指定任何其他内容则阻止我
场景 2(策略表现 正确):[OS = Windows] 那么它应该允许我创建 RG 否则阻止我,如果我指定任何其他内容。
场景 3(策略表现 不正确):[env = prod and OS = linux] 那么它应该阻止我,因为第二个 TAG 是不正确。
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"field": "tags.Env",
"notEquals": "Prod"
},
{
"field": "tags.OS",
"notEquals": "windows"
}
]
},
"then": { "effect": "deny" }
}
您提供的策略定义按预期工作。它只会在 tags.Env != "Prod" && tags.OS != "Windows"
时拒绝资源组。如果翻转此条件,您可以看到它将 允许 任何 tags.Env == "Prod" || tags.OS == "Windows"
的资源组,这就是您所经历的。
以下策略定义将拒绝任何没有预期标签的资源组:
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"anyOf": [
{
"field": "tags.Env",
"notEquals": "Prod"
},
{
"field": "tags.OS",
"notEquals": "windows"
}
]
}
]
},
"then": {
"effect": "deny"
}
}