Exemples de politiques pour travailler avec le AWS CLI ou un AWS SDK - 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 travailler avec le AWS CLI ou un AWS SDK

Vous devez accorder aux utilisateurs les autorisations dont ils ont besoin pour Amazon EC2 à l’aide des politiques IAM. Les exemples suivants illustrent des instructions de politique que vous pouvez utiliser pour contrôler les autorisations des utilisateurs sur Amazon EC2. Ces politiques sont conçues pour les demandes effectuées avec le AWS CLI ou un AWS SDK. Pour plus d’informations, consultez Création de politiques IAM dans le Guide de l’utilisateur IAM. Pour obtenir des exemples de stratégies à utiliser sur la console Amazon EC2, consultez Exemples de politiques à utiliser sur la console Amazon EC2. Pour obtenir des exemples de stratégies IAM spécifiques à Amazon VPC, consultez Identity and Access Management pour Amazon VPC.

Dans les exemples suivants, remplacez chaque user input placeholder (espace réservé pour l’entrée utilisateur) avec vos propres informations.

Exemple : accès en lecture seule

La stratégie suivante accorde aux utilisateurs les autorisations d’utiliser toutes les actions d’API Amazon EC2 dont les noms commencent par Describe. L’élément Resource utilise un caractère générique pour indiquer que les utilisateurs peuvent spécifier toutes les ressources avec ces actions d’API. Le caractère générique * est également nécessaire dans les cas où l’action d’API ne prend pas en charge les autorisations au niveau des ressources. Pour en savoir plus sur les ARN que vous pouvez utiliser avec les actions d’API Amazon EC2, consultez la section Actions, ressources et clés de condition pour Amazon EC2.

Les utilisateurs n’ont pas l’autorisation d’effectuer la moindre action sur les ressources (à moins qu’une autre déclaration ne leur accorde l’autorisation de le faire), car, par défaut, l’autorisation d’utiliser les actions d’API leur est refusée.

{ "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 actions d’API Amazon EC2 à moins que la région soit Europe (Francfort). Elle utilise la clé de condition globale aws:RequestedRegion qui est prise en charge par toutes les actions d’API Amazon EC2.

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

Sinon, vous pouvez utiliser la clé de condition ec2:Region, qui est spécifique à Amazon EC2 et qui est prise en charge par toutes les actions d’API Amazon EC2.

{ "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 stratégie suivante autorise les utilisateurs à effectuer les actions d’API spécifiées dans l’élément Action. L’élément Resource utilise un caractère générique * pour indiquer que les utilisateurs peuvent spécifier toutes les ressources avec ces actions d’API. Le caractère générique * est également nécessaire dans les cas où l’action d’API ne prend pas en charge les autorisations au niveau des ressources. Pour en savoir plus sur les ARN que vous pouvez utiliser avec les actions d’API Amazon EC2, consultez la section Actions, ressources et clés de condition pour Amazon EC2.

Les utilisateurs n’ont pas l’autorisation d’utiliser d’autres actions d’API (à moins qu’une autre déclaration ne leur accorde l’autorisation de le faire), car, par défaut, l’autorisation d’utiliser les actions d’API leur est refusée.

{ "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’action d’API ne prend pas en charge les autorisations au niveau des ressources (dans le cas présent, ec2:DescribeInstances). Pour en savoir plus sur les ARN que vous pouvez utiliser avec les actions d’API Amazon EC2, consultez la section 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 leurs ARN dans l’élément Resource.

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'action d'RunInstancesAPI lance une ou plusieurs instances à la demande ou une ou plusieurs instances ponctuelles. RunInstancesnécessite une 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 à partir d’une AMI basée sur des volumes Amazon EBS crée un volume. Par conséquent, l’utilisateur doit être autorisé à utiliser ces ressources Amazon EC2. 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 en savoir plus sur les autorisations au niveau des ressources requises pour lancer une instance, consultez la section 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.

AMI

La stratégie suivante permet aux utilisateurs de lancer les instances en n’utilisant que les AMI spécifiés, ami-9e1670f7 et ami-45cf5c3c. Les utilisateurs ne peuvent pas lancer une instance à l’aide d’autres AMI (à moins qu’une autre déclaration n’accorde aux utilisateurs l’autorisation de le faire) ni sur un sous-réseau.

{ "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/*" ] } ] }

À titre d’autre solution, la politique suivante permet aux utilisateurs de lancer les instances à partir de toutes les AMI appartenant à Amazon, ou à certains partenaires de confiance 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 à l’aide d’autres AMI (à moins qu’une autre déclaration n’accorde aux utilisateurs l’autorisation de le faire) ni sur un sous-réseau.

{ "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’instance

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/*" ] } ] }

Volumes EBS

La politique suivante permet aux utilisateurs de lancer des instances uniquement si les volumes EBS pour l’instance sont chiffrés. L’utilisateur doit lancer une instance à partir d’une AMI qui a été créée avec des instantanés chiffrés afin de garantir le chiffrement du volume racine. 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 ressources 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" } } } ] }

GPU Elastic

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

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

{ "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 stratégie utilise la clé de condition ec2:IsLaunchTemplateResource pour empêcher les utilisateurs de remplacer les ARN préexistants 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 ressource spot-instances-request est évaluée dans la stratégie IAM 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 relevé. RunInstances

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

  • 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 politiques IAM suivants s'appliquent uniquement lorsque vous demandez des instances Spot à l'aide RunInstances de.

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

NON PRIS EN CHARGE — 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 relevé. RunInstances 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

NON PRIS EN CHARGE, exemple : autoriser la création d’une demande d’instance Spot uniquement si une étiquette 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 Spot 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 déclaration. 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/*" ] }, { "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’action d’API 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 politique IAM 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 stratégie suivante permet aux utilisateurs d’attacher, de remplacer et de détacher un rôle IAM pour les instances ayant la balise department=test. Le remplacement ou le détachement d’un rôle IAM nécessite un ID d’association. Par conséquent, la stratégie accorde également aux utilisateurs l’autorisation d’utiliser l’action ec2:DescribeIamInstanceProfileAssociations.

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, de remplacer et de détacher un rôle IAM pour une instance. Les utilisateurs ne peuvent attacher ou remplacer que des rôles IAM dont les noms commencent par TestRole-. Pour l’action iam:PassRole, veillez à indiquer le nom du rôle IAM et non celui du profil d’instance (si ces noms ne sont pas identiques). 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 stratégie suivante permet aux utilisateurs d’ajouter, de supprimer et de remplacer des routes pour les tables de routage associées au VPC vpc-ec43eb89 uniquement. Pour spécifier un VPC pour la clé de condition ec2:Vpc, vous devez spécifier l’ARN complet du VPC.

{ "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 attacher à un rôle IAM. La politique permet à une instance de visualiser les ressources de différents AWS services. Elle utilise la clé de condition ec2:SourceInstanceARN pour spécifier que l’instance dont émane la demande doit être l’instance i-093452212644b0dd6. Si le même rôle IAM est associé à une autre instance, l’autre instance ne peut effectuer aucune de ces actions.

La ec2:SourceInstanceARN clé est une clé de condition AWS globale, elle peut donc être utilisée pour d'autres actions de service, et pas uniquement pour Amazon EC2.

{ "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 stratégies suivantes garantissent que les utilisateurs peuvent uniquement récupérer les métadonnées d’instance à l’aide d’Service des métadonnées d’instance Version 2 (IMDSv2). Vous pouvez combiner les quatre politiques suivantes en une seule politique avec quatre instructions. Une fois combinée, vous pouvez l’utiliser en tant que politique de contrôle de service (SCP). Elle peut fonctionner aussi bien qu’une stratégie de refus que vous appliquez à une stratégie IAM existante (en retirant et en limitant les autorisations existantes), ou qu’une stratégie de contrôle de service appliquée globalement sur un compte, une unité organisationnelle 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 exiger l’utilisation d’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 autorisations ec2:RunInstances du principal IAM sont vérifiées lors de la création d’un nouveau groupe Auto Scaling. 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 d’IMDSv1 sur les principaux IAM pour RunInstances sont uniquement vérifiées 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 appliquer l’utilisation d’IMDSv2 sur des instances lancées par des groupes Auto Scaling, les étapes supplémentaires suivantes sont requises :
  1. Désactivez l’utilisation des configurations de lancement pour tous les comptes de votre organisation à l’aide des politiques de contrôle de service (SCP) ou des limites d’autorisations IAM pour les nouvelles entités créées. Pour les principaux IAM 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 stratégie SCP, les limites d’autorisations ou la stratégie IAM avec la clé de condition "autoscaling:LaunchConfigurationName" avec la valeur spécifiée comme null.

  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 le LaunchTemplateSpecificationmanuel 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, voir Remplacement d’une configuration de lancement par un modèle de lancement dans le Amazon EC2 Auto Scaling Guide de l’utilisateur.

  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 indique que vous ne pouvez pas appeler l' RunInstances API à moins que l'instance ne soit également activée pour exiger l'utilisation d'IMDSv2 (indiqué par"ec2:MetadataHttpTokens": "required"). Si vous ne spécifiez pas que l'instance nécessite IMDSv2, une UnauthorizedOperation erreur s'affiche lorsque vous appelez l' RunInstances API.

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

Refus de la désactivation d’IMDSv2

La politique suivante indique que vous ne pouvez pas appeler l’API ModifyInstanceMetadataOptions et autoriser l’option IMDSv1 ou IMDSv2. Si vous appelez l’API ModifyInstanceMetadataOptions, l’attribut HttpTokens doit être défini sur required.

{ "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 l' 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, une UnauthorizedOperation erreur s'affiche lorsque vous appelez l' 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 l' ModifyInstanceMetadataOptions API, il recevra une UnauthorizedOperation erreur. Cette instruction peut être utilisée pour contrôler l'utilisation de l' ModifyInstanceMetadataOptions API ; il n'existe actuellement aucun contrôle d'accès précis (conditions) pour l' 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" } } } ] }

Exigence de récupération des informations d’identification de rôle à partir d’IMDSv2

La politique suivante indique que si cette politique est appliquée à un rôle endossé par le service EC2, et que les informations d’identification obtenues sont utilisées pour signer une demande, la demande doit alors être signée par les informations d’identification de rôle EC2 extraites d’IMDSv2. Sinon, tous ses appels d’API recevront l’erreur UnauthorizedOperation. Cette instruction/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 de rôle EC2, 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 volumes et les instantanés Amazon EBS

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