Determinación de las causas de incumplimientoDetermine causes of non-compliance

Cuando se determina que un recurso de Azure no cumple con una regla de directiva, resulta útil entender con qué parte de la regla no es compatible el recurso.When an Azure resource is determined to be non-compliant to a policy rule, it's helpful to understand which portion of the rule the resource isn't compliant with. También resulta útil para comprender cuál es el cambio que modificó un recurso compatible anteriormente y lo transformó en no compatible.It's also useful to understand what change altered a previously compliant resource to make it non-compliant. Hay dos maneras de obtener esta información:There are two ways to find this information:

Detalles de cumplimientoCompliance details

Cuando un recurso no es compatible, los detalles de cumplimiento para ese recurso estarán disponibles en la página Cumplimiento de directiva.When a resource is non-compliant, the compliance details for that resource are available from the Policy compliance page. El panel de detalles de cumplimiento incluye la siguiente información:The compliance details pane includes the following information:

  • Detalles de recursos como el nombre, el tipo, la ubicación y el identificador del recurso.Resource details such as name, type, location, and resource ID
  • Estado de compatibilidad y marca de tiempo de la última evaluación para la asignación de la directiva actual.Compliance state and timestamp of the last evaluation for the current policy assignment
  • Una lista de razones por las que el recurso no es compatible.A list of reasons for the resource non-compliance

Importante

Puesto que los detalles de cumplimiento para un recurso no compatible muestran el valor correcto de las propiedades en ese recurso, el usuario debe realizar la operación de lectura en el tipo de recurso.As the compliance details for a Non-compliant resource shows the current value of properties on that resource, the user must have read operation to the type of resource. Por ejemplo, si el recurso no compatible es Microsoft.Compute/virtualMachines, el usuario debe realizar la operación Microsoft.Compute/virtualMachines/read.For example, if the Non-compliant resource is Microsoft.Compute/virtualMachines then the user must have the Microsoft.Compute/virtualMachines/read operation. Si el usuario no realiza la operación necesaria, se muestra un error de acceso.If the user doesn't have the needed operation, an access error is displayed.

Para ver los detalles de cumplimiento, siga estos pasos:To view the compliance details, follow these steps:

  1. Inicie el servicio Azure Policy en Azure Portal. Para ello, haga clic en Todos los servicios y, a continuación, busque y seleccione Directiva.Launch the Azure Policy service in the Azure portal by clicking All services, then searching for and selecting Policy.

  2. En la página Información general o Cumplimiento, seleccione una directiva que sea con un estado de compatibilidad que sea No compatible.On the Overview or Compliance page, select a policy in a compliance state that is Non-compliant.

  3. En la pestaña Compatibilidad de recursos de Cumplimiento de directiva, haga clic con el botón derecho o seleccione los puntos suspensivos de un recurso en un estado de compatibilidad que sea No compatible.Under the Resource compliance tab of the Policy compliance page, right-click or select the ellipsis of a resource in a compliance state that is Non-compliant. A continuación, seleccione Ver detalles de cumplimiento.Then select View compliance details.

    Ver opción de detalles de cumplimiento

  4. La página Detalles de cumplimiento muestra información de la última evaluación del recurso en la asignación de directiva actual.The Compliance details pane displays information from the latest evaluation of the resource to the current policy assignment. En este ejemplo, el campo Microsoft.Sql/servers/version tiene que ser 12.0 y se espera que la definición de política sea 14.0.In this example, the field Microsoft.Sql/servers/version is found to be 12.0 while the policy definition expected 14.0. Si el recurso no es compatible por varias razones, estas se muestran en este panel.If the resource is non-compliant for multiple reasons, each is listed on this pane.

    Panel de detalles de cumplimiento y razones de no compatibilidad

    Para una definición de directiva auditIfNotExists o deployIfNotExists, los detalles incluyen la propiedad details.type y cualquier propiedad opcional.For an auditIfNotExists or deployIfNotExists policy definition, the details include the details.type property and any optional properties. Para obtener una lista, consulte auditIfNotExists propiedades y deployIfNotExists propiedades.For a list, see auditIfNotExists properties and deployIfNotExists properties. Último recurso evaluado es un recurso relacionado de la sección de detalles de la definición.Last evaluated resource is a related resource from the details section of the definition.

    Definición deployIfNotExists parcial de ejemplo:Example partial deployIfNotExists definition:

    {
        "if": {
            "field": "type",
            "equals": "[parameters('resourceType')]"
        },
        "then": {
            "effect": "DeployIfNotExists",
            "details": {
                "type": "Microsoft.Insights/metricAlerts",
                "existenceCondition": {
                    "field": "name",
                    "equals": "[concat(parameters('alertNamePrefix'), '-', resourcegroup().name, '-', field('name'))]"
                },
                "existenceScope": "subscription",
                "deployment": {
                    ...
                }
            }
        }
    }
    

    Panel de detalles de cumplimiento: *ifNotExists

Nota

Para proteger los datos, cuando un valor de propiedad es secreto, el valor actual muestra asteriscos.To protect data, when a property value is a secret the current value displays asterisks.

Estos detalles explican por qué un recurso no es compatible actualmente, pero no muestran cuándo se realizó el cambio en el recurso que provocó que se transformara en no compatible.These details explain why a resource is currently non-compliant, but don't show when the change was made to the resource that caused it to become non-compliant. Para obtener esa información, consulte Historial de cambios (versión preliminar) a continuación.For that information, see Change history (Preview) below.

Razones de cumplimientoCompliance reasons

La siguiente matriz asigna cada motivo posible a la condición responsable en la definición de la directiva:The following matrix maps each possible reason to the responsible condition in the policy definition:

MotivoReason CondiciónCondition
El valor actual debe contener el valor de destino como una clave.Current value must contain the target value as a key. containsKey o no notContainsKeycontainsKey or not notContainsKey
El valor actual debe contener el valor de destino.Current value must contain the target value. contains o no notContainscontains or not notContains
El valor actual debe ser igual al valor de destino.Current value must be equal to the target value. equals o no notEqualsequals or not notEquals
El valor actual debe ser inferior al valor de destino.Current value must be less than the target value. less o no greaterOrEqualsless or not greaterOrEquals
El valor actual debe ser superior o igual al valor de destino.Current value must be greater than or equal to the target value. greaterOrEquals o no lessgreaterOrEquals or not less
El valor actual debe ser superior al valor de destino.Current value must be greater than the target value. greater o no lessOrEqualsgreater or not lessOrEquals
El valor actual debe ser inferior o igual al valor de destino.Current value must be less than or equal to the target value. lessOrEquals o no greaterlessOrEquals or not greater
El valor actual debe existir.Current value must exist. existsexists
El valor actual debe estar en el valor de destino.Current value must be in the target value. in o no notInin or not notIn
El valor actual debe ser como el valor de destino.Current value must be like the target value. like o no notLikelike or not notLike
El valor actual debe coincidir con distinción de mayúsculas y minúsculas con el valor de destino.Current value must case-sensitive match the target value. match o no notMatchmatch or not notMatch
El valor actual debe coincidir sin distinción de mayúsculas y minúsculas con el valor de destino.Current value must case-insensitive match the target value. matchInsensitively o no notMatchInsensitivelymatchInsensitively or not notMatchInsensitively
El valor actual no debe contener el valor de destino como clave.Current value must not contain the target value as a key. notContainsKey o no containsKeynotContainsKey or not containsKey
El valor actual no debe contener el valor de destino.Current value must not contain the target value. notContains o no containsnotContains or not contains
El valor actual no debe ser igual que el valor de destino.Current value must not be equal to the target value. notEquals o no equalsnotEquals or not equals
El valor actual no debe existir.Current value must not exist. no existsnot exists
El valor actual no debe estar en el valor de destino.Current value must not be in the target value. notIn o no innotIn or not in
El valor actual no debe ser como el valor de destino.Current value must not be like the target value. notLike o no likenotLike or not like
El valor actual no debe coincidir con distinción de mayúsculas y minúsculas con el valor de destino.Current value must not case-sensitive match the target value. notMatch o no matchnotMatch or not match
El valor actual no debe coincidir sin distinción de mayúsculas y minúsculas con el valor de destino.Current value must not case-insensitive match the target value. notMatchInsensitively o no matchInsensitivelynotMatchInsensitively or not matchInsensitively
Ninguno de los recursos relacionados coincide con los detalles de vigencia de la definición de directiva.No related resources match the effect details in the policy definition. Un recurso del tipo definido en then.details.type y relacionado con el recurso definido en la porción if de la regla de directiva no existe.A resource of the type defined in then.details.type and related to the resource defined in the if portion of the policy rule doesn't exist.

Detalles de cumplimiento de la configuración de invitadoCompliance details for Guest Configuration

Para las directivas auditIfNotExists de la categoría Configuración de invitados, podría haber varias configuraciones evaluadas dentro de la máquina virtual y tendrá que ver los detalles por configuración.For auditIfNotExists policies in the Guest Configuration category, there could be multiple settings evaluated inside the VM and you'll need to view per-setting details. Por ejemplo, si va a realizar una auditoría de una lista de directivas de contraseñas y solo una de ellas tiene el estado No compatible, debe saber qué directivas de contraseñas específicas no cumplen los requisitos y por qué.For example, if you're auditing for a list of password policies and only one of them has status Non-compliant, you'll need to know which specific password policies are out of compliance and why.

También es posible que no disponga de acceso para iniciar sesión en la VM directamente, pero tiene que informar sobre el motivo por el que la VM no es compatible.You also might not have access to sign in to the VM directly but you need to report on why the VM is Non-compliant.

Portal de AzureAzure portal

Para empezar, siga los mismos pasos de la sección anterior para ver los detalles de cumplimiento de directivas.Begin by following the same steps in the section above for viewing policy compliance details.

En la vista del panel Detalles de cumplimiento, haga clic en el vínculo Último recurso evaluado.In the Compliance details pane view click the link Last evaluated resource.

Ver detalles de la definición de auditIfNotExists

La página Asignación de invitado muestra todos los detalles de cumplimiento disponibles.The Guest Assignment page displays all available compliance details. Cada fila de la vista representa una evaluación que se realizó dentro de la máquina.Each row in the view represents an evaluation that was performed inside the machine. En la columna Motivo, se muestra una frase en la que se describe el motivo por el que la Asignación de invitado no es compatible.In the Reason column, a phrase describing why the Guest Assignment is Non-compliant is shown. Por ejemplo, si audita directivas de contraseñas, la columna Motivo mostraría un texto que incluye el valor actual de cada configuración.For example, if you're auditing password policies, the Reason column would display text including the current value for each setting.

Ver detalles de cumplimiento

Azure PowerShellAzure PowerShell

También puede ver los detalles de cumplimiento en Azure PowerShell.You can also view compliance details from Azure PowerShell. En primer lugar, asegúrese de tener el módulo de configuración de invitado instalado.First, make sure you have the Guest Configuration module installed.

Install-Module Az.GuestConfiguration

Puede ver el estado actual de todas las asignaciones de invitado para una VM mediante el comando siguiente:You can view the current status of all Guest Assignments for a VM using the following command:

Get-AzVMGuestPolicyReport -ResourceGroupName <resourcegroupname> -VMName <vmname>
PolicyDisplayName                                                         ComplianceReasons
-----------------                                                         -----------------
Audit that an application is installed inside Windows VMs                 {[InstalledApplication]bwhitelistedapp}
Audit that an application is not installed inside Windows VMs.            {[InstalledApplication]NotInstalledApplica...

Para ver solo la frase del motivo que describe la causa por la que la VM no es compatible, vuelva solo a la propiedad secundaria del motivo.To view only the reason phrase that describes why the VM is Non-compliant, return only the Reason child property.

Get-AzVMGuestPolicyReport -ResourceGroupName <resourcegroupname> -VMName <vmname> | % ComplianceReasons | % Reasons | % Reason
The following applications are not installed: '<name>'.

También puede generar un historial de cumplimiento de las asignaciones de invitados en el ámbito de la máquina.You can also output a compliance history for Guest Assignments in scope for the machine. La salida de este comando incluye los detalles de cada informe para la VM.The output from this command includes the details of each report for the VM.

Nota

La salida puede devolver un gran volumen de datos.The output may return a large volume of data. Se recomienda almacenar la salida en una variable.It's recommended to store the output in a variable.

$guestHistory = Get-AzVMGuestPolicyStatusHistory -ResourceGroupName <resourcegroupname> -VMName <vmname>
$guestHistory
PolicyDisplayName                                                         ComplianceStatus ComplianceReasons StartTime              EndTime                VMName LatestRepor
                                                                                                                                                                  tId
-----------------                                                         ---------------- ----------------- ---------              -------                ------ -----------
[Preview]: Audit that an application is installed inside Windows VMs      NonCompliant                       02/10/2019 12:00:38 PM 02/10/2019 12:00:41 PM VM01  ../17fg0...
<truncated>

Para simplificar esta vista, use el parámetro ShowChanged.To simplify this view, use the ShowChanged parameter. La salida de este comando solo incluye los informes que tuvieron un cambio en el estado de compatibilidad.The output from this command only includes the reports that followed a change in compliance status.

$guestHistory = Get-AzVMGuestPolicyStatusHistory -ResourceGroupName <resourcegroupname> -VMName <vmname> -ShowChanged
$guestHistory
PolicyDisplayName                                                         ComplianceStatus ComplianceReasons StartTime              EndTime                VMName LatestRepor
                                                                                                                                                                  tId
-----------------                                                         ---------------- ----------------- ---------              -------                ------ -----------
Audit that an application is installed inside Windows VMs                 NonCompliant                       02/10/2019 10:00:38 PM 02/10/2019 10:00:41 PM VM01  ../12ab0...
Audit that an application is installed inside Windows VMs.                Compliant                          02/09/2019 11:00:38 AM 02/09/2019 11:00:39 AM VM01  ../e3665...
Audit that an application is installed inside Windows VMs                 NonCompliant                       02/09/2019 09:00:20 AM 02/09/2019 09:00:23 AM VM01  ../15ze1...

Historial de cambios (versión preliminar)Change history (Preview)

Como parte de una nueva versión preliminar pública, los últimos 14 días del historial de cambios están disponibles para todos los recursos de Azure que admiten la eliminación de modo completa.As part of a new public preview, the last 14 days of change history are available for all Azure resources that support complete mode deletion. El historial de cambios proporciona información acerca de cuándo se detectó un cambio y una diferencia visual para cada cambio.Change history provides details about when a change was detected and a visual diff for each change. Se desencadena una detección de cambios cuando se agregan, eliminan o modifican las propiedades de Resource Manager.A change detection is triggered when the Resource Manager properties are added, removed, or altered.

  1. Inicie el servicio Azure Policy en Azure Portal. Para ello, haga clic en Todos los servicios y, a continuación, busque y seleccione Directiva.Launch the Azure Policy service in the Azure portal by clicking All services, then searching for and selecting Policy.

  2. En la página Información general o Cumplimiento, seleccione una directiva con cualquier estado de compatibilidad.On the Overview or Compliance page, select a policy in any compliance state.

  3. En la pestaña Compatibilidad de recursos, de la página Cumplimiento de directiva, seleccione un recurso.Under the Resource compliance tab of the Policy compliance page, select a resource.

  4. Seleccione la pestaña Historial de cambios (versión preliminar) en la página Compatibilidad de recursos.Select the Change History (preview) tab on the Resource Compliance page. Se muestra una lista de cambios detectados, si existe alguna.A list of detected changes, if any exist, are displayed.

    Pestaña Historial de cambios de directiva de Azure en la página Compatibilidad de recursos

  5. Seleccione uno de los cambios detectados.Select one of the detected changes. Las diferencias visuales para el recurso se presentan en la página Historial de cambios.The visual diff for the resource is presented on the Change history page.

    Diferencias visuales del historial de cambios de directiva de Azure en la página Historial de cambios

Las diferencias visuales ayudan a identificar los cambios de un recurso.The visual diff aides in identifying changes to a resource. Los cambios detectados pueden no estar relacionados con el estado de compatibilidad actual del recurso.The changes detected may not be related to the current compliance state of the resource.

Azure Resource Graph proporciona los datos del historial de cambios.Change history data is provided by Azure Resource Graph. Para consultar esta información fuera de Azure Portal, consulte Obtención de cambios de recursos.To query this information outside of the Azure portal, see Get resource changes.

Pasos siguientesNext steps