Entrainement
Module
Gouvernance Azure Kubernetes Services avec Azure Policy - Training
Dans ce module, nous expliquons comment utiliser Azure Policy dans Kubernetes afin d’appliquer des règles et de détecter une non-conformité des clusters AKS.
Ce navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
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.
L’emplacement des détails de l’erreur dépend de l’aspect d’Azure Policy dont il est question.
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.
Un alias incorrect ou inexistant est utilisé dans une définition de stratégie.
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.
Une ressource est à l’état Non démarré, ou les détails de compatibilité ne sont pas à jour.
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.
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.
Une ressource n’est pas dans l’état d’évaluation Conforme ou Non conforme attendu.
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.
Pour résoudre les problèmes liés à votre définition de stratégie, effectuez les étapes suivantes :
all
pour tous les types de ressources.indexed
si la définition de stratégie recherche des balises ou un emplacement.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.resources.azure.com
.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.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.
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.
L’affectation 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 pas d’entrée dans le journal d’activité.
Pour résoudre les problèmes liés à l’application de l’affectation de votre stratégie, effectuez les étapes suivantes :
enforcementMode
est défini sur Activé.all
pour tous les types de ressources.indexed
si la définition de stratégie recherche des balises ou un emplacement.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.
La création ou la mise à jour d’une ressource est refusée.
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.
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.
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}'.
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.
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.
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.
Le nombre d’abonnements sous les étendues sélectionnées dans la requête a dépassé la limite de 5 000 abonnements. Les résultats de conformité peuvent être partiellement affichés.
Pour voir les résultats complets, sélectionnez une étendue plus granulaire avec moins d’abonnements enfants.
Azure Policy prend en charge un grand nombre de fonctions de modèle ARM et de fonctions qui sont disponibles seulement 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.
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.
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.
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 ,)
Le mot de passe généré comprend une virgule (,
) sur laquelle le chart Helm est fractionné.
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.
La commande helm install azure-policy-addon
échoue et retourne l’erreur suivante :
Error: cannot re-use a name that is still in use
Le chart Helm portant le nom azure-policy-addon
a déjà été installé ou partiellement installé.
Suivez les instructions pour supprimer le module complémentaire Azure Policy pour Kubernetes, puis réexécutez la commande helm install azure-policy-addon
.
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.
Les définitions de stratégie précédemment utilisées dans les définitions deployIfNotExists
de la configuration Invité garantissaient qu’une identité affectée par le système était affectée à l’ordinateur. Cependant, elles supprimaient aussi les affectations d’identité affectées par l’utilisateur.
Les définitions qui auparavant provoquaient ce problème apparaissent comme \[Deprecated\]
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 affectations de stratégies existantes marquées comme \[Deprecated\]
, 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’originale.
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.
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
Ce problème se produit lorsqu’une sortie de cluster est verrouillée.
Vérifiez que les domaines et les ports mentionnés dans les articles suivants sont ouverts :
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>
Cette erreur se produit quand 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 de métadonnées d’instance Azure. Cette configuration signifie que toutes les requêtes adressées au point de terminaison de 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 de métadonnées provenant d’un pod correspondant aux étiquettes définies dans la définition CRD doivent être redirigées via proxy sans aucun traitement dans NMI.
Excluez les pods système avec 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
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.
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é.
Inscrivez le fournisseur de ressources Microsoft.PolicyInsights
dans l’abonnement du cluster. Pour obtenir des instructions, consultez Inscription d’un fournisseur de ressources.
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.
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.
Pour examiner et résoudre ce problème, contactez l’équipe chargée des fonctionnalités.
Quand vous tentez de créer une définition de stratégie personnalisée à partir de la page du 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é.
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.
Au lieu d’utiliser le portail, dupliquez la définition de stratégie à l’aide de l’API Policy Insights. L’exemple PowerShell suivant permet de copier la définition de la stratégie, y compris les métadonnées, à l’aide de Az.Resources 7.3.0 ou d’une version ultérieure.
# 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"
New-AzPolicyDefinition -name (new-guid).guid -DisplayName "$($def.DisplayName) (Copy)" -Description $def.Description -Metadata ($def.Metadata | convertto-json) -Parameter ($def.Parameter | convertto-json) -Policy ($def.PolicyRule | convertto-json -depth 15)
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-ouverture de Gatekeeper.
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.
Dans l’événement précédent, le cas d’erreur peut être surveillé à partir des métriques de webhook d’admission fournies par le kube-apiserver
. Si l’évaluation est ignorée au moment de la création et qu’un objet est créé, elle est signalée aux clients comme étant non conforme dans le cadre de la conformité Azure Policy sous la forme d’un indicateur.
Quel que soit le scénario, la stratégie Azure conserve toujours la dernière stratégie connue sur le cluster et maintient les garde-fous en place.
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 :
Entrainement
Module
Gouvernance Azure Kubernetes Services avec Azure Policy - Training
Dans ce module, nous expliquons comment utiliser Azure Policy dans Kubernetes afin d’appliquer des règles et de détecter une non-conformité des clusters AKS.
Documentation
Remédier aux ressources non conformes - Azure Policy
Ce guide explique comment corriger les ressources qui ne sont pas conformes aux stratégies dans Azure Policy.
Démarrage rapide : créer une attribution de stratégie à l’aide du portail Azure - Azure Policy
Dans ce guide de démarrage rapide, vous créez une attribution de stratégie Azure pour identifier les ressources non conformes à l’aide du portail Azure.
Obtenir les données de conformité de la stratégie - Azure Policy
Les évaluations et les effets d’Azure Policy déterminent la conformité. Découvrez comment obtenir des détails sur la conformité de vos ressources Azure.