Exemples de politiques pour contrôler l'accès à Amazon EC2 API - Amazon Elastic Compute Cloud

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.

Exemples de politiques pour contrôler l'accès à Amazon EC2 API

Vous pouvez utiliser IAM des politiques pour accorder aux utilisateurs les autorisations nécessaires pour travailler avec AmazonEC2. Pour obtenir des step-by-step instructions, reportez-vous à la section Création IAM de politiques dans le guide de IAM l'utilisateur.

Les exemples suivants présentent des déclarations de politique que vous pouvez utiliser pour accorder aux utilisateurs l'autorisation d'utiliser AmazonEC2. Ces politiques sont conçues pour les demandes effectuées à l'aide du AWS CLI ou d'un AWS SDK. Dans les exemples suivants, remplacez chaque user input placeholder avec vos propres informations.

Pour des exemples de politiques relatives au travail dans la EC2 console Amazon, consultezExemples de politiques pour contrôler l'accès à la EC2 console Amazon.

Exemple : accès en lecture seule

La politique suivante autorise les utilisateurs à utiliser toutes les EC2 API actions Amazon dont le nom commence parDescribe. L'Resourceélément utilise un caractère générique pour indiquer que les utilisateurs peuvent spécifier toutes les ressources à l'aide de ces API actions. Le caractère générique * est également nécessaire dans les cas où l'APIaction ne prend pas en charge les autorisations au niveau des ressources. Pour plus d'informations sur les actions ARNs que vous pouvez utiliser avec quelles EC2 API actions Amazon, consultez Actions, ressources et clés de condition pour Amazon EC2.

Les utilisateurs ne sont pas autorisés à effectuer des actions sur les ressources (sauf si une autre déclaration les autorise à le faire) car l'autorisation d'utiliser des API actions leur est refusée par défaut.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" } ] }

Exemple : Restreindre l’accès à une région spécifique

La politique suivante refuse aux utilisateurs l'autorisation d'utiliser toutes les EC2 API actions Amazon, sauf si la région est l'Europe (Francfort). Il utilise la clé de condition globaleaws:RequestedRegion, qui est prise en charge par toutes les EC2 API actions Amazon.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:RequestedRegion": "eu-central-1" } } } ] }

Vous pouvez également utiliser la clé de conditionec2:Region, qui est spécifique à Amazon EC2 et est prise en charge par toutes les EC2 API actions Amazon.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:*", "Resource": "*", "Condition": { "StringNotEquals": { "ec2:Region": "eu-central-1" } } } ] }

Utiliser des instances

Exemple : Décrire, lancer, arrêter, démarrer et résilier toutes les instances

La politique suivante autorise les utilisateurs à utiliser les API actions spécifiées dans l'Actionélément. L'Resourceélément utilise un caractère générique * pour indiquer que les utilisateurs peuvent spécifier toutes les ressources à l'aide de ces API actions. Le caractère générique * est également nécessaire dans les cas où l'APIaction ne prend pas en charge les autorisations au niveau des ressources. Pour plus d'informations sur les actions ARNs que vous pouvez utiliser avec quelles EC2 API actions Amazon, consultez Actions, ressources et clés de condition pour Amazon EC2.

Les utilisateurs ne sont pas autorisés à utiliser d'autres API actions (sauf si une autre instruction les autorise à le faire) car les utilisateurs se voient refuser l'autorisation d'utiliser API des actions par défaut.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeImages", "ec2:DescribeKeyPairs", "ec2:DescribeSecurityGroups", "ec2:DescribeAvailabilityZones", "ec2:RunInstances", "ec2:TerminateInstances", "ec2:StopInstances", "ec2:StartInstances" ], "Resource": "*" } ] }

Exemple : Décrire toutes les instances, et arrêter, démarrer et résilier uniquement des instances particulières

La stratégie suivante autorise les utilisateurs à décrire toutes les instances, à démarrer et à arrêter uniquement les instances i-1234567890abcdef0 et i-0598c7d356eba48d7, et à ne terminer que les instances de la région Région USA Est (Virginie du N.) (us-east-1) avec la balise de ressource "purpose=test".

La première déclaration utilise un caractère générique * pour l’élément Resource de façon à indiquer que les utilisateurs peuvent spécifier toutes les ressources avec l’action ; dans le cas présent, ils peuvent afficher toutes les instances. Le caractère générique * est également nécessaire dans les cas où l'APIaction ne prend pas en charge les autorisations au niveau des ressources (dans ce cas,). ec2:DescribeInstances Pour plus d'informations sur les actions ARNs que vous pouvez utiliser avec quelles EC2 API actions Amazon, consultez Actions, ressources et clés de condition pour Amazon EC2.

La deuxième déclaration utilise des permissions au niveau des ressources pour les actions StopInstances et StartInstances. Les instances spécifiques sont indiquées par leur présence ARNs dans l'Resourceélément.

La troisième déclaration permet aux utilisateurs de résilier toutes les instances de la région USA Est (Virginie du Nordus-east-1) () qui appartiennent au AWS compte spécifié, mais uniquement lorsque l'instance possède le tag"purpose=test". L’élément Condition stipule quand la déclaration de stratégie est en vigueur.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:StopInstances", "ec2:StartInstances" ], "Resource": [ "arn:aws:ec2:us-east-1:account-id:instance/i-1234567890abcdef0", "arn:aws:ec2:us-east-1:account-id:instance/i-0598c7d356eba48d7" ] }, { "Effect": "Allow", "Action": "ec2:TerminateInstances", "Resource": "arn:aws:ec2:us-east-1:account-id:instance/*", "Condition": { "StringEquals": { "aws:ResourceTag/purpose": "test" } } } ] }

Instances de lancement (RunInstances)

L'RunInstancesAPIaction lance une ou plusieurs instances à la demande ou une ou plusieurs instances ponctuelles. RunInstancesnécessite une instance AMI et crée une instance. Les utilisateurs peuvent spécifier une paire de clés et un groupe de sécurité dans la demande. Le lancement dans un VPC nécessite un sous-réseau et crée une interface réseau. Le lancement depuis un site EBS soutenu par Amazon AMI crée un volume. Par conséquent, l'utilisateur doit être autorisé à utiliser ces EC2 ressources Amazon. Vous pouvez créer une déclaration de stratégie qui requiert que les utilisateurs spécifient un paramètre facultatif sur RunInstances, ou limitent les utilisateurs à certaines valeurs pour tel ou tel paramètre.

Pour plus d'informations sur les autorisations au niveau des ressources requises pour lancer une instance, consultez Actions, ressources et clés de condition pour Amazon. EC2

Par défaut, les utilisateurs ne sont pas autorisés à décrire, démarrer, arrêter ni résilier les instances obtenues. Une solution pour accorder aux utilisateurs l’autorisation de gérer les instances obtenues consiste à créer une balise spécifique pour chaque instance, puis à créer une déclaration qui leur permet de gérer les instances avec cette balise. Pour plus d’informations, consultez Utiliser des instances.

AMIs

La politique suivante permet aux utilisateurs de lancer des instances en utilisant uniquement les paramètres spécifiésAMIs, ami-9e1670f7 etami-45cf5c3c. Les utilisateurs ne peuvent pas lancer une instance en utilisant un autre AMIs (sauf si une autre instruction les autorise à le faire).

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-9e1670f7", "arn:aws:ec2:region::image/ami-45cf5c3c", "arn:aws:ec2:region:account-id:instance/*", "arn:aws:ec2:region:account-id:volume/*", "arn:aws:ec2:region:account-id:key-pair/*", "arn:aws:ec2:region:account-id:security-group/*", "arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:network-interface/*" ] } ] }

La politique suivante permet également aux utilisateurs de lancer des instances provenant de toutes les instances AMIs détenues par Amazon ou par certains partenaires fiables et vérifiés. L’élément Condition de la première déclaration+ teste si ec2:Owner est amazon. Les utilisateurs ne peuvent pas lancer une instance en utilisant un autre AMIs (sauf si une autre instruction les autorise à le faire).

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-*" ], "Condition": { "StringEquals": { "ec2:Owner": "amazon" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "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:network-interface/*", "arn:aws:ec2:region:account-id:key-pair/*", "arn:aws:ec2:region:account-id:security-group/*" ] } ] }

Types d’instances

La stratégie suivante permet aux utilisateurs de lancer des instances uniquement à l’aide du type d’instance t2.micro ou t2.small, ce que vous pourriez faire pour contrôler les coûts. Les utilisateurs ne peuvent pas lancer d’instances plus grandes parce que l’élément Condition de la première déclaration teste si ec2:InstanceType est t2.micro ou t2.small.

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

Vous pouvez également créer une stratégie qui refuse aux utilisateurs l’autorisation de lancer des instances, à l’exception des types d’instance t2.micro et t2.small.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:account-id:instance/*" ], "Condition": { "StringNotEquals": { "ec2:InstanceType": ["t2.micro", "t2.small"] } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-*", "arn:aws:ec2:region:account-id:network-interface/*", "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:security-group/*" ] } ] }

Sous-réseaux

La stratégie suivante permet aux utilisateurs de lancer les instances en n’utilisant que le sous-réseau spécifié, subnet-12345678. Le groupe ne peut pas lancer d’instance sur un autre sous-réseau (à moins qu’une autre déclaration n’accorde aux utilisateurs l’autorisation de le faire).

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

Vous pouvez également créer une politique qui refuse aux utilisateurs l’autorisation de lancer une instance sur un autre sous-réseau. La déclaration agit ainsi en refusant l’autorisation de créer une interface réseau, à l’exception de l’emplacement où le sous-réseau subnet-12345678 est spécifié. Ce refus se substitue à toute autre politique créée pour autoriser le lancement d’instances sur d’autres sous-réseaux.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:account-id:network-interface/*" ], "Condition": { "ArnNotEquals": { "ec2:Subnet": "arn:aws:ec2:region:account-id:subnet/subnet-12345678" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-*", "arn:aws:ec2:region:account-id:network-interface/*", "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:security-group/*" ] } ] }

EBSVolumes

La politique suivante permet aux utilisateurs de lancer des instances uniquement si les EBS volumes de l'instance sont chiffrés. L'utilisateur doit lancer une instance à partir d'une AMI instance créée avec des instantanés chiffrés, afin de s'assurer que le volume racine est chiffré. N’importe quel volume supplémentaire que l’utilisateur attache à l’instance pendant le lancement doit aussi être chiffré.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*:*:volume/*" ], "Condition": { "Bool": { "ec2:Encrypted": "true" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*::image/ami-*", "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:key-pair/*", "arn:aws:ec2:*:*:security-group/*" ] } ] }

Balises

Baliser les instances lors de la création

La politique suivante permet aux utilisateurs de lancer des instances et d’attribuer des balises aux instances lors de la création. Pour les actions de création de ressources qui appliquent des balises, les utilisateurs doivent être autorisés à effectuer l’action CreateTags. La deuxième déclaration utilise la clé de condition ec2:CreateAction pour permettre aux utilisateurs de créer des balises uniquement dans le cadre de RunInstances et uniquement pour des instances. Les utilisateurs ne peuvent pas attribuer de balises aux ressources existantes, et ils ne peuvent pas attribuer de balises aux volumes à l’aide de la demande RunInstances.

Pour plus d’informations, consultez Accorder l'autorisation de baliser les EC2 ressources Amazon lors de la création.

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

Baliser des instances et des volumes lors de la création avec des balises spécifiques

La stratégie suivante inclut la clé de condition aws:RequestTag qui exige aux utilisateurs d’attribuer des balises aux instances et aux volumes créés par RunInstances avec les balises environment=production et purpose=webserver. Si les utilisateurs ne transmettent pas ces balises spécifiques ou s’ils ne spécifient pas du tout de balises, la demande échoue.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:region::image/*", "arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:security-group/*", "arn:aws:ec2:region:account-id:key-pair/*" ] }, { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:region:account-id:volume/*", "arn:aws:ec2:region:account-id:instance/*" ], "Condition": { "StringEquals": { "aws:RequestTag/environment": "production" , "aws:RequestTag/purpose": "webserver" } } }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account-id:*/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "RunInstances" } } } ] }

Baliser des instances et des volumes lors de la création avec au moins une balise spécifique

La stratégie suivante utilise le modificateur ForAnyValue sur la condition aws:TagKeys pour indiquer qu’au moins une balise doit être spécifiée dans la demande, et elle doit comporter la clé environment ou webserver. La balise doit être appliquée à la fois aux instances et aux volumes. Toutes les valeurs de balise peuvent être spécifiées dans la demande.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:region::image/*", "arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:security-group/*", "arn:aws:ec2:region:account-id:key-pair/*" ] }, { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:region:account-id:volume/*", "arn:aws:ec2:region:account-id:instance/*" ], "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": ["environment","webserver"] } } }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account-id:*/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "RunInstances" } } } ] }

Si les instances sont balisées lors de la création, elles doivent être balisées avec une balise spécifique

Dans la stratégie suivante, les utilisateurs ne doivent pas spécifier les balises dans la demande, mais s’ils le font, la balise doit être purpose=test. Aucune autre balise n’est autorisée. Les utilisateurs peuvent appliquer des balises à n’importe quelle ressource pouvant être balisée dans la demande RunInstances.

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

Pour interdire à toute personne appelée tag sur Create for RunInstances

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] }, { "Sid": "VisualEditor0", "Effect": "Deny", "Action": "ec2:CreateTags", "Resource": "*" } ] }

N'autoriser que des balises spécifiques pour spot-instances-request. Incohérence surprise numéro 2 entre en jeu ici. Dans des circonstances normales, si vous ne spécifiez aucune balise, vous n’êtes pas authentifié. Dans ce cas spot-instances-request, cette politique ne sera pas évaluée s'il n'y a pas de spot-instances-request balises, de sorte qu'une demande Spot on Run sans étiquette sera acceptée.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", ] }, { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": "production" } } } ] }

Balises dans un modèle de lancement

Dans l’exemple suivant, les utilisateurs peuvent lancer des instances, mais uniquement s’ils utilisent un modèle de lancement spécifique (lt-09477bcd97b0d310e). La clé de condition ec2:IsLaunchTemplateResource empêche les utilisateurs de remplacer les ressources spécifiées dans le modèle de lancement. La seconde partie de la déclaration permet aux utilisateurs de baliser les instances à la création. Cette partie de la déclaration est nécessaire si des balises sont spécifiées pour l’instance dans le modèle de lancement.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*", "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region:account-id:launch-template/lt-09477bcd97b0d310e" }, "Bool": { "ec2:IsLaunchTemplateResource": "true" } } }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account-id:instance/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "RunInstances" } } } ] }

Élastique GPUs

Dans la politique suivante, les utilisateurs peuvent lancer une instance et spécifier un élastique GPU à attacher à l'instance. Les utilisateurs peuvent lancer des instances dans n'importe quelle région, mais ils ne peuvent attacher un élastique que GPU lors d'un lancement dans la us-east-2 région.

La clé de ec2:ElasticGpuType condition garantit que les instances utilisent le type eg1.medium ou le GPU type eg1.large élastique.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:*:account-id:elastic-gpu/*" ], "Condition": { "StringEquals": { "ec2:Region": "us-east-2", "ec2:ElasticGpuType": [ "eg1.medium", "eg1.large" ] } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*::image/ami-*", "arn:aws:ec2:*:account-id:network-interface/*", "arn:aws:ec2:*:account-id:instance/*", "arn:aws:ec2:*:account-id:subnet/*", "arn:aws:ec2:*:account-id:volume/*", "arn:aws:ec2:*:account-id:key-pair/*", "arn:aws:ec2:*:account-id:security-group/*" ] } ] }

Modèles de lancement

Dans l’exemple suivant, les utilisateurs peuvent lancer des instances, mais uniquement s’ils utilisent un modèle de lancement spécifique (lt-09477bcd97b0d310e). Les utilisateurs peuvent remplacer des paramètres dans le modèle de lancement en spécifiant dans l’action RunInstances.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*", "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region:account-id:launch-template/lt-09477bcd97b0d310e" } } } ] }

Dans cet exemple, les utilisateurs peuvent lancer des instances uniquement s’ils utilisent un modèle de lancement. La politique utilise la clé de ec2:IsLaunchTemplateResource condition pour empêcher les utilisateurs de remplacer tout élément préexistant ARNs dans le modèle de lancement.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*", "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region:account-id:launch-template/*" }, "Bool": { "ec2:IsLaunchTemplateResource": "true" } } } ] }

Dans l’exemple suivant, une politique permet aux utilisateurs de lancer des instances, mais uniquement s’ils utilisent un modèle de lancement. Les utilisateurs ne peuvent pas remplacer les paramètres du sous-réseau et de l’interface réseau dans la demande ; ceux-ci ne peuvent être spécifiés que dans le modèle de lancement. La première partie de l'instruction utilise l'NotResourceélément pour autoriser toutes les autres ressources à l'exception des sous-réseaux et des interfaces réseau. La seconde partie de la déclaration autorise les ressources des sous-réseaux et des interfaces réseau, mais uniquement si elles proviennent du modèle de lancement.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "NotResource": ["arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:network-interface/*" ], "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region:account-id:launch-template/*" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": ["arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:network-interface/*" ], "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region:account-id:launch-template/*" }, "Bool": { "ec2:IsLaunchTemplateResource": "true" } } } ] }

Dans l’exemple suivant, les utilisateurs sont autorisés à lancer des instances uniquement s’ils utilisent un modèle de lancement et seulement si celui-ci contient la balise Purpose=Webservers. Les utilisateurs ne peuvent pas remplacer les paramètres de modèle de lancement dans l’action RunInstances.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "NotResource": "arn:aws:ec2:region:account-id:launch-template/*", "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region:account-id:launch-template/*" }, "Bool": { "ec2:IsLaunchTemplateResource": "true" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region:account-id:launch-template/*", "Condition": { "StringEquals": { "aws:ResourceTag/Purpose": "Webservers" } } } ] }

Utiliser instances Spot

Vous pouvez utiliser cette RunInstances action pour créer des demandes d'instance Spot et étiqueter les demandes d'instance Spot lors de la création. La ressource à spécifier RunInstances estspot-instances-request.

La spot-instances-request ressource est évaluée dans la IAM politique comme suit :

  • Si vous ne balisez pas une demande d'instance Spot lors de la création, Amazon EC2 n'évalue pas la spot-instances-request ressource dans la RunInstances déclaration.

  • Si vous balisez une demande d'instance Spot lors de la création, Amazon EC2 évalue la spot-instances-request ressource dans le RunInstances relevé.

Par conséquent, pour la spot-instances-request ressource, les règles suivantes s'appliquent à la IAM politique :

  • Si vous avez l' RunInstances habitude de créer une demande d'instance ponctuelle et que vous n'avez pas l'intention de baliser la demande d'instance ponctuelle lors de la création, vous n'avez pas besoin d'autoriser explicitement la spot-instances-request ressource ; l'appel aboutira.

  • Si vous avez l' RunInstances habitude de créer une demande d'instance Spot et que vous avez l'intention de baliser la demande d'instance Spot lors de sa création, vous devez inclure la spot-instances-request ressource RunInstances dans l'instruction d'autorisation, sinon l'appel échouera.

  • Si vous avez l' RunInstances habitude de créer une demande d'instance Spot et que vous avez l'intention de baliser la demande d'instance Spot lors de sa création, vous devez spécifier la spot-instances-request ressource ou le * caractère générique dans CreateTags l'instruction d'autorisation, sinon l'appel échouera.

Vous pouvez demander des instances Spot en utilisant RunInstances ou RequestSpotInstances. Les exemples de IAM politiques suivants s'appliquent uniquement lorsque vous demandez des instances Spot à l'aide de RunInstances.

Exemple : demandez des instances ponctuelles en utilisant RunInstances

La politique suivante permet aux utilisateurs de demander des instances Spot en utilisant l' RunInstances action. La spot-instances-request ressource, créée par RunInstances, demande des instances Spot.

Note

À utiliser RunInstances pour créer des demandes d'instance Spot, vous pouvez omettre spot-instances-request de la Resource liste si vous n'avez pas l'intention de baliser les demandes d'instance Spot lors de la création. Cela est dû au fait qu'Amazon EC2 n'évalue pas la spot-instances-request ressource dans la RunInstances déclaration si la demande d'instance Spot n'est pas balisée lors de la création.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] } ] }
Avertissement

NOTSUPPORTED— Exemple : refuser aux utilisateurs l'autorisation de demander des instances Spot en utilisant RunInstances

La stratégie suivante n’est pas prise en charge pour la ressource spot-instances-request.

La politique suivante vise à donner aux utilisateurs l’autorisation de lancer instances à la demande, mais à refuser aux utilisateurs l’autorisation de demander instances Spot. La spot-instances-request ressource, créée par RunInstances, est la ressource qui demande les instances Spot. La deuxième déclaration vise à refuser l' RunInstances action pour la spot-instances-request ressource. Toutefois, cette condition n'est pas prise en charge car Amazon EC2 n'évalue pas la spot-instances-request ressource dans la RunInstances déclaration si la demande d'instance Spot n'est pas balisée lors de la création.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*" ] }, { "Sid": "DenySpotInstancesRequests - NOT SUPPORTED - DO NOT USE!", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*" } ] }

Exemple : étiquetez les demandes d’instance Spot lors de la création

La politique suivante permet aux utilisateurs de baliser toutes les ressources créées lors du lancement de l’instance. La première instruction permet RunInstances de créer les ressources listées. La spot-instances-request ressource, créée par RunInstances, est la ressource qui demande les instances Spot. La deuxième instruction fournit un caractère générique * pour permettre à toutes les ressources d’être balisées lorsqu’elles sont créées au lancement de l’instance.

Note

Si vous balisez une demande d'instance Spot lors de la création, Amazon EC2 évalue la spot-instances-request ressource dans le RunInstances relevé. Par conséquent, vous devez autoriser explicitement la spot-instances-request ressource pour l' RunInstances action, sinon l'appel échouera.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] }, { "Sid": "TagResources", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*" } ] }

Exemple : refuser l’étiquette lors de la création des demandes d’instance Spot

La politique suivante refuse aux utilisateurs l’autorisation de baliser les ressources créées lors du lancement de l’instance.

La première instruction permet RunInstances de créer les ressources listées. La spot-instances-request ressource, créée par RunInstances, est la ressource qui demande les instances Spot. La deuxième instruction fournit un caractère générique * pour refuser toutes les ressources en cours de balisage lorsqu’elles sont créées au lancement de l’instance. Si spot-instances-request ou toute autre ressource est étiquetée lors de la création, l' RunInstances appel échouera.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] }, { "Sid": "DenyTagResources", "Effect": "Deny", "Action": "ec2:CreateTags", "Resource": "*" } ] }
Avertissement

NOTSUPPORTED— Exemple : autoriser la création d'une demande d'instance Spot uniquement si une balise spécifique lui est attribuée

La stratégie suivante n’est pas prise en charge pour la ressource spot-instances-request.

La politique suivante vise à accorder RunInstances l'autorisation de créer une demande d'instance Spot uniquement si la demande est étiquetée avec une balise spécifique.

La première instruction permet RunInstances de créer les ressources listées.

La deuxième instruction est destinée à accorder aux utilisateurs l’autorisation de créer une demande d’instance Spot uniquement si la demande a l’étiquette environment=production. Si cette condition est appliquée à d'autres ressources créées par RunInstances, le fait de ne pas spécifier de balises entraîne une Unauthenticated erreur. Toutefois, si aucune balise n'est spécifiée pour la demande d'instance Spot, Amazon EC2 n'évalue pas la spot-instances-request ressource dans la RunInstances déclaration, ce qui entraîne la création de demandes d'instance ponctuelle non étiquetées par RunInstances.

Notez que la spécification d'une autre balise environment=production entraîne une Unauthenticated erreur, car si un utilisateur balise une demande d'instance Spot, Amazon EC2 évalue la spot-instances-request ressource dans la RunInstances déclaration.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*" ] }, { "Sid": "RequestSpotInstancesOnlyIfTagIs_environment=production - NOT SUPPORTED - DO NOT USE!", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": "production" } } }, { "Sid": "TagResources", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*" } ] }

Exemple : refuser la création d’une demande d’instance Spot si une étiquette spécifique lui est attribuée

La politique suivante refuse RunInstances l'autorisation de créer une demande d'instance Spot si la demande est étiquetée avecenvironment=production.

La première instruction permet RunInstances de créer les ressources listées.

La deuxième instruction refuse aux utilisateurs l’autorisation de créer une demande d’instance Spot si la demande a l’étiquette environment=production. La spécification environment=production en tant que balise entraîne une erreur Unauthenticated. La spécification d’autres étiquettes ou l’absence d’étiquettes entraînera la création d’une demande d’instance Spot.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] }, { "Sid": "DenySpotInstancesRequests", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": "production" } } }, { "Sid": "TagResources", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*" } ] }

Exemple : Utiliser instances réservées

La politique suivante autorise les utilisateurs à afficher, modifier et acheter les instances réservées de votre compte.

Il n’est pas possible de définir des autorisations au niveau des ressources pour les instances réservées individuelles. Cette politique signifie que les utilisateurs ont accès à toutes les instances réservées du compte.

L’élément Resource utilise un caractère générique * pour indiquer que les utilisateurs peuvent spécifier toutes les ressources avec l’action. Dans ce cas, ils peuvent afficher et modifier toutes les Instances réservées du compte. Ils peuvent aussi acheter des instances réservées à l’aide des informations d’identification du compte. Le caractère générique * est également nécessaire dans les cas où l'APIaction ne prend pas en charge les autorisations au niveau des ressources.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeReservedInstances", "ec2:ModifyReservedInstances", "ec2:PurchaseReservedInstancesOffering", "ec2:DescribeAvailabilityZones", "ec2:DescribeReservedInstancesOfferings" ], "Resource": "*" } ] }

Pour permettre aux utilisateurs d’afficher et de modifier les instances réservées de votre compte, mais pas d’acheter de nouvelles instances réservées.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeReservedInstances", "ec2:ModifyReservedInstances", "ec2:DescribeAvailabilityZones" ], "Resource": "*" } ] }

Exemple : Baliser des ressources

La stratégie suivante permet aux utilisateurs d’utiliser l’action CreateTags pour appliquer des balises à une instance uniquement si la balise contient la clé environment et la valeur production. Aucune autre identification n’est autorisée et l’utilisateur ne peut pas étiqueter d’autres types de ressources.

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

La politique suivante permet aux utilisateurs d’attribuer des balises à n’importe quelle ressource pouvant être balisée qui possède déjà une balise avec une clé de owner et une valeur du nom d’utilisateur. En outre, les utilisateurs doivent spécifier une balise avec une clé de anycompany:environment-type et une valeur test ou prod dans la demande. Les utilisateurs peuvent spécifier des balises supplémentaires dans la demande.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account-id:*/*", "Condition": { "StringEquals": { "aws:RequestTag/anycompany:environment-type": ["test","prod"], "aws:ResourceTag/owner": "${aws:username}" } } } ] }

Vous pouvez créer une IAM politique qui permet aux utilisateurs de supprimer des balises spécifiques pour une ressource. Par exemple, la stratégie suivante permet aux utilisateurs de supprimer les balises pour un volume si les clés de balise spécifiées dans la demande sont environment ou cost-center. N’importe quelle valeur peut être spécifiée pour la balise, mais la clé de balise doit correspondre à l’une des clés spécifiées.

Note

Si vous supprimez une ressource, toutes les balises associées à celle-ci sont également supprimées. Les utilisateurs n’ont pas besoin d’être autorisés à effectuer l’action ec2:DeleteTags pour supprimer une ressource comportant des balises ; ils doivent seulement être autorisés à effectuer l’action de suppression.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:DeleteTags", "Resource": "arn:aws:ec2:us-east-1:account-id:volume/*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": ["environment","cost-center"] } } } ] }

Cette politique permet aux utilisateurs de supprimer uniquement la balise environment=prod sur n’importe quelle ressource et uniquement si la ressource porte déjà une balise avec une clé de owner et une valeur du nom d’utilisateur. Les utilisateurs ne peuvent pas supprimer d’autres balises pour une ressource.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DeleteTags" ], "Resource": "arn:aws:ec2:region:account-id:*/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": "prod", "aws:ResourceTag/owner": "${aws:username}" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["environment"] } } } ] }

Exemple : Utiliser des rôles IAM

La politique suivante permet aux utilisateurs d'attacher, de remplacer et de détacher un IAM rôle aux instances dotées de cette balisedepartment=test. Le remplacement ou le détachement d'un IAM rôle nécessite un ID d'association. Par conséquent, la politique autorise également les utilisateurs à utiliser l'ec2:DescribeIamInstanceProfileAssociationsaction.

Les utilisateurs doivent être autorisés à utiliser l’action iam:PassRole pour transmettre le rôle à l’instance.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssociateIamInstanceProfile", "ec2:ReplaceIamInstanceProfileAssociation", "ec2:DisassociateIamInstanceProfile" ], "Resource": "arn:aws:ec2:us-east-1:account-id:instance/*", "Condition": { "StringEquals": { "aws:ResourceTag/department":"test" } } }, { "Effect": "Allow", "Action": "ec2:DescribeIamInstanceProfileAssociations", "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account-id:role/DevTeam*" } ] }

La politique suivante permet aux utilisateurs d'attacher ou de remplacer un IAM rôle pour n'importe quelle instance. Les utilisateurs peuvent uniquement associer ou remplacer IAM des rôles dont le nom commence parTestRole-. Pour l'iam:PassRoleaction, assurez-vous de spécifier le nom du IAM rôle et non le profil de l'instance (si les noms sont différents). Pour plus d’informations, consultez Profils d’instance.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssociateIamInstanceProfile", "ec2:ReplaceIamInstanceProfileAssociation" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ec2:DescribeIamInstanceProfileAssociations", "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account-id:role/TestRole-*" } ] }

Exemple : Utiliser des tables de routage

La politique suivante permet aux utilisateurs d'ajouter, de supprimer et de remplacer des itinéraires pour les tables de routage associées VPC vpc-ec43eb89 uniquement à. Pour spécifier un VPC pour la clé de ec2:Vpc condition, vous devez spécifier l'intégralité ARN duVPC.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DeleteRoute", "ec2:CreateRoute", "ec2:ReplaceRoute" ], "Resource": [ "arn:aws:ec2:region:account-id:route-table/*" ], "Condition": { "StringEquals": { "ec2:Vpc": "arn:aws:ec2:region:account-id:vpc/vpc-ec43eb89" } } } ] }

Exemple : autoriser une instance spécifique à afficher les ressources d'autres AWS services

Voici un exemple de politique que vous pouvez associer à un IAM rôle. La politique permet à une instance de visualiser les ressources de différents AWS services. Il utilise la clé de condition ec2:SourceInstanceARN globale pour spécifier que l'instance à partir de laquelle la demande est faite doit être une instancei-093452212644b0dd6. Si le même IAM rôle est associé à une autre instance, celle-ci ne peut effectuer aucune de ces actions.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeVolumes", "s3:ListAllMyBuckets", "dynamodb:ListTables", "rds:DescribeDBInstances" ], "Resource": [ "*" ], "Condition": { "ArnEquals": { "ec2:SourceInstanceARN": "arn:aws:ec2:region:account-id:instance/i-093452212644b0dd6" } } } ] }

Exemple : Utiliser des modèles de lancement

La stratégie suivante permet aux utilisateurs de créer une version du modèle de lancement et de modifier un modèle de lancement, mais uniquement pour un modèle spécifique (lt-09477bcd97b0d3abc). Les utilisateurs ne peuvent pas utiliser d’autres modèles de lancement.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:CreateLaunchTemplateVersion", "ec2:ModifyLaunchTemplate" ], "Effect": "Allow", "Resource": "arn:aws:ec2:region:account-id:launch-template/lt-09477bcd97b0d3abc" } ] }

La stratégie suivante permet aux utilisateurs de supprimer un modèle de lancement et une version du modèle de lancement, sous réserve que le modèle de lancement contienne la balise Purpose=Testing.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:DeleteLaunchTemplate", "ec2:DeleteLaunchTemplateVersions" ], "Effect": "Allow", "Resource": "arn:aws:ec2:region:account-id:launch-template/*", "Condition": { "StringEquals": { "aws:ResourceTag/Purpose": "Testing" } } } ] }

Utiliser des métadonnées d’instance

Les politiques suivantes garantissent que les utilisateurs ne peuvent récupérer les métadonnées des instances qu'à l'aide de la version 2 (IMDSv2) du service de métadonnées d'instance. Vous pouvez combiner les quatre politiques suivantes en une seule politique avec quatre instructions. Lorsqu'elle est combinée en une seule politique, vous pouvez utiliser la politique en tant que politique de contrôle des services (SCP). Elle peut fonctionner aussi bien comme politique de refus que vous appliquez à une IAM politique existante (suppression et limitation des autorisations existantes) SCP que comme politique appliquée globalement à un compte, à une unité organisationnelle (UO) ou à l'ensemble d'une organisation.

Note

Les politiques d'options de RunInstances métadonnées suivantes doivent être utilisées conjointement avec une politique qui donne les autorisations principales pour lancer une instance RunInstances. Si le principal ne dispose pas également d' RunInstances autorisations, il ne sera pas en mesure de lancer une instance. Pour plus d’informations, consultez les stratégies dans Utiliser des instances et Instances de lancement (RunInstances).

Important

Si vous utilisez des groupes Auto Scaling et que vous devez en exiger l'utilisation IMDSv2 sur toutes les nouvelles instances, vos groupes Auto Scaling doivent utiliser des modèles de lancement.

Lorsqu'un groupe Auto Scaling utilise un modèle de lancement, les ec2:RunInstances autorisations du IAM principal sont vérifiées lorsqu'un nouveau groupe Auto Scaling est créé. Elles sont également vérifiées lorsqu’un groupe Auto Scaling existant est mis à jour pour utiliser un nouveau modèle de lancement ou une nouvelle version d’un modèle de lancement.

Les restrictions relatives à l'utilisation de IMDSv1 on IAM principals pour ne RunInstances sont vérifiées que lorsqu'un groupe Auto Scaling utilisant un modèle de lancement est créé ou mis à jour. Pour un groupe Auto Scaling configuré pour utiliser le modèle de lancement Latest ou Default, les autorisations ne sont pas vérifiées lors de la création d’une nouvelle version du modèle de lancement. Pour que les autorisations soient vérifiées, vous devez configurer le groupe Auto Scaling pour qu’il utilise une version spécifique du modèle de lancement.

Pour imposer l'utilisation des instances IMDSv2 lancées par les groupes Auto Scaling, les étapes supplémentaires suivantes sont requises :
  1. Désactivez l'utilisation de configurations de lancement pour tous les comptes de votre organisation en utilisant des politiques de contrôle des services (SCPs) ou des limites d'IAMautorisations pour les nouveaux principaux créés. Pour les IAM directeurs existants disposant d'autorisations de groupe Auto Scaling, mettez à jour leurs politiques associées avec cette clé de condition. Pour désactiver l'utilisation des configurations de lancement, créez ou modifiez la limite d'autorisation ou la IAM politique pertinente SCP à l'aide de la clé de "autoscaling:LaunchConfigurationName" condition dont la valeur est spécifiée commenull.

  2. Pour les nouveaux modèles de lancement, configurez les options de métadonnées d’instance dans le modèle de lancement. Pour les modèles de lancement existants, créez une nouvelle version du modèle de lancement et configurez les options de métadonnées d’instance dans la nouvelle version.

  3. Dans la politique donnant à tout principal l’autorisation d’utiliser un modèle de lancement, restreignez l’association de $latest et de $default en spécifiant "autoscaling:LaunchTemplateVersionSpecified": "true". En restreignant l’utilisation à une version spécifique d’un modèle de lancement, vous pouvez vous assurer que les nouvelles instances seront lancées à l’aide de la version dans laquelle les options de métadonnées d’instance sont configurées. Pour plus d'informations, consultez LaunchTemplateSpecificationl'Amazon EC2 Auto Scaling API Reference, en particulier le Version paramètre.

  4. Pour un groupe Auto Scaling qui utilise une configuration de lancement, remplacez la configuration de lancement par un modèle de lancement. Pour plus d'informations, consultez la section Remplacer une configuration de lancement par un modèle de lancement dans le guide de l'utilisateur d'Amazon EC2 Auto Scaling.

  5. Pour un groupe Auto Scaling qui utilise un modèle de lancement, assurez-vous qu’il utilise un nouveau modèle de lancement avec les options de métadonnées d’instance configurées ou qu’il utilise une nouvelle version du modèle de lancement actuel avec les options de métadonnées d’instance configurées. Pour plus d'informations, consultez update-auto-scaling-group le manuel de référence des AWS CLI commandes.

Exigence d'utilisation d'IMDSv2

La politique suivante précise que vous ne pouvez pas appeler le RunInstances API à moins que l'instance ne soit également activée pour exiger l'utilisation de IMDSv2 (indiquée par"ec2:MetadataHttpTokens": "required"). Si vous ne spécifiez pas que l'instance l'exigeIMDSv2, une UnauthorizedOperation erreur s'affiche lorsque vous appelez le RunInstances API.

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

Refuser le désabonnement de IMDSv2

La politique suivante indique que vous ne pouvez pas appeler ModifyInstanceMetadataOptions API et autoriser l'option IMDSv1 ouIMDSv2. Si vous appelez le ModifyInstanceMetadataOptionsAPI, l'HttpTokensattribut doit être défini surrequired.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "DenyIMDSv1HttpTokensModification", "Effect": "Deny", "Action": "ec2:ModifyInstanceMetadataOptions", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringNotEquals": { "ec2:Attribute/HttpTokens": "required" }, "Null": { "ec2:Attribute/HttpTokens": false } } }] }

Spécification d’une durée de vie (hop limit) maximale

La politique suivante indique que vous ne pouvez pas appeler le RunInstances API sauf si vous spécifiez également une limite de sauts, et la limite de sauts ne peut pas être supérieure à 3. Si vous ne le faites pas, vous obtenez un UnauthorizedOperation message d'erreur lorsque vous appelez le RunInstances API.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "MaxImdsHopLimit", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "NumericGreaterThan": { "ec2:MetadataHttpPutResponseHopLimit": "3" } } } ] }

Restriction des personnes habilitées à modifier les options de métadonnées d’instance

La politique suivante permet uniquement aux utilisateurs ayant le rôle ec2-imds-admins d’apporter des modifications aux options de métadonnées de l’instance. Si un principal autre que le ec2-imds-admins rôle essaie d'appeler le ModifyInstanceMetadataOptions API, il obtiendra une UnauthorizedOperation erreur. Cette instruction peut être utilisée pour contrôler l'utilisation du ModifyInstanceMetadataOptions API ; il n'existe actuellement aucun contrôle d'accès précis (conditions) pour le. ModifyInstanceMetadataOptions API

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOnlyImdsAdminsToModifySettings", "Effect": "Deny", "Action": "ec2:ModifyInstanceMetadataOptions", "Resource": "*", "Condition": { "StringNotLike": { "aws:PrincipalARN": "arn:aws:iam::*:role/ec2-imds-admins" } } } ] }

Exiger que les informations d'identification du rôle soient extraites de IMDSv2

La politique suivante précise que si cette politique est appliquée à un rôle, que le rôle est assumé par le EC2 service et que les informations d'identification obtenues sont utilisées pour signer une demande, la demande doit être signée à l'aide des informations d'identification de EC2 rôle extraitesIMDSv2. Sinon, tous ses API appels recevront un UnauthorizedOperation message d'erreur. Cette déclaration/politique peut être appliquée de manière générale car, si la demande n'est pas signée par les informations d'identification du EC2 rôle, elle n'a aucun effet.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireAllEc2RolesToUseV2", "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "NumericLessThan": { "ec2:RoleDelivery": "2.0" } } } ] }

Travaillez avec les EBS volumes et les instantanés Amazon

Pour des exemples de politiques relatives à l'utilisation des EBS volumes et des instantanés Amazon, consultez la section Exemples de politiques basées sur l'identité pour Amazon. EBS