Utilizar Azure Policy para restringir a instalação de extensões em VMs do Linux
Se quiser impedir a instalação de determinadas extensões nas VMs do Linux, pode criar uma definição de Azure Policy com a CLI do Azure para restringir extensões para VMs dentro de um grupo de recursos. Para saber as noções básicas das extensões de VM do Azure para Linux, veja Extensões e funcionalidades de máquinas virtuais para Linux.
Este tutorial utiliza a CLI na Cloud Shell do Azure, que é constantemente atualizada para a versão mais recente. Se quiser executar a CLI do Azure localmente, tem de instalar a versão 2.0.26 ou posterior. Executar az --version
para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).
Criar um ficheiro de regras
Para restringir as extensões disponíveis, tem de criar uma regra para identificar a extensão.
Este exemplo demonstra como negar a instalação de extensões de VM não permitidas ao definir um ficheiro de regras no Azure Cloud Shell. No entanto, se estiver a trabalhar localmente na CLI do Azure, pode criar um ficheiro local e substituir o caminho (~/clouddrive) pelo caminho para o ficheiro no seu sistema de ficheiros local.
Num bash Cloud Shell criar o ficheiro
~/clouddrive/azurepolicy.rules.json
com qualquer editor de texto.Copie e cole os seguintes
.json
conteúdos no novo ficheiro e guarde-o.
{
"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"
}
}
Criar um ficheiro de parâmetros
Também precisa de um ficheiro de parâmetros que crie uma estrutura para utilizar para transmitir uma lista das extensões não autorizadas.
Este exemplo mostra como criar um ficheiro de parâmetros para VMs do Linux no Cloud Shell.
No bash Cloud Shell aberto anteriormente, crie o ficheiro ~/clouddrive/azurepolicy.parameters.json com qualquer editor de texto.
Copie e cole os seguintes
.json
conteúdos no novo ficheiro e guarde-o.
{
"notAllowedExtensions": {
"type": "Array",
"metadata": {
"description": "The list of extensions that will be denied. Example: CustomScriptForLinux, VMAccessForLinux etc.",
"displayName": "Denied extension"
}
}
}
Criar a política
Uma definição de política é um objeto utilizado para armazenar a configuração que pretende utilizar. A definição de política utiliza os ficheiros de regras e parâmetros para definir a política. Crie a definição de política com az policy definition create.
Neste exemplo, as regras e os parâmetros são os ficheiros que criou e armazenou como ficheiros .json no Cloud Shell ou no seu sistema de ficheiros local.
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
Atribuir a política
Este exemplo atribui a política a um grupo de recursos com az policy assignment create
. Qualquer VM criada no grupo de recursos myResourceGroup não poderá instalar o Acesso à VM do Linux ou as Extensões de Script Personalizado para Linux.
Nota
O grupo de recursos tem de existir antes de poder atribuir a política.
Utilize az account list
para localizar o seu ID de subscrição e substituir o marcador de posição no exemplo seguinte:
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"
]
}
}'
Testar a política
Teste a política ao criar uma nova VM e adicionar um novo utilizador.
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image myImage \
--generate-ssh-keys
Nota
Substitua myResourceGroup
e myImage
myVM
os valores em conformidade.
Tente criar um novo utilizador com o nome myNewUser com a extensão de Acesso da VM.
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username myNewUser \
--password 'mynewuserpwd123!'
Remover a atribuição
az policy assignment delete --name 'not-allowed-vmextension-linux' --resource-group myResourceGroup
Remover a política
az policy definition delete --name 'not-allowed-vmextension-linux'
Passos seguintes
Para obter mais informações, veja Azure Policy.