Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Если нужно заблокировать использование или установку определенных расширений на виртуальные машины Windows, можно создать через PowerShell определение политики Azure, которая ограничивает расширения для виртуальных машин в определенной группе ресурсов.
В этом руководстве используется интерфейс Azure PowerShell в Cloud Shell, который постоянно обновляется до последней версии.
Создание файла правил
Чтобы ограничить допустимые для установки расширения, вам потребуется правило с логикой определения расширений.
В этом примере показано, как запретить расширения, опубликованные корпорацией Майкрософт. Вычисление путем создания файла правил в Azure Cloud Shell, но если вы работаете в PowerShell локально, вы также можете создать локальный файл и заменить путь ($home/clouddrive) на путь к локальному файлу на компьютере.
В Cloud Shell создайте файл
$home/clouddrive/rules.json
с помощью любого текстового редактора.Скопируйте и вставьте следующее содержимое .json в файл и сохраните его:
{
"if": {
"allOf": [
{
"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"
}
}
Создание файла параметров
Вам понадобится также файл параметров, который позволяет создать структуру для передачи списка блокируемых расширений.
В этом примере показано, как создать файл параметров для виртуальных машин в Cloud Shell, но при локальной работе в PowerShell можно также создать локальный файл и заменить путь ($home/clouddrive) на путь к локальному файлу на компьютере.
В Cloud Shell создайте файл
$home/clouddrive/parameters.json
с помощью любого текстового редактора.Скопируйте и вставьте следующее содержимое .json в файл и сохраните его:
{
"notAllowedExtensions": {
"type": "Array",
"metadata": {
"description": "The list of extensions that will be denied.",
"displayName": "Denied extension"
}
}
}
Создание политики
Определение политики — это объект для хранения конфигурации, которую нужно использовать. Для определения политики используются файлы правил и параметров. Создайте определение политики с помощью командлета New-AzPolicyDefinition.
Правила и параметры этой политики представлены в виде файлов, которые вы создали в формате JSON и сохранили с помощью Cloud Shell. Замените пример -Policy
и -Parameter
пути к файлам по мере необходимости.
$definition = New-AzPolicyDefinition `
-Name "not-allowed-vmextension-windows" `
-DisplayName "Not allowed VM Extensions" `
-description "This policy governs which VM extensions that are explicitly denied." `
-Policy 'C:\Users\ContainerAdministrator\clouddrive\rules.json' `
-Parameter 'C:\Users\ContainerAdministrator\clouddrive\parameters.json'
Назначение политики
В этом примере назначается политика для группы ресурсов с помощью командлета New-AzPolicyAssignment. Любая виртуальная машина, созданная в группе ресурсов myResourceGroup , не сможет установить агент доступа к виртуальной машине или расширения настраиваемых скриптов.
Командлет Get-AzSubscription | Format-Table предоставит вам идентификатор подписки, который следует указать вместо образца в примере.
$scope = "/subscriptions/<subscription id>/resourceGroups/myResourceGroup"
$assignment = New-AzPolicyAssignment `
-Name "not-allowed-vmextension-windows" `
-Scope $scope `
-PolicyDefinition $definition `
-PolicyParameter '{
"notAllowedExtensions": {
"value": [
"VMAccessAgent",
"CustomScriptExtension"
]
}
}'
$assignment
Проверка политики
Чтобы проверить политику, попробуйте применить расширение для доступа к виртуальной машине. Следующее должно завершиться ошибкой с сообщением Set-AzVMAccessExtension: Resource 'myVMAccess' был запрещен политикой.
Set-AzVMAccessExtension `
-ResourceGroupName "myResourceGroup" `
-VMName "myVM" `
-Name "myVMAccess" `
-Location EastUS
Попытка сменить пароль на портале должна завершиться ошибкой с сообщением "Не удалось развернуть шаблон, нарушена политика".
Удаление назначения
Remove-AzPolicyAssignment -Name not-allowed-vmextension-windows -Scope $scope
Удаление политики
Remove-AzPolicyDefinition -Name not-allowed-vmextension-windows
Следующие шаги
Дополнительные сведения см. в статье Что такое служба "Политика Azure"?