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.
Exemples
- Accès en lecture seule
- Restreindre l’accès à une région spécifique
- Utiliser des instances
- Instances de lancement (RunInstances)
- Utiliser instances Spot
- Utiliser instances réservées
- Baliser des ressources
- Utiliser les rôles IAM
- Utiliser des tables de routage
- Autoriser une instance spécifique à afficher les ressources d'autres AWS services
- Utiliser des modèles de lancement
- Utiliser des métadonnées d’instance
- Travaillez avec les volumes et les instantanés Amazon EBS
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
Exemples
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. RunInstances
né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.
Ressources
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-
. 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).12345678
{ "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-
est spécifié. Ce refus se substitue à toute autre politique créée pour autoriser le lancement d’instances sur d’autres sous-réseaux.12345678
{ "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-
). Les utilisateurs ne peuvent pas utiliser d’autres modèles de lancement.09477bcd97b0d3abc
{ "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 :
-
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 commenull
. -
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.
-
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 leVersion
paramètre. -
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.
-
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.
Exemples
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.