Поделиться через


Ограничение установки расширений на виртуальных машинах Linux с помощью службы "Политика Azure"

Если нужно заблокировать использование или установку определенных расширений на виртуальные машины Linux, можно создать через интерфейс командной строки Azure определение политики Azure, которая ограничивает расширения для виртуальных машин в определенной группе ресурсов. Основные сведения о расширениях виртуальных машин Azure для Linux см. в статье Обзор расширений и компонентов виртуальных машин под управлением Linux.

При работе с этим руководством используется интерфейс командной строки (CLI) в Azure Cloud Shell, который всегда обновлен до последней версии. Если вы намерены запустить Azure CLI локально, установите версию не ниже 2.0.26. Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.

Создание файла правил

Чтобы ограничить доступные расширения, создайте правило для определения расширения.

В этом примере показано, как запретить установку запрещенных расширений виртуальных машин путем определения файла правил в Azure Cloud Shell. Однако если вы работаете в Azure CLI локально, вы можете создать локальный файл и заменить путь (~/clouddrive) путем к файлу в локальной файловой системе.

  1. В bash Cloud Shell создайте файл ~/clouddrive/azurepolicy.rules.json с помощью любого текстового редактора.

  2. Скопируйте и вставьте следующее .json содержимое в новый файл и сохраните его.

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

Создание файла параметров

Вам понадобится также файл параметров, который позволяет создать структуру для передачи списка запрещенных расширений.

В этом примере показано, как создать файл параметров для виртуальных машин Linux в Cloud Shell.

  1. Перед открытием bash Cloud Shell создайте файл ~/clouddrive/azurepolicy.parameters.json с помощью любого текстового редактора.

  2. Скопируйте и вставьте следующее .json содержимое в новый файл и сохраните его.

{
	"notAllowedExtensions": {
		"type": "Array",
		"metadata": {
			"description": "The list of extensions that will be denied. Example: CustomScriptForLinux, VMAccessForLinux etc.",
			"displayName": "Denied extension"
		}
	}
}

Создание политики

Определение политики — это объект для хранения конфигурации, которую нужно использовать. Для определения политики используются файлы правил и параметров. Создайте определение политики с помощью команды az policy definition create.

В этом примере правила и параметры представлены в виде файлов, которые вы создали в формате JSON и сохранили с помощью Cloud Shell или в локальной файловой системе.

az policy definition create \
   --name 'not-allowed-vmextension-linux' \
   --display-name 'Block VM Extensions' \
   --description 'This policy governs which VM extensions that are blocked.' \
   --rules '~/clouddrive/azurepolicy.rules.json' \
   --params '~/clouddrive/azurepolicy.parameters.json' \
   --mode All

Назначение политики

В этом примере политика назначается группе ресурсов с помощью az policy assignment create. На всех виртуальных машинах, созданных в группе ресурсов myResourceGroup, невозможно будет установить расширение доступа к виртуальной машине Linux и пользовательские расширения для Linux.

Примечание.

Прежде чем назначить политику, нужно создать группу ресурсов.

Используйте az account list, чтобы найти идентификатор подписки и заменить заполнитель в следующем примере:

az policy assignment create \
   --name 'not-allowed-vmextension-linux' \
   --scope /subscriptions/<subscription Id>/resourceGroups/myResourceGroup \
   --policy "not-allowed-vmextension-linux" \
   --params '{
		"notAllowedExtensions": {
			"value": [
				"VMAccessForLinux",
				"CustomScriptForLinux"
			]
		}
	}'

Проверка политики

Для проверки политики создайте виртуальную машину и добавьте нового пользователя.

az vm create \
    --resource-group myResourceGroup \
	--name myVM \
	--image myImage \
	--generate-ssh-keys

Примечание.

Замените myResourceGroupи myImage myVM значения соответствующим образом.

Попытайтесь создать пользователя с именем myNewUser с помощью расширения доступа к виртуальной машине.

az vm user update \
  --resource-group myResourceGroup \
  --name myVM \
  --username myNewUser \
  --password 'mynewuserpwd123!'

Удаление назначения

az policy assignment delete --name 'not-allowed-vmextension-linux' --resource-group myResourceGroup

Удаление политики

az policy definition delete --name 'not-allowed-vmextension-linux'

Следующие шаги

Дополнительные сведения см. в статье Что такое служба "Политика Azure"?