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 sulle nozioni 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 all'interno di 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.
In bash Cloud Shell creare il file
~/clouddrive/azurepolicy.rules.json
usando qualsiasi editor di testo.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
È necessario anche 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.
In bash Cloud Shell aperto in precedenza, creare il file ~/clouddrive/azurepolicy.parameters.json usando qualsiasi editor di testo.
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
Questo esempio assegna i criteri 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 myResourceGroup
i valori e myVM
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.