Déterminer les causes de non-conformité
Lorsqu'une ressource Azure est jugée non conforme par rapport à une règle de stratégie, il est important d'identifier la partie de la règle concernée. Il est également important d'identifier la modification qui a transformé une ressource conforme en ressource non conforme. Pour ce faire, il existe deux moyens :
Lorsqu’une ressource est non conforme, les détails de conformité de cette ressource sont disponibles sur la page Conformité à la stratégie. Le volet relatif aux détails de conformité comprend les informations suivantes :
- Détails de la ressource tels que son nom, son type, son emplacement et son identifiant.
- État de conformité et timestamp de la dernière évaluation ayant trait à l'attribution de stratégie actuelle.
- Liste des motifs de non-conformité de la ressource.
Important
Les détails de conformité d'une ressource non conforme affichant la valeur actuelle des propriétés qui s'y rapportent, l’utilisateur doit pouvoir utiliser une opération en lecture pour le type de ressource. Par exemple, si la ressource non conforme est Microsoft.Compute/virtualMachines
alors que l’utilisateur doit avoir l’opération Microsoft.Compute/virtualMachines/read
. Dans le cas contraire, une erreur d'accès s'affiche.
Pour afficher les détails de conformité, procédez comme suit :
Lancez le service Azure Policy dans le portail Azure en sélectionnant Tous les services, puis en recherchant et en sélectionnant Policy.
Sur la page Vue d'ensemble ou Conformité, sélectionnez une stratégie affichant un état de conformitéNon conforme.
Dans l’onglet Conformité des ressources de la page Conformité à la stratégie, sélectionnez et maintenez (ou cliquez avec le bouton droit) ou sélectionnez les points de suspension d’une ressource affichant un état de conformiténon conforme. Sélectionnez ensuite Afficher les détails de la conformité.
Le volet Détails de conformité affiche des informations issues de la dernière évaluation de la ressource ayant trait à l'attribution de stratégie actuelle. Dans cet exemple, le champ
Microsoft.Sql/servers/version
indique 12.0 alors que la définition de la stratégie attendait 14.0. Si la ressource est non conforme pour plusieurs raisons, ces différentes raisons sont répertoriées dans ce volet.Pour une
auditIfNotExists
oudeployIfNotExists
définition de stratégie, les détails incluent la propriété details.type et toutes les propriétés facultatives. Pour une liste, consultez Propriétés auditIfNotExists et Propriétés deployIfNotExists. Dernière ressource évaluée correspond à une ressource liée dans la section Détails de la définition.Exemple de définition
deployIfNotExists
partielle :{ "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": { ... } } } }
Notes
Pour protéger les données, lorsqu’une valeur de propriété correspond à un secret, la valeur actuelle est remplacée par des astérisques.
Ces détails expliquent les raisons pour lesquelles une ressource est actuellement non conforme, mais n'indiquent pas le moment où la modification apportée à la ressource l'a rendue non conforme. Pour plus d’informations, consultez Historique des modifications (préversion).
Les modes gestionnaire des ressources et les modes fournisseur de ressources ont chacun des raisons de non-conformité.
Le tableau suivant mappe chaque raison du mode gestionnaire des ressources à la condition responsable dans la définition de stratégie :
Motif | Condition |
---|---|
La valeur actuelle doit contenir la valeur cible en tant que clé. | containsKey ou not notContainsKey |
La valeur actuelle doit contenir la valeur cible. | contains ou not notContains |
La valeur actuelle doit être égale à la valeur cible. | equals ou not notEquals |
La valeur actuelle doit être inférieure à la valeur cible. | less ou not greaterOrEquals |
La valeur actuelle doit être supérieure ou égale à la valeur cible. | greaterOrEquals ou not less |
La valeur actuelle doit être supérieure à la valeur cible. | greater ou not lessOrEquals |
La valeur actuelle doit être inférieure ou égale à la valeur cible. | lessOrEquals ou not greater |
La valeur actuelle doit exister. | exists |
La valeur actuelle doit être dans la valeur cible. | in ou not notIn |
La valeur actuelle doit être identique à la valeur cible. | like ou not notLike |
La valeur actuelle doit correspondre à la valeur cible (sensibilité à la casse). | match ou not notMatch |
La valeur actuelle doit correspondre à la valeur cible (non-sensibilité à la casse). | matchInsensitively ou not notMatchInsensitively |
La valeur actuelle ne doit pas contenir la valeur cible en tant que clé. | notContainsKey ou not containsKey |
La valeur actuelle ne doit pas contenir la valeur cible. | notContains ou not contains |
La valeur actuelle ne doit pas être égale à la valeur cible. | notEquals ou not equals |
La valeur actuelle ne doit pas exister. | not exists |
La valeur actuelle ne doit pas être dans la valeur cible. | notIn ou not in |
La valeur actuelle ne doit pas être identique à la valeur cible. | notLike ou not like |
La valeur actuelle ne doit pas correspondre à la valeur cible (sensibilité à la casse). | notMatch ou not match |
La valeur actuelle ne doit pas correspondre à la valeur cible (non-sensibilité à la casse). | notMatchInsensitively ou not matchInsensitively |
Aucune ressource associée ne correspond aux détails de l'effet dans la définition de stratégie. | Aucune ressource du type défini dans then.details.type n'est associée à la ressource définie dans la portion if. |
Le tableau suivant mappe chaque code de raison de Microsoft.PolicyInsights
mode de fournisseur de ressources à son explication correspondante :
Code de raison de la conformité | Message d’erreur et explication |
---|---|
NonModifiablePolicyAlias | NonModifiableAliasConflict : l’alias « {alias} » n’est pas modifiable dans les requêtes utilisant la version d’API « {apiVersion} ». Cette erreur se produit lorsqu’une requête utilisant une version d’API où l’alias ne prend pas en charge l’effet « modifier » ou prend uniquement en charge l’effet « modifier » avec un autre type de jeton. |
AppendPoliciesNotApplicable | AppendPoliciesUnableToAppend : les alias : « { alias } » ne sont pas modifiables dans les requêtes utilisant la version d’API : « { apiVersion } ». Cela peut se produire dans les requêtes utilisant des versions d’API pour lesquelles les alias ne prennent pas en charge l’effet « modifier » ou prennent en charge l’effet « modifier » avec un autre type de jeton. |
ConflictingAppendPolicies | ConflictingAppendPolicies : affectations de stratégie en conflit qui modifient le champ « {notApplicableFields} ». Identificateurs de stratégie : « {policy} ». Contactez l’administrateur de l’abonnement pour mettre à jour les affectations de stratégie. |
AppendPoliciesFieldsExist | AppendPoliciesFieldsExistWithDifferentValues : les affectations de stratégie ont tenté d’ajouter des champs qui existent déjà dans la requête avec des valeurs différentes. Champs : « {existingFields} ». Identificateurs de stratégie : « {policy} ». Contactez l’administrateur de l’abonnement pour mettre à jour les stratégies. |
AppendPoliciesUndefinedFields | AppendPoliciesUndefinedFields : définition de stratégie trouvée qui fait référence à une propriété de champ non définie pour la version d’API « {apiVersion} ». Champs : « {nonExistingFields} ». Identificateurs de stratégie : « {policy} ». Contactez l’administrateur de l’abonnement pour mettre à jour les stratégies. |
MissingRegistrationForType | MissingRegistrationForResourceType : l’abonnement n’est pas inscrit pour le type de ressource « {ResourceType} ». Vérifiez que le type de ressource existe et que le type de ressource est inscrit. |
AmbiguousPolicyEvaluationPaths | Le contenu de la demande a un ou plusieurs chemins ambigus : « {0} » est nécessaire pour les stratégies : « {1} ». |
InvalidResourceNameWildcardPosition | L’affectation de stratégie « {0} » associée à la définition de stratégie « {1} » n’a pas pu être évaluée. Le nom de ressource « {2} » dans une condition ifNotExists contient le caractère générique « ? » dans une position non valide. Les caractères génériques ne peuvent être situés qu’à la fin du nom dans un segment par eux-mêmes (par exemple, TopLevelResourceName/?). Corrigez la stratégie ou supprimez l’affectation de stratégie pour débloquer. |
TooManyResourceNameSegments | L’affectation de stratégie « {0} » associée à la définition de stratégie « {1} » n’a pas pu être évaluée. Le nom de ressource «{2} » dans une condition ifNotExists contient trop de segments de noms. Le nombre de segments de nom doit être égal ou inférieur au nombre de segments de type (à l’exclusion de l’espace de noms du fournisseur de ressources). Corrigez la définition de stratégie ou supprimez l’affectation de stratégie pour débloquer. |
InvalidPolicyFieldPath | Le chemin d’accès au champ «{0} » dans la définition de stratégie n’est pas valide. Les chemins d’accès aux champs ne doivent contenir aucun segment vide. Ils peuvent contenir uniquement des caractères alphanumériques à l’exception du caractère « . » pour fractionner des segments et la séquence de caractères « [*] » pour accéder aux propriétés du tableau. |
Le tableau suivant mappe chaque raison du Microsoft.Kubernetes.Data
mode fournisseur de ressources à l’état responsable du modèle de contrainte dans la définition de stratégie :
Motif | Description du motif du modèle de contrainte |
---|---|
Constraint/TemplateCreateFailed | La ressource n’a pas pu être créée pour une définition de stratégie avec une contrainte/un modèle qui ne correspond pas à une contrainte/un modèle existant sur le cluster par nom des métadonnées de ressource. |
Constraint/TemplateUpdateFailed | La mise à jour de la contrainte/du modèle a échoué pour une définition de stratégie avec une contrainte/un modèle qui correspond à un modèle/contrainte existant sur le cluster par le nom des métadonnées de ressource. |
Constraint/TemplateInstallFailed | La génération de la contrainte/du modèle a échoué, et ils n’ont pas pu être installés sur le cluster pour une opération de création ou de mise à jour. |
ConstraintTemplateConflicts | Le modèle est en conflit avec une ou plusieurs définitions de stratégie utilisant le même nom de modèle avec une source différente. |
ConstraintStatusStale | Il existe un état « Audit » existant, mais Gatekeeper n’a pas effectué d’audit au cours de la dernière heure. |
ConstraintNotProcessed | Il n’y a pas d’état, et Gatekeeper n’a pas effectué d’audit au cours de la dernière heure. |
InvalidConstraint/Template | La ressource a été rejetée pour l'une des raisons suivantes : contenu Rego du modèle de contrainte non valide, YAML non valide ou incompatibilité du type de paramètre entre la contrainte et le modèle de contrainte (fourniture d'une chaîne de caractères alors qu'un nombre entier était attendu). |
Notes
Pour les attributions de stratégie et les modèles de contrainte existants sur le cluster, si la contrainte/le modèle échoue, le cluster est protégé en conservant la contrainte/le modèle existant. Le cluster signale comme non conforme jusqu’à ce que la défaillance soit résolue sur l’attribution de stratégie ou les réparations spontanées du module complémentaire. Pour plus d’informations sur la gestion des conflits, consultez Conflits de modèle de contrainte.
Pour les affectations avec un mode Fournisseur de ressources, sélectionnez la ressource Non conforme pour afficher ses enregistrements de conformité de composant. L’onglet Conformité des composants affiche plus d’informations spécifiques au Mode Fournisseur de ressources comme le Nom du composant, l’ID de composantet le Type.
Pour les définitions de stratégie de la catégorie Configuration d’invité, plusieurs paramètres peuvent être évalués dans la machine virtuelle et vous devez examiner les détails par paramètre. Par exemple, si vous effectuez un audit pour obtenir la liste des paramètres de sécurité et qu’une seule d’entre-elles a l’état Non conforme, vous devez connaître les paramètres de sécurité spécifiques qui ne sont pas conformes et la raison à cela.
Vous ne serez peut-être pas autorisé à vous connecter directement à la machine virtuelle, mais devrez indiquer pourquoi elle est Non conforme.
Commencez par suivre les étapes de la section Détails de conformité pour afficher les détails de conformité à la stratégie.
Dans le volet Détails de conformité, sélectionnez le lien Dernière ressource évaluée.
La page Affectation d'invité affiche les détails de conformité disponibles. Chaque ligne de la vue représente une évaluation effectuée au sein de la machine. Dans la colonne Raison, une phrase s’affiche pour décrire la raison pour laquelle l’attribution d’invité est Non conforme. Par exemple, si vous auditez les stratégies de mot de passe, la colonne Raison affiche du texte, dont la valeur actuelle de chaque paramètre.
Vous pouvez utiliser la fonctionnalité de configuration d’invité en dehors des affectations Azure Policy. Par exemple, Azure Automanage crée des affectations de configuration d’invité, ou vous pouvez affecter des configurations quand vous déployez des machines.
Pour afficher toutes les affectations de configuration d’invité dans votre locataire, dans le portail Azure, ouvrez la page Affectations d’invités. Pour afficher les informations de conformité détaillées, sélectionnez chaque affectation en utilisant le lien figurant dans la colonne Nom.
Dans le cadre d’une nouvelle préversion publique, l'historique des modifications des 14 derniers jours est disponible pour toutes les ressources Azure prenant en charge la suppression du mode. L'historique des modifications indique quand une modification a été détectée et fournit un différentiel visuel pour chaque modification. Une détection de modification est déclenchée lorsque les propriétés Azure Resource Manager sont ajoutées, supprimées ou modifiées.
Lancez le service Azure Policy dans le portail Azure en sélectionnant Tous les services, puis en recherchant et en sélectionnant Policy.
Sur la page Vue d'ensemble ou Conformité, sélectionnez une stratégie dans un état de conformité.
Dans l'onglet Conformité des ressources de la page Conformité à la stratégie, sélectionnez une ressource.
Sélectionnez l'onglet Historique des modifications (préversion) de la page Conformité des ressources. La liste des modifications détectées, le cas échéant, s'affiche.
Sélectionnez une des modifications détectées. Le différentiel visuel de la ressource est présenté sur la page Historique des modifications.
Le différentiel visuel aide à identifier les modifications apportées à une ressource. Les modifications détectées peuvent ne pas être liées à l’état de conformité actuel de la ressource.
Les données de l'historique des modifications sont fournies par Azure Resource Graph. Pour interroger ces informations en dehors du portail Azure, consultez Obtenir les modifications des ressources.
- Consultez des exemples à la page Exemples Azure Policy.
- Consultez la Structure de définition Azure Policy.
- Consultez la page Compréhension des effets de Policy.
- Découvrez comment créer des stratégies par programmation.
- Découvrez comment obtenir des données de conformité.
- Découvrez comment corriger des ressources non conformes.
- Pour en savoir plus sur les groupes d’administration, consultez Organiser vos ressources avec des groupes d’administration Azure.