Détectez les modifications de configuration non gérées apportées aux piles et aux ressources grâce à la détection des écarts - AWS CloudFormation

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Détectez les modifications de configuration non gérées apportées aux piles et aux ressources grâce à la détection des écarts

Même lorsque vous gérez vos ressources via CloudFormation, les utilisateurs peuvent modifier ces ressources en dehors de CloudFormation. Les utilisateurs peuvent modifier une ressource directement en utilisant le service sous-jacent qui a créé la ressource. Par exemple, vous pouvez utiliser la console Amazon EC2 pour mettre à jour une instance de serveur qui a été créée dans le cadre d'une pile CloudFormation. Certaines modifications peuvent être accidentelles, et d'autres peuvent être apportées intentionnellement pour répondre aux événements opérationnels prioritaires. Quoi qu'il en soit, les modifications apportées en dehors de CloudFormation peuvent compliquer les opérations de mise à jour et de suppression de pile. Vous pouvez utiliser la détection de l'écart pour identifier les ressources d'une pile pour lesquelles des modifications de configuration ont été apportées en dehors de la gestion CloudFormation. Vous pouvez alors prendre des mesures correctives pour resynchroniser les ressources de pile avec leurs définitions dans le modèle de pile. Vous pouvez, par exemple, mettre à jour directement les ressources ayant dérivé, pour les accorder avec leur définition de modèle. La résolution de l'écart permet de garantir la cohérence de la configuration et la réussite des opérations de pile.

Qu'est-ce qu'un écart ?

La détection de l'écart vous permet de détecter si la configuration réelle d'une pile diffère, ou a dérivé, de sa configuration prévue. Utilisez CloudFormation pour détecter un écart au niveau d'une pile entière ou de ressources individuelles dans une pile. Une ressource est considérée comme ayant dérivé dès qu'une de ses valeurs de propriété réelles diffère des valeurs de propriété prévues. Cela inclut l'éventualité où la propriété ou la ressource aurait été supprimée. Une pile est considérée comme ayant dérivé si une ou plusieurs de ses ressources ont dérivé.

Pour déterminer si une ressource a dérivé, CloudFormation détermine les valeurs des propriétés de ressource prévues, telles qu'elles sont définies dans le modèle de pile et les valeurs spécifiées en tant que paramètres de modèle. CloudFormation compare ensuite ces valeurs prévues avec les valeurs réelles de ces propriétés de ressource telles qu'elles figurent actuellement dans la pile. Une ressource est considérée comme ayant dérivé si une ou plusieurs de ses propriétés ont été supprimées ou modifiées.

CloudFormation génère des informations détaillées sur chaque ressource dans la pile qui a dérivé.

CloudFormation détecte l'écart de ces ressources AWS qui prennent en charge la détection d'écart. Les ressources qui ne prennent pas en charge la détection de l'écart se voient attribuer le statut d'écart NOT_CHECKED. Pour obtenir la liste des ressources AWS qui prennent en charge la détection des écarts, consultez Prise en charge des types de ressources.

De plus, CloudFormation prend en charge la détection de l'écart sur des types de ressource privée pouvant être allouée, c'est-à-dire dont le type d'allocation est FULLY_MUTABLE ou IMMUTABLE. Pour effectuer une détection de l'écart sur une ressource de type privé, la version par défaut du type de ressource que vous avez enregistré dans votre compte doit pouvoir être alloué. Pour plus d’informations sur le type de provisionnement des ressources, consultez le paramètre ProvisioningType de l’action DescribeType dans la Référence d’API AWS CloudFormation et de la commande DescribeType dans la Référence des commandes AWS CLI. Pour plus d’informations sur les ressources privées, consultez Gestion des extensions avec le registre CloudFormation.

Vous pouvez exécuter la détection de l'écart sur des piles dotées des statuts suivants : CREATE_COMPLETE, UPDATE_COMPLETE, UPDATE_ROLLBACK_COMPLETE et UPDATE_ROLLBACK_FAILED.

Lors de la détection de l'écart d'une pile, CloudFormation ne détecte pas l'écart de toutes les piles imbriquées qui appartiennent à cette pile. Pour de plus amples informations, consultez Diviser un modèle en éléments réutilisables à l’aide de piles imbriquées. Au lieu de cela, vous pouvez lancer une opération de détection de l'écart directement sur la pile imbriquée.

Note

CloudFormation détermine uniquement l'écart des valeurs de propriété explicitement définies, soit par le biais du modèle de pile, soit en spécifiant les paramètres du modèle. Ceci n'inclut pas les valeurs par défaut des propriétés des ressources. Pour que CloudFormation effectue le suivi d'une propriété de ressource dans le but de déterminer un écart éventuel, définissez explicitement la valeur de propriété, même si vous lui affectez sa valeur par défaut.

Codes de statut de détection de l'écart

Les tableaux de cette section décrivent les différents types de statut utilisés avec la détection de l'écart :

  • Le statut d'opération de détection de l'écart décrit l'état actuel de l'opération.

  • Statut de l'écart

    Pour les ensembles de piles, cette information décrit le statut de l'écart de l'ensemble de pile dans son ensemble, en fonction du statut de l'écart des instances de piles qui lui appartiennent.

    Pour les instances de piles, cette information décrit le statut de l'écart de l'instance de pile, en fonction du statut de l'écart de la pile associée.

    Pour les piles, cette information décrit le statut de l'écart de la pile dans son ensemble, en fonction du statut de l'écart de ses ressources.

  • Le statut de l'écart de ressource décrit le statut de l'écart d'une ressource individuelle.

Le tableau suivant répertorie les codes de statut que CloudFormation attribue aux opérations de détection de l'écart d'une pile.

Statut de l'opération de détection de l'écart Description

DETECTION_COMPLETE

L'opération de détection de l'écart d'une pile a réussi pour toutes les ressources de la pile qui prennent en charge la détection de l'écart.

DETECTION_FAILED

L'opération de détection de l'écart de la pile a échoué pour au moins une ressource dans la pile. Les résultats seront disponibles pour les ressources sur lesquelles CloudFormation a mené à bien la détection de l'écart.

DETECTION_IN_PROGRESS

L'opération de détection de l'écart de pile est actuellement en cours.

Le tableau suivant répertorie les codes de statut de l'écart que CloudFormation attribue aux piles.

Statut de l'écart Description

DRIFTED

Pour les piles : la pile diffère, ou présente un écart, par rapport à la configuration de modèle prévue. Une pile est considérée comme ayant dérivé si une ou plusieurs de ses ressources ont dérivé.

Pour les instances de piles : une instance de pile est considérée comme présentant un écart si la pile présente un écart.

Pour les ensembles de piles : un ensemble de piles est considéré comme présentant un écart si une ou plusieurs instances de piles présente un écart.

NOT_CHECKED

CloudFormation n'a pas vérifié si la pile, l'ensemble de piles ou l'instance de pile diffère de la configuration de modèle attendue.

IN_SYNC

La configuration actuelle de chaque ressource prise en charge correspond à sa configuration de modèle prévue. Le statut d'une pile, d'un ensemble de piles ou d'une instance de pile sans ressource prenant en charge la détection de l'écart sera également IN_SYNC.

Le tableau suivant répertorie les codes de statut de l'écart que CloudFormation attribue aux ressources de pile.

Statut de l'écart de ressource Description

DELETED

La ressource diffère de sa configuration de modèle prévue, car la ressource a été supprimée.

MODIFIED

La ressource diffère de sa configuration de modèle prévue.

NOT_CHECKED

CloudFormation n'a pas vérifié si la ressource diffère de sa configuration de modèle prévue.

IN_SYNC

La configuration actuelle de la ressource correspond à sa configuration de modèle prévue.

Le tableau suivant répertorie les codes de statut de type de différence que CloudFormation attribue aux propriétés de ressource qui diffèrent de leur configuration de modèle prévue.

Types de différences de propriété Description

ADD

Une valeur a été ajoutée à une propriété de ressource qui est un type de données de tableau ou de liste.

REMOVE

La propriété a été supprimée de la configuration de ressource actuelle.

NOT_EQUAL

La valeur de propriété actuelle diffère de sa valeur prévue, définie dans le modèle de pile.

Considérations lors de la détection de l'écart

Afin d'effectuer correctement la détection de l'écart sur une pile, un utilisateur doit disposer des autorisations suivantes :

  • L'autorisation de lecture pour chaque ressource de la pile qui prend en charge la détection de l'écart. Par exemple, si la pile comprend une ressource AWS::EC2::Instance, vous devez avoir l'autorisation ec2:DescribeInstances nécessaire pour effectuer la détection de l'écart sur la pile.

  • cloudformation:DetectStackDrift

  • cloudformation:DetectStackResourceDrift

  • cloudformation:BatchDescribeTypeConfigurations

Pour plus d'informations sur la définition d'autorisations dans CloudFormation, voir Contrôlez CloudFormation l'accès avec AWS Identity and Access Management.

Dans certains cas limites, CloudFormation peut ne pas être en mesure de renvoyer des résultats d'écart précis. Vous devez être conscient de ces cas limites afin d'interpréter correctement vos résultats de détection de l'écart.

  • Dans certains cas, les objets contenus dans des tableaux de propriétés sont signalés comme un écart, alors qu'ils sont en réalité des valeurs par défaut fournies à la propriété à partir du service sous-jacent responsable de la ressource.

  • Certaines ressources ont des relations d'attachement avec des ressources connexes, de telle sorte qu'une ressource peut en fait attacher ou supprimer les valeurs de propriété d'une autre ressource, définie dans le même modèle ou dans un autre modèle. Par exemple, les ressources AWS::EC2::SecurityGroupIngress et AWS::EC2::SecurityGroupEgress peuvent être utilisées pour attacher et supprimer des valeurs à partir des ressources AWS::EC2::SecurityGroup. Dans ce cas, CloudFormation analyse le modèle de pile pour rechercher les attachements avant de procéder à la comparaison des écarts. Toutefois, CloudFormation ne peut pas effectuer cette analyse entre les piles, et peut ne pas renvoyer de résultats exacts d'écart quand les ressources attachées résident dans des piles différentes.

    Les ressources qui prennent en charge la détection de l'écart et autorisent ou nécessitent des attachements à partir d'autres ressources incluent :

    Type de ressource Type de ressource d'attachement

    AWS::SNS::Topic

    AWS::SNS::Subscription

    AWS::IAM::User

    AWS::IAM::UserToGroupAddition

    AWS::IAM::Group

    AWS::IAM::Role

    AWS::IAM::User

    AWS::IAM::ManagedPolicy

    AWS::IAM::Policy

    AWS::IAM::RolePolicy

    AWS::ElasticLoadBalancingV2::Listener

    AWS::ElasticLoadBalancingV2::ListenerCertificate

    AWS::EC2::SecurityGroup

    AWS::EC2::SecurityGroupEgress

    AWS::EC2::SecurityGroupIngress

  • CloudFormation n'effectue pas de détection de l'écart sur la propriété KMSKeyId des ressources. Comme des clés AWS KMS peuvent être référencées par plusieurs alias, CloudFormation ne peut pas toujours garantir des résultats d'écart précis pour cette propriété.

  • Il existe certaines propriétés de ressource que vous pouvez spécifier dans votre modèle de pile que, de par leur nature, CloudFormation ne pourra pas comparer aux propriétés dans les ressources de pile résultantes. Ces propriétés ne peuvent donc pas être incluses dans les résultats de détection de l'écart. Ces propriétés se divisent en deux grandes catégories :

    • Les valeurs de propriété que CloudFormation ne peut pas mapper à leur valeur de propriété de ressource initiale dans le modèle de pile.

      Par exemple, CloudFormation ne peut pas mapper le code source d’une fonction Lambda au type de propriété Code de la ressource AWS::Lambda::Function, et ne peut donc pas l’inclure dans les résultats de l’écart.

    • Valeurs de propriété que le service responsable de la ressource ne renvoie pas.

      Il existe certaines valeurs de propriété qui, par conception, ne sont jamais renvoyées par le service auquel la ressource appartient. Elles ont tendance à contenir des informations confidentielles, telles que des mots de passe ou d'autres données sensibles qui ne doivent pas être exposées. Par exemple, le service IAM ne renverra jamais la valeur de la propriété Password du type de propriété AWS::IAM::User LoginProfile, et CloudFormation ne peut donc pas l’inclure dans les résultats de détection des écarts.

    • Les objets dans un tableau peuvent être réellement des paramètres par défaut du service, et non pas d'un écart ajouté manuellement.

  • Si vous rencontrez de faux positifs, envoyez-nous vos commentaires via le lien de commentaires dans la console CloudFormation, ou contactez-nous via AWS re:Post.

  • Certaines propriétés peuvent avoir des valeurs d'entrée égales, mais non identiques. Pour éviter les faux positifs, vous devez vous assurer que la configuration attendue correspond à la configuration réelle.

    • Par exemple, la configuration attendue d'une ressource peut être de 1 024 Mo et la configuration réelle de cette même ressource peut être de 1 Go. 1 024 Mo et 1 Go sont égaux, mais pas identiques.

      Lorsque la détection des écarts s'exécute sur cette ressource, elle signale les résultats présentant des écarts.

      Pour éviter ce faux positif, changez la configuration attendue de la propriété de la ressource à 1 024 Mo, puis lancez la détection des écarts.