Solución de errores mediante Azure Policy

Al crear definiciones de directivas, trabajar con los SDK o configurar el complemento Azure Policy para Kubernetes, pueden producirse errores. En este artículo se describen los distintos errores generales que se pueden producir y se sugieren maneras de resolverlos.

Búsqueda de detalles del error

La ubicación de los detalles del error depende del aspecto de Azure Policy con el que trabaje.

  • Si trabaja con una directiva personalizada, vaya a Azure Portal para obtener comentarios de linting o revisar los datos de cumplimiento resultantes para ver cómo se evaluaron los recursos.
  • Si trabaja con cualquiera de los diversos SDK, el SDK proporciona detalles sobre el motivo de que se produjera un error en la función.
  • Si trabaja con el complemento para Kubernetes, empiece por el registro en el clúster.

Errores generales

Escenario: Alias no encontrado

Problema

Se ha utilizado un alias incorrecto o inexistente en una definición de directiva. Azure Policy usa alias para asignarlos a las propiedades de Azure Resource Manager.

Causa

Se ha utilizado un alias incorrecto o inexistente en una definición de directiva.

Solución

En primer lugar, compruebe que la propiedad de Resource Manager tiene un alias. Para buscar los alias disponibles, vaya a Extensión de Azure Policy para Visual Studio Code o el SDK. Si el alias de una propiedad de Resource Manager no existe, cree una incidencia de soporte técnico.

Escenario: Los detalles de evaluación no están actualizados

Problema

Un recurso tiene el estado No iniciado o los detalles de cumplimiento no son actuales.

Causa

Cualquier nueva asignación de directiva o iniciativa tarda unos cinco minutos en aplicarse. Los recursos nuevos o actualizados dentro del ámbito de una asignación existente estarán disponibles unos 15 minutos más tarde. Un examen de cumplimiento estándar se produce cada 24 horas. Para más información, consulte los desencadenadores de evaluación.

Resolución

En primer lugar, espere la cantidad de tiempo que haga falta a que finalice una evaluación y a que los resultados de cumplimiento estén disponibles en Azure Portal o el SDK. Para iniciar un nuevo examen de evaluación con Azure PowerShell o la API de REST, consulte Examen de evaluación a petición.

Escenario: La compatibilidad no es la esperada

Problema

Un recurso no está en el estado de evaluación Compatible o No compatible esperado para él.

Causa

El recurso no está en el ámbito correcto de la asignación de directiva o la definición de directiva no funciona según lo previsto.

Resolución

Para solucionar los problemas de la definición de directiva, siga estos pasos:

  1. En primer lugar, espere la cantidad de tiempo que haga falta a que finalice una evaluación y a que los resultados de cumplimiento estén disponibles en Azure Portal o SDK.
  2. Para iniciar un nuevo examen de evaluación con Azure PowerShell o la API REST, consulte Examen de evaluación a petición.
  3. Compruebe que los parámetros de asignación y el ámbito de asignación estén configurados correctamente.
  4. Compruebe el modo de definición de directiva:
    • El modo debe ser all para todos los tipos de recursos.
    • El modo debe ser indexed si la definición de directiva comprueba las etiquetas o la ubicación.
  5. Asegúrese de que el ámbito del recurso no sea excluido ni exento.
  6. Si la compatibilidad de una asignación de directiva muestra 0/0 recursos, se determinó que ningún recurso era aplicable en el ámbito de la asignación. Compruebe la definición de la directiva y el ámbito de la asignación.
  7. En el caso de los recursos no compatibles que se espera que sean compatibles, consulte Determinación de las razones del no cumplimiento. La comparación de la definición con el valor de propiedad evaluado indica por qué un recurso no era compatible.
    • Si el valor de destino es incorrecto, revise la definición de la directiva.
    • Si el valor actual es incorrecto, valide la carga de recursos a través de resources.azure.com.
  8. Para una definición de modo de proveedor de recursos que admita un parámetro de cadena de expresión regular (como Microsoft.Kubernetes.Data y la definición integrada "Las imágenes de contenedor solo deben implementarse desde registros de confianza"), compruebe que el parámetro Cadena de expresión regular es correcto.
  9. Para otros problemas y soluciones comunes, consulte Solución de problemas: La aplicación no es la esperada.

Si todavía tiene un problema con la definición de la directiva integrada duplicada y personalizada, o la definición personalizada, cree una incidencia de soporte técnico en Creación de una directiva para dirigir el problema correctamente.

Escenario: La aplicación no es la esperada

Problema

Azure Policy no está realizando ninguna acción sobre el recurso esperado y no hay ninguna entrada en el registro de actividad de Azure.

Causa

La asignación de directivas se configuró para un valor de enforcementMode de Deshabilitado. Aunque enforcementMode esté deshabilitado, el efecto de la directiva no se aplica y no hay ninguna entrada en el registro de actividad.

Solución

Para solucionar los problemas de cumplimiento de la asignación de directivas, siga los siguientes pasos:

  1. En primer lugar, espere la cantidad de tiempo que haga falta a que finalice una evaluación y a que los resultados de cumplimiento estén disponibles en Azure Portal o el SDK.
  2. Para iniciar un nuevo examen de evaluación con Azure PowerShell o la API de REST, consulte Examen de evaluación a petición.
  3. Compruebe que los parámetros de asignación y el ámbito de asignación estén configurados correctamente y que enforcementMode esté Habilitado.
  4. Compruebe el modo de definición de directiva:
    • El modo debe ser all para todos los tipos de recursos.
    • El modo debe ser indexed si la definición de directiva comprueba las etiquetas o la ubicación.
  5. Asegúrese de que el ámbito del recurso no sea excluido ni exento.
  6. Compruebe que la carga de recursos coincida con la lógica de la directiva. Esta comprobación se puede realizar al capturar un seguimiento de archivo HTTP (HAR) o revisar las propiedades de la plantilla de Azure Resource Manager.
  7. Para otros problemas y soluciones comunes, consulte Solución de problemas: El cumplimiento no es el esperado.

Si todavía tiene un problema con la definición de la directiva integrada duplicada y personalizada, o la definición personalizada, cree una incidencia de soporte técnico en Creación de una directiva para dirigir el problema correctamente.

Escenario: Denegado por Azure Policy

Problema

Se ha denegado la creación o actualización de un recurso.

Causa

Una asignación de directivas al ámbito en el que se encuentra el recurso nuevo o actualizado cumple los criterios de una definición de directiva con un efecto Denegar. Se impide que los recursos que reúnan estas condiciones se creen o actualicen.

Resolución

El mensaje de error de una asignación de directiva de denegación incluye los identificadores de definición de directiva y de asignación de directivas. Si se pierde la información de error en el mensaje, también está disponible en el registro de actividad. Use esta información para obtener más detalles para comprender las restricciones de recursos y ajustar las propiedades de los recursos de la solicitud para que coincidan con los valores permitidos.

Escenario: La definición incluye varios tipos de recursos

Problema

Una definición de directiva que incluye varios tipos de recursos produce el siguiente error de validación durante la creación o la actualización:

The policy definition '{0}' targets multiple resource types, but the policy rule is authored in a way that makes the policy not applicable to the target resource types '{1}'.

Causa

La regla de definición de directiva tiene una o varias condiciones que los tipos de recursos de destino no evalúan.

Solución

Si se usa un alias, asegúrese de que este se evalúe solo con respecto al tipo de recurso al que pertenece agregando una condición de tipo delante. Una alternativa es dividir la definición de directiva en varias definiciones para evitar incluir varios tipos de recursos.

Escenario: se superó el límite de suscripción

Problema

Se muestra un mensaje de error en la página de cumplimiento de Azure Portal al recuperar el cumplimiento de las asignaciones de directivas.

Causa

El número de suscripciones en los ámbitos seleccionados en la solicitud superó el límite de 5000 suscripciones. Los resultados del cumplimiento pueden mostrarse parcialmente.

Solución

Para ver los resultados completos, seleccione un ámbito más granular con menos suscripciones secundarias.

Errores de plantilla

Escenario: Funciones admitidas por la directiva que procesa una plantilla

Problema

Azure Policy admite muchas funciones de plantilla de Resource Manager y funciones que solo están disponibles en una definición de directiva. Resource Manager procesa estas funciones como parte de una implementación en lugar de como parte de una definición de directiva.

Causa

El uso de funciones admitidas, como parameter() o resourceGroup() da lugar al resultado procesado de la función en el momento de la implementación en lugar de permitir que la definición de directiva y el motor de Azure Policy la procesen.

Solución

Para pasar una función para que forme parte de una definición de directiva, escape la cadena completa con [ de forma que la propiedad se parezca a [[resourceGroup().tags.myTag]. El carácter de escape hace que Resource Manager trate el valor como una cadena al procesar la plantilla. Azure Policy coloca entonces la función en la definición de directiva, lo que permite que sea dinámica como se esperaba. Para obtener más información, consulte Sintaxis y expresiones de las plantillas de Azure Resource Manager.

Complemento para errores de instalación de Kubernetes

Escenario: No se puede realizar la instalación mediante un gráfico de Helm debido a un error de contraseña

Problema

Se produce un error en el comando helm install azure-policy-addon y se devuelve uno de los siguientes errores:

  • !: event not found
  • Error: failed parsing --set data: key "<key>" has no value (cannot end with ,)

Causa

La contraseña generada incluye una coma (,) que hace que el gráfico de Helm se divida.

Solución

Al ejecutar helm install azure-policy-addon, escape la coma (,) del valor de contraseña con una barra diagonal inversa (\).

Escenario: Se produce un error en la instalación mediante un gráfico de Helm porque el nombre ya existe

Problema

El comando helm install azure-policy-addon produce un error y devuelve el siguiente error:

  • Error: cannot re-use a name that is still in use

Causa

El gráfico de Helm llamado azure-policy-addon ya estaba instalado completa o parcialmente.

Solución

Siga las instrucciones para quitar el complemento Azure Policy para Kubernetes y, luego, vuelva a ejecutar el comando helm install azure-policy-addon.

Escenario: Las identidades asignadas por el usuario de una máquina virtual de Azure se sustituyen por identidades administradas asignadas por el sistema

Incidencia

Después de asignar las iniciativas de directiva de configuración de invitado a la configuración de auditoría dentro de una máquina, las identidades administradas asignadas por el usuario que se asignaron a la máquina ya no se asignan. Solo se asigna una identidad administrada asignada por el sistema.

Causa

Las definiciones de directiva usadas anteriormente en las definiciones de deployIfNotExists de la configuración de invitado garantizaban que una identidad asignada por el sistema estuviese asignada a la máquina. Pero también quitaban las asignaciones de identidad asignadas por el usuario.

Solución

Las definiciones que anteriormente provocaban este problema aparecen como \[Deprecated\] y se reemplazaron por definiciones de directivas que administran los requisitos previos sin quitar las identidades administradas asignadas por el usuario. Se requiere un paso manual. Elimine las asignaciones de directiva existentes marcadas como \[Deprecated\] y reemplácelas por la iniciativa de directiva de requisitos previos actualizada y las definiciones de directivas que tengan el mismo nombre que el original.

Para encontrar una descripción detallada, consulte la entrada de blog Cambio importante publicado para las directivas de auditoría de configuración de invitado.

Complemento para errores generales de Kubernetes

Escenario: El complemento no puede tener acceso al punto de conexión de servicio de Azure Policy debido a las restricciones de salida.

Problema

El complemento no puede tener acceso al punto de conexión de servicio de Azure Policy y devuelve uno de los siguientes errores:

  • failed to fetch token, service not reachable
  • Error getting file "Get https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-allowed-images/template.yaml: dial tcp 151.101.228.133.443: connect: connection refused

Causa

Este problema se produce cuando se bloquea una salida del clúster.

Solución

Asegúrese de que los dominios y puertos que se mencionan en el siguiente artículo están abiertos:

Escenario: El complemento no puede acceder al punto de conexión de servicio de Azure Policy debido a la configuración de aad-pod-identity

Problema

El complemento no puede tener acceso al punto de conexión de servicio de Azure Policy y devuelve uno de los siguientes errores:

  • azure.BearerAuthorizer#WithAuthorization: Failed to refresh the Token for request to https://gov-prod-policy-data.trafficmanager.net/checkDataPolicyCompliance?api-version=2019-01-01-preview: StatusCode=404
  • adal: Refresh request failed. Status Code = '404'. Response body: getting assigned identities for pod kube-system/azure-policy-8c785548f-r882p in CREATED state failed after 16 attempts, retry duration [5]s, error: <nil>

Causa

Este error se produce cuando aad-pod-identity está instalado en el clúster y los pods de kube-system no se excluyen en aad-pod-identity.

Los pods de Identidad administrada del nodo componente (NMI) de aad-pod-identity modifican las tablas de IP de los nodos para interceptar las llamadas que se realizan al punto de conexión de metadatos de instancia de Azure. Esta configuración significa que NMI intercepta toda solicitud realizada al punto de conexión de Metadata, incluso aunque el pod no utilice aad-pod-identity. CustomResourceDefinition (CRD) de AzurePodIdentityException se puede configurar para informar a aad-pod-identity de que las solicitudes a un punto de conexión de metadatos que se originan desde un pod que coincide con las etiquetas definidas en la CRD deben pasar por un servidor proxy sin ningún procesamiento en NMI.

Solución

Excluye los pods del sistema que tienen la etiqueta kubernetes.azure.com/managedby: aks en el espacio de nombres kube-system en aad-pod-identity configurando la CRD de AzurePodIdentityException.

Para más información, consulte Deshabilitación de la identidad del pod de Azure Active Directory (Azure AD) para un pod o una aplicación específicos.

Para configurar una excepción, siga este ejemplo:

apiVersion: "aadpodidentity.k8s.io/v1"
kind: AzurePodIdentityException
metadata:
  name: mic-exception
  namespace: default
spec:
  podLabels:
    app: mic
    component: mic
---
apiVersion: "aadpodidentity.k8s.io/v1"
kind: AzurePodIdentityException
metadata:
  name: aks-addon-exception
  namespace: kube-system
spec:
  podLabels:
    kubernetes.azure.com/managedby: aks

Escenario: El proveedor de recursos no está registrado

Problema

El complemento puede acceder al punto de conexión de servicio de Azure Policy, pero los registros del complemento muestran uno de los siguientes errores:

  • The resource provider 'Microsoft.PolicyInsights' is not registered in subscription '{subId}'. See https://aka.ms/policy-register-subscription for how to register subscriptions.

  • policyinsightsdataplane.BaseClient#CheckDataPolicyCompliance: Failure responding to request: StatusCode=500 -- Original Error: autorest/azure: Service returned an error. Status=500 Code="InternalServerError" Message="Encountered an internal server error.

Causa

El proveedor de recursos Microsoft.PolicyInsights no está registrado. Se debe registrar para que el complemento obtenga las definiciones de directiva y devuelva datos de cumplimiento.

Solución

Registre el proveedor de recursos de Microsoft.PolicyInsights en la suscripción del clúster. Puede encontrar instrucciones en Registro de un proveedor de recursos.

Escenario: La suscripción está deshabilitada

Problema

El complemento puede acceder al punto de conexión de servicio de Azure Policy, pero se muestra el siguiente error:

The subscription '{subId}' has been disabled for azure data-plane policy. Please contact support.

Causa

Este error significa que la suscripción se determinó como problemática y se agregó la marca de características Microsoft.PolicyInsights/DataPlaneBlocked para bloquear la suscripción.

Solución

Para investigar y resolver este problema, póngase en contacto con el equipo de características.

Escenario: las definiciones de la categoría "Configuración de invitado" no se pueden duplicar desde Azure Portal

Problema

Al intentar crear una definición de directiva personalizada desde la página de definiciones de directiva en Azure Portal, seleccione el botón Duplicar definición. Después de asignar la directiva, encontrará máquinas que son NonCompliant debido a que no existe ningún recurso de asignación de configuración de invitado.

Causa

La configuración de invitado se basa en metadatos personalizados agregados a las definiciones de directiva al crear recursos de asignación de configuración de invitado. La actividad Duplicar definición de Azure Portal no copia metadatos personalizados.

Solución

En lugar de usar el portal, duplique la definición de directiva mediante la API Policy Insights. En el siguiente ejemplo de PowerShell se proporciona una opción.

# duplicates the built-in policy which audits Windows machines for pending reboots
$def = Get-AzPolicyDefinition -id '/providers/Microsoft.Authorization/policyDefinitions/4221adbc-5c0f-474f-88b7-037a99e6114c' | % Properties
New-AzPolicyDefinition -name (new-guid).guid -DisplayName "$($def.DisplayName) (Copy)" -Description $def.Description -Metadata ($def.Metadata | convertto-json) -Parameter ($def.Parameters | convertto-json) -Policy ($def.PolicyRule | convertto-json -depth 15)

Escenario: El recurso de Kubernetes se crea durante un error de conectividad a pesar de que se ha asignado la directiva de denegación

Problema

Si se produce un error de conectividad del clúster de Kubernetes, se puede omitir la evaluación de los recursos recién creados o actualizados debido al comportamiento de apertura ante un error de Gatekeeper.

Causa

El modelo de apertura ante un error de GK es así por naturaleza y se basa en los comentarios de la comunidad. La documentación de Gatekeeper se amplía aquí por estos motivos: https://open-policy-agent.github.io/gatekeeper/website/docs/failing-closed#considerations.

Solución

En el evento anterior, el caso de error se puede supervisar a partir de las métricas de webhook de admisión proporcionadas por kube-apiserver. Si la evaluación se omite en el momento de la creación y se crea un objeto, se notifica a los clientes el cumplimiento de Azure Policy como no compatible como marca.

Independientemente del escenario, la directiva de Azure conserva la última directiva conocida en el clúster y mantiene los límites de protección en su lugar.

Pasos siguientes

Si su problema no aparece en este artículo o no lo puede resolver, visite uno de los siguientes canales para obtener ayuda:

  • Obtenga respuestas de expertos a través de Preguntas y respuestas de Microsoft.
  • Conéctese con @AzureSupport. Este recurso oficial de Microsoft Azure en X ayuda a mejorar la experiencia del cliente al conectar la comunidad de Azure a las respuestas, el soporte técnico y los expertos adecuados.
  • Si sigue necesitando ayuda, vaya al sitio de soporte técnico de Azure y seleccione Enviar una incidencia de soporte técnico.