Usar a Política do Azure para restringir a instalação de extensões em VMs Linux
Se quiser impedir a instalação de determinadas extensões em suas VMs Linux, você pode criar uma definição de Política do Azure usando a CLI do Azure para restringir extensões para VMs dentro de um grupo de recursos. Para aprender as noções básicas das extensões de VM do Azure para Linux, consulte Extensões de máquina virtual e recursos para Linux.
Este tutorial usa a CLI no Azure Cloud Shell, que é constantemente atualizado para a versão mais recente. Se você quiser executar a CLI do Azure localmente, precisará 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 arquivo de regras
Para restringir quais extensões estão disponíveis, você precisa criar uma regra para identificar a extensão.
Este exemplo demonstra como negar a instalação de extensões de VM não permitidas definindo um arquivo de regras no Azure Cloud Shell. No entanto, se você estiver trabalhando na CLI do Azure localmente, poderá criar um arquivo local e substituir o caminho (~/clouddrive) pelo caminho para o arquivo em seu sistema de arquivos local.
Em um bash Cloud Shell criar o arquivo
~/clouddrive/azurepolicy.rules.json
usando qualquer editor de texto.Copie e cole o seguinte
.json
conteúdo no novo arquivo e salve-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 arquivo de parâmetros
Você também precisa de um arquivo de parâmetros que crie uma estrutura para você usar para passar uma lista de extensões não autorizadas.
Este exemplo mostra como criar um arquivo de parâmetro para VMs Linux no Cloud Shell.
No bash Cloud Shell aberto antes, crie o arquivo ~/clouddrive/azurepolicy.parameters.json usando qualquer editor de texto.
Copie e cole o seguinte
.json
conteúdo no novo arquivo e salve-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 usado para armazenar a configuração que você gostaria de usar. A definição de política usa os arquivos de regras e parâmetros para definir a política. Crie a definição de política usando az policy definition create.
Neste exemplo, as regras e parâmetros são os arquivos que você criou e armazenou como arquivos .json no Cloud Shell ou em seu sistema de arquivos 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 usando az policy assignment create
o . Qualquer VM criada no grupo de recursos myResourceGroup não poderá instalar o Linux VM Access ou as Extensões de Script Personalizadas para Linux.
Nota
O grupo de recursos deve existir antes que você possa atribuir a política.
Use az account list
para localizar sua ID de assinatura e substituir o espaço reservado no exemplo a seguir:
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 criando uma nova VM e adicionando um novo usuário.
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image myImage \
--generate-ssh-keys
Nota
Substitua myResourceGroup
, myVM
e myImage
os valores de acordo.
Tente criar um novo usuário chamado myNewUser usando a extensão VM Access.
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'
Próximos passos
Para obter mais informações, veja Azure Policy.