Share via


Usare Criteri di Azure per limitare l'installazione di estensioni in macchine virtuali Linux

Se si vuole impedire l'installazione di determinate estensioni nelle macchine virtuali Linux, è possibile creare una definizione di Criteri di Azure usando l'interfaccia della riga di comando di Azure per limitare le estensioni per le macchine virtuali all'interno di un gruppo di risorse. Per informazioni di base sulle estensioni delle macchine virtuali di Azure per Linux, vedere Estensioni e funzionalità delle macchine virtuali per Linux.

Questa esercitazione usa l'interfaccia della riga di comando in Azure Cloud Shell, che viene costantemente aggiornato alla versione più recente. Se si vuole eseguire l'interfaccia della riga di comando di Azure in locale, è necessario installare la versione 2.0.26 o successiva. Eseguire az --version per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.

Creare un file delle regole

Per limitare le estensioni disponibili, è necessario creare una regola per identificare l'estensione.

Questo esempio illustra come negare l'installazione delle estensioni di macchina virtuale non consentite definendo un file di regole in Azure Cloud Shell. Tuttavia, se si usa l'interfaccia della riga di comando di Azure in locale, è possibile creare un file locale e sostituire il percorso (~/clouddrive) con il percorso del file nel file system locale.

  1. In un Cloud Shell bash creare il file ~/clouddrive/azurepolicy.rules.json usando qualsiasi editor di testo.

  2. Copiare e incollare il contenuto seguente .json nel nuovo file e salvarlo.

{
	"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"
	}
}

Creare un file di parametri

È anche necessario un file di parametri che crea una struttura da usare per passare un elenco delle estensioni non autorizzate.

Questo esempio illustra come creare un file di parametri per le macchine virtuali Linux in Cloud Shell.

  1. Nel bash Cloud Shell aperto in precedenza, creare il file ~/clouddrive/azurepolicy.parameters.json usando qualsiasi editor di testo.

  2. Copiare e incollare il contenuto seguente .json nel nuovo file e salvarlo.

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

Creare i criteri

Una definizione di criteri è un oggetto usato per archiviare la configurazione che si vuole usare. La definizione di criteri usa i file di regole e parametri per definire i criteri. Creare la definizione dei criteri usando az policy definition create.

In questo esempio le regole e i parametri sono i file creati e archiviati come file json in Cloud Shell o nel file system locale.

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

Assegnare i criteri

In questo esempio i criteri vengono assegnati a un gruppo di risorse usando az policy assignment create. Qualsiasi macchina virtuale creata nel gruppo di risorse myResourceGroup non sarà in grado di installare l'accesso alle macchine virtuali Linux o le estensioni script personalizzate per Linux.

Nota

Prima di poter assegnare i criteri, il gruppo di risorse deve essere già presente.

Usare az account list per trovare l'ID sottoscrizione e sostituire il segnaposto nell'esempio seguente:

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"
			]
		}
	}'

Testare il criterio

Testare i criteri creando una nuova macchina virtuale e aggiungendo un nuovo utente.

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

Nota

Sostituire myResourceGroupi myVM valori e myImage di conseguenza.

Provare a creare un nuovo utente denominato myNewUser usando l'estensione dell'accesso alle macchine virtuali.

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

Rimuovere l'assegnazione

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

Rimuovere i criteri

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

Passaggi successivi

Per altre informazioni, vedere Criteri di Azure.