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:
Inicie el servicio Azure Policy en Azure Portal. Para ello, seleccione Todos los servicios y, a continuación, busque y seleccione Directiva.
En la página Información general o Cumplimiento, seleccione una directiva que sea con un estado de compatibilidad que sea No compatible.
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.
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.Para una definición de directiva
auditIfNotExists
odeployIfNotExists
, 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": { ... } } } }
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.PolicyInsights
modo 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.Data
modo 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.
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.
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.
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.
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.
Inicie el servicio Azure Policy en Azure Portal. Para ello, seleccione Todos los servicios y, a continuación, busque y seleccione Directiva.
En la página Información general o Cumplimiento, seleccione una directiva con cualquier estado de compatibilidad.
En la pestaña Compatibilidad de recursos de la página Cumplimiento de directiva, seleccione un recurso.
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.
Seleccione uno de los cambios detectados. Las diferencias visuales para el recurso se presentan 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
- Puede consultar ejemplos en Ejemplos de Azure Policy.
- Revise la estructura de definición de Azure Policy.
- Vea la Descripción de los efectos de directivas.
- Obtenga información acerca de cómo se pueden crear directivas mediante programación.
- Obtenga información sobre cómo obtener datos de cumplimiento.
- Obtenga información sobre cómo corregir recursos no compatibles.
- En Organización de los recursos con grupos de administración de Azure, obtendrá información sobre lo que es un grupo de administración.