Détectez les modifications de configuration non gérées apportées aux piles et aux ressources grâce à la détection de dérive - 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 de dérive

Même si 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 EC2 console Amazon pour mettre à jour une instance de serveur créée dans le cadre d'une CloudFormation pile. 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 ou de suppression de la pile. Vous pouvez utiliser la détection de dérive pour identifier les ressources de pile auxquelles des modifications de configuration ont été apportées en dehors de la CloudFormation gestion. 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. CloudFormation À utiliser pour détecter la dérive sur l'ensemble d'une pile ou sur des ressources individuelles au sein de la 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 attendues des propriétés de ressource, telles que définies dans le modèle de pile, ainsi que toutes les valeurs spécifiées en tant que paramètres du modèle. CloudFormation compare ensuite ces valeurs attendues aux valeurs réelles de ces propriétés de ressources telles qu'elles existent 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 de la pile qui a dérivé.

CloudFormation détecte la dérive sur les AWS ressources qui prennent en charge la détection de la dérive. Les ressources qui ne prennent pas en charge la détection de dérive se voient attribuer le statut de dérive NOT _CHECKED. Pour obtenir la liste des AWS ressources qui prennent en charge la détection de la dérive, consultezSupport des types de ressources.

En outre, CloudFormation prend en charge la détection de la dérive sur les types de ressources privées provisionnables, c'est-à-dire dont le type de provisionnement est ouFULLY_MUTABLE. 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 fourniture de ressources, consultez le ProvisioningType paramètre du DescribeTypeaction dans le AWS CloudFormation APIréférentiel et dans le DescribeTypecommande dans la référence des AWS CLI commandes. Pour plus d'informations sur les ressources privées, voirGestion des extensions avec le CloudFormation registre.

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 d'une dérive sur une pile, CloudFormation ne détecte aucune dérive sur les piles imbriquées appartenant à cette pile. Pour de plus amples informations, veuillez consulter Intégrez des piles dans d'autres piles à 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 la dérive pour les valeurs de propriété définies de manière explicite, soit via le 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 CloudFormation suivre une propriété de ressource afin de déterminer la dérive, définissez explicitement la valeur de la propriété, même si vous la définissez sur la 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 d'état CloudFormation attribués aux opérations de détection de la dérive des piles.

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 ayant effectué CloudFormation avec succès la détection de la dérive.

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 d'état de dérive CloudFormation attribués 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. Une pile, un ensemble de piles ou une instance de pile sans ressources prenant en charge la détection de la dérive aura également le statut IN_SYNC.

Le tableau suivant répertorie les codes d'état de dérive CloudFormation attribués aux ressources de la 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 la configuration de modèle attendue.

IN_SYNC

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

Le tableau suivant répertorie les codes d'état de type de différence CloudFormation attribués aux propriétés des ressources qui diffèrent de leur configuration de modèle attendue.

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 des autorisations dans CloudFormation, consultezContrôlez CloudFormation l'accès avec AWS Identity and Access Management.

Dans certains cas extrêmes, il CloudFormation se peut que vous ne puissiez pas toujours renvoyer des résultats de dérive 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 ces cas, CloudFormation analyse le modèle de pile pour détecter les pièces jointes avant d'effectuer la comparaison de dérive. Cependant, CloudFormation vous ne pouvez pas effectuer cette analyse sur plusieurs piles et vous risquez donc de ne pas renvoyer de résultats de dérive précis lorsque les ressources associé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::Policy

    AWS::IAM::ManagedPolicy

    AWS::ElasticLoadBalancingV2::Listener

    AWS::ElasticLoadBalancingV2::ListenerCertificate

    AWS::EC2::SecurityGroup

    AWS::EC2::SecurityGroupEgress

    AWS::EC2::SecurityGroupIngress

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

  • Certaines propriétés de ressources que vous pouvez spécifier dans votre modèle de pile ne CloudFormation pourront pas, de par leur nature même, être comparées aux propriétés des 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 :

    • Valeurs de propriété qui CloudFormation ne peuvent pas être mappées à leur valeur de propriété de ressource initiale dans le modèle de pile.

      Par exemple, CloudFormation impossible de mapper le code source d'une fonction Lambda vers Codetype de propriété du AWS::Lambda::Functionressource, et ne CloudFormation peut donc pas l'inclure dans les résultats de détection de dérive.

    • 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 IAM service ne renverra jamais la valeur de la Password propriété du AWS::IAM::User LoginProfiletype de propriété, et ne CloudFormation peut donc pas l'inclure dans les résultats de détection de dérive.

    • 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 recevez un faux positif, envoyez-nous vos commentaires en utilisant le lien de commentaires dans la CloudFormation console, 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.