Obtención de datos de cumplimiento de los recursos de AzureGet compliance data of Azure resources

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.One of the largest benefits of Azure Policy is the insight and controls it provides over resources in a subscription or management group of subscriptions. Este control puede ejercerse de muchas maneras diferentes, por ejemplo: 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 las opciones y configuraciones apropiadas.This control can be exercised in many different ways, such as preventing resources being created in the wrong location, enforcing common and consistent tag usage, or auditing existing resources for appropriate configurations and settings. En todos los casos, los datos se generan en Azure Policy para que pueda conocer el estado de cumplimiento de su entorno.In all cases, data is generated by Azure Policy to enable you to understand the compliance state of your environment.

Hay varias maneras de acceder a la información de cumplimiento generada por la directiva y las asignaciones de iniciativa:There are several ways to access the compliance information generated by your policy and initiative assignments:

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.Before looking at the methods to report on compliance, let's look at when compliance information is updated and the frequency and events that trigger an evaluation cycle.

Advertencia

Si el estado de cumplimiento se notifica como No registrado, compruebe que el proveedor de recursos Microsoft.PolicyInsights esté registrado y que el usuario tenga los permisos de control de acceso basado en rol (RBAC) adecuados, tal como se describe en RBAC en Azure Policy.If compliance state is being reported as Not registered, verify that the Microsoft.PolicyInsights Resource Provider is registered and that the user has the appropriate role-based access control (RBAC) permissions as described in RBAC in Azure Policy.

Desencadenadores de evaluaciónEvaluation triggers

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.The results of a completed evaluation cycle are available in the Microsoft.PolicyInsights Resource Provider through PolicyStates and PolicyEvents operations. Para más información sobre las operaciones de la API REST Azure Policy Insights, consulte Azure Policy Insights.For more information about the operations of the Azure Policy Insights REST API, see Azure Policy Insights.

Las evaluaciones de directivas asignadas e iniciativas se producen como resultado de varios eventos:Evaluations of assigned policies and initiatives happen as the result of various events:

  • Una directiva o iniciativa se asigna recientemente a un ámbito.A policy or initiative is newly assigned to a scope. La asignación tarda unos 30 minutos en aplicarse al ámbito definido.It takes around 30 minutes for the assignment to be applied to the defined scope. Una vez que se aplica, comienza el ciclo de evaluación de recursos dentro de ese ámbito con la directiva o iniciativa recién asignada y, dependiendo de los efectos usados por la directiva o iniciativa, los recursos se marcan como compatibles o no compatibles.Once it's applied, the evaluation cycle begins for resources within that scope against the newly assigned policy or initiative and depending on the effects used by the policy or initiative, resources are marked as compliant or non-compliant. Una directiva o iniciativa grande evaluada en un ámbito amplio de recursos puede tardar bastante tiempo.A large policy or initiative evaluated against a large scope of resources can take time. Por tanto, no hay una predicción de cuándo se completará el ciclo de la evaluación.As such, there's no pre-defined expectation of when the evaluation cycle will complete. Una vez completado, los resultados de cumplimiento actualizados están disponibles en el portal y en los SDK.Once it completes, updated compliance results are available in the portal and SDKs.

  • Una directiva o iniciativa que ya está asignada a un ámbito se actualiza.A policy or initiative already assigned to a scope is updated. El ciclo de evaluación y control de tiempo en este escenario es el mismo que para una nueva asignación a un ámbito.The evaluation cycle and timing for this scenario is the same as for a new assignment to a scope.

  • Un recurso se implementa en un ámbito con una asignación a través del Administrador de recursos, REST, CLI de Azure o Azure PowerShell.A resource is deployed to a scope with an assignment via Resource Manager, REST, Azure CLI, or Azure PowerShell. 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.In this scenario, the effect event (append, audit, deny, deploy) and compliant status information for the individual resource becomes available in the portal and SDKs around 15 minutes later. Este evento no causa una evaluación de otros recursos.This event doesn't cause an evaluation of other resources.

  • Ciclo de evaluación de cumplimiento estándar.Standard compliance evaluation cycle. Una vez cada 24 horas, las asignaciones se vuelven a evaluar automáticamente.Once every 24 hours, assignments are automatically reevaluated. Una directiva o iniciativa grande de muchos recursos puede tardar bastante tiempo, por lo que no hay una predicción de cuándo se completará el ciclo de la evaluación.A large policy or initiative of many resources can take time, so there's no pre-defined expectation of when the evaluation cycle will complete. Una vez completado, los resultados de cumplimiento actualizados están disponibles en el portal y en los SDK.Once it completes, updated compliance results are available in the portal and SDKs.

  • Un recurso administrado actualiza el proveedor de recursos Configuración de invitado con detalles de cumplimiento.The Guest Configuration resource provider is updated with compliance details by a managed resource.

  • Examen a peticiónOn-demand scan

Examen de evaluación a peticiónOn-demand evaluation scan

Con una llamada a la API de REST se puede iniciar un examen de evaluación de una suscripción o un grupo de recursos.An evaluation scan for a subscription or a resource group can be started with a call to the REST API. Este examen es un proceso asincrónico.This scan is an asynchronous process. Por ello, el punto de conexión de REST que iniciará el examen no espera hasta que este esté completo para responder.As such, the REST endpoint to start the scan doesn't wait until the scan is complete to respond. En su lugar, proporciona un URI para consultar el estado de la evaluación solicitada.Instead, it provides a URI to query the status of the requested evaluation.

En cada identificador URI de la API REST, hay variables usadas que se deben reemplazar por sus propios valores:In each REST API URI, there are variables that are used that you need to replace with your own values:

  • {YourRG}: reemplácelo por el nombre del grupo de recursos{YourRG} - Replace with the name of your resource group
  • {subscriptionId}: reemplácelo por el identificador de suscripción{subscriptionId} - Replace with your subscription ID

El examen admite la evaluación de recursos de una suscripción o de un grupo de recursos.The scan supports evaluation of resources in a subscription or in a resource group. Inicie un examen para el ámbito con un comando POST de API REST mediante las siguientes estructuras de URI:Start a scan by scope with a REST API POST command using the following URI structures:

  • SubscriptionSubscription

    POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2018-07-01-preview
    
  • Resource groupResource group

    POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{YourRG}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2018-07-01-preview
    

La llamada devuelve un estado 202 - Aceptado.The call returns a 202 Accepted status. En el encabezado de la respuesta se incluye una propiedad Location con el formato siguiente:Included in the response header is a Location property with the following format:

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

{ResourceContainerGUID} se genera estáticamente para el ámbito solicitado.{ResourceContainerGUID} is statically generated for the scope requested. Si un ámbito ya está ejecutando un examen a petición, no se iniciará un nuevo examen.If a scope is already running an on-demand scan, a new scan isn't started. En su lugar, se proporciona a la nueva solicitud el mismo URI de {ResourceContainerGUID} Location para el estado.Instead, the new request is provided the same {ResourceContainerGUID} location URI for status. Un comando GET de API REST en el URI Location devolverá una respuesta 202 - Aceptado mientras la evaluación esté en curso.A REST API GET command to the Location URI returns a 202 Accepted while the evaluation is ongoing. Cuando haya finalizado el examen de evaluación, devolverá un estado 200 OK.When the evaluation scan has completed, it returns a 200 OK status. El cuerpo de un examen completo es una respuesta JSON con el estado:The body of a completed scan is a JSON response with the status:

{
    "status": "Succeeded"
}

Cómo funciona el cumplimientoHow compliance works

En una asignación, un recurso es No compatible si no cumple las reglas de iniciativa o directiva.In an assignment, a resource is Non-compliant if it doesn't follow policy or initiative rules. En la tabla siguiente se muestra cómo funcionan los distintos efectos de directiva con la evaluación de condición para el estado de cumplimiento resultante:The following table shows how different policy effects work with the condition evaluation for the resulting compliance state:

Estado del recursoResource state EfectoEffect Evaluación de directivaPolicy evaluation Estado de cumplimientoCompliance state
ExistsExists Deny, Audit, Append*, DeployIfNotExist*, AuditIfNotExist*Deny, Audit, Append*, DeployIfNotExist*, AuditIfNotExist* TrueTrue IncompatibleNon-compliant
ExistsExists Deny, Audit, Append*, DeployIfNotExist*, AuditIfNotExist*Deny, Audit, Append*, DeployIfNotExist*, AuditIfNotExist* FalseFalse CompatibleCompliant
NuevoNew Audit, AuditIfNotExist*Audit, AuditIfNotExist* TrueTrue IncompatibleNon-compliant
NuevoNew Audit, AuditIfNotExist*Audit, AuditIfNotExist* FalseFalse CompatibleCompliant

* Los efectos Append, DeployIfNotExist y AuditIfNotExist requieren que la instrucción IF sea TRUE.* The Append, DeployIfNotExist, and AuditIfNotExist effects require the IF statement to be TRUE. Los efectos requieren también que la condición de existencia sea FALSE para ser no compatibles.The effects also require the existence condition to be FALSE to be non-compliant. Si es TRUE, la condición IF desencadena la evaluación de la condición de existencia de los recursos relacionados.When TRUE, the IF condition triggers evaluation of the existence condition for the related resources.

Por ejemplo, suponga que tiene un grupo de recursos (ContosoRG) con varias cuentas de almacenamiento (resaltadas en rojo) expuestas a redes públicas.For example, assume that you have a resource group – ContsoRG, with some storage accounts (highlighted in red) that are exposed to public networks.

Cuentas de almacenamiento expuestas a redes públicas

En este ejemplo, debe tener cuidado con los riesgos de seguridad.In this example, you need to be wary of security risks. Ahora que ha creado una asignación de directiva, se evalúa para todas las cuentas de almacenamiento en el grupo de recursos ContosoRG.Now that you've created a policy assignment, it's evaluated for all storage accounts in the ContosoRG resource group. Se auditan las tres cuentas de almacenamiento no compatibles, con lo que sus estados cambian a No compatible.It audits the three non-compliant storage accounts, consequently changing their states to Non-compliant.

Cuentas de almacenamiento auditadas no compatibles

Además de Compatible y No compatible, las directivas y los recursos tienen otros tres estados:Besides Compliant and Non-compliant, policies and resources have three other states:

  • En conflicto: Existen dos o más directivas con reglas en conflicto.Conflicting: Two or more policies exist with conflicting rules. Por ejemplo, dos directivas anexan la misma etiqueta con valores diferentes.For example, two policies appending the same tag with different values.
  • No iniciado: no se ha iniciado el ciclo de evaluación de la directiva o del recurso.Not started: The evaluation cycle hasn't started for the policy or resource.
  • No registrado: no se ha registrado el proveedor de recursos de Azure Policy o la cuenta con que se ha iniciado sesión no tiene permiso para leer datos de cumplimiento.Not registered: The Azure Policy Resource Provider hasn't been registered or the account logged in doesn't have permission to read compliance data.

Azure Policy usa los campos de tipo y nombre en la definición para determinar si un recurso coincide.Azure Policy uses the type and name fields in the definition to determine if a resource is a match. Si coincide, se considera aplicable y tendría un estado de Compatible o No compatible.When the resource matches, it's considered applicable and has a status of either Compliant or Non-compliant. Si Tipo o Nombre son las únicas propiedades en la definición, todos los recursos se consideran aplicables y se evaluarán.If either type or name is the only property in the definition, then all resources are considered applicable and are evaluated.

El porcentaje de cumplimiento se determina al dividir los recursos Conforme por el total de recursos.The compliance percentage is determined by dividing Compliant resources by total resources. El total de recursos se define como la suma de los recursos Conforme, No compatible y En conflicto.Total resources is defined as the sum of the Compliant, Non-compliant, and Conflicting resources. La cifra de cumplimiento general es la suma de los distintos recursos que son Conforme dividida por la suma de todos los recursos distintos.The overall compliance numbers are the sum of distinct resources that are Compliant divided by the sum of all distinct resources. En la imagen siguiente, hay 20 recursos diferentes que son aplicables y solo uno es No compatible.In the image below, there are 20 distinct resources that are applicable and only one is Non-compliant. Por tanto, el cumplimiento general de los recursos es del 95 % (19 de 20).The overall resource compliance is 95% (19 out of 20).

Ejemplo de cumplimiento de directivas de la página de cumplimiento

PortalPortal

Azure Portal presenta de forma gráfica la visualización y el reconocimiento del estado de cumplimiento de normas en su entorno.The Azure portal showcases a graphical experience of visualizing and understanding the state of compliance in your environment. 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.On the Policy page, the Overview option provides details for available scopes on the compliance of both policies and initiatives. 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.Along with the compliance state and count per assignment, it contains a chart showing compliance over the last seven days. 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.The Compliance page contains much of this same information (except the chart), but provide additional filtering and sorting options.

Ejemplo de la página de cumplimiento de Azure Policy

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ó.Since a policy or initiative can be assigned to different scopes, the table includes the scope for each assignment and the type of definition that was assigned. También se proporciona el número de directivas y recursos no compatibles para cada asignación.The number of non-compliant resources and non-compliant policies for each assignment are also provided. Al hacer clic en una directiva o iniciativa de la tabla, se proporciona más información sobre el cumplimiento de esa asignación en particular.Clicking on a policy or initiative in the table provides a deeper look at the compliance for that particular assignment.

Ejemplo de la página de detalles de cumplimiento de Azure Policy

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.The list of resources on the Resource compliance tab shows the evaluation status of existing resources for the current assignment. El valor predeterminado de la pestaña es No compatible, pero se puede filtrar.The tab defaults to Non-compliant, but can be filtered. Los eventos (anexar, auditar, denegar, implementar) que desencadena la solicitud para crear un recurso se muestran en la pestaña Eventos.Events (append, audit, deny, deploy) triggered by the request to create a resource are shown under the Events tab.

Nota

En el caso de una directiva del motor de AKS, el recurso que se muestra es el grupo de recursos.For an AKS Engine policy, the resource shown is the resource group.

Ejemplo de eventos de cumplimiento de Azure Policy

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.For Resource Provider mode resources, on the Resource compliance tab, selecting the resource or right-clicking on the row and selecting View compliance details opens the component compliance details. 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.This page also offers tabs to see the policies that are assigned to this resource, events, component events, and change history.

Ejemplo de los detalles de cumplimiento del componente de Azure Policy

De vuelta a la página de cumplimiento de recursos, haga clic con el botón derecho en la fila del evento sobre el que quiere recopilar información más detallada y seleccione Show activity logs (Mostrar los registros de actividad).Back on the resource compliance page, right-click on the row of the event you would like to gather more details on and select Show activity logs. Se abre la página de registro de actividad y se filtra previamente para mostrar detalles de la asignación y los eventos.The activity log page opens and is pre-filtered to the search showing details for the assignment and the events. El registro de actividad proporciona contexto e información adicionales sobre esos eventos.The activity log provides additional context and information about those events.

Ejemplo de registro de actividad de cumplimiento de Azure Policy

Qué significa no cumplimientoUnderstand non-compliance

Cuando se determina que un recurso no es compatible, hay muchas razones posibles para ello.When a resources is determined to be non-compliant, there are many possible reasons. Para determinar el motivo de que un recurso no sea compatible o para buscar el responsable del cambio, consulte Determinación del incumplimiento.To determine the reason a resource is non-compliant or to find the change responsible, see Determine non-compliance.

Línea de comandosCommand line

La misma información que está disponible en el portal se puede recuperar mediante la API REST (incluso con ARMClient), Azure PowerShell y la CLI de Azure (versión preliminar).The same information available in the portal can be retrieved with the REST API (including with ARMClient), Azure PowerShell, and Azure CLI (preview). Para detalles completos sobre la API REST, consulte la referencia de Azure Policy Insights.For full details on the REST API, see the Azure Policy Insights reference. Las páginas de referencia de la API de REST tienen un botón verde en cada operación para realizar una prueba en el explorador.The REST API reference pages have a green 'Try It' button on each operation that allows you to try it right in the browser.

Use ARMClient o una herramienta similar para tratar la autenticación en Azure para los ejemplos de la API REST.Use ARMClient or a similar tool to handle authentication to Azure for the REST API examples.

Resumen de resultadosSummarize results

Con la API REST, el resumen se puede realizar por contenedor, definición o asignación.With the REST API, summarization can be performed by container, definition, or assignment. Este es un ejemplo de resumen en el nivel de suscripción mediante Summarize For Subscription (Resumen de la suscripción) de Azure Policy Insights:Here is an example of summarization at the subscription level using Azure Policy Insight's Summarize For Subscription:

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

La salida resume la suscripción.The output summarizes the subscription. En la salida de ejemplo siguiente, la compatibilidad resumida está en value.results.nonCompliantResources y value.results.nonCompliantPolicies.In the example output below, the summarized compliance are under value.results.nonCompliantResources and value.results.nonCompliantPolicies. Esta solicitud proporciona más detalles, incluida cada asignación que compone los números no compatibles y la información de definición de cada asignación.This request provides further details, including each assignment that made up the non-compliant numbers and the definition information for each assignment. Cada objeto de directiva de la jerarquía proporciona un queryResultsUri que puede utilizarse para obtener detalles adicionales en ese nivel.Each policy object in the hierarchy provides a queryResultsUri that can be used to get additional detail at that level.

{
    "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#summary",
    "@odata.count": 1,
    "value": [{
        "@odata.id": null,
        "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#summary/$entity",
        "results": {
            "queryResultsUri": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2018-04-04&$from=2018-05-18 04:28:22Z&$to=2018-05-19 04:28:22Z&$filter=IsCompliant eq false",
            "nonCompliantResources": 15,
            "nonCompliantPolicies": 1
        },
        "policyAssignments": [{
            "policyAssignmentId": "/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77",
            "policySetDefinitionId": "",
            "results": {
                "queryResultsUri": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2018-04-04&$from=2018-05-18 04:28:22Z&$to=2018-05-19 04:28:22Z&$filter=IsCompliant eq false and PolicyAssignmentId eq '/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77'",
                "nonCompliantResources": 15,
                "nonCompliantPolicies": 1
            },
            "policyDefinitions": [{
                "policyDefinitionReferenceId": "",
                "policyDefinitionId": "/providers/microsoft.authorization/policydefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
                "effect": "deny",
                "results": {
                    "queryResultsUri": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2018-04-04&$from=2018-05-18 04:28:22Z&$to=2018-05-19 04:28:22Z&$filter=IsCompliant eq false 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'",
                    "nonCompliantResources": 15
                }
            }]
        }]
    }]
}

Consulta de recursosQuery for resources

En el ejemplo anterior, value.policyAssignments.policyDefinitions.results.queryResultsUri proporciona un URI de ejemplo para todos los recursos no compatibles de una definición de directiva específica.In the example above, value.policyAssignments.policyDefinitions.results.queryResultsUri provides a sample Uri for all non-compliant resources for a specific policy definition. Examinando el valor de $filter, IsCompliant es igual (eq) a false, se especifica PolicyAssignmentId para la definición de directiva y, después, el propio PolicyDefinitionId.Looking at the $filter value, IsCompliant is equal (eq) to false, PolicyAssignmentId is specified for the policy definition, and then the PolicyDefinitionId itself. 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.The reason for including the PolicyAssignmentId in the filter is because the PolicyDefinitionId could exist in several policy or initiative assignments with different scopes. Al especificar PolicyAssignmentId y PolicyDefinitionId, podremos ser explícitos en los resultados que estamos buscando.By specifying both the PolicyAssignmentId and the PolicyDefinitionId, we can be explicit in the results we're looking for. Anteriormente, para PolicyStates usábamos más reciente, que establece automáticamente una ventana temporal desde y hasta de las últimas 24 horas.Previously, for PolicyStates we used latest, which automatically sets a from and to time window of the last 24-hours.

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2018-04-04&$from=2018-05-18 04:28:22Z&$to=2018-05-19 04:28:22Z&$filter=IsCompliant eq false 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'

La respuesta del ejemplo siguiente se ha reducido a un único recurso no compatible para mayor brevedad.The example response below has been trimmed to a single non-compliant resource for brevity. La respuesta detallada tiene varios elementos de datos sobre el recurso, la directiva (o iniciativa) y la asignación.The detailed response has several pieces of data about the resource, the policy or initiative, and the assignment. Tenga en cuenta que también puede ver qué parámetros de asignación se han pasado a la definición de directiva.Notice that you can also see what assignment parameters were passed to the policy definition.

{
    "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest",
    "@odata.count": 15,
    "value": [{
        "@odata.id": null,
        "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
        "timestamp": "2018-05-19T04:41:09Z",
        "resourceId": "/subscriptions/{subscriptionId}/resourceGroups/rg-tags/providers/Microsoft.Compute/virtualMachines/linux",
        "policyAssignmentId": "/subscriptions/{subscriptionId}/resourceGroups/rg-tags/providers/Microsoft.Authorization/policyAssignments/37ce239ae4304622914f0c77",
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
        "effectiveParameters": "",
        "isCompliant": false,
        "subscriptionId": "{subscriptionId}",
        "resourceType": "/Microsoft.Compute/virtualMachines",
        "resourceLocation": "westus2",
        "resourceGroup": "RG-Tags",
        "resourceTags": "tbd",
        "policyAssignmentName": "37ce239ae4304622914f0c77",
        "policyAssignmentOwner": "tbd",
        "policyAssignmentParameters": "{\"tagName\":{\"value\":\"costCenter\"},\"tagValue\":{\"value\":\"Contoso-Test\"}}",
        "policyAssignmentScope": "/subscriptions/{subscriptionId}/resourceGroups/RG-Tags",
        "policyDefinitionName": "1e30110a-5ceb-460c-a204-c1c3969c6d62",
        "policyDefinitionAction": "deny",
        "policyDefinitionCategory": "tbd",
        "policySetDefinitionId": "",
        "policySetDefinitionName": "",
        "policySetDefinitionOwner": "",
        "policySetDefinitionCategory": "",
        "policySetDefinitionParameters": "",
        "managementGroupIds": "",
        "policyDefinitionReferenceId": ""
    }]
}

Ver eventosView events

Cuando se crea o actualiza un recurso, se genera un resultado de evaluación de directiva.When a resource is created or updated, a policy evaluation result is generated. Los resultados se denominan eventos de directiva.Results are called policy events. Utilice el siguiente Uri para ver eventos recientes de directiva asociados a la suscripción.Use the following Uri to view recent policy events associated with the subscription.

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

Los resultados deben tener una apariencia similar al ejemplo siguiente:Your results resemble the following example:

{
    "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyEvents/$metadata#default",
    "@odata.count": 1,
    "value": [{
        "@odata.id": null,
        "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyEvents/$metadata#default/$entity",
        "NumAuditEvents": 16
    }]
}

Para más información sobre cómo consultar eventos de directiva, consulte el artículo de referencia sobre los estados de Azure Policy.For more information about querying policy events, see the Azure Policy Events reference article.

Azure PowerShellAzure PowerShell

El módulo Azure PowerShell para Azure Policy está disponible en la Galería de PowerShell como Az.PolicyInsights.The Azure PowerShell module for Azure Policy is available on the PowerShell Gallery as Az.PolicyInsights. Con el uso de PowerShellGet, puede instalar el módulo con Install-Module -Name Az.PolicyInsights (asegúrese de tener instalada la última versión de Azure PowerShell):Using PowerShellGet, you can install the module using Install-Module -Name Az.PolicyInsights (make sure you have the latest Azure PowerShell installed):

# Install from PowerShell Gallery via PowerShellGet
Install-Module -Name Az.PolicyInsights

# Import the downloaded module
Import-Module Az.PolicyInsights

# Login with Connect-AzAccount if not using Cloud Shell
Connect-AzAccount

El módulo incluye los siguientes cmdlets:The module has the following cmdlets:

  • Get-AzPolicyStateSummary
  • Get-AzPolicyState
  • Get-AzPolicyEvent
  • Get-AzPolicyRemediation
  • Remove-AzPolicyRemediation
  • Start-AzPolicyRemediation
  • Stop-AzPolicyRemediation

Ejemplo: Obtener el resumen de estado para la directiva asignada superior con el mayor número de recursos no compatibles.Example: Getting the state summary for the topmost assigned policy with the highest number of non-compliant resources.

PS> Get-AzPolicyStateSummary -Top 1

NonCompliantResources : 15
NonCompliantPolicies  : 1
PolicyAssignments     : {/subscriptions/{subscriptionId}/resourcegroups/RG-Tags/providers/micros
                        oft.authorization/policyassignments/37ce239ae4304622914f0c77}

Ejemplo: Obtener el registro de estado para el recurso evaluado más recientemente (el valor predeterminado es por marca de tiempo en orden descendente).Example: Getting the state record for the most recently evaluated resource (default is by timestamp in descending order).

PS> Get-AzPolicyState -Top 1

Timestamp                  : 5/22/2018 3:47:34 PM
ResourceId                 : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
                             crosoft.Network/networkInterfaces/linux316
PolicyAssignmentId         : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
                             crosoft.Authorization/policyAssignments/37ce239ae4304622914f0c77
PolicyDefinitionId         : /providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62
IsCompliant                : False
SubscriptionId             : {subscriptionId}
ResourceType               : /Microsoft.Network/networkInterfaces
ResourceLocation           : westus2
ResourceGroup              : RG-Tags
ResourceTags               : tbd
PolicyAssignmentName       : 37ce239ae4304622914f0c77
PolicyAssignmentOwner      : tbd
PolicyAssignmentParameters : {"tagName":{"value":"costCenter"},"tagValue":{"value":"Contoso-Test"}}
PolicyAssignmentScope      : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags
PolicyDefinitionName       : 1e30110a-5ceb-460c-a204-c1c3969c6d62
PolicyDefinitionAction     : deny
PolicyDefinitionCategory   : tbd

Ejemplo: Obtener los detalles de todos los recursos de red virtual no compatibles.Example: Getting the details for all non-compliant virtual network resources.

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

Timestamp                  : 5/22/2018 4:02:20 PM
ResourceId                 : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
                             crosoft.Network/virtualNetworks/RG-Tags-vnet
PolicyAssignmentId         : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
                             crosoft.Authorization/policyAssignments/37ce239ae4304622914f0c77
PolicyDefinitionId         : /providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62
IsCompliant                : False
SubscriptionId             : {subscriptionId}
ResourceType               : /Microsoft.Network/virtualNetworks
ResourceLocation           : westus2
ResourceGroup              : RG-Tags
ResourceTags               : tbd
PolicyAssignmentName       : 37ce239ae4304622914f0c77
PolicyAssignmentOwner      : tbd
PolicyAssignmentParameters : {"tagName":{"value":"costCenter"},"tagValue":{"value":"Contoso-Test"}}
PolicyAssignmentScope      : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags
PolicyDefinitionName       : 1e30110a-5ceb-460c-a204-c1c3969c6d62
PolicyDefinitionAction     : deny
PolicyDefinitionCategory   : tbd

Ejemplo: Obtener eventos relacionados con recursos de red virtual no compatibles que se produjeron después de una fecha concreta.Example: Getting events related to non-compliant virtual network resources that occurred after a specific date.

PS> Get-AzPolicyEvent -Filter "ResourceType eq '/Microsoft.Network/virtualNetworks'" -From '2018-05-19'

Timestamp                  : 5/19/2018 5:18:53 AM
ResourceId                 : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
                             crosoft.Network/virtualNetworks/RG-Tags-vnet
PolicyAssignmentId         : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
                             crosoft.Authorization/policyAssignments/37ce239ae4304622914f0c77
PolicyDefinitionId         : /providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62
IsCompliant                : False
SubscriptionId             : {subscriptionId}
ResourceType               : /Microsoft.Network/virtualNetworks
ResourceLocation           : eastus
ResourceGroup              : RG-Tags
ResourceTags               : tbd
PolicyAssignmentName       : 37ce239ae4304622914f0c77
PolicyAssignmentOwner      : tbd
PolicyAssignmentParameters : {"tagName":{"value":"costCenter"},"tagValue":{"value":"Contoso-Test"}}
PolicyAssignmentScope      : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags
PolicyDefinitionName       : 1e30110a-5ceb-460c-a204-c1c3969c6d62
PolicyDefinitionAction     : deny
PolicyDefinitionCategory   : tbd
TenantId                   : {tenantId}
PrincipalOid               : {principalOid}

El campo PrincipalOid se puede utilizar para obtener un usuario específico con el cmdlet Get-AzADUser de Azure PowerShell.The PrincipalOid field can be used to get a specific user with the Azure PowerShell cmdlet Get-AzADUser. Reemplace {principalOid} por la respuesta que se obtiene del ejemplo anterior.Replace {principalOid} with the response you get from the previous example.

PS> (Get-AzADUser -ObjectId {principalOid}).DisplayName
Trent Baker

Registros de Azure MonitorAzure Monitor logs

Si tiene un área de trabajo de Log Analytics con AzureActivity de la solución Activity Log Analytics vinculada a su suscripción, también puede ver los resultados de no cumplimiento del ciclo de evaluación mediante consultas sencillas de Kusto y la tabla AzureActivity.If you have a Log Analytics workspace with AzureActivity from the Activity Log Analytics solution tied to your subscription, you can also view non-compliance results from the evaluation cycle using simple Kusto queries and the AzureActivity table. Con los detalles de los registros de Azure Monitor, se pueden configurar alertas para comprobar la opción de no compatibilidad.With details in Azure Monitor logs, alerts can be configured to watch for non-compliance.

Cumplimiento de Azure Policy mediante registros de Azure Monitor

Pasos siguientesNext steps