Compartir a través de


Obtención de datos de cumplimiento de los recursos de Azure

Una de las ventajas más grandes de Azure Policy es la información y los controles que proporciona sobre los recursos de una suscripción o grupo de administración de suscripciones. Este control puede evitar que los recursos se creen en una ubicación incorrecta, forzar un uso común y coherente de las etiquetas, o auditar los recursos existentes para ver si las opciones y configuraciones son apropiadas. En todos los casos, Azure Policy genera datos que le permiten comprender el estado de cumplimiento de su entorno.

Antes de revisar los datos de cumplimiento, es importante comprender los estados de cumplimiento en Azure Policy.

Hay varias maneras de acceder a la información de cumplimiento generada por la directiva y las asignaciones de iniciativa:

Antes de pasar a los métodos que informan sobre el cumplimiento, veamos cuándo se actualiza la información de cumplimiento y la frecuencia y eventos que desencadenan un ciclo de evaluación.

Desencadenadores de evaluación

Los resultados de un ciclo de evaluación completo están disponibles en el proveedor de recursos Microsoft.PolicyInsights por medio de las operaciones PolicyStates y PolicyEvents. Para más información sobre las operaciones de la API REST Azure Policy Insights, consulte Azure Policy Insights.

Las evaluaciones de directivas asignadas e iniciativas se producen como resultado de varios eventos:

  • Una directiva o iniciativa se asigna recientemente a un ámbito. La asignación tarda unos cinco minutos en aplicarse al ámbito definido y, luego, comienza el ciclo de evaluación de los recursos aplicables con respecto a la directiva o iniciativa recién asignadas. En función de los efectos usados, los recursos se marcan como compatibles, no compatibles, exentos o desconocidos. Una directiva o iniciativa grande evaluada en un ámbito amplio de recursos puede tardar bastante tiempo, por lo que no hay una predicción de cuándo se completará el ciclo de evaluación. Una vez completado, los resultados de cumplimiento actualizados están disponibles en el portal y los kits de desarrollo de software (SDK).
  • Una directiva o iniciativa que ya está asignada a un ámbito se actualiza. El ciclo de evaluación y control de tiempo en este escenario es el mismo que para una nueva asignación a un ámbito.
  • Un recurso se implementa o actualiza en un ámbito con una asignación mediante Azure Resource Manager, la API REST o un SDK compatible. En este escenario, el evento de efecto (anexar, auditar, denegar, implementar) y la información de estado de cumplimiento para el recurso individual están disponibles en el portal y en los SDK unos 15 minutos más tarde. Este evento no causa una evaluación de otros recursos.
  • Una suscripción (tipo de recurso Microsoft.Resources/subscriptions) se crea o mueve dentro de una jerarquía de grupos de administración con una definición de directiva asignada que tiene como destino el tipo de recurso de suscripción. La evaluación de los efectos admitidos de la suscripción (audit, auditIfNotExist, deployIfNotExists, modify), el registro y cualquier acción de corrección tarda aproximadamente 30 minutos.
  • Se crea, actualiza o elimina una directiva de exención. En este escenario, se evalúa el ámbito de exención definido en la asignación correspondiente.
  • Ciclo de evaluación de cumplimiento estándar. Una vez cada 24 horas, las asignaciones se vuelven a evaluar automáticamente. Una directiva o iniciativa grande de muchos recursos puede tardar tiempo, por lo que no hay ninguna expectativa predefinida de cuándo se completa el ciclo de evaluación. Una vez completado, los resultados de cumplimiento actualizados están disponibles en el portal y en los SDK.
  • Un recurso administrado actualiza el proveedor de recursos Configuración de la máquina con los detalles de cumplimiento.
  • Examen a petición.

Nota:

Por naturaleza, Azure Policy exime de la evaluación de directivas a todos los recursos del proveedor de recursos Microsoft.Resources, con la excepción de las suscripciones y los grupos de recursos, que se pueden evaluar.

Examen de evaluación a petición

Se puede iniciar un examen de evaluación de una suscripción o un grupo de recursos mediante REST, la CLI de Azure, Azure PowerShell, la extensión de Azure Policy para Visual Studio Code o la acción de GitHub Examen de cumplimiento de Azure Policy. Los exámenes a petición son un proceso asincrónico que tarda mucho tiempo en ejecutarse porque los recursos se evalúan en comparación con todas las directivas asignadas.

Nota:

No todos los proveedores de recursos de Azure admiten exámenes de evaluación a petición. Por ejemplo, actualmente Azure Virtual Network Manager (AVNM) no admite desencadenadores manuales ni el ciclo de evaluación de cumplimiento de directivas estándar (exámenes diarios).

Examen de evaluación a petición mediante REST

En cuanto proceso asincrónico, el punto de conexión de REST que inicia el examen no espera a que esté completo para responder. En su lugar, proporciona un URI para consultar el estado de la evaluación solicitada.

En cada identificador URI de la API REST, hay variables usadas que se deben reemplazar por sus propios valores:

  • {resourceGroupName}: Sustituya por el nombre de su grupo de recursos.
  • {subscriptionId}: reemplazar por el id. de suscripción.

El examen admite la evaluación de recursos de una suscripción o de un grupo de recursos. Inicie un examen para el ámbito con un comando POST de API REST mediante las siguientes estructuras de URI:

Utilice el siguiente comando para evaluar una suscripción. Puede ejecutar el comando desde el explorador en Estados de directiva: desencadenar la evaluación de la suscripción mediante la opción Pruébelo.

POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01

Utilice el siguiente comando para evaluar un grupo de recursos. Puede ejecutar el comando desde el explorador en Estados de directiva: desencadenar la evaluación del grupo de recursos mediante la opción Pruébelo.

POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01

Las llamadas a la API REST de suscripción y grupo de recursos devuelven el estado 202 Aceptado. En el encabezado de la respuesta se incluye una propiedad location con el formato siguiente:

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/asyncOperationResults/{ResourceContainerGUID}?api-version=2019-10-01

{ResourceContainerGUID} se genera estáticamente para el ámbito solicitado. Si un ámbito ya está ejecutando un examen a petición, no se iniciará un nuevo examen. En su lugar, se proporciona a la nueva solicitud el mismo URI de {ResourceContainerGUID} de location para el estado. Un comando GET de API REST en el URI location devolverá una respuesta 202 - Aceptado mientras la evaluación esté en curso. Una vez completado el examen de evaluación, devuelve un estado de 200 OK. El cuerpo de un examen completo es una respuesta JSON con el estado: succeeded.

Examen de evaluación a petición mediante la CLI de Azure

El examen de cumplimiento se inicia con el comando az policy state trigger-scan.

De forma predeterminada, az policy state trigger-scan inicia una evaluación de todos los recursos de la suscripción actual. Para iniciar una evaluación en un grupo de recursos específico, use el parámetro resource-group. En el ejemplo siguiente, se inicia un examen de cumplimiento en la suscripción actual para un grupo de recursos. Reemplace resourceGroupName por el nombre del grupo de recursos:

az policy state trigger-scan --resource-group "resourceGroupName"

Puede optar por no esperar a que se complete el proceso asincrónico antes de continuar con el parámetro no-wait.

Examen de evaluación a petición mediante Azure PowerShell

El examen de cumplimiento se inicia con el cmdlet Start-AzPolicyComplianceScan.

De forma predeterminada, Start-AzPolicyComplianceScan inicia una evaluación de todos los recursos de la suscripción actual. Para iniciar una evaluación en un grupo de recursos específico, use el parámetro ResourceGroupName. En el ejemplo siguiente, se inicia un examen de cumplimiento en la suscripción actual para un grupo de recursos. Reemplace resourceGroupName por el nombre del grupo de recursos:

Start-AzPolicyComplianceScan -ResourceGroupName 'resourceGroupName'

Puede hacer que PowerShell espere a que se complete la llamada asincrónica antes de proporcionar la salida de resultados o hacer que se ejecute en segundo plano como un trabajo. Para usar un trabajo de PowerShell para ejecutar el examen de cumplimiento en segundo plano, use el parámetro AsJob y establezca el valor en un objeto, como $job en este ejemplo:

$job = Start-AzPolicyComplianceScan -AsJob

Para comprobar el estado del trabajo, compruebe el objeto $job. El trabajo es del tipo Microsoft.Azure.Commands.Common.AzureLongRunningJob. Use Get-Member en el objeto $job para ver las propiedades y los métodos disponibles.

Mientras se ejecuta el examen de cumplimiento, la comprobación del objeto $job genera resultados como los siguientes:

$job

Id     Name              PSJobTypeName     State    HasMoreData     Location   Command
--     ----              -------------     -----    -----------     --------   -------
2      Long Running O... AzureLongRunni... Running  True            localhost  Start-AzPolicyCompliance...

Cuando se completa el examen de cumplimiento, la propiedad State cambia a Completado.

Examen de evaluación a petición mediante Visual Studio Code

La extensión de Azure Policy para Visual Studio Code puede ejecutar un examen de evaluación para un recurso específico. Este examen es un proceso sincrónico, a diferencia de los métodos de Azure PowerShell y REST. Para obtener más información y conocer los pasos, consulte Evaluación a petición con la extensión VS Code.

Examen de evaluación a petición mediante Acciones de GitHub

Use la acción de Azure Policy de análisis de cumplimiento para desencadenar un análisis de evaluación a petición desde el flujo de trabajo de GitHub en uno o varios recursos, grupos de recursos o suscripciones, y para canalizar el flujo de trabajo en función del estado de cumplimiento de los recursos. También puede configurar el flujo de trabajo para que se ejecute a una hora programada, y así poder obtener el estado de cumplimiento más reciente en un momento adecuado. Opcionalmente, Acciones de GitHub puede generar un informe sobre el estado de cumplimiento de los recursos examinados para analizarlos más en profundidad o archivarlos.

En el ejemplo siguiente se ejecuta el examen de cumplimiento de una suscripción. Utilice el id. de suscripción en scopes.

on:
  schedule:
    - cron:  '0 8 * * *'  # runs every morning 8am
jobs:
  assess-policy-compliance:
    runs-on: ubuntu-latest
    steps:
    - name: Login to Azure
      uses: azure/login@v2
      with:
        creds: ${{secrets.AZURE_CREDENTIALS}}

    - name: Check for resource compliance
      uses: azure/policy-compliance-scan@v0
      with:
        scopes: |
          /subscriptions/aaaa6a6a-bb7b-cc8c-dd9d-eeeeee0e0e0e

Para obtener más información y ejemplos del flujo de trabajo, consulte las Acciones de GitHub para el repositorio de exámenes de cumplimiento de Azure Policy.

Portal

Azure Portal presenta de forma gráfica la visualización y el reconocimiento del estado de cumplimiento de normas en su entorno. En la página Directiva, la opción Información general proporciona detalles sobre el cumplimiento de directivas e iniciativas por parte de los ámbitos disponibles. Junto con el recuento y el estado de cumplimiento por asignación, contiene un gráfico que muestra el cumplimiento durante los últimos siete días. La página Cumplimiento contiene gran parte de esta misma información (excepto el gráfico), pero ofrece más opciones de filtrado y ordenación.

Captura de pantalla de la página Cumplimiento, opciones de filtrado y detalles.

Dado que una directiva o iniciativa se puede asignar a distintos ámbitos, la tabla incluye el ámbito de cada asignación y el tipo de definición que se asignó. También se proporciona el número de directivas y recursos no compatibles para cada asignación. Al seleccionar una directiva o una iniciativa de la tabla, se proporciona más información sobre el cumplimiento de esa asignación en particular.

Captura de pantalla de la página Detalles de cumplimiento, incluidos los recuentos y la información de cumplimiento de los recursos.

La lista de recursos de la pestaña Compatibilidad de recursos muestra el estado de evaluación de los recursos existentes para la asignación actual. El valor predeterminado de la pestaña es No compatible, pero se puede filtrar. Los eventos (anexar, auditar, denegar, implementar, modificar) que desencadena la solicitud para crear un recurso se muestran en la pestaña Eventos.

Captura de pantalla de la pestaña Eventos de la página Detalles de cumplimiento.

Para los recursos del modo de proveedor de recursos, en la pestaña Resource compliance (Compatibilidad de recursos), si selecciona el recurso o hace clic con el botón derecho en la fila y selecciona View compliance details (Ver detalles de cumplimiento), se abren los detalles de cumplimiento de componentes. Esta página también ofrece pestañas para ver las directivas que se asignan a este recurso, eventos, eventos de componentes e historial de cambios.

Captura de pantalla de la pestaña Compatibilidad de componentes y detalles de cumplimiento de una asignación de modo de proveedor de recursos.

De vuelta a la página de cumplimiento de recursos, seleccione y mantenga pulsada (o haga clic con el botón derecho) la fila del evento sobre el que quiere recopilar información más detallada y seleccione Show activity logs (Mostrar los registros de actividad). Se abre la página de registro de actividad y se filtra previamente para mostrar detalles de la asignación y los eventos. El registro de actividad proporciona contexto e información sobre esos eventos.

Captura de pantalla del registro de actividad para actividades y evaluaciones de Azure Policy.

Nota:

Los resultados de cumplimiento se pueden exportar desde el portal con consultas de Azure Resource Graph.

Línea de comandos

La misma información que está disponible en el portal se puede recuperar con la API REST, la CLI de Azure y Azure PowerShell.

REST API

Para obtener más información sobre la API REST, consulte la referencia de Azure Policy. Las páginas de referencia de la API REST tienen una opción Pruébelo en cada operación que le permite ejecutar el comando en un explorador. También puede usar la CLI de Azure o el cliente de API REST preferido para ejecutar los comandos.

Resumen de resultados

Con la API REST, puede resumir por contenedor, definición o asignación. Este es un ejemplo de resumen en el nivel de suscripción mediante Resumen de la suscripción de Azure Policy Insights:

POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/summarize?api-version=2019-10-01

La salida resume la suscripción y el cumplimiento resumido se encuentra en las propiedades nonCompliantResources y nonCompliantPolicies. Esta solicitud proporciona otros detalles, incluida cada asignación que compone las cifras de elementos no compatibles y la información de definición de cada asignación. Cada objeto de directiva de la jerarquía proporciona un elemento queryResultsUri que puede utilizarse para obtener detalles adicionales en ese nivel.

Consulta de recursos

En el ejemplo anterior, value.policyAssignments.policyDefinitions.results.queryResultsUri proporciona un URI de ejemplo para todos los recursos no compatibles para una definición de directiva específica. En el valor $filter, ComplianceState es igual (eq) a NonCompliant, se especifica PolicyAssignmentId para la definición de directiva y, a continuación, el propio PolicyDefinitionId. La razón para incluir PolicyAssignmentId en el filtro es que PolicyDefinitionId podría existir en varias asignaciones de directivas o de iniciativas con diversos ámbitos. Al especificar tanto el PolicyAssignmentId como el PolicyDefinitionId, podemos ser explícitos en los resultados que estamos buscando. Anteriormente, para PolicyStates usamos latest, que establece automáticamente un período de tiempo de from y to de las últimas 24 horas.

Ejemplo del valor de queryResultsUri:

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2025-01-01 04:28:22Z&$to=2025-02-10 04:28:22Z&$filter=ComplianceState eq 'NonCompliant' and PolicyAssignmentId eq '/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77' and PolicyDefinitionId eq '/providers/microsoft.authorization/policydefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62'

Ver eventos

Cuando se crea o actualiza un recurso, se genera un resultado de evaluación de directiva. Los resultados se denominan eventos de directiva. Utilice el siguiente URI para ver eventos recientes de directiva asociados a la suscripción.

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyEvents/default/queryResults?api-version=2019-10-01

Para obtener más información sobre cómo consultar eventos de directivas, consulte Eventos de Azure Policy.

CLI de Azure

El grupo de comandos de la CLI de Azure para Azure Policy cubre la mayoría de las operaciones que están disponibles en REST o Azure PowerShell. Para obtener la lista completa de los comandos disponibles, consulte az policy.

Obtener el resumen de estado de la directiva asignada en el nivel más superior con el mayor número de recursos no compatibles.

az policy state summarize --top 1

Obtener el registro de estado del recurso evaluado más recientemente; el valor predeterminado de la salida viene por marca de tiempo en orden descendente.

az policy state list --top 1

Obtener los detalles de todos los recursos de red virtual no compatibles.

az policy state list --filter "ResourceType eq 'Microsoft.Network/virtualNetworks'"

Obtener los eventos relacionados con recursos de red virtual no compatibles que se produjeron después de una fecha específica. Use el parámetro from con una fecha en formato ISO 8601.

az policy event list --filter "ResourceType eq 'Microsoft.Network/virtualNetworks'" --from '2025-02-10T00:00:00Z'

Azure PowerShell

Puede ejecutar los siguientes comandos desde Azure Cloud Shell.

Obtener el resumen de estado de la directiva asignada en el nivel más superior con el mayor número de recursos no compatibles.

Get-AzPolicyStateSummary -Top 1

Obtener el registro de estado del recurso evaluado más recientemente. El valor predeterminado de la salida viene por marca de tiempo en orden descendente.

Get-AzPolicyState -Top 1

Obtener los detalles de todos los recursos de red virtual no compatibles.

Get-AzPolicyState -Filter "ResourceType eq '/Microsoft.Network/virtualNetworks'"

Obtener los eventos relacionados con recursos de red virtual no compatibles que se produjeron después de una fecha específica. Use el parámetro From con una fecha en formato ISO 8601.

Get-AzPolicyEvent -Filter "ResourceType eq '/Microsoft.Network/virtualNetworks'" -From '2025-02-10'

La salida incluye una propiedad PrincipalOid que se puede usar para obtener un usuario específico con el cmdlet Get-AzADUser de Azure PowerShell. Reemplace {principalOid} por el valor que se obtiene del comando anterior.

(Get-AzADUser -ObjectId {principalOid}).DisplayName

Registros de Azure Monitor

Si tiene vinculada a la suscripción un área de trabajo de Log Analytics con el valor AzureActivity de la solución Activity Log Analytics, también puede ver los resultados referentes a elementos no compatibles de la evaluación de los recursos nuevos y actualizados mediante consultas de Kusto y la tabla AzureActivity. Con los detalles de los registros de Azure Monitor, se pueden configurar alertas para comprobar la opción de no compatibilidad.

Azure Resource Graph

Los registros de cumplimiento se almacenan en Azure Resource Graph (ARG). Los datos se pueden exportar desde las consultas de ARG para formar paneles personalizados en función de los ámbitos y las directivas de interés. Revise nuestras consultas de ejemplo para exportar los datos de cumplimiento mediante ARG.

Pasos siguientes