Развертывание политики Azure с помощью Powershell

Я развертываю политику запрета через PowerShell и получаю следующую ошибку

New-AzPolicyDefinition : InvalidPolicyRule : Failed to parse policy rule: 'Could not find member 'properties' on object of type 'PolicyRuleDefinition'. Path 'properties'.'.

Я использую следующий код: 1New-AzPolicyDefinition -name 'externalDeny' -Policy 'C:\tmp\denyoms-temp.json' -Parameter 'C: \ tmp \ denyoms-param.json' '

Шаблоны политики приведены ниже.

Файл шаблона - параметр https://pastebin.com/embed_js/HrjUWrvf - https://pastebin.com/embed_js/QxEX92jf

Думаю, это могут быть теги, заранее спасибо.


person Norrin Rad    schedule 06.04.2020    source источник


Ответы (1)


Проблема в шаблоне. Согласно этому документация, шаблон должен быть в таком формате (template.json):

{
        "if": {
            "allOf": [
                {
                    "field": "tags",
                    "Equals": "ExternalVM"
                },
                {
                    "field": "type",
                    "equals": "Microsoft.Compute/virtualMachines/extensions"
                },
                {
                    "field": "Microsoft.Compute/virtualMachines/extensions/publisher",
                    "equals": "Microsoft.Compute"
                },
                {
                    "field": "Microsoft.Compute/virtualMachines/extensions/type",
                    "in": "[parameters(\'notAllowedExtensions\')]"
                }
            ]
        },
        "then": {
            "effect": "deny"
        }
}

Кроме того, небольшое изменение в вашем файле параметров, шаблон ожидает тип «Массив» в соответствии с условиями, которые вы применили:

{
    "notAllowedExtensions": {
        "type": "Array",
        "metadata": {
            "description": "The list of extensions that will be denied. Example: BGInfo, CustomScriptExtension, JsonAADDomainExtension, VMAccessAgent.",
            "displayName": "OmsAgentForLinux"
        }
    }
}

Используйте эту команду для выполнения:

New-AzPolicyDefinition -Name 'Not allowed VM Extensions' -Description 'This policy governs which VM extensions that are explicitly denied.' -Policy 'template.json'  -Parameter 'parameters.json'

Надеюсь это поможет!

person Jagrati Modi    schedule 06.04.2020
comment
спасибо, но я все еще получаю эту ошибку InvalidPolicyRule : Failed to parse policy rule: 'Could not find member 'properties' on object of type 'PolicyRuleDefinition'. Path 'properties'.'. - person Norrin Rad; 06.04.2020
comment
Вы обновили файл шаблона? Вы пользуетесь шаблоном, который я добавил в ответ? - person Jagrati Modi; 06.04.2020
comment
Привет, да, извините, моя ошибка, команда должна была быть «New-AzPolicyDefinition -Name» Запрещенные расширения виртуальной машины »-Описание« Эта политика определяет, какие расширения виртуальной машины явно запрещены ». -Policy 'C: \ tmp \ tempate.json' -Parameter '{notAllowedExtensions: {type: array}}' `` еще раз спасибо :) - person Norrin Rad; 06.04.2020