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:
- 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.
- Para iniciar un nuevo examen de evaluación con Azure PowerShell o la API REST, consulte Examen de evaluación a petición.
- Compruebe que los parámetros de asignación y el ámbito de asignación estén configurados correctamente.
- 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.
- El modo debe ser
- Asegúrese de que el ámbito del recurso no sea excluido ni exento.
- 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. - 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
.
- 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. - 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:
- 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.
- Compruebe que los parámetros de asignación y el ámbito de asignación estén configurados correctamente y que
enforcementMode
esté Habilitado. - 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.
- El modo debe ser
- Asegúrese de que el ámbito del recurso no sea excluido ni exento.
- 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.
- 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.