Uso de Azure Policy para restringir la instalación de extensiones en VM Linux
Si quiere impedir la instalación de determinadas extensiones en VM Linux, puede crear una definición de directiva de Azure mediante la CLI de Azure para restringir las extensiones de las máquinas virtuales dentro de un grupo de recursos. Para obtener información sobre los conceptos básicos de las extensiones de máquina virtual de Azure para Linux, consulte Características y extensiones de máquina virtual para Linux.
En este tutorial se usa la CLI dentro de Azure Cloud Shell, que se actualiza constantemente a la versión más reciente. Si quiere ejecutar la CLI de Azure localmente, debe instalar la versión 2.0.26 o posterior. Ejecute az --version
para encontrar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.
Creación de un archivo de reglas
Para restringir las extensiones disponibles, debe crear una regla para identificar la extensión.
En este ejemplo se muestra cómo denegar la instalación de extensiones de máquina virtual no permitidas mediante la definición de un archivo de reglas en Azure Cloud Shell. Sin embargo, si trabaja localmente en la CLI de Azure, puede crear un archivo local y reemplazar la ruta de acceso (~/clouddrive) por la ruta de acceso al archivo en el sistema de archivos local.
En una instancia de Bash de Cloud Shell, cree el archivo
~/clouddrive/azurepolicy.rules.json
con cualquier editor de texto.Copie el siguiente contenido
.json
y péguelo en el nuevo archivo, luego guárdelo.
{
"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"
}
}
Creación de un archivo de parámetros
También necesita un archivo de parámetros que cree una estructura que pueda usar para pasar una lista de las extensiones no autorizadas.
En este ejemplo se muestra cómo crear un archivo de parámetros para máquinas virtuales Linux en Cloud Shell.
En la instancia de Bash de Cloud Shell abierta previamente, cree el archivo ~/clouddrive/azurepolicy.parameters.json con cualquier editor de texto.
Copie el siguiente contenido
.json
y péguelo en el nuevo archivo, luego guárdelo.
{
"notAllowedExtensions": {
"type": "Array",
"metadata": {
"description": "The list of extensions that will be denied. Example: CustomScriptForLinux, VMAccessForLinux etc.",
"displayName": "Denied extension"
}
}
}
Creación de la directiva
Una definición de directiva es un objeto que se usa para almacenar la configuración que le gustaría utilizar. En esta definición se incluyen las reglas y los archivos de parámetros. Cree la definición de directiva mediante la creación de la definición de directivas az.
En este ejemplo, las reglas y los parámetros son los archivos creados y almacenados como archivos .json en Cloud Shell o en su sistema de archivos 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
Asignación de la directiva
En este ejemplo se asigna la directiva a un grupo de recursos mediante az policy assignment create
. Ninguna de las máquinas virtuales creadas en el grupo de recursos myResourceGroup podrá instalar el acceso a VM Linux ni las extensiones del script personalizado para Linux.
Nota
El grupo de recursos debe existir para poder asignar la directiva.
Use az account list
para buscar el identificador de suscripción y reemplazar el marcador de posición en el ejemplo siguiente:
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"
]
}
}'
Prueba de la directiva
Pruebe la directiva creando una nueva máquina virtual y agregando un nuevo usuario.
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image myImage \
--generate-ssh-keys
Nota
Reemplace los valores myResourceGroup
, myVM
y myImage
según corresponda.
Intente crear un nuevo usuario denominado myNewUser con la extensión de acceso a máquinas virtuales.
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username myNewUser \
--password 'mynewuserpwd123!'
Eliminación de la asignación
az policy assignment delete --name 'not-allowed-vmextension-linux' --resource-group myResourceGroup
Eliminación de la directiva
az policy definition delete --name 'not-allowed-vmextension-linux'
Pasos siguientes
Para más información, consulte Azure Policy.