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.
Empêcher les mises à jour des ressources de la pile
Lorsque vous créez une pile, toutes les actions de mise à jour sont autorisées au niveau de toutes les ressources. Par défaut, toute personne disposant des autorisations de mise à jour de la pile peuvent mettre à jour toutes les ressources correspondantes. Au cours d'une mise à jour, certaines ressources peuvent nécessiter une interruption ou être complètement remplacées, ce qui se traduit par un nouvel espace de stockage physique IDs ou un stockage complètement nouveau. Vous pouvez empêcher les ressources de la pile d'être mises à jour ou supprimées par erreur pendant une mise à jour de la pile. Une politique de pile est un JSON document qui définit les actions de mise à jour qui peuvent être effectuées sur des ressources désignées.
Une fois que vous avez défini une politique de pile, toutes les ressources de cette dernière sont protégées par défaut. Pour autoriser les mises à jour de ressources spécifiques, vous spécifiez une instruction Allow
explicite pour ces ressources dans votre politique de pile. Vous ne pouvez définir qu'une seule politique de pile par pile, mais, vous pouvez protéger plusieurs ressources au sein d'une politique unique. Une politique de pile s'applique à tous les CloudFormation utilisateurs qui tentent de mettre à jour la pile. Vous ne pouvez pas associer des politiques de pile différentes à des utilisateurs distincts.
Une politique de pile s'applique uniquement au cours des mises à jour de la pile. Il ne fournit pas de contrôles d'accès comme une politique AWS Identity and Access Management (IAM). Utilisez uniquement une politique de pile comme mécanisme de sécurité afin d'empêcher les mises à jour accidentelles de ressources spécifiques de la pile. Pour contrôler l'accès aux AWS ressources ou aux actions, utilisezIAM.
Rubriques
Exemple de politique de pile
L'exemple suivant de politique de pile empêche les mises à jour de la ProductionDatabase
ressource :
{ "Statement" : [ { "Effect" : "Allow", "Action" : "Update:*", "Principal": "*", "Resource" : "*" }, { "Effect" : "Deny", "Action" : "Update:*", "Principal": "*", "Resource" : "LogicalResourceId/ProductionDatabase" } ] }
Lorsque vous définissez une politique de pile, toutes les ressources sont protégées par défaut. Pour autoriser les mises à jour de toutes les ressources, nous ajoutons une instruction Allow
, qui autorise toutes les actions sur toutes les ressources. Bien que l'instruction Allow
spécifie toutes les ressources, l'instruction Deny
explicite prévaut pour la ressource associée à l'ID logique ProductionDatabase
. Cette instruction Deny
empêche toutes les actions de mise à jour, telles que le remplacement ou la suppression, u niveau de la ressource ProductionDatabase
.
L'élément Principal
est obligatoire, mais accepte uniquement le caractère générique (*
). Autrement dit, l'instruction s'applique à tous les mandataires.
Note
Lors d'une mise à jour de la pile, met CloudFormation automatiquement à jour les ressources qui dépendent d'autres ressources mises à jour. Par exemple, CloudFormation met à jour une ressource qui fait référence à une ressource mise à jour. CloudFormation n'apporte aucune modification physique, telle que l'ID de la ressource, aux ressources mises à jour automatiquement, mais si une politique de pile est associée à ces ressources, vous devez être autorisé à les mettre à jour.
Définition d'une politique de pile
Lorsque vous créez une pile, aucune politique de pile n'est définie. Dès lors, toutes les actions de mise à jour sont autorisées sur toutes les ressources. Pour protéger les ressources de la pile contre les actions de mise à jour, spécifiez une politique de pile correspondante. Une politique de pile est un JSON document qui définit les actions de mise à jour de la CloudFormation pile que CloudFormation les utilisateurs peuvent effectuer et les ressources auxquelles ces actions s'appliquent. Vous définissez la politique de la pile lorsque vous créez cette dernière, en spécifiant un fichier texte qui contient votre politique de pile ou en saisissant les informations requises. Lorsque vous définissez une politique au niveau de votre pile, toute mise à jour qui n'est pas explicitement autorisée est refusée par défaut.
Vous pouvez spécifier une politique de pile avec cinq éléments : Effect
, Action
, Principal
, Resource
et Condition
. Le code fictif suivant illustre la syntaxe de la politique de pile.
{ "Statement" : [ { "Effect" : "
Deny_or_Allow
", "Action" : "update_actions
", "Principal" : "*", "Resource" : "LogicalResourceId/resource_logical_ID
", "Condition" : { "StringEquals_or_StringLike
" : { "ResourceType" : [resource_type, ...
] } } } ] }
Effect
-
Détermine si les actions que vous spécifiez sont refusées ou autorisées au niveau des ressources que vous spécifiez. Vous pouvez spécifier uniquement
Deny
ouAllow
(, par exemple)."Effect" : "Deny"
Important
Si une politique de pile inclut des déclarations contradictoires (qui autorisent et refusent en même temps les mises à jour d'une ressource), une instruction
Deny
prévaut toujours sur une instructionAllow
. Pour vous assurer qu'une ressource est protégée, utilisez une instructionDeny
pour celle-ci. - Action
-
Spécifie les actions de mise à jour qui sont refusées ou autorisées :
- Update:Modify
-
Spécifie les actions de mise à jour au cours desquelles les ressources peuvent rencontrer quelques interruptions ou aucune lorsque les modifications sont appliquées. Toutes les ressources conservent leur aspect physiqueIDs.
- Update:Replace
-
Spécifie les actions de mise à jour au cours desquelles les ressources sont recréées. CloudFormationcrée une nouvelle ressource avec les mises à jour spécifiées, puis supprime l'ancienne ressource. Etant donné que la ressource est recréée, l'ID physique de la nouvelle ressource peut être différent.
- Update:Delete
-
Spécifie les actions de mise à jour au cours desquelles les ressources sont supprimées. Les mises à jour qui suppriment totalement les ressources d'un modèle de pile requièrent cette action.
- Mise à jour:*
-
Spécifie toutes les actions de mise à jour. L'astérisque est un caractère générique qui représente toutes les actions de mise à jour.
L'exemple suivant montre comment définir uniquement les actions de remplacement et de suppression :
"Action" : ["Update:Replace", "Update:Delete"]
Pour autoriser toutes les actions de mise à jour à l'exception de l'une d'elles, utilisez
NotAction
. Par exemple, pour autoriser toutes les actions de mise à jour à l'exception de l'actionUpdate:Delete
, utilisezNotAction
, comme illustré dans cet exemple :{ "Statement" : [ { "Effect" : "Allow", "NotAction" : "Update:Delete", "Principal": "*", "Resource" : "*" } ] }
- Principal
-
L'élément
Principal
spécifie l'entité à laquelle la politique s'applique. Cet élément est obligatoire, mais accepte uniquement le caractère générique (*
). Autrement dit, l'instruction s'applique à tous les mandataires. - Ressource
-
Spécifie la logique IDs des ressources auxquelles la politique s'applique. Pour spécifier les types de ressources, utilisez l'
Condition
élément.Pour spécifier une seule ressource, utilisez son ID logique. Par exemple :
"Resource" : ["LogicalResourceId/myEC2instance"]
Vous pouvez utiliser un joker avec logiqueIDs. Par exemple, si vous utilisez un préfixe d'ID logique commun pour toutes les ressources connexes, vous pouvez tous les spécifier avec un caractère générique :
"Resource" : ["LogicalResourceId/CriticalResource*"]
Vous pouvez également utiliser un élément
Not
avec les ressources. Par exemple, pour autoriser les mises à jour de toutes les ressources à l'exception d'une seule, utilisez l'élémentNotResource
afin de protéger cette ressource :{ "Statement" : [ { "Effect" : "Allow", "Action" : "Update:*", "Principal": "*", "NotResource" : "LogicalResourceId/ProductionDatabase" } ] }
Lorsque vous définissez une politique de pile, toute mise à jour qui n'est pas explicitement autorisée est refusée. En autorisant les mises à jour de toutes les ressources à l'exception de la ressource
ProductionDatabase
, vous refusez les mises à jour deProductionDatabase
. - Conditions
-
Spécifie le type de ressource auquel la politique s'applique. Pour définir la logique IDs de ressources spécifiques, utilisez l'
Resource
élément.Vous pouvez spécifier un type de ressource, tel que toutes les instances EC2 et les RDS instances de base de données, comme illustré dans l'exemple suivant :
{ "Statement" : [ { "Effect" : "Deny", "Principal" : "*", "Action" : "Update:*", "Resource" : "*", "Condition" : { "StringEquals" : { "ResourceType" : ["AWS::EC2::Instance", "AWS::RDS::DBInstance"] } } }, { "Effect" : "Allow", "Principal" : "*", "Action" : "Update:*", "Resource" : "*" } ] }
L'
Allow
instruction accorde des autorisations de mise à jour à toutes les ressources et l'Deny
instruction refuse les mises à jour EC2 et les RDS instances de base de données. L'instructionDeny
prévaut toujours sur les actions autorisées.Vous pouvez utiliser un caractère générique avec les types de ressource. Par exemple, vous pouvez refuser les autorisations de mise à jour pour toutes les EC2 ressources Amazon, telles que les instances, les groupes de sécurité et les sous-réseaux, en utilisant un caractère générique, comme illustré dans l'exemple suivant :
"Condition" : { "StringLike" : { "ResourceType" : ["AWS::EC2::*"] } }
Vous devez utiliser la condition
StringLike
lorsque vous utilisez des caractères génériques.
Définition d'une politique de pile
Vous pouvez utiliser la console ou AWS CLI appliquer une politique de pile lorsque vous créez une pile. Vous pouvez également utiliser le AWS CLI pour appliquer une politique de pile à une pile existante. Une fois que vous avez appliqué une politique de pile, vous ne pouvez pas la supprimer de la pile, mais vous pouvez l'utiliser AWS CLI pour la modifier.
Les politiques de pile s'appliquent à tous les CloudFormation utilisateurs qui tentent de mettre à jour la pile. Vous ne pouvez pas associer des politiques de pile différentes à des utilisateurs distincts.
Pour plus d'informations sur la création de politiques de pile, consultez Définition d'une politique de pile.
Pour définir une politique de pile lors de la création de la pile (console)
Ouvrez la AWS CloudFormation console à l'adresse https://console.aws.amazon.com/cloudformation.
-
Dans la barre de navigation en haut de l'écran, choisissez le Région AWS pour créer le stack in.
-
Sur la page CloudFormation Stacks, choisissez Create stack.
-
Dans l'assistant Créer une pile, à la page Configure stack options (Configurer les options de pile), développez la section Avancé, puis choisissez Politique de pile.
-
Spécifiez la politique de pile :
-
Pour écrire une politique directement dans la console, choisissez Enter stack policy (Entrer la politique de pile), puis tapez la politique de pile directement dans le champ de texte.
-
Pour utiliser une politique définie dans un fichier distinct, choisissez Upload a file (Charger un fichier) puis Choose file (Choisir un fichier) pour sélectionner le fichier contenant la politique de pile.
-
Pour définir une politique de pile lors de la création de la pile (AWS CLI)
-
Utilisation de la create-stackcommande avec la
--stack-policy-body
possibilité de saisir une politique modifiée ou de--stack-policy-url
spécifier un fichier contenant la politique.
Pour définir une politique de pile sur une pile existante (AWS CLI uniquement)
-
Utilisation de la set-stack-policycommande avec la
--stack-policy-body
possibilité de saisir une politique modifiée ou de--stack-policy-url
spécifier un fichier contenant la politique.Note
Pour ajouter une politique à une pile existante, vous devez être autorisé à CloudFormation SetStackPolicy action.
Mise à jour des ressources protégées
Pour mettre à jour les ressources protégées, créez une politique temporaire qui remplace la politique de la pile et qui autorise les mises à jour de ces ressources. Spécifiez la politique de remplacement lorsque vous mettez à jour la pile. Cette politique ne modifie pas la politique de pile de manière permanente.
Pour mettre à jour les ressources protégées, vous devez être autorisé à utiliser CloudFormation SetStackPolicy action. Pour de plus amples informations sur la définition des autorisations CloudFormation, veuillez consulter Contrôlez CloudFormation l'accès avec AWS Identity and Access Management.
Note
Lors d'une mise à jour de la pile, met CloudFormation automatiquement à jour les ressources qui dépendent d'autres ressources mises à jour. Par exemple, CloudFormation met à jour une ressource qui fait référence à une ressource mise à jour. CloudFormation n'apporte aucune modification physique, telle que l'identifiant des ressources, aux ressources mises à jour automatiquement, mais si une politique de pile est associée à ces ressources, vous devez être autorisé à les mettre à jour.
Pour mettre à jour une ressource protégée (console)
Ouvrez la AWS CloudFormation console à l'adresse https://console.aws.amazon.com/cloudformation.
-
Sélectionnez la pile que vous souhaitez mettre à jour, choisissez Stack actions (Actions de pile) puis Mettre à jour la pile.
-
Si vous n'avez pas modifié le modèle de pile, sélectionnez Utiliser modèle en cours, puis cliquez sur Suivant. Si vous avez modifié le modèle, sélectionnez Replace current template (Remplacer le modèle en cours) et spécifiez l'emplacement du modèle mis à jour dans la section Specify template (Spécifier le modèle) :
-
Pour un modèle stocké localement sur votre ordinateur, sélectionnez Upload a template file (Charger un fichier de modèle). Choisissez Choose File (Choisir un fichier) pour accéder au fichier, sélectionnez-le, puis cliquez sur Suivant.
-
Pour un modèle stocké dans un compartiment Amazon S3, sélectionnez Amazon S3 URL. Entrez ou collez le code URL correspondant au modèle, puis cliquez sur Suivant.
Si vous avez un modèle dans un compartiment activé pour la gestion des versions, vous pouvez spécifier une version spécifique du modèle en l'ajoutant
?versionId=
au. URL Pour plus d'informations, consultez la section Utilisation d'objets dans un compartiment activé pour la gestion des versions dans le guide de l'utilisateur d'Amazon Simple Storage Service.version-id
-
-
Si votre modèle contient des paramètres, sur la page Specify stack details (Spécifier les détails de pile), entrez ou modifiez les valeurs de paramètre, puis choisissez Suivant.
CloudFormation remplit chaque paramètre avec la valeur actuellement définie dans la pile, à l'exception des paramètres déclarés avec l'
NoEcho
attribut. Pour utiliser les valeurs actuelles de ces paramètres, choisissez Utiliser valeur existante.Pour plus d'informations sur l'utilisation
NoEcho
pour masquer des informations sensibles, ainsi que sur l'utilisation de paramètres dynamiques pour gérer les secrets, consultez les N'incorporez pas d'informations d'identification dans vos modèles meilleures pratiques. -
Spécifiez une politique de pile de remplacement.
-
Sur la page Configure stack options (Configurer les options de pile), dans la section Options avancées, sélectionnez Politique de pile.
-
Sélectionnez Upload a file (Charger un fichier).
-
Cliquez sur Choose file (Choisir un fichier) et accédez au fichier contenant la politique de pile de remplacement ou tapez une politique.
-
Choisissez Suivant.
La politique de remplacement doit spécifier une instruction
Allow
pour les ressources protégées que vous souhaitez mettre à jour. Par exemple, pour mettre à jour toutes les ressources protégées, définissez une politique de remplacement temporaire qui permet toutes les mises à jour :{ "Statement" : [ { "Effect" : "Allow", "Action" : "Update:*", "Principal": "*", "Resource" : "*" } ] }
Note
CloudFormation applique la politique de dérogation uniquement lors de cette mise à jour. Cette politique ne modifie pas la politique de pile de manière permanente. Pour modifier une politique de pile, consultez la page Modification d'une politique de pile .
-
-
Passez en revue les informations de la pile et les modifications que vous avez soumises.
Vérifiez que vous avez soumis les informations correctes, telles que les valeurs de paramètres ou le modèle correctsURL. Si votre modèle contient des IAM ressources, choisissez Je reconnais que ce modèle peut créer IAM des ressources pour spécifier que vous souhaitez utiliser IAM des ressources dans le modèle. Pour de plus amples informations, veuillez consulter Confirmation des ressources IAM dans les modèles CloudFormation.
Dans la section Aperçu de vos modifications, vérifiez que toutes les modifications attendues CloudFormation seront apportées. Par exemple, vérifiez que CloudFormation les ressources que vous vouliez ajouter, supprimer ou modifier sont ajoutées, supprimées ou modifiées. CloudFormationgénère cet aperçu en créant un ensemble de modifications pour la pile. Pour de plus amples informations, veuillez consulter Mettre à jour CloudFormation les piles à l'aide d'ensembles de modifications.
-
Lorsque vous êtes satisfait de vos modifications, cliquez sur Update (Mettre à jour).
Note
À ce stade, vous avez aussi la possibilité d'afficher le jeu de modifications pour vérifier de façon plus complète vos mises à jour proposées. Pour ce faire, cliquez sur Afficher l'ensemble de modifications au lieu de Mettre à jour. CloudFormation affiche l'ensemble de modifications généré en fonction de vos mises à jour. Lorsque vous êtes prêt à effectuer la mise à jour de la pile, cliquez sur Exécuter.
CloudFormation affiche la page des détails de la pile correspondant à votre pile. Votre pile a désormais le statut de
UPDATE_IN_PROGRESS
. Une CloudFormation fois la mise à jour de la pile terminée avec succès, l'état de la pile est défini surUPDATE_COMPLETE
.Si la mise à jour de la pile échoue, CloudFormation ; annule automatiquement les modifications et définit le statut de la pile sur
UPDATE_ROLLBACK_COMPLETE
.
Pour mettre à jour une ressource protégée (AWS CLI)
-
Utilisation de la update-stackcommande avec la
--stack-policy-during-update-body
possibilité de saisir une politique modifiée ou de--stack-policy-during-update-url
spécifier un fichier contenant la politique.Note
CloudFormation applique la politique de dérogation uniquement lors de cette mise à jour. Cette politique ne modifie pas la politique de pile de manière permanente. Pour modifier une politique de pile, consultez la page Modification d'une politique de pile .
Modification d'une politique de pile
Pour protéger des ressources supplémentaires ou pour supprimer la protection de ressources, modifiez la politique de pile. Par exemple, lorsque vous ajoutez à votre pile une base de données que vous souhaitez protéger, appliquez une instruction Deny
pour cette base de données à la politique de pile. Pour modifier la politique, vous devez être autorisé à utiliser SetStackPolicy action.
Utilisez le AWS CLI pour modifier les politiques de pile.
Pour modifier une politique de pile (AWS CLI)
-
Utilisation de la set-stack-policycommande avec la
--stack-policy-body
possibilité de saisir une politique modifiée ou de--stack-policy-url
spécifier un fichier contenant la politique.
Vous ne pouvez pas supprimer une politique de pile. Pour supprimer toute la protection de toutes les ressources, vous devez modifier la politique pour autoriser explicitement toutes les actions pour toutes les ressources. La politique suivante autorise toutes les mises à jour au niveau de toutes les ressources :
{ "Statement" : [ { "Effect" : "Allow", "Action" : "Update:*", "Principal": "*", "Resource" : "*" } ] }
Autres exemples de politiques de pile
Les exemples suivants de stratégie de pile montre comment empêcher les mises à jour de toutes les ressources de la pile et de ressources spécifiques, ainsi que comment empêcher certains types de mises à jour.
Empêcher les mises à jour de toutes les ressources de la pile
Pour éviter les mises à jour de toutes les ressources d'une pile, la politique suivante spécifie une instruction Deny
pour toutes les actions de mise à jour pour toutes les ressources.
{ "Statement" : [ { "Effect" : "Deny", "Action" : "Update:*", "Principal": "*", "Resource" : "*" } ] }
Empêcher les mises à jour d'une seule ressource
La politique suivante refuse toutes les actions de mise à jour de la base de données associée à l'ID logique MyDatabase
. Elle autorise toutes les actions de mise à jour au niveau de toutes les autres ressources de la pile avec une instruction Allow
. L'instruction Allow
ne s'applique pas à la ressource MyDatabase
, car l'instruction Deny
prévaut toujours sur les actions autorisées.
{ "Statement" : [ { "Effect" : "Deny", "Action" : "Update:*", "Principal": "*", "Resource" : "LogicalResourceId/MyDatabase" }, { "Effect" : "Allow", "Action" : "Update:*", "Principal": "*", "Resource" : "*" } ] }
Vous pouvez obtenir le même résultat que l'exemple précédent en utilisant un refus par défaut. Lorsque vous définissez une politique de stack, elle CloudFormation refuse toute mise à jour qui n'est pas explicitement autorisée. La politique suivante autorise les mises à jour de toutes les ressources, à l'exception de la ressource ProductionDatabase
, qui est refusée par défaut.
{ "Statement" : [ { "Effect" : "Allow", "Action" : "Update:*", "Principal": "*", "NotResource" : "LogicalResourceId/ProductionDatabase" } ] }
Important
L'utilisation d'un refus par défaut présente des risques. Si vous utilisez une instruction Allow
ailleurs dans la politique (par exemple, une instruction Allow
qui utilise un caractère générique), vous pouvez sans le savoir accorder l'autorisation de mise à jour à des ressources qui ne devraient pas avoir cette autorisation. Comme un refus explicite prévaut sur toutes les actions autorisées, une ressource est réellement protégée avec une instruction Deny
.
Empêcher les mises à jour de toutes les Instances d'un type de ressource
La politique suivante refuse toutes les actions de mise à jour sur le type de ressource d'RDSinstance de base de données. Elle autorise toutes les actions de mise à jour au niveau de toutes les autres ressources de la pile avec une instruction Allow
. L'Allow
instruction ne s'applique pas aux ressources de l'RDSinstance de base de données car une Deny
instruction remplace toujours les actions d'autorisation.
{ "Statement" : [ { "Effect" : "Deny", "Action" : "Update:*", "Principal": "*", "Resource" : "*", "Condition" : { "StringEquals" : { "ResourceType" : ["AWS::RDS::DBInstance"] } } }, { "Effect" : "Allow", "Action" : "Update:*", "Principal": "*", "Resource" : "*" } ] }
Empêcher les mises à jour de remplacement d'une instance
La politique suivante refuse les mises à jour qui entraîneraient un remplacement de l'instance associée à l'ID logique MyInstance
. Elle autorise toutes les actions de mise à jour au niveau de toutes les autres ressources de la pile avec une instruction Allow
. L'instruction Allow
ne s'applique pas à la ressource MyInstance
, car l'instruction Deny
prévaut toujours sur les actions autorisées.
{ "Statement" : [ { "Effect" : "Deny", "Action" : "Update:Replace", "Principal": "*", "Resource" : "LogicalResourceId/MyInstance" }, { "Effect" : "Allow", "Action" : "Update:*", "Principal": "*", "Resource" : "*" } ] }
Empêcher les mises à jour des piles imbriquées
La politique suivante refuse toutes les actions de mise à jour sur le type de ressource de CloudFormation pile (piles imbriquées). Elle autorise toutes les actions de mise à jour au niveau de toutes les autres ressources de la pile avec une instruction Allow
. L'Allow
instruction ne s'applique pas aux ressources de la CloudFormation pile car elle remplace toujours les Deny
actions d'autorisation.
{ "Statement" : [ { "Effect" : "Deny", "Action" : "Update:*", "Principal": "*", "Resource" : "*", "Condition" : { "StringEquals" : { "ResourceType" : ["AWS::CloudFormation::Stack"] } } }, { "Effect" : "Allow", "Action" : "Update:*", "Principal": "*", "Resource" : "*" } ] }