политика Azure, позволяющая создавать только определенные теги

Мне нужно настроить политику Azure, чтобы участники создавали ресурсы с использованием очень определенного набора разрешенных тегов. пример разрешенных тегов: приложение, владелец, среда, описание, команда

если кто-то создает ресурс и использует тег env, политика сработает и запретит создание ресурса, потому что env не является одним из разрешенных тегов.

Возможно ли это в лазурном?


person lgpana    schedule 07.12.2020    source источник
comment
это зависит от того, когда вы говорите, что участники Azure, вы имеете в виду роль RBAC или какого-либо авторизованного пользователя? Политика не может фильтровать на основе RBAC. В противном случае эта политика представляет собой довольно прямую политику отказа.   -  person Rob S.    schedule 09.12.2020
comment
Также стоит отметить, что ограничение тегов может иметь нежелательный эффект. Многие ресурсы (например, блоки данных) создают теги по умолчанию. Если вы создали политику, запрещающую определенные теги, все теги по умолчанию в ресурсах также будут соответствовать тем же правилам. Вы можете построить фильтрацию вокруг этих типов ресурсов в рамках политики, но вам придется устранять подобные проблемы по мере того, как вы сталкиваетесь с ними. ознакомьтесь с некоторыми из встроенных политик соответствия тегов docs.microsoft.com/en-us/azure/azure-resource-manager/ для идей   -  person Rob S.    schedule 09.12.2020


Ответы (1)


Вот пример правила политики, которое потребует наличия всех перечисленных вами тегов на ВСЕХ ресурсах в назначенной области. (Это может быть слишком много, проверьте это и узнайте)

"policyRule": {
  "if": {
        "anyOf": [      
            {
                "field": "tags['application']",
                "exists": false
            },
            {
                "field": "tags['owner']",
                "exists": false
            },
            {
                "field": "tags['environment']",
                "exists": false
            },
            {
                "field": "tags['description']",
                "exists": false
            },
            {
                "field": "tags['team']",
                "exists": false
            }
        ]   
  },
  "then": {
    "effect": "deny"
  }
}

Вот пример, который сузит его до типа ресурса. Только виртуальные машины.

"policyRule": {
  "if": {
    "allOf":[
        {
            "field": "type",
            "equals": "Microsoft.Compute/virtualMachines"
        },
        "anyOf": [      
            {
                "field": "tags['application']",
                "exists": false
            },
            {
                "field": "tags['owner']",
                "exists": false
            },
            {
                "field": "tags['environment']",
                "exists": false
            },
            {
                "field": "tags['description']",
                "exists": false
            },
            {
                "field": "tags['team']",
                "exists": false
            }
        ]      
    ]         
  },
  "then": {
    "effect": "deny"
  }
}

Смотрите мои комментарии к основному вопросу. Эта политика может быть слишком строгой, поскольку некоторые ресурсы Azure имеют встроенные теги по умолчанию. Эти теги также будут соответствовать этому правилу соответствия, поэтому будьте осторожны, если вы внедряете это в большой организации, вы можете непреднамеренно нанести ущерб некоторым пользователям.

Если вы хотите сузить его до группы ресурсов, вы можете сделать это в своем назначении политики, однако, если вы хотите сделать это в своем определении, вы можете использовать тип ресурса Microsoft.Resources/subscriptions/resourceGroups

Также ознакомьтесь с некоторыми другими политиками, связанными с тегами, которые встроены в Azure. https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/tag-policies

person Rob S.    schedule 09.12.2020