Résolution des erreurs liées à Azure Policy

Lors de la création de définitions de stratégie, de l’utilisation des kits de développement logiciel (SDK) ou de la configuration du module complémentaire Azure Policy pour Kubernetes, des erreurs peuvent survenir. Cet article décrit différentes erreurs générales susceptibles de se produire, et propose des moyens de les résoudre.

Localisation des détails de l’erreur

L’emplacement des détails de l’erreur dépend de l’aspect d’Azure Policy dont il est question.

  • Si vous utilisez une stratégie personnalisée, accédez au Portail Azure pour obtenir des commentaires de linting sur le schéma ou passez en revue les données de conformité qui en résultent pour voir comment les ressources ont été évaluées.
  • Si vous utilisez l’un des kits SDK, celui-ci donne des détails sur la raison de l’échec de la fonction.
  • Si vous utilisez le module complémentaire pour Kubernetes, commencez par la journalisation dans le cluster.

Erreurs générales.

Scénario : Alias introuvable

Problème

Un alias incorrect ou inexistant est utilisé dans une définition de stratégie. Azure Policy utilise des alias à mapper aux propriétés Azure Resource Manager.

Cause

Un alias incorrect ou inexistant est utilisé dans une définition de stratégie.

Résolution

Tout d’abord, vérifiez que la propriété Resource Manager est dotée d’un alias. Pour rechercher les alias disponibles, accédez à l’extension Azure Policy pour Visual Studio Code ou au kit SDK. Si l’alias d’une propriété Resource Manager n’existe pas, créez un ticket de support.

Scénario : Les détails de l’évaluation ne sont pas à jour

Problème

Une ressource est à l’état Non démarré, ou les détails de compatibilité ne sont pas à jour.

Cause

L’application d’une nouvelle attribution de stratégie ou d’initiative prend environ cinq minutes. Les nouvelles ressources et les ressources mises à jour dans l’étendue d’une attribution existante sont disponibles au bout d’environ 15 minutes. Une analyse de conformité standard se produit toutes les 24 heures. Pour plus d’informations, consultez les déclencheurs d’évaluation.

Résolution

Tout d’abord, attendez le temps nécessaire pour qu’une évaluation se termine et que les résultats de conformité soient disponibles sur le Portail Azure ou dans le kit SDK. Pour commencer une nouvelle analyse d’évaluation avec Azure PowerShell ou l’API REST, consultez Analyse d’évaluation à la demande.

Scénario : État de conformité non attendu

Problème

Une ressource ne présente pas l’état d’évaluation Conforme ou Non conforme attendu.

Cause

La ressource ne se trouve pas dans la bonne étendue de l’attribution de stratégie, ou la définition de stratégie ne fonctionne pas comme prévu.

Résolution

Pour résoudre les problèmes liés à votre définition de stratégie, procédez comme suit :

  1. Tout d’abord, attendez le temps nécessaire pour qu’une évaluation se termine et que les résultats de conformité soient disponibles sur le portail Azure ou dans le Kit de développement logiciel (SDK).

  2. Pour commencer une nouvelle analyse d’évaluation avec Azure PowerShell ou l’API REST, consultez Analyse d’évaluation à la demande.

  3. Vérifiez que les paramètres et l’étendue d’attribution sont correctement définis.

  4. Vérifiez le mode de définition de la stratégie :

    • Le mode doit être all pour tous les types de ressources.
    • Le mode doit être indexed si la définition de stratégie recherche des balises ou un emplacement.
  5. Vérifiez que l’étendue de la ressource n’est ni exclue ni exempte.

  6. Si la conformité d’une attribution de stratégie indique 0/0 ressources, aucune ressource n’a été déterminée comme étant applicable dans l’étendue de l’attribution. Vérifiez à la fois la définition de la stratégie et l’étendue de l’attribution.

  7. Pour une ressource non conforme alors qu’elle est censée l’être, consultez Détermination des raisons de la non-conformité. La comparaison de la définition avec la valeur de propriété évaluée indique la raison pour laquelle une ressource n’est pas conforme.

    • Si la valeur cible est incorrecte, révisez la définition de la stratégie.
    • Si la valeur actuelle est incorrecte, validez la charge utile de la ressource par le biais de resources.azure.com.
  8. Pour une définition du mode Fournisseur de ressources qui prend en charge un paramètre de chaîne RegEx (comme Microsoft.Kubernetes.Data et la définition intégrée « les images de conteneur doivent être déployées uniquement à partir de registres approuvés »), vérifiez que le paramètre de chaîne Regex est correct.

  9. Pour d’autres problèmes et solutions courants, consultez Résolution des problèmes : Mise en œuvre non conforme aux attentes.

Si vous rencontrez toujours un problème avec votre définition de stratégie intégrée dupliquée et personnalisée ou une définition personnalisée, créez un ticket de support sous Création d’une stratégie pour acheminer le problème correctement.

Scénario : Application non conforme aux attentes

Problème

Azure Policy n’agit pas sur une ressource sur laquelle il est censé le faire, et il n’y a aucune entrée dans le journal d’activité Azure.

Cause

L’attribution de stratégie a été configurée pour un paramètre enforcementMode défini sur Désactivé. Si enforcementMode est désactivé, l’effet de stratégie n’est pas appliqué, et il n’y a aucune entrée dans le journal d’activité.

Résolution

Pour résoudre les problèmes liés à la mise en œuvre de l’attribution de votre stratégie, procédez comme suit :

  1. Tout d’abord, attendez le temps nécessaire pour qu’une évaluation se termine et que les résultats de conformité soient disponibles sur le Portail Azure ou dans le kit SDK.

  2. Pour commencer une nouvelle analyse d’évaluation avec Azure PowerShell ou l’API REST, consultez Analyse d’évaluation à la demande.

  3. Vérifiez que les paramètres et l’étendue d’attribution sont correctement définis et que enforcementMode est Activé.

  4. Vérifiez le mode de définition de la stratégie :

    • Le mode doit être all pour tous les types de ressources.
    • Le mode doit être indexed si la définition de stratégie recherche des balises ou un emplacement.
  5. Vérifiez que l’étendue de la ressource n’est ni exclue ni exempte.

  6. Vérifiez que la charge utile de la ressource correspond à la logique de la stratégie. Pour cela, vous pouvez capturer une trace d’archive HTTP (HAR) ou passer en revue les propriétés du modèle Azure Resource Manager (ARM).

  7. Pour d’autres problèmes et solutions courants, consultez Résolution des problèmes : État de conformité non attendu.

Si vous rencontrez toujours un problème avec votre définition de stratégie intégrée dupliquée et personnalisée ou une définition personnalisée, créez un ticket de support sous Création d’une stratégie pour acheminer le problème correctement.

Scénario : Refusé par Azure Policy

Problème

La création ou la mise à jour d’une ressource est refusée.

Cause

Une attribution de stratégie définie sur l’étendue de la nouvelle ressource ou de la ressource mise à jour répond aux critères d’une définition de stratégie dont l’effet est Refuser. Les ressources qui correspondent à ces définitions ne peuvent pas être créées ni mises à jour.

Résolution

Le message d’erreur d’une attribution de stratégie de refus comprend la définition de stratégie et les ID d’attribution de la stratégie. Si vous avez besoin de retrouver les informations d’erreur indiquées dans le message, elles sont également disponibles dans le journal d’activité. Utilisez ces informations pour obtenir plus de détails afin de comprendre les restrictions relatives aux ressources et d’ajuster les propriétés de ressource dans votre demande pour qu’elles correspondent aux valeurs autorisées.

Scénario : La définition cible plusieurs types de ressources

Problème

La validation d’une définition de stratégie qui comprend plusieurs types de ressources échoue lors de la création ou de la mise à jour avec l’erreur suivante :

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}'.

Cause

La règle de définition de stratégie a une ou plusieurs conditions qui ne sont pas évaluées par les types de ressources cibles.

Résolution

Si un alias est utilisé, vérifiez qu’il est évalué uniquement par rapport au type de ressource auquel il appartient le faisant précéder d’une condition de type. Une autre solution consiste à diviser la définition de stratégie en plusieurs définitions afin d’éviter de cibler plusieurs types de ressources.

Scénario : Limite d’abonnement dépassée

Problème

Un message d’erreur sur la page de conformité dans le portail Azure s’affiche lors de la récupération de la conformité pour les attributions de stratégie.

Cause

Le nombre d’abonnements sous les étendues sélectionnées dans la requête a dépassé la limite de 5000 abonnements. Les résultats de conformité peuvent être partiellement affichés.

Résolution

Sélectionnez une étendue plus granulaire avec moins d’abonnements enfants pour voir les résultats complets.

Erreurs de modèle

Scénario : Fonctions prises en charge par Policy et traitées par le modèle

Problème

Azure Policy prend en charge un certain nombre de fonctions de modèle ARM et de fonctions qui ne sont disponibles que dans une définition de stratégie. Resource Manager traite ces fonctions dans le cadre d’un déploiement plutôt que dans le cadre d’une définition de stratégie.

Cause

L’utilisation de fonctions prises en charge (par exemple parameter() et resourceGroup()) permet de traiter le résultat de la fonction au moment du déploiement au lieu de laisser la tâche à la définition de stratégie et au moteur Azure Policy.

Résolution

Pour transmettre une fonction au sein d’une définition de stratégie, placez toute la chaîne dans une séquence d’échappement à l’aide du caractère [ de sorte que la propriété se présente sous la forme [[resourceGroup().tags.myTag]. Le caractère d’échappement conduit Resource Manager à considérer la valeur comme une chaîne lorsqu’il traite le modèle. Azure Policy place ensuite la fonction dans la définition de stratégie, ce qui lui permet d’être dynamique comme prévu. Pour plus d’informations, voir Syntaxe et expressions dans les modèles Azure Resource Manager.

Module complémentaire pour les erreurs d’installation de Kubernetes

Scénario : L’installation à l’aide d’un chart Helm échoue en raison d’une erreur de mot de passe

Problème

La commande helm install azure-policy-addon échoue et retourne l’une des erreurs suivantes :

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

Cause

Le mot de passe généré comprend une virgule (,) sur laquelle le chart Helm est fractionné.

Résolution

Lorsque vous exécutez helm install azure-policy-addon, placez la virgule (,) dans une séquence d’échappement à l’aide d’une barre oblique inverse (\) dans la valeur du mot de passe.

Scénario : L’installation à l’aide d’un chart Helm échoue, car le nom existe déjà

Problème

La commande helm install azure-policy-addon échoue et retourne l’erreur suivante :

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

Cause

Le chart Helm portant le nom azure-policy-addon a déjà été installé ou partiellement installé.

Résolution

Suivez les instructions pour supprimer le module complémentaire Azure Policy pour Kubernetes, puis réexécutez la commande helm install azure-policy-addon.

Scénario : Les identités attribuées par l’utilisateur de la machine virtuelle Azure sont remplacées par des identités managées attribuées par le système

Problème

Une fois que vous avez attribué des initiatives de stratégie Guest Configuration pour auditer les paramètres d’un ordinateur, les identités managées affectées par l’utilisateur à l’ordinateur ne sont plus affectées. Seule une identité managée attribuée par le système est attribuée.

Cause

Les définitions de stratégie précédemment utilisées dans les définitions DeployIfNotExists de Guest Configuration permettaient de faire en sorte qu’une identité affectée par le système soit affectée à l’ordinateur, mais supprimaient aussi les attributions d’identité affectées par l’utilisateur.

Résolution

Les définitions qui provoquaient ce problème apparaissent comme [Déconseillées] et sont remplacées par des définitions de stratégie qui gèrent les prérequis sans supprimer les identités managées affectées par l’utilisateur. Une étape manuelle est nécessaire. Supprimez les attributions de stratégies marquées comme [Déconseillées] et remplacez-les par les définitions de stratégie et d’initiative de stratégie requises et mises à jour qui portent le même nom que l’original.

Pour une description détaillée, consultez le billet de blog Publication d’une modification importante pour les stratégies d’audit de Guest Configuration.

Module complémentaire pour les erreurs générales de Kubernetes

Scénario : Le module complémentaire ne parvient pas à joindre le point de terminaison de service Azure Policy en raison de restrictions de sortie

Problème

Le module complémentaire ne parvient pas à joindre le point de terminaison de service Azure Policy et retourne l’une des erreurs suivantes :

  • 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

Cause

Ce problème se produit lorsqu’une sortie de cluster est verrouillée.

Résolution

Vérifiez que les domaines et les ports mentionnés dans les articles suivants sont ouverts :

Scénario : Le module complémentaire ne parvient pas à joindre le point de terminaison de service Azure Policy en raison de la configuration aad-pod-identity

Problème

Le module complémentaire ne parvient pas à joindre le point de terminaison de service Azure Policy et retourne l’une des erreurs suivantes :

  • 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>

Cause

Cette erreur se produit lorsque aad-pod-identity est installé sur le cluster et que les pods kube-system ne sont pas exclus dans aad-pod-identity.

Les pods NMI (Node Managed Identity) du composant aad-pod-identity modifient les iptables des nœuds pour intercepter les appels au point de terminaison Azure Instance Metadata. Dans cette configuration, toutes les requêtes adressées au point de terminaison des métadonnées sont interceptées par NMI, même si le pod n’utilise pas aad-pod-identity. La définition CRD (CustomResourceDefinition) AzurePodIdentityException peut être configurée de manière à informer aad-pod-identity que toutes les requêtes adressées à un point de terminaison des métadonnées provenant d’un pod et correspondant aux étiquettes définies dans la définition CRD doivent être redirigées via proxy sans aucun traitement dans NMI.

Résolution

Excluez les pods système comportant l’étiquette kubernetes.azure.com/managedby: aks dans l’espace de noms kube-system dans aad-pod-identity en configurant la définition CRD AzurePodIdentityException.

Pour plus d’informations, consultez Désactivation de l’identité de pod Azure Active Directory (Azure AD) pour un pod ou une application spécifique.

Pour configurer une exception, suivez cet exemple :

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

Scénario : Le fournisseur de ressources n’est pas inscrit

Problème

Le module complémentaire parvient à joindre le point de terminaison de service Azure Policy, mais les journaux du module complémentaire présentent l’une des erreurs suivantes :

  • 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.

Cause

Le fournisseur de ressources « Microsoft.PolicyInsights » n’est pas inscrit. Il doit l’être pour que le module complémentaire récupère les définitions de stratégie et retourne les données de conformité.

Résolution

Inscrivez le fournisseur de ressources « Microsoft.PolicyInsights » dans l’abonnement du cluster. Pour obtenir des instructions, consultez Inscription d’un fournisseur de ressources.

Scénario : L'abonnement est désactivé

Problème

Le module complémentaire parvient à joindre le point de terminaison de service Azure Policy, mais l’erreur suivante s’affiche :

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

Cause

Cette erreur signifie que l’abonnement a été identifié comme problématique, et que l’indicateur de fonctionnalité Microsoft.PolicyInsights/DataPlaneBlocked a été ajouté pour le bloquer.

Résolution

Pour examiner et résoudre ce problème, contactez l’équipe chargée des fonctionnalités.

Scénario : les définitions de la catégorie « Configuration invitée » ne peuvent pas être dupliquées à partir du Portail Azure

Problème

Lorsque vous tentez de créer une définition de stratégie personnalisée à partir de la page Portail Azure pour les définitions de stratégie, vous sélectionnez le bouton « Dupliquer la définition ». Une fois la stratégie assignée, vous remarquerez que le statut des machines est NonCompliant , car il n’existe aucune ressource d’attribution de configuration d’invité.

Cause

La configuration d’invité s’appuie sur les métadonnées personnalisées ajoutées aux définitions de stratégie lors de la création de ressources d’affectation de configuration invité. L’activité « Dupliquer la définition » dans le Portail Azure ne copie pas les métadonnées personnalisées.

Résolution

Au lieu d’utiliser le portail, dupliquez la définition de stratégie à l’aide de l’API Policy Insights. L’exemple PowerShell suivant fournit une option.

# 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)

Scénario : Une ressource Kubernetes est créée lors de l’échec de connectivité en dépit de l’attribution de la stratégie de refus

Problème

En cas d’échec de connectivité d’un cluster Kubernetes, l’évaluation des ressources nouvellement créées ou mises à jour peut être ignorée en raison du comportement d’échec d’ouverture de Gatekeeper.

Cause

Le modèle d’échec d’ouverture de Gatekeeper, qui est lié à la conception, est basé sur les commentaires de la communauté. La documentation de Gatekeeper approfondit ces raisons ici : https://open-policy-agent.github.io/gatekeeper/website/docs/failing-closed#considerations.

Résolution

Dans l’événement ci-dessus, le cas d’erreur peut être supervisé à partir des métriques de webhook d’admission fournies par kube-apiserver. Et même si l’évaluation est ignorée au moment de la création et qu’un objet est créé, elle est toujours signalée aux clients comme non conforme sur la conformité Azure Policy sous la forme d’un indicateur.

Indépendamment de ce qui précède, dans un tel scénario, la stratégie Azure conserve toujours la dernière stratégie connue sur le cluster et maintient les garde-fous en place.

Étapes suivantes

Si votre problème ne figure pas dans cet article ou si vous ne pouvez pas le résoudre, accédez au support en visitant l’un des canaux suivants :

  • Obtenez des réponses d’experts par le biais de Microsoft Q&A.
  • Contactez @AzureSupport. Cette ressource Microsoft Azure officielle sur Twitter aide à améliorer l’expérience client en orientant la communauté Azure vers les réponses, le support et les experts appropriés.
  • Si vous avez encore besoin d’aide, accédez au site de support Azure et sélectionnez Soumettre une demande de support.