Contrôlez l'utilisation du modèle de lancement Amazon EC2 dans les groupes Auto Scaling - Amazon EC2 Auto Scaling

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.

Contrôlez l'utilisation du modèle de lancement Amazon EC2 dans les groupes Auto Scaling

Amazon EC2 Auto Scaling prend en charge l'utilisation de modèles de lancement Amazon EC2 avec vos groupes Auto Scaling. Nous vous recommandons d'autoriser les utilisateurs à créer des groupes Auto Scaling à partir de modèles de lancement, car cela leur permet d'utiliser les dernières fonctionnalités d'Amazon EC2 Auto Scaling et d'Amazon EC2. Par exemple, les utilisateurs doivent spécifier un modèle de lancement pour utiliser une politique d'instances mixtes.

Vous pouvez utiliser la politique AmazonEC2FullAccess pour donner aux utilisateurs un accès complet aux ressources Amazon EC2 Auto Scaling, aux modèles de lancement et aux autres ressources EC2 dans leur compte. Vous pouvez également créer vos propres politiques IAM personnalisées pour accorder aux utilisateurs des autorisations précises d'utiliser des modèles de lancement, comme décrit dans cette rubrique.

Exemple de politique que vous pouvez personnaliser pour votre propre usage

Voici un exemple de politique d'autorisations de base que vous pouvez adapter à votre propre usage. La politique accorde les autorisations de créer, mettre à jour et supprimer tous les groupes Auto Scaling, mais uniquement si le groupe utilise la balise purpose=testing. Elle donne ensuite l'autorisation d'exécuter toutes les actions de type Describe. Comme les actions Describe ne prennent pas en charge les autorisations au niveau des ressources, vous devez les spécifier dans une instruction distincte sans condition.

Les identités IAM (utilisateurs ou rôles) disposant de cette politique sont autorisées à créer ou mettre à jour un groupe Auto Scaling à l'aide d'un modèle de lancement, car ils ont également l'autorisation d'utiliser l'action ec2:RunInstances.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup", "autoscaling:DeleteAutoScalingGroup" ], "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/purpose": "testing" } } }, { "Effect": "Allow", "Action": [ "autoscaling:Describe*", "ec2:RunInstances" ], "Resource": "*" } ] }

Les utilisateurs qui créent ou mettent à jour des groupes Auto Scaling peuvent avoir besoin de certaines autorisations connexes, telles que :

Ces autorisations relatives aux actions à effectuer lors du lancement d’instances sont vérifiées lorsque l’utilisateur interagit avec un groupe Auto Scaling. Pour plus d’informations, consultez Validation des autorisations pour ec2:RunInstances et iam:PassRole.

Les exemples suivants illustrent des déclarations de politique que vous pouvez utiliser pour contrôler l’accès dont les utilisateurs IAM disposent pour utiliser des modèles de lancement.

Demander des modèles de lancement dotés d'une balise spécifique

Lorsque vous accordez des autorisations ec2:RunInstances, vous pouvez spécifier que les utilisateurs ne peuvent utiliser que des modèles de lancement dotés de balises ou d’identifiants spécifiques pour limiter les autorisations lors du lancement d’instances avec modèle de lancement. Vous pouvez également contrôler l’AMI et les autres ressources auxquelles toute personne utilisant des modèles de lancement peut faire référence et utiliser lors du lancement d’instances en spécifiant des autorisations supplémentaires au niveau des ressources pour l’appel à RunInstances.

L’exemple suivant restreint les autorisations pour l’action ec2:RunInstances avec les modèles de lancement qui se trouvent dans la région spécifiée et qui disposent de la balise purpose=testing. Cela permet également aux utilisateurs d’accéder aux ressources spécifiées dans un modèle de lancement : AMI, types d’instances, volumes, paires de clés, interfaces réseau et groupes de sécurité.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region:account-id:launch-template/*", "Condition": { "StringEquals": { "aws:ResourceTag/purpose": "testing" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-*", "arn:aws:ec2:region:account-id:instance/*", "arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:volume/*", "arn:aws:ec2:region:account-id:key-pair/*", "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:security-group/*" ] } ] }

Pour plus d'informations sur l'utilisation de politiques basées sur des balises avec les modèles de lancement, consultez la section Contrôler l'accès aux modèles de lancement avec des autorisations IAM dans le guide de l'utilisateur Amazon EC2.

Demander un modèle de lancement et un numéro de version

Vous pouvez également utiliser les autorisations IAM pour imposer qu’un modèle de lancement et le numéro de version du modèle de lancement soient spécifiés lors de la création ou de la mise à jour de groupes Auto Scaling.

Dans l’exemple suivant, les utilisateurs peuvent créer et mettre à jour des groupes Auto Scaling uniquement si un modèle de lancement et le numéro de version du modèle de lancement sont spécifiés. Si les utilisateurs disposant de cette politique omettent le numéro de version du modèle de lancement pour spécifier $Latest ou $Default, ou s’ils essaient d’utiliser une configuration du lancement à la place, l’action échoue.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "Bool": { "autoscaling:LaunchTemplateVersionSpecified": "true" } } }, { "Effect": "Deny", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "Null": { "autoscaling:LaunchConfigurationName": "false" } } } ] }

Demander l'utilisation du service de métadonnées d'instance version 2 (IMDSv2)

Pour plus de sécurité, vous pouvez définir les autorisations de vos utilisateurs de sorte à exiger l'utilisation d'un modèle de lancement qui nécessite IMDSv2. Pour plus d'informations, consultez Configuration du service de métadonnées d'instance dans le guide de l'utilisateur Amazon EC2.

L'exemple suivant indique que les utilisateurs ne peuvent pas appeler l'action ec2:RunInstances, sauf si l'instance est également définie pour exiger l'utilisation d'IMDSv2 (indiqué par "ec2:MetadataHttpTokens":"required").

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireImdsV2", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringNotEquals": { "ec2:MetadataHttpTokens": "required" } } } ] }
Astuce

Pour forcer le lancement des instances Auto Scaling de remplacement qui utilisent un nouveau modèle de lancement ou une nouvelle version d’un modèle de lancement avec les options de métadonnées d’instance configurées, vous pouvez démarrer une actualisation d’instance. Pour plus d’informations, consultez Mise à jour des instances Auto Scaling.

Limiter l'accès aux ressources Amazon EC2

L'exemple suivant montre comment contrôler la configuration des instances qu'un utilisateur peut lancer en limitant l'accès aux ressources Amazon EC2. Pour spécifier des autorisations au niveau des ressources pour les ressources spécifiées dans un modèle de lancement, vous devez inclure les ressources dans l’instruction d’action RunInstances.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:account-id:launch-template/*", "arn:aws:ec2:region::image/ami-04d5cc9b88example", "arn:aws:ec2:region:account-id:subnet/subnet-1a2b3c4d", "arn:aws:ec2:region:account-id:volume/*", "arn:aws:ec2:region:account-id:key-pair/*", "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:security-group/sg-903004f88example" ] }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region:account-id:instance/*", "Condition": { "StringEquals": { "ec2:InstanceType": ["t2.micro", "t2.small"] } } } ] }

Cet exemple contient deux instructions :

  • La première instruction exige que les utilisateurs lancent des instances dans un sous-réseau spécifique (subnet-1a2b3c4d), en utilisant un groupe de sécurité spécifique (sg-903004f88example) et une AMI spécifique (ami-04d5cc9b88example). Cela permet également aux utilisateurs d’accéder aux ressources spécifiées dans un modèle de lancement : interfaces réseau, paires de clés, et volumes.

  • La seconde instruction permet aux utilisateurs de lancer des instances uniquement à l’aide des types d’instance t2.micro et t2.small, ce que vous pourriez faire pour contrôler les coûts.

    Notez toutefois qu'il n'existe actuellement aucun moyen efficace d'empêcher complètement les utilisateurs autorisés à lancer des instances avec un modèle de lancement de lancer d'autres types d'instances. Cela est dû au fait qu'un type d'instance spécifié dans un modèle de lancement peut être remplacé pour utiliser des types d'instance définis à l'aide d'une sélection de type d'instance basée sur les attributs.

Pour obtenir la liste complète des autorisations au niveau des ressources que vous pouvez utiliser pour contrôler la configuration des instances qu’un utilisateur peut lancer, consultez la section Actions, ressources et clés de condition pour Amazon EC2 dans la Référence de l’autorisation de service.

Autorisations requises pour baliser des instances et des volumes

L'exemple suivant permet aux utilisateurs de baliser les instances et les volumes lors de leur création. Cette politique est nécessaire si des balises sont spécifiées dans le modèle de lancement. Pour plus d'informations, consultez la section Accorder l'autorisation de baliser les ressources lors de leur création dans le guide de l'utilisateur Amazon EC2.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:region:account-id:*/*", "Condition": { "StringEquals": { "ec2:CreateAction": "RunInstances" } } } ] }

Autorisations de modèle de lancement supplémentaires

Vous devez accorder aux utilisateurs de votre console des autorisations pour les actions ec2:DescribeLaunchTemplates et ec2:DescribeLaunchTemplateVersions. Sans ces autorisations, les données du modèle de lancement ne peuvent pas se charger dans l'assistant de groupe Auto Scaling, et les utilisateurs ne peuvent pas utiliser l'assistant pour lancer des instances via un modèle de lancement. Vous pouvez spécifier ces actions supplémentaires dans l’élément Action d’une instruction de politique IAM.

Validation des autorisations pour ec2:RunInstances et iam:PassRole

Les utilisateurs peuvent spécifier la version du modèle de lancement utilisée par leur groupe Auto Scaling. En fonction de leurs autorisations, il peut s’agir d’une version numérotée spécifique ou de la version $Latest ou $Default du modèle de lancement. Si c’est le dernier cas, faites particulièrement attention. Cela peut annuler les autorisations pour ec2:RunInstances et iam:PassRole que vous aviez l’intention de restreindre.

Cette section explique le scénario d’utilisation de la dernière version ou de la version par défaut du modèle de lancement avec un groupe Auto Scaling.

Lorsqu’un utilisateur appelle les API CreateAutoScalingGroup, UpdateAutoScalingGroup ou StartInstanceRefresh, Amazon EC2 Auto Scaling vérifie ses autorisations par rapport à la version du modèle de lancement qui est la version la plus récente ou la version par défaut à ce moment-là avant de traiter la demande. Cela valide les autorisations pour les actions à effectuer lors du lancement d’instances, telles que les actions ec2:RunInstances et iam:PassRole. Pour ce faire, nous lançons un appel d'exécution à RunInstancessec Amazon EC2 afin de valider si l'utilisateur dispose des autorisations requises pour effectuer l'action, sans réellement faire la demande. Lorsqu’une réponse est renvoyée, elle est lue par Amazon EC2 Auto Scaling. Si les autorisations de l’utilisateur n’autorisent pas une action donnée, Amazon EC2 Auto Scaling fait échouer la demande et renvoie à l’utilisateur une erreur contenant des informations sur l’autorisation manquante.

Une fois la vérification et la demande initiales terminées, chaque fois que les instances sont lancées, Amazon EC2 Auto Scaling les lance avec la version la plus récente ou par défaut, même si elle a changé, en utilisant les autorisations de son rôle lié au service. Cela signifie qu’un utilisateur utilisant le modèle de lancement peut potentiellement le mettre à jour pour transmettre un rôle IAM à une instance même s’il n’en dispose pas de l’autorisation iam:PassRole.

Utilisez la clé de condition autoscaling:LaunchTemplateVersionSpecified si vous souhaitez limiter le nombre de personnes ayant accès à la configuration des groupes pour utiliser la version $Latest ou $Default. Cela garantit que le groupe Auto Scaling n’accepte qu’une version numérotée spécifique lorsqu’un utilisateur appelle les API CreateAutoScalingGroup et UpdateAutoScalingGroup. Pour un exemple indiquant comment ajouter cette clé de condition à une politique IAM, consultez Demander un modèle de lancement et un numéro de version.

Pour les groupes Auto Scaling configurés pour utiliser la version du modèle de lancement $Latest ou $Default, envisagez de limiter le nombre de personnes autorisées à créer et à gérer les versions du modèle de lancement, y compris l’action ec2:ModifyLaunchTemplatepermettant à un utilisateur de spécifier la version du modèle de lancement par défaut. Pour plus d'informations, consultez la section Contrôler les autorisations de version dans le guide de l'utilisateur Amazon EC2.

Pour en savoir plus sur les autorisations permettant de consulter, de créer et de supprimer des modèles de lancement et des versions de modèles de lancement, consultez la section Contrôler l'accès aux modèles de lancement avec des autorisations IAM dans le guide de l'utilisateur Amazon EC2.

Pour en savoir plus sur les autorisations au niveau des ressources que vous pouvez utiliser pour contrôler l’accès à l’appel RunInstances, consultez la section Actions, ressources et clés de condition pour Amazon EC2 dans la Référence de l’autorisation de service.