如何找到 azure policy 的流量

Posted

技术标签:

【中文标题】如何找到 azure policy 的流量【英文标题】:how to find the flow of azure policy 【发布时间】:2019-01-12 06:33:26 【问题描述】:

我正在创建一个 Azure 策略,在很多帮助下我能够获得以下 json 策略,但它的行为方式与我的预期不同。

根据我的理解(如果我错了,请纠正我):Azure Policy 基本上是一个 [if] 和 [then] 语句。在 [if] 之后,所有标签都出现在图片中,说明了这一点。如果条件 [Type : Resource Group] 匹配并且 [Tag Name Env != prod ] 和 [Tag Name OS != windows ] [then] 拒绝。

但上述策略的结果是:如果我在单个 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" 

【问题讨论】:

【参考方案1】:

您提供的策略定义按预期工作。如果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"
    

【讨论】:

谢谢,我之前尝试过使用存在值的“anyof”,但没有意识到我应该将它用于值以及 windows 和 prod。

以上是关于如何找到 azure policy 的流量的主要内容,如果未能解决你的问题,请参考以下文章

Azure 流量管理器性能平衡与不同数据中心的嵌套配置文件

13.Azure流量管理器(上)

13.Azure流量管理器(上)

从本地连接 Azure 公共服务

Microsoft Azure中TrafficManager (流量管理器)的路由方式

14.Azure流量管理器(下)