Determinación de las causas de incumplimiento

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. También resulta útil para comprender qué cambio modificó un recurso compatible anteriormente y lo transformó en no compatible. Hay dos maneras de obtener esta información:

Detalles de cumplimiento

Cuando un recurso no es compatible, los detalles de cumplimiento para ese recurso estarán disponibles en la página Cumplimiento de directiva. El panel de detalles de cumplimiento incluye la siguiente información:

  • Detalles de recursos como el nombre, el tipo, la ubicación y el identificador del recurso.
  • Estado de compatibilidad y marca de tiempo de la última evaluación para la asignación de la directiva actual.
  • Una lista de razones por las que el recurso no es compatible.

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. Por ejemplo, si el recurso No compatible es Microsoft.Compute/virtualMachines, el usuario debe tener la operación Microsoft.Compute/virtualMachines/read. Si el usuario no realiza la operación necesaria, se muestra un error de acceso.

Para ver los detalles de cumplimiento, siga estos pasos:

  1. Inicie el servicio Azure Policy en Azure Portal. Para ello, seleccione Todos los servicios y, a continuación, busque y seleccione Directiva.

  2. En la página Información general o Cumplimiento, seleccione una directiva que sea con un estado de compatibilidad que sea No compatible.

  3. En la pestaña Compatibilidad de recursos de Cumplimiento de directiva, seleccione y mantenga (o haga clic con el botón derecho), o seleccione los puntos suspensivos de un recurso en un estado de compatibilidad que sea No compatible. A continuación, seleccione Ver detalles de cumplimiento.

    Captura de pantalla del vínculo Ver detalles de cumplimiento en la pestaña Cumplimiento de recursos.

  4. La página Detalles de cumplimiento muestra información de la última evaluación del recurso en la asignación de directiva actual. 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. Si el recurso no es compatible por varias razones, estas se muestran en este panel.

    Captura de pantalla del panel Detalles de cumplimiento y el motivo por el que no hay cumplimiento es que el valor actual es 12 y el valor de destino es 14.

    Para una definición de directiva auditIfNotExists o deployIfNotExists, los detalles incluyen la propiedad details.type y cualquier propiedad opcional. Para obtener una lista, consulte auditIfNotExists propiedades y deployIfNotExists propiedades. Último recurso evaluado es un recurso relacionado de la sección de detalles de la definición.

    Definición parcial deployIfNotExists de ejemplo:

    {
      "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": {
            ...
          }
        }
      }
    }
    

    Captura de pantalla del panel Detalles de cumplimiento para ifNotExists, incluido el recuento de recursos evaluados.

Nota

Para proteger los datos, cuando un valor de propiedad es secreto, el valor actual muestra asteriscos.

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. Para obtener esa información, consulte Historial de cambios (versión preliminar).

Razones de cumplimiento

Los modos de Resource Manager y los modos del proveedor de recursos tienen razones diferentes para el no cumplimiento.

Razones de cumplimiento del modo general de Resource Manager

La siguiente tabla asigna cada razón del modo de Resource Manager posible a la condición responsable en la definición de la directiva:

Motivo Condición
El valor actual debe contener el valor de destino como una clave. containsKey o no notContainsKey
El valor actual debe contener el valor de destino. contains o no notContains
El valor actual debe ser igual al valor de destino. equals o no notEquals
El valor actual debe ser inferior al valor de destino. less o no greaterOrEquals
El valor actual debe ser superior o igual al valor de destino. greaterOrEquals o no less
El valor actual debe ser superior al valor de destino. greater o no lessOrEquals
El valor actual debe ser inferior o igual al valor de destino. lessOrEquals o no greater
El valor actual debe existir. exists
El valor actual debe estar en el valor de destino. in o no notIn
El valor actual debe ser como el valor de destino. like o no notLike
El valor actual debe coincidir con distinción de mayúsculas y minúsculas con el valor de destino. match o no notMatch
El valor actual debe coincidir sin distinción de mayúsculas y minúsculas con el valor de destino. matchInsensitively o no notMatchInsensitively
El valor actual no debe contener el valor de destino como clave. notContainsKey o no containsKey
El valor actual no debe contener el valor de destino. notContains o no contains
El valor actual no debe ser igual que el valor de destino. notEquals o no equals
El valor actual no debe existir. no exists
El valor actual no debe estar en el valor de destino. notIn o no in
El valor actual no debe ser como el valor de destino. notLike o no like
El valor actual no debe coincidir con distinción de mayúsculas y minúsculas con el valor de destino. notMatch o no match
El valor actual no debe coincidir sin distinción de mayúsculas y minúsculas con el valor de destino. notMatchInsensitively o no matchInsensitively
Ninguno de los recursos relacionados coincide con los detalles de vigencia de la definición de directiva. 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.

Motivos de cumplimiento del modo de proveedor de recursos de Azure Policy

En la tabla siguiente se asigna cada código de motivo del Microsoft.PolicyInsightsmodo de proveedor de recursos a su explicación correspondiente:

Código de motivo de cumplimiento Mensaje de error y explicación
NonModifiablePolicyAlias NonModifiableAliasConflict: el alias "{alias}" no se puede modificar en las solicitudes mediante la versión de API "{apiVersion}". Este error se produce en una solicitud que usa una versión de API en la que el alias no admite el efecto "modify" o solo admite el efecto "modify" con un tipo de token diferente.
AppendPoliciesNotApplicable AppendPoliciesUnableToAppend: los alias: "{ alias }" no se pueden modificar en las solicitudes mediante la versión de API: "{ apiVersion }". Esto puede ocurrir en las solicitudes que usan versiones de API para las que los alias no admiten el efecto "modify" o admiten el efecto "modify" con un tipo de token diferente.
ConflictingAppendPolicies ConflictingAppendPolicies: se encontraron asignaciones de directivas en conflicto que modifican el campo "{notApplicableFields}". Identificadores de directiva: "{policy}". Póngase en contacto con el administrador de la suscripción para actualizar las asignaciones de directivas.
AppendPoliciesFieldsExist AppendPoliciesFieldsExistWithDifferentValues: las asignaciones de directivas intentaron anexar campos que ya existen en la solicitud con valores diferentes. Campos: "{existingFields}". Identificadores de directiva: "{policy}". Póngase en contacto con el administrador de la suscripción para actualizar las directivas.
AppendPoliciesUndefinedFields AppendPoliciesUndefinedFields: se ha encontrado una definición de directiva que hace referencia a una propiedad de campo no definida para la versión de API "{apiVersion}". Campos: "{nonExistingFields}". Identificadores de directiva: "{policy}". Póngase en contacto con el administrador de la suscripción para actualizar las directivas.
MissingRegistrationForType MissingRegistrationForResourceType: la suscripción no está registrada para el tipo de recurso "{ResourceType}". Compruebe que el tipo de recurso existe y que está registrado.
AmbiguousPolicyEvaluationPaths El contenido de la solicitud tiene una o más rutas de acceso "{0}"ambiguas, que son necesarias para las directivas "{1}".
InvalidResourceNameWildcardPosition No se pudo evaluar la asignación de directiva "{0}" asociada a la definición de directiva "{1}". El nombre de recurso "{2}" dentro de una condición ifNotExists contiene el carácter comodín "?" en una posición no válida. Los caracteres comodín solo se pueden ubicar al final del nombre en un segmento por sí mismos (por ejemplo, TopLevelResourceName/?). Corrija la directiva o quite la asignación de directiva para desbloquear.
TooManyResourceNameSegments No se pudo evaluar la asignación de directiva "{0}" asociada a la definición de directiva "{1}". El nombre de recurso "{2}" dentro de una condición ifNotExists contiene demasiados segmentos de nombre. El número de segmentos de nombre debe ser igual o menor que el número de segmentos de tipo (excepto el espacio de nombres del proveedor de recursos). Corrija la definición de directiva o quite la asignación de directiva para desbloquear.
InvalidPolicyFieldPath La ruta de acceso de campo "{0}" dentro de la definición de directiva no es válida. Las rutas de acceso de campo no deben contener segmentos vacíos. Solo pueden contener caracteres alfanuméricos con la excepción del carácter "." para dividir segmentos y la secuencia de caracteres "[*]" para acceder a las propiedades de la matriz.

Razones de cumplimiento del modo del proveedor de recursos de AKS

En la tabla siguiente se asigna cada razón del Microsoft.Kubernetes.Datamodo del proveedor de recursos al estado responsable de la plantilla de restricción en la definición de directiva:

Motivo Descripción de la razón de la plantilla de restricción
Constraint/TemplateCreateFailed No se pudo crear el recurso para una definición de directiva con una restricción o plantilla que no coincide con una restricción o plantilla existentes en el clúster por nombre de metadatos de recursos.
Constraint/TemplateUpdateFailed No se pudo actualizar la restricción o plantilla para una definición de directiva con una restricción o plantilla que coincide con una restricción o plantilla existentes en el clúster por nombre de metadatos de recursos.
Constraint/TemplateInstallFailed No se pudo crear la restricción o plantilla y no se pudo instalar en el clúster para la operación de creación o actualización.
ConstraintTemplateConflicts La plantilla tiene un conflicto con una o varias definiciones de directiva que usan el mismo nombre de plantilla con otro origen.
ConstraintStatusStale Hay un estado "Auditoría" existente, pero Gatekeeper no ha realizado ninguna auditoría en la última hora.
ConstraintNotProcessed No hay ningún estado y Gatekeeper ha realizado una auditoría en la última hora.
InvalidConstraint/Template El recurso se rechazó debido a uno de los siguientes motivos: contenido Rego de la plantilla de restricción no válida, YAML no válido o un error de coincidencia de tipo de parámetro entre la restricción y la plantilla de restricción (se ha proporcionado un valor de cadena cuando se esperaba un entero).

Nota:

En el caso de las asignaciones de directivas existentes y las plantillas de restricción que ya están en el clúster, si se produce un error en esa restricción o plantilla, el clúster se protege manteniendo la restricción o plantilla existentes. Se notifica el no cumplimiento del clúster hasta que el error se resuelva en la asignación de directivas o el complemento se recupere por sí mismo. Para más información sobre cómo controlar conflictos, consulte Conflictos de plantilla de restricciones.

Detalles de componente de los modos de proveedor de recursos

En las asignaciones con un modo de proveedor de recursos, seleccione el recurso No compatible para ver sus registros de cumplimiento de componentes. La pestaña Compatibilidad de componentes muestra información adicional específica del modo de proveedor de recursos como Nombre del componente, Id. de componente y Tipo.

Captura de pantalla del panel Compatibilidad de componentes y detalles de cumplimiento de las asignaciones con el modo de proveedor de recursos.

Detalles de cumplimiento de la configuración de invitado

En las definiciones de directiva de la categoría Configuración de invitados, podría haber varias configuraciones evaluadas dentro de la máquina virtual y es necesario ver los detalles por configuración. Por ejemplo, si va a realizar una auditoría de una lista de opciones de seguridad 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é.

También es posible que no disponga de acceso para iniciar sesión en la máquina virtual directamente, pero tenga que comunicar el motivo por el que la máquina virtual es No compatible.

Azure portal

Comience siguiendo los mismos pasos de la sección Detalles de cumplimiento para ver los detalles de cumplimiento de directivas.

En la vista del panel Detalles de cumplimiento, seleccione el vínculo Último recurso evaluado.

Captura de pantalla de la visualización de los detalles de cumplimiento de la definición de auditIfNotExists.

La página Asignación de invitado muestra todos los detalles de cumplimiento disponibles. Cada fila de la vista representa una evaluación que se realizó dentro de la máquina. En la columna Motivo, se muestra una frase que describe el motivo por el que Asignación de invitado es No compatible. Por ejemplo, si audita directivas de contraseñas, la columna Motivo mostraría un texto que incluye el valor actual de cada configuración.

Captura de pantalla de los detalles de cumplimiento de la asignación de invitados.

Visualización de los detalles de la asignación de configuración a escala

La característica de configuración de invitado se puede usar fuera de las asignaciones de Azure Policy. Por ejemplo, Azure AutoManage crea asignaciones de configuración de invitado, o puede asignar configuraciones cuando implemente máquinas.

Para ver todas las asignaciones de configuración de invitado del inquilino, en Azure Portal abra la página Asignaciones de invitado. Para ver información detallada sobre el cumplimiento, seleccione cada asignación mediante el vínculo de la columna Nombre.

Captura de pantalla de la página Asignación de invitados.

Historial de cambios (versión preliminar)

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. El historial de cambios proporciona información acerca de cuándo se detectó un cambio y una diferencia visual para cada cambio. Se desencadena una detección de cambios cuando se agregan, eliminan o modifican las propiedades de Azure Resource Manager.

  1. Inicie el servicio Azure Policy en Azure Portal. Para ello, seleccione Todos los servicios y, a continuación, busque y seleccione Directiva.

  2. En la página Información general o Cumplimiento, seleccione una directiva con cualquier estado de compatibilidad.

  3. En la pestaña Compatibilidad de recursos de la página Cumplimiento de directiva, seleccione un recurso.

  4. Seleccione la pestaña Historial de cambios (versión preliminar) en la página Compatibilidad de recursos. Se muestra una lista de cambios detectados, si existe alguna.

    Captura de pantalla de la pestaña Historial de cambios y las horas de modificación detectadas en la página Cumplimiento de recursos.

  5. Seleccione uno de los cambios detectados. Las diferencias visuales para el recurso se presentan en la página Historial de cambios.

    Captura de pantalla de las diferencias visuales del historial de cambios en el estado anterior y posterior de las propiedades en la página Historial de cambios.

    Las diferencias visuales ayudan a identificar los cambios de un recurso. Los cambios detectados pueden no estar relacionados con el estado de compatibilidad actual del recurso.

Azure Resource Graph proporciona los datos del historial de cambios. Para consultar esta información fuera de Azure Portal, consulte Obtención de cambios de recursos.

Pasos siguientes