Inicio rápido: Creación de una asignación de directiva para identificar recursos no compatibles mediante la API REST

El primer paso para entender el cumplimiento en Azure es identificar el estado de sus recursos. Esta guía de inicio rápido lo guiará por el proceso de creación de una asignación de directiva para identificar las máquinas virtuales que no están usando discos administrados.

Al finalizar este proceso, habrá identificado correctamente máquinas virtuales que no utilizan discos administrados. No son compatibles con la asignación de directiva.

La API REST se usa para crear y administrar los recursos de Azure. En esta guía se usa la API REST para crear una asignación de directiva e identificar recursos no compatibles en el entorno de Azure.

Requisitos previos

  • Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

  • Si aún no lo ha hecho, instale ARMClient. Se trata de una herramienta que envía solicitudes HTTP a las API REST basadas en Azure Resource Manager. También puede usar la característica "Pruébelo" de la documentación de REST o herramientas como Invoke-RestMethod o Postman de PowerShell.

Uso de Azure Cloud Shell

En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el explorador. Puede usar Bash o PowerShell con Cloud Shell para trabajar con los servicios de Azure. Puede usar los comandos preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada en su entorno local.

Para iniciar Azure Cloud Shell:

Opción Ejemplo o vínculo
Seleccione Pruébelo en la esquina superior derecha de un bloque de código. Solo con seleccionar Pruébelo no se copia automáticamente el código en Cloud Shell. Ejemplo de Probarlo para Azure Cloud Shell
Vaya a https://shell.azure.com o seleccione el botón Iniciar Cloud Shell para abrir Cloud Shell en el explorador. Iniciar Cloud Shell en una nueva ventana
Seleccione el botón Cloud Shell en la barra de menús de la esquina superior derecha de Azure Portal. Botón Cloud Shell en Azure Portal

Para ejecutar el código de este artículo en Azure Cloud Shell:

  1. Inicie Cloud Shell.

  2. Seleccione el botón Copiar de un bloque de código para copiar el código.

  3. Pegue el código en la sesión de Cloud Shell. Para ello, seleccione Ctrl+Mayús+V en Windows y Linux, o bien seleccione Cmd+Mayús+V en macOS.

  4. Seleccione Entrar para ejecutar el código.

Creación de una asignación de directiva

En este inicio rápido, creará una asignación de directiva y asignará la definición Auditoría de máquinas virtuales que no usan discos administrados (06a78e20-9358-41c9-923c-fb736d382a4d). Esta definición de directiva identifica los recursos que no cumplen las condiciones establecidas en la definición de directiva.

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

  • URI DE LA API REST

    PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/policyAssignments/audit-vm-manageddisks?api-version=2021-09-01
    
  • Cuerpo de la solicitud

    {
      "properties": {
        "displayName": "Audit VMs without managed disks Assignment",
        "description": "Shows all virtual machines not using managed disks",
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d",
        "nonComplianceMessages": [
            {
                "message": "Virtual machines should use a managed disk"
            }
        ]
      }
    }
    

El punto de conexión anterior y el cuerpo de la solicitud usan la siguiente información:

URI de la API REST:

  • Scope: un ámbito determina en qué recursos o agrupación de recursos se aplica la asignación de directiva. Podría abarcar desde un grupo de administración a un recurso individual. Asegúrese de reemplazar {scope} por uno de los siguientes patrones:
    • Grupo de administración: /providers/Microsoft.Management/managementGroups/{managementGroup}
    • Suscripción: /subscriptions/{subscriptionId}
    • Grupos de recursos: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}
    • Recurso: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}
  • Nombre: el nombre real de la asignación. En este ejemplo se usa audit-vm-manageddisks.

Cuerpo de la solicitud:

  • DisplayName: nombre para mostrar de la asignación de directiva. En este caso, usará Auditoría de máquinas virtuales sin discos administrados.
  • Description: una explicación más detallada de lo que hace la directiva o de por qué se asigna a este ámbito.
  • policyDefinitionId: identificador de la definición de directiva, según la opción utilizada para crear la asignación. En este caso, es el identificador de la definición de directiva Auditoría de máquinas virtuales que no usan discos administrados.
  • nonComplianceMessages: establece el mensaje que se ve cuando se deniega un recurso por incumplimiento o porque la evaluación determina que no es compatible. Para obtener más información, consulte la estructura de asignación de mensajes de no cumplimiento.

Identificación de recursos sin compatibilidad

Para ver los recursos que no son compatibles en esta nueva asignación, ejecute el siguiente comando para obtener los identificadores de recursos de los recursos no compatibles que se generan en un archivo JSON:

POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$filter=IsCompliant eq false and PolicyAssignmentId eq 'audit-vm-manageddisks'&$apply=groupby((ResourceId))"

Los resultados deben tener una apariencia similar al ejemplo siguiente:

{
    "@odata.context": "https://management.azure.com/subscriptions/<subscriptionId>/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest",
    "@odata.count": 3,
    "value": [{
            "@odata.id": null,
            "@odata.context": "https://management.azure.com/subscriptions/<subscriptionId>/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
            "ResourceId": "/subscriptions/<subscriptionId>/resourcegroups/<rgname>/providers/microsoft.compute/virtualmachines/<virtualmachineId>"
        },
        {
            "@odata.id": null,
            "@odata.context": "https://management.azure.com/subscriptions/<subscriptionId>/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
            "ResourceId": "/subscriptions/<subscriptionId>/resourcegroups/<rgname>/providers/microsoft.compute/virtualmachines/<virtualmachine2Id>"
        },
        {
            "@odata.id": null,
            "@odata.context": "https://management.azure.com/subscriptions/<subscriptionId>/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
            "ResourceId": "/subscriptions/<subscriptionName>/resourcegroups/<rgname>/providers/microsoft.compute/virtualmachines/<virtualmachine3Id>"
        }

    ]
}

Son comparables a lo que normalmente vería en Recursos no compatibles, en la vista de Azure Portal.

Limpieza de recursos

Para quitar la asignación creada, ejecute el siguiente comando:

DELETE https://management.azure.com/{scope}/providers/Microsoft.Authorization/policyAssignments/audit-vm-manageddisks?api-version=2021-09-01

Reemplace {scope} por el ámbito que utilizó cuando creó por primera vez la asignación de directiva.

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 la asignación de directivas para garantizar la compatibilidad de los nuevos recursos, continúe con el tutorial para: