Inicio rápido: Creación de una asignación de directiva que identifique recursos no compatibles mediante la CLI de Azure

El primer paso para entender el cumplimiento en Azure es identificar el estado de sus recursos. En este inicio rápido, se crear una asignación de directiva que identifique recursos no compatibles mediante la CLI de Azure. La directiva se asigna a un grupo de recursos y audita las máquinas virtuales que no utilizan discos administrados. Después de crear la asignación de directiva, identifique las máquinas virtuales no compatibles.

La CLI de Azure se usa para crear y administrar recursos de Azure desde la línea de comandos o en scripts. En esta guía se usa la CLI de Azure para crear una asignación de directiva e identificar recursos no compatibles en el entorno de Azure.

Requisitos previos

  • Antes de comenzar, si no tiene una cuenta de Azure, cree una gratuita.
  • Azure CLI.
  • Visual Studio Code.
  • Microsoft.PolicyInsights tiene que estar registrado en la suscripción de Azure. Para registrar un proveedor de recursos, debe tener permiso para registrar proveedores de recursos. Este permiso se incluye en los roles Colaborador y Propietario.
  • Un grupo de recursos con al menos una máquina virtual que no usa discos administrados.

Conexión con Azure

Desde una sesión de terminal de Visual Studio Code, conéctese a Azure. Si tiene más de una suscripción, ejecute los comandos para establecer el contexto en la suscripción. Reemplace <subscriptionID> con la identificación de su suscripción de Azure.

az login

# Run these commands if you have multiple subscriptions
az account list --output table
az account set --subscription <subscriptionID>

Registro del proveedor de recursos

Cuando se registra un proveedor de recursos, está disponible para usarlo en la suscripción de Azure.

Para comprobar si Microsoft.PolicyInsights está registrado, ejecute Get-AzResourceProvider. El proveedor de recursos contiene varios tipos de recursos. Si el resultado es NotRegistered, ejecute Register-AzResourceProvider:

az provider show \
  --namespace Microsoft.PolicyInsights \
  --query "{Provider:namespace,State:registrationState}" \
  --output table

az provider register --namespace Microsoft.PolicyInsights

Los comandos de la CLI de Azure usan una barra diagonal inversa (\) para la continuación de la línea para mejorar la legibilidad. Para obtener más información, vaya a az provider.

Creación de asignación de directiva

Use los siguientes comandos para crear una nueva asignación de directiva para el grupo de recursos. En este ejemplo se usa un grupo de recursos existente que contiene una máquina virtual sin discos administrados. El grupo de recursos es el ámbito de la asignación de directiva. En este ejemplo se usa la definición de directiva integrada Auditoría de máquinas virtuales que no usan discos administrados.

Ejecute los siguientes comandos y reemplace <resourceGroupName> por el nombre del grupo de recursos:

rgid=$(az group show --resource-group <resourceGroupName> --query id --output tsv)

definition=$(az policy definition list \
  --query "[?displayName=='Audit VMs that do not use managed disks']".name \
  --output tsv)

La variable rgid almacena el identificador del grupo de recursos. La variable definition almacena el nombre de la definición de directiva, que es un identificador único.

Ejecute el siguiente comando para crear una asignación de directiva:

az policy assignment create \
  --name 'audit-vm-managed-disks' \
  --display-name 'Audit VM managed disks' \
  --scope $rgid \
  --policy $definition \
  --description 'Azure CLI policy assignment to resource group'
  • name crea el nombre de asignación de directiva utilizado en el ResourceId de la asignación.
  • display-name es el nombre de la asignación de directiva y está visible en Azure Portal.
  • scope usa la variable $rgid para asignar la directiva al grupo de recursos.
  • policy asigna la definición de directiva almacenada en la variable $definition.
  • description se puede usar para agregar contexto sobre la asignación de directiva.

Los resultados de la asignación de directiva se asemejan al ejemplo siguiente:

"description": "Azure CLI policy assignment to resource group",
"displayName": "Audit VM managed disks",
"enforcementMode": "Default",
"id": "/subscriptions/{subscriptionID}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks",
"identity": null,
"location": null,
"metadata": {
  "createdBy": "11111111-1111-1111-1111-111111111111",
  "createdOn": "2024-02-23T18:42:27.4780803Z",
  "updatedBy": null,
  "updatedOn": null
},
"name": "audit-vm-managed-disks",

Si desea volver a mostrar la información de asignación de directiva, ejecute el siguiente comando:

az policy assignment show --name "audit-vm-managed-disks" --scope $rgid

Para obtener más información, vaya a az policy assignment.

Identificación de recursos sin compatibilidad

El estado de cumplimiento de una nueva asignación de directiva tarda unos minutos en activarse y proporcionar resultados sobre el estado de la directiva.

Utilice el siguiente comando para identificar los recursos que no son compatibles con la asignación de directiva que ha creado:

policyid=$(az policy assignment show \
  --name "audit-vm-managed-disks" \
  --scope $rgid \
  --query id \
  --output tsv)

az policy state list --resource $policyid --filter "(isCompliant eq false)"

La variable policyid usa una expresión para obtener el id. de la asignación de directiva. El parámetro filter limita la salida a recursos no compatibles.

La salida az policy state list es detallada, pero para este artículo complianceState muestra NonCompliant:

"complianceState": "NonCompliant",
"components": null,
"effectiveParameters": "",
"isCompliant": false,

Para obtener más información, vaya a az policy state.

Limpieza de recursos

Para eliminar la asignación de directivas, ejecute el siguiente comando:

az policy assignment delete --name "audit-vm-managed-disks" --scope $rgid

Para cerrar la sesión de la CLI de Azure:

az logout

Pasos siguientes

En este inicio rápido, se asigna una definición de directiva para identificar los recursos incompatibles en el entorno de Azure.

Para más información sobre cómo asignar directivas que validen el cumplimiento de los recursos, continúe con el tutorial.