Azure 中的条件存在检查:拒绝策略

Posted

技术标签:

【中文标题】Azure 中的条件存在检查:拒绝策略【英文标题】:Condition existence check in Azure : deny Policy 【发布时间】:2022-01-03 00:30:03 【问题描述】:

是否可以根据存在逻辑创建策略定义以拒绝创建。例如 - 如果 EnableHttpsTrafficOnly 在存储帐户上设置为 false,我想拒绝创建存储 blob 或文件共享。请注意,此策略应仅拒绝创建 blob 或共享资源,而不应拒绝创建存储帐户。

使用以下策略,但它不起作用

"allOf": [

"not": 
"field": "Microsoft.Storage/storageAccounts/supportsHttpsTrafficOnly",
"equals": "true"

,

"allOf": [

"source": "action",
"like": "Microsoft.Storage/storageAccounts/fileServices/shares/*"
,

"field": "Microsoft.Storage/storageAccounts/fileServices/shares/enabledProtocols",
"equals": "SMB"

]

]
```

【问题讨论】:

【参考方案1】:

关于问题-

是否可以根据存在逻辑创建拒绝创建的策略定义?

答案是,您可以使用自定义策略定义,根据存在逻辑创建策略定义。您首先确定资源属性并应用条件来设置要使用的效果。

我尝试使用以下策略定义重现您尝试执行的操作,但也没有成功。

  
    "mode": "All",  
    "policyRule":   
        "if":   
            "allOf": [  
                  
                    "field": "type",  
                    "equals": "Microsoft.Storage/storageAccounts/blobServices"  
                ,  
                         
                    "field": "Microsoft.Storage/storageAccounts/supportsHttpsTrafficOnly",
                    "notEquals": "true"
                
            ]  
        ,  
        "then":   
            "effect": "deny"  
          
    ,  
    "parameters":   

所以我认为我们不能拒绝基于supportsHttpsTrafficOnly 创建存储blob 或文件共享。但是由于supportsHttpsTrafficOnly 是StorageAccountPropertiesCreateParameters 之一,我们可以对存储帐户设置拒绝创建策略,如下面的代码sn-p 所示。


    "if": 
        "allOf": [
        
            "field": "type",
            "equals": "Microsoft.Storage/storageAccounts"
        ,
        
            "field": "Microsoft.Storage/storageAccounts/supportsHttpsTrafficOnly",
            "notEquals": "true"
        
        ]
    ,
    "then": 
        "effect": "Deny"
    

我建议阅读Create a custom policy definition 和Walkthrough using Azure Policy to audit and enforce compliance 文档以了解更多信息。

【讨论】:

以上是关于Azure 中的条件存在检查:拒绝策略的主要内容,如果未能解决你的问题,请参考以下文章

Azure 策略 - 拒绝使用特定标记创建资源

azure arm 策略拒绝没有标签的资源组

Azure 策略要求创建某个标记,但不使用默认值?

未强制执行 Azure 策略

Azure Policy Deny:如果资源组名称中不存在标记之一

如何在 Azure 构建策略中为 PR 添加状态检查验证