Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Exemples de politiques pour contrôler l'accès à Amazon EC2 API
Vous pouvez utiliser IAM des politiques pour accorder aux utilisateurs les autorisations nécessaires pour travailler avec AmazonEC2. Pour obtenir des step-by-step instructions, reportez-vous à la section Création IAM de politiques dans le guide de IAM l'utilisateur.
Les exemples suivants présentent des déclarations de politique que vous pouvez utiliser pour accorder aux utilisateurs l'autorisation d'utiliser AmazonEC2. Ces politiques sont conçues pour les demandes effectuées à l'aide du AWS CLI ou d'un AWS SDK. Dans les exemples suivants, remplacez chaque user input placeholder
avec vos propres informations.
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 EBS volumes et les instantanés Amazon
Pour des exemples de politiques relatives au travail dans la EC2 console Amazon, consultezExemples de politiques pour contrôler l'accès à la EC2 console Amazon.
Exemple : accès en lecture seule
La politique suivante autorise les utilisateurs à utiliser toutes les EC2 API actions Amazon dont le nom commence parDescribe
. L'Resource
élément utilise un caractère générique pour indiquer que les utilisateurs peuvent spécifier toutes les ressources à l'aide de ces API actions. Le caractère générique * est également nécessaire dans les cas où l'APIaction ne prend pas en charge les autorisations au niveau des ressources. Pour plus d'informations sur les actions ARNs que vous pouvez utiliser avec quelles EC2 API actions Amazon, consultez Actions, ressources et clés de condition pour Amazon EC2.
Les utilisateurs ne sont pas autorisés à effectuer des actions sur les ressources (sauf si une autre déclaration les autorise à le faire) car l'autorisation d'utiliser des API actions leur est refusée par défaut.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" } ] }
Exemple : Restreindre l’accès à une région spécifique
La politique suivante refuse aux utilisateurs l'autorisation d'utiliser toutes les EC2 API actions Amazon, sauf si la région est l'Europe (Francfort). Il utilise la clé de condition globaleaws:RequestedRegion
, qui est prise en charge par toutes les EC2 API actions Amazon.
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:RequestedRegion": "eu-central-1" } } } ] }
Vous pouvez également utiliser la clé de conditionec2:Region
, qui est spécifique à Amazon EC2 et est prise en charge par toutes les EC2 API actions Amazon.
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:*", "Resource": "*", "Condition": { "StringNotEquals": { "ec2:Region": "eu-central-1" } } } ] }
Utiliser des instances
Exemples
Exemple : Décrire, lancer, arrêter, démarrer et résilier toutes les instances
La politique suivante autorise les utilisateurs à utiliser les API actions spécifiées dans l'Action
élément. L'Resource
élément utilise un caractère générique * pour indiquer que les utilisateurs peuvent spécifier toutes les ressources à l'aide de ces API actions. Le caractère générique * est également nécessaire dans les cas où l'APIaction ne prend pas en charge les autorisations au niveau des ressources. Pour plus d'informations sur les actions ARNs que vous pouvez utiliser avec quelles EC2 API actions Amazon, consultez Actions, ressources et clés de condition pour Amazon EC2.
Les utilisateurs ne sont pas autorisés à utiliser d'autres API actions (sauf si une autre instruction les autorise à le faire) car les utilisateurs se voient refuser l'autorisation d'utiliser API des actions par défaut.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeImages", "ec2:DescribeKeyPairs", "ec2:DescribeSecurityGroups", "ec2:DescribeAvailabilityZones", "ec2:RunInstances", "ec2:TerminateInstances", "ec2:StopInstances", "ec2:StartInstances" ], "Resource": "*" } ] }
Exemple : Décrire toutes les instances, et arrêter, démarrer et résilier uniquement des instances particulières
La stratégie suivante autorise les utilisateurs à décrire toutes les instances, à démarrer et à arrêter uniquement les instances i-1234567890abcdef0 et i-0598c7d356eba48d7, et à ne terminer que les instances de la région Région USA Est (Virginie du N.) (us-east-1
) avec la balise de ressource "purpose=test
".
La première déclaration utilise un caractère générique * pour l’élément Resource
de façon à indiquer que les utilisateurs peuvent spécifier toutes les ressources avec l’action ; dans le cas présent, ils peuvent afficher toutes les instances. Le caractère générique * est également nécessaire dans les cas où l'APIaction ne prend pas en charge les autorisations au niveau des ressources (dans ce cas,). ec2:DescribeInstances
Pour plus d'informations sur les actions ARNs que vous pouvez utiliser avec quelles EC2 API actions Amazon, consultez Actions, ressources et clés de condition pour Amazon EC2.
La deuxième déclaration utilise des permissions au niveau des ressources pour les actions StopInstances
et StartInstances
. Les instances spécifiques sont indiquées par leur présence ARNs dans l'Resource
élément.
La troisième déclaration permet aux utilisateurs de résilier toutes les instances de la région USA Est (Virginie du Nordus-east-1
) () qui appartiennent au AWS compte spécifié, mais uniquement lorsque l'instance possède le tag"purpose=test"
. L’élément Condition
stipule quand la déclaration de stratégie est en vigueur.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:StopInstances", "ec2:StartInstances" ], "Resource": [ "arn:aws:ec2:us-east-1:
account-id
:instance/i-1234567890abcdef0", "arn:aws:ec2:us-east-1:account-id
:instance/i-0598c7d356eba48d7" ] }, { "Effect": "Allow", "Action": "ec2:TerminateInstances", "Resource": "arn:aws:ec2:us-east-1:account-id
:instance/*", "Condition": { "StringEquals": { "aws:ResourceTag/purpose": "test" } } } ] }
Instances de lancement (RunInstances)
L'RunInstancesAPIaction lance une ou plusieurs instances à la demande ou une ou plusieurs instances ponctuelles. RunInstances
nécessite une instance AMI et crée une instance. Les utilisateurs peuvent spécifier une paire de clés et un groupe de sécurité dans la demande. Le lancement dans un VPC nécessite un sous-réseau et crée une interface réseau. Le lancement depuis un site EBS soutenu par Amazon AMI crée un volume. Par conséquent, l'utilisateur doit être autorisé à utiliser ces EC2 ressources Amazon. Vous pouvez créer une déclaration de stratégie qui requiert que les utilisateurs spécifient un paramètre facultatif sur RunInstances
, ou limitent les utilisateurs à certaines valeurs pour tel ou tel paramètre.
Pour plus d'informations sur les autorisations au niveau des ressources requises pour lancer une instance, consultez Actions, ressources et clés de condition pour Amazon. EC2
Par défaut, les utilisateurs ne sont pas autorisés à décrire, démarrer, arrêter ni résilier les instances obtenues. Une solution pour accorder aux utilisateurs l’autorisation de gérer les instances obtenues consiste à créer une balise spécifique pour chaque instance, puis à créer une déclaration qui leur permet de gérer les instances avec cette balise. Pour plus d’informations, consultez Utiliser des instances.
Ressources
AMIs
La politique suivante permet aux utilisateurs de lancer des instances en utilisant uniquement les paramètres spécifiésAMIs, ami-9e1670f7
etami-45cf5c3c
. Les utilisateurs ne peuvent pas lancer une instance en utilisant un autre AMIs (sauf si une autre instruction les autorise à le faire).
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:
region
::image/ami-9e1670f7", "arn:aws:ec2:region
::image/ami-45cf5c3c", "arn:aws:ec2:region
:account-id
:instance/*", "arn:aws:ec2:region
:account-id
:volume/*", "arn:aws:ec2:region
:account-id
:key-pair/*", "arn:aws:ec2:region
:account-id
:security-group/*", "arn:aws:ec2:region
:account-id
:subnet/*", "arn:aws:ec2:region
:account-id
:network-interface/*" ] } ] }
La politique suivante permet également aux utilisateurs de lancer des instances provenant de toutes les instances AMIs détenues par Amazon ou par certains partenaires fiables et vérifiés. L’élément Condition
de la première déclaration+ teste si ec2:Owner
est amazon
. Les utilisateurs ne peuvent pas lancer une instance en utilisant un autre AMIs (sauf si une autre instruction les autorise à le faire).
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:
region
::image/ami-*" ], "Condition": { "StringEquals": { "ec2:Owner": "amazon" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region
:account-id
:instance/*", "arn:aws:ec2:region
:account-id
:subnet/*", "arn:aws:ec2:region
:account-id
:volume/*", "arn:aws:ec2:region
:account-id
:network-interface/*", "arn:aws:ec2:region
:account-id
:key-pair/*", "arn:aws:ec2:region
:account-id
:security-group/*" ] } ] }
Types d’instances
La stratégie suivante permet aux utilisateurs de lancer des instances uniquement à l’aide du type d’instance t2.micro
ou t2.small
, ce que vous pourriez faire pour contrôler les coûts. Les utilisateurs ne peuvent pas lancer d’instances plus grandes parce que l’élément Condition
de la première déclaration teste si ec2:InstanceType
est t2.micro
ou t2.small
.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:
region
:account-id
:instance/*" ], "Condition": { "StringEquals": { "ec2:InstanceType": ["t2.micro", "t2.small"] } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region
::image/ami-*", "arn:aws:ec2:region
:account-id
:subnet/*", "arn:aws:ec2:region
:account-id
:network-interface/*", "arn:aws:ec2:region
:account-id
:volume/*", "arn:aws:ec2:region
:account-id
:key-pair/*", "arn:aws:ec2:region
:account-id
:security-group/*" ] } ] }
Vous pouvez également créer une stratégie qui refuse aux utilisateurs l’autorisation de lancer des instances, à l’exception des types d’instance t2.micro
et t2.small
.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:
region
:account-id
:instance/*" ], "Condition": { "StringNotEquals": { "ec2:InstanceType": ["t2.micro", "t2.small"] } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region
::image/ami-*", "arn:aws:ec2:region
:account-id
:network-interface/*", "arn:aws:ec2:region
:account-id
:instance/*", "arn:aws:ec2:region
:account-id
:subnet/*", "arn:aws:ec2:region
:account-id
:volume/*", "arn:aws:ec2:region
:account-id
:key-pair/*", "arn:aws:ec2:region
:account-id
:security-group/*" ] } ] }
Sous-réseaux
La stratégie suivante permet aux utilisateurs de lancer les instances en n’utilisant que le sous-réseau spécifié, subnet-
. 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/*" ] } ] }
EBSVolumes
La politique suivante permet aux utilisateurs de lancer des instances uniquement si les EBS volumes de l'instance sont chiffrés. L'utilisateur doit lancer une instance à partir d'une AMI instance créée avec des instantanés chiffrés, afin de s'assurer que le volume racine est chiffré. N’importe quel volume supplémentaire que l’utilisateur attache à l’instance pendant le lancement doit aussi être chiffré.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*:*:volume/*" ], "Condition": { "Bool": { "ec2:Encrypted": "true" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*::image/ami-*", "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:key-pair/*", "arn:aws:ec2:*:*:security-group/*" ] } ] }
Balises
Baliser les instances lors de la création
La politique suivante permet aux utilisateurs de lancer des instances et d’attribuer des balises aux instances lors de la création. Pour les actions de création de ressources qui appliquent des balises, les utilisateurs doivent être autorisés à effectuer l’action CreateTags
. La deuxième déclaration utilise la clé de condition ec2:CreateAction
pour permettre aux utilisateurs de créer des balises uniquement dans le cadre de RunInstances
et uniquement pour des instances. Les utilisateurs ne peuvent pas attribuer de balises aux ressources existantes, et ils ne peuvent pas attribuer de balises aux volumes à l’aide de la demande RunInstances
.
Pour plus d’informations, consultez Accorder l'autorisation de baliser les EC2 ressources Amazon lors de la création.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:us-east-1:
account-id
:instance/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "RunInstances" } } } ] }
Baliser des instances et des volumes lors de la création avec des balises spécifiques
La stratégie suivante inclut la clé de condition aws:RequestTag
qui exige aux utilisateurs d’attribuer des balises aux instances et aux volumes créés par RunInstances
avec les balises environment=production
et purpose=webserver
. Si les utilisateurs ne transmettent pas ces balises spécifiques ou s’ils ne spécifient pas du tout de balises, la demande échoue.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:
region
::image/*", "arn:aws:ec2:region
:account-id
:subnet/*", "arn:aws:ec2:region
:account-id
:network-interface/*", "arn:aws:ec2:region
:account-id
:security-group/*", "arn:aws:ec2:region
:account-id
:key-pair/*" ] }, { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:region
:account-id
:volume/*", "arn:aws:ec2:region
:account-id
:instance/*" ], "Condition": { "StringEquals": { "aws:RequestTag/environment": "production" , "aws:RequestTag/purpose": "webserver" } } }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region
:account-id
:*/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "RunInstances" } } } ] }
Baliser des instances et des volumes lors de la création avec au moins une balise spécifique
La stratégie suivante utilise le modificateur ForAnyValue
sur la condition aws:TagKeys
pour indiquer qu’au moins une balise doit être spécifiée dans la demande, et elle doit comporter la clé environment
ou webserver
. La balise doit être appliquée à la fois aux instances et aux volumes. Toutes les valeurs de balise peuvent être spécifiées dans la demande.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:
region
::image/*", "arn:aws:ec2:region
:account-id
:subnet/*", "arn:aws:ec2:region
:account-id
:network-interface/*", "arn:aws:ec2:region
:account-id
:security-group/*", "arn:aws:ec2:region
:account-id
:key-pair/*" ] }, { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:region
:account-id
:volume/*", "arn:aws:ec2:region
:account-id
:instance/*" ], "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": ["environment","webserver"] } } }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region
:account-id
:*/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "RunInstances" } } } ] }
Si les instances sont balisées lors de la création, elles doivent être balisées avec une balise spécifique
Dans la stratégie suivante, les utilisateurs ne doivent pas spécifier les balises dans la demande, mais s’ils le font, la balise doit être purpose=test
. Aucune autre balise n’est autorisée. Les utilisateurs peuvent appliquer des balises à n’importe quelle ressource pouvant être balisée dans la demande RunInstances
.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:
region
:account-id
:*/*", "Condition": { "StringEquals": { "aws:RequestTag/purpose": "test", "ec2:CreateAction" : "RunInstances" }, "ForAllValues:StringEquals": { "aws:TagKeys": "purpose" } } } ] }
Pour interdire à toute personne appelée tag sur Create for RunInstances
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] }, { "Sid": "VisualEditor0", "Effect": "Deny", "Action": "ec2:CreateTags", "Resource": "*" } ] }
N'autoriser que des balises spécifiques pour spot-instances-request. Incohérence surprise numéro 2 entre en jeu ici. Dans des circonstances normales, si vous ne spécifiez aucune balise, vous n’êtes pas authentifié. Dans ce cas spot-instances-request, cette politique ne sera pas évaluée s'il n'y a pas de spot-instances-request balises, de sorte qu'une demande Spot on Run sans étiquette sera acceptée.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", ] }, { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": "production" } } } ] }
Balises dans un modèle de lancement
Dans l’exemple suivant, les utilisateurs peuvent lancer des instances, mais uniquement s’ils utilisent un modèle de lancement spécifique (lt-09477bcd97b0d310e
). La clé de condition ec2:IsLaunchTemplateResource
empêche les utilisateurs de remplacer les ressources spécifiées dans le modèle de lancement. La seconde partie de la déclaration permet aux utilisateurs de baliser les instances à la création. Cette partie de la déclaration est nécessaire si des balises sont spécifiées pour l’instance dans le modèle de lancement.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*", "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:
region
:account-id
:launch-template/lt-09477bcd97b0d310e" }, "Bool": { "ec2:IsLaunchTemplateResource": "true" } } }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region
:account-id
:instance/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "RunInstances" } } } ] }
Élastique GPUs
Dans la politique suivante, les utilisateurs peuvent lancer une instance et spécifier un élastique GPU à attacher à l'instance. Les utilisateurs peuvent lancer des instances dans n'importe quelle région, mais ils ne peuvent attacher un élastique que GPU lors d'un lancement dans la us-east-2
région.
La clé de ec2:ElasticGpuType
condition garantit que les instances utilisent le type eg1.medium
ou le GPU type eg1.large
élastique.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:*:
account-id
:elastic-gpu/*" ], "Condition": { "StringEquals": { "ec2:Region": "us-east-2", "ec2:ElasticGpuType": [ "eg1.medium", "eg1.large" ] } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*::image/ami-*", "arn:aws:ec2:*:account-id
:network-interface/*", "arn:aws:ec2:*:account-id
:instance/*", "arn:aws:ec2:*:account-id
:subnet/*", "arn:aws:ec2:*:account-id
:volume/*", "arn:aws:ec2:*:account-id
:key-pair/*", "arn:aws:ec2:*:account-id
:security-group/*" ] } ] }
Modèles de lancement
Dans l’exemple suivant, les utilisateurs peuvent lancer des instances, mais uniquement s’ils utilisent un modèle de lancement spécifique (lt-09477bcd97b0d310e
). Les utilisateurs peuvent remplacer des paramètres dans le modèle de lancement en spécifiant dans l’action RunInstances
.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*", "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:
region
:account-id
:launch-template/lt-09477bcd97b0d310e" } } } ] }
Dans cet exemple, les utilisateurs peuvent lancer des instances uniquement s’ils utilisent un modèle de lancement. La politique utilise la clé de ec2:IsLaunchTemplateResource
condition pour empêcher les utilisateurs de remplacer tout élément préexistant ARNs dans le modèle de lancement.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*", "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:
region
:account-id
:launch-template/*" }, "Bool": { "ec2:IsLaunchTemplateResource": "true" } } } ] }
Dans l’exemple suivant, une politique permet aux utilisateurs de lancer des instances, mais uniquement s’ils utilisent un modèle de lancement. Les utilisateurs ne peuvent pas remplacer les paramètres du sous-réseau et de l’interface réseau dans la demande ; ceux-ci ne peuvent être spécifiés que dans le modèle de lancement. La première partie de l'instruction utilise l'NotResourceélément pour autoriser toutes les autres ressources à l'exception des sous-réseaux et des interfaces réseau. La seconde partie de la déclaration autorise les ressources des sous-réseaux et des interfaces réseau, mais uniquement si elles proviennent du modèle de lancement.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "NotResource": ["arn:aws:ec2:
region
:account-id
:subnet/*", "arn:aws:ec2:region
:account-id
:network-interface/*" ], "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region
:account-id
:launch-template/*" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": ["arn:aws:ec2:region
:account-id
:subnet/*", "arn:aws:ec2:region
:account-id
:network-interface/*" ], "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region
:account-id
:launch-template/*" }, "Bool": { "ec2:IsLaunchTemplateResource": "true" } } } ] }
Dans l’exemple suivant, les utilisateurs sont autorisés à lancer des instances uniquement s’ils utilisent un modèle de lancement et seulement si celui-ci contient la balise Purpose=Webservers
. Les utilisateurs ne peuvent pas remplacer les paramètres de modèle de lancement dans l’action RunInstances
.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "NotResource": "arn:aws:ec2:
region
:account-id
:launch-template/*", "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region
:account-id
:launch-template/*" }, "Bool": { "ec2:IsLaunchTemplateResource": "true" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region
:account-id
:launch-template/*", "Condition": { "StringEquals": { "aws:ResourceTag/Purpose": "Webservers" } } } ] }
Utiliser instances Spot
Vous pouvez utiliser cette RunInstances action pour créer des demandes d'instance Spot et étiqueter les demandes d'instance Spot lors de la création. La ressource à spécifier RunInstances estspot-instances-request
.
La spot-instances-request
ressource est évaluée dans la IAM politique comme suit :
-
Si vous ne balisez pas une demande d'instance Spot lors de la création, Amazon EC2 n'évalue pas la
spot-instances-request
ressource dans la RunInstances déclaration. -
Si vous balisez une demande d'instance Spot lors de la création, Amazon EC2 évalue la
spot-instances-request
ressource dans le RunInstances relevé.
Par conséquent, pour la spot-instances-request
ressource, les règles suivantes s'appliquent à la IAM politique :
-
Si vous avez l' RunInstances habitude de créer une demande d'instance ponctuelle et que vous n'avez pas l'intention de baliser la demande d'instance ponctuelle lors de la création, vous n'avez pas besoin d'autoriser explicitement la
spot-instances-request
ressource ; l'appel aboutira. -
Si vous avez l' RunInstances habitude de créer une demande d'instance Spot et que vous avez l'intention de baliser la demande d'instance Spot lors de sa création, vous devez inclure la
spot-instances-request
ressource RunInstances dans l'instruction d'autorisation, sinon l'appel échouera. -
Si vous avez l' RunInstances habitude de créer une demande d'instance Spot et que vous avez l'intention de baliser la demande d'instance Spot lors de sa création, vous devez spécifier la
spot-instances-request
ressource ou le*
caractère générique dans CreateTags l'instruction d'autorisation, sinon l'appel échouera.
Vous pouvez demander des instances Spot en utilisant RunInstances ou RequestSpotInstances. Les exemples de IAM politiques suivants s'appliquent uniquement lorsque vous demandez des instances Spot à l'aide de RunInstances.
Exemple : demandez des instances ponctuelles en utilisant RunInstances
La politique suivante permet aux utilisateurs de demander des instances Spot en utilisant l' RunInstances action. La spot-instances-request
ressource, créée par RunInstances, demande des instances Spot.
Note
À utiliser RunInstances pour créer des demandes d'instance Spot, vous pouvez omettre spot-instances-request
de la Resource
liste si vous n'avez pas l'intention de baliser les demandes d'instance Spot lors de la création. Cela est dû au fait qu'Amazon EC2 n'évalue pas la spot-instances-request
ressource dans la RunInstances déclaration si la demande d'instance Spot n'est pas balisée lors de la création.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] } ] }
Avertissement
NOTSUPPORTED— Exemple : refuser aux utilisateurs l'autorisation de demander des instances Spot en utilisant RunInstances
La stratégie suivante n’est pas prise en charge pour la ressource spot-instances-request
.
La politique suivante vise à donner aux utilisateurs l’autorisation de lancer instances à la demande, mais à refuser aux utilisateurs l’autorisation de demander instances Spot. La spot-instances-request
ressource, créée par RunInstances, est la ressource qui demande les instances Spot. La deuxième déclaration vise à refuser l' RunInstances action pour la spot-instances-request
ressource. Toutefois, cette condition n'est pas prise en charge car Amazon EC2 n'évalue pas la spot-instances-request
ressource dans la RunInstances déclaration si la demande d'instance Spot n'est pas balisée lors de la création.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowRun",
"Effect": "Allow",
"Action": [
"ec2:RunInstances"
],
"Resource": [
"arn:aws:ec2:us-east-1::image/*",
"arn:aws:ec2:us-east-1:*:subnet/*",
"arn:aws:ec2:us-east-1:*:network-interface/*",
"arn:aws:ec2:us-east-1:*:security-group/*",
"arn:aws:ec2:us-east-1:*:key-pair/*",
"arn:aws:ec2:us-east-1:*:volume/*",
"arn:aws:ec2:us-east-1:*:instance/*"
]
},
{
"Sid": "DenySpotInstancesRequests - NOT SUPPORTED - DO NOT USE!",
"Effect": "Deny",
"Action": "ec2:RunInstances",
"Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*"
}
]
}
Exemple : étiquetez les demandes d’instance Spot lors de la création
La politique suivante permet aux utilisateurs de baliser toutes les ressources créées lors du lancement de l’instance. La première instruction permet RunInstances de créer les ressources listées. La spot-instances-request
ressource, créée par RunInstances, est la ressource qui demande les instances Spot. La deuxième instruction fournit un caractère générique *
pour permettre à toutes les ressources d’être balisées lorsqu’elles sont créées au lancement de l’instance.
Note
Si vous balisez une demande d'instance Spot lors de la création, Amazon EC2 évalue la spot-instances-request
ressource dans le RunInstances relevé. Par conséquent, vous devez autoriser explicitement la spot-instances-request
ressource pour l' RunInstances action, sinon l'appel échouera.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] }, { "Sid": "TagResources", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*" } ] }
Exemple : refuser l’étiquette lors de la création des demandes d’instance Spot
La politique suivante refuse aux utilisateurs l’autorisation de baliser les ressources créées lors du lancement de l’instance.
La première instruction permet RunInstances de créer les ressources listées. La spot-instances-request
ressource, créée par RunInstances, est la ressource qui demande les instances Spot. La deuxième instruction fournit un caractère générique *
pour refuser toutes les ressources en cours de balisage lorsqu’elles sont créées au lancement de l’instance. Si spot-instances-request
ou toute autre ressource est étiquetée lors de la création, l' RunInstances appel échouera.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] }, { "Sid": "DenyTagResources", "Effect": "Deny", "Action": "ec2:CreateTags", "Resource": "*" } ] }
Avertissement
NOTSUPPORTED— Exemple : autoriser la création d'une demande d'instance Spot uniquement si une balise spécifique lui est attribuée
La stratégie suivante n’est pas prise en charge pour la ressource spot-instances-request
.
La politique suivante vise à accorder RunInstances l'autorisation de créer une demande d'instance Spot uniquement si la demande est étiquetée avec une balise spécifique.
La première instruction permet RunInstances de créer les ressources listées.
La deuxième instruction est destinée à accorder aux utilisateurs l’autorisation de créer une demande d’instance Spot uniquement si la demande a l’étiquette environment=production
. Si cette condition est appliquée à d'autres ressources créées par RunInstances, le fait de ne pas spécifier de balises entraîne une Unauthenticated
erreur. Toutefois, si aucune balise n'est spécifiée pour la demande d'instance Spot, Amazon EC2 n'évalue pas la spot-instances-request
ressource dans la RunInstances déclaration, ce qui entraîne la création de demandes d'instance ponctuelle non étiquetées par RunInstances.
Notez que la spécification d'une autre balise environment=production
entraîne une Unauthenticated
erreur, car si un utilisateur balise une demande d'instance Spot, Amazon EC2 évalue la spot-instances-request
ressource dans la RunInstances déclaration.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowRun",
"Effect": "Allow",
"Action": [
"ec2:RunInstances"
],
"Resource": [
"arn:aws:ec2:us-east-1::image/*",
"arn:aws:ec2:us-east-1:*:subnet/*",
"arn:aws:ec2:us-east-1:*:network-interface/*",
"arn:aws:ec2:us-east-1:*:security-group/*",
"arn:aws:ec2:us-east-1:*:key-pair/*",
"arn:aws:ec2:us-east-1:*:volume/*",
"arn:aws:ec2:us-east-1:*:instance/*"
]
},
{
"Sid": "RequestSpotInstancesOnlyIfTagIs_environment=production - NOT SUPPORTED - DO NOT USE!",
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*",
"Condition": {
"StringEquals": {
"aws:RequestTag/environment": "production"
}
}
},
{
"Sid": "TagResources",
"Effect": "Allow",
"Action": "ec2:CreateTags",
"Resource": "*"
}
]
}
Exemple : refuser la création d’une demande d’instance Spot si une étiquette spécifique lui est attribuée
La politique suivante refuse RunInstances l'autorisation de créer une demande d'instance Spot si la demande est étiquetée avecenvironment=production
.
La première instruction permet RunInstances de créer les ressources listées.
La deuxième instruction refuse aux utilisateurs l’autorisation de créer une demande d’instance Spot si la demande a l’étiquette environment=production
. La spécification environment=production
en tant que balise entraîne une erreur Unauthenticated
. La spécification d’autres étiquettes ou l’absence d’étiquettes entraînera la création d’une demande d’instance Spot.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] }, { "Sid": "DenySpotInstancesRequests", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": "production" } } }, { "Sid": "TagResources", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*" } ] }
Exemple : Utiliser instances réservées
La politique suivante autorise les utilisateurs à afficher, modifier et acheter les instances réservées de votre compte.
Il n’est pas possible de définir des autorisations au niveau des ressources pour les instances réservées individuelles. Cette politique signifie que les utilisateurs ont accès à toutes les instances réservées du compte.
L’élément Resource
utilise un caractère générique * pour indiquer que les utilisateurs peuvent spécifier toutes les ressources avec l’action. Dans ce cas, ils peuvent afficher et modifier toutes les Instances réservées du compte. Ils peuvent aussi acheter des instances réservées à l’aide des informations d’identification du compte. Le caractère générique * est également nécessaire dans les cas où l'APIaction ne prend pas en charge les autorisations au niveau des ressources.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeReservedInstances", "ec2:ModifyReservedInstances", "ec2:PurchaseReservedInstancesOffering", "ec2:DescribeAvailabilityZones", "ec2:DescribeReservedInstancesOfferings" ], "Resource": "*" } ] }
Pour permettre aux utilisateurs d’afficher et de modifier les instances réservées de votre compte, mais pas d’acheter de nouvelles instances réservées.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeReservedInstances", "ec2:ModifyReservedInstances", "ec2:DescribeAvailabilityZones" ], "Resource": "*" } ] }
Exemple : Baliser des ressources
La stratégie suivante permet aux utilisateurs d’utiliser l’action CreateTags
pour appliquer des balises à une instance uniquement si la balise contient la clé environment
et la valeur production
. Aucune autre identification n’est autorisée et l’utilisateur ne peut pas étiqueter d’autres types de ressources.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:
region
:account-id
:instance/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": "production" } } } ] }
La politique suivante permet aux utilisateurs d’attribuer des balises à n’importe quelle ressource pouvant être balisée qui possède déjà une balise avec une clé de owner
et une valeur du nom d’utilisateur. En outre, les utilisateurs doivent spécifier une balise avec une clé de anycompany:environment-type
et une valeur test
ou prod
dans la demande. Les utilisateurs peuvent spécifier des balises supplémentaires dans la demande.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:
region
:account-id
:*/*", "Condition": { "StringEquals": { "aws:RequestTag/anycompany:environment-type": ["test","prod"], "aws:ResourceTag/owner": "${aws:username}" } } } ] }
Vous pouvez créer une IAM politique qui permet aux utilisateurs de supprimer des balises spécifiques pour une ressource. Par exemple, la stratégie suivante permet aux utilisateurs de supprimer les balises pour un volume si les clés de balise spécifiées dans la demande sont environment
ou cost-center
. N’importe quelle valeur peut être spécifiée pour la balise, mais la clé de balise doit correspondre à l’une des clés spécifiées.
Note
Si vous supprimez une ressource, toutes les balises associées à celle-ci sont également supprimées. Les utilisateurs n’ont pas besoin d’être autorisés à effectuer l’action ec2:DeleteTags
pour supprimer une ressource comportant des balises ; ils doivent seulement être autorisés à effectuer l’action de suppression.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:DeleteTags", "Resource": "arn:aws:ec2:us-east-1:
account-id
:volume/*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": ["environment","cost-center"] } } } ] }
Cette politique permet aux utilisateurs de supprimer uniquement la balise environment=prod
sur n’importe quelle ressource et uniquement si la ressource porte déjà une balise avec une clé de owner
et une valeur du nom d’utilisateur. Les utilisateurs ne peuvent pas supprimer d’autres balises pour une ressource.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DeleteTags" ], "Resource": "arn:aws:ec2:
region
:account-id
:*/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": "prod", "aws:ResourceTag/owner": "${aws:username}" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["environment"] } } } ] }
Exemple : Utiliser des rôles IAM
La politique suivante permet aux utilisateurs d'attacher, de remplacer et de détacher un IAM rôle aux instances dotées de cette balisedepartment=test
. Le remplacement ou le détachement d'un IAM rôle nécessite un ID d'association. Par conséquent, la politique autorise également les utilisateurs à utiliser l'ec2:DescribeIamInstanceProfileAssociations
action.
Les utilisateurs doivent être autorisés à utiliser l’action iam:PassRole
pour transmettre le rôle à l’instance.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssociateIamInstanceProfile", "ec2:ReplaceIamInstanceProfileAssociation", "ec2:DisassociateIamInstanceProfile" ], "Resource": "arn:aws:ec2:us-east-1:
account-id
:instance/*", "Condition": { "StringEquals": { "aws:ResourceTag/department":"test" } } }, { "Effect": "Allow", "Action": "ec2:DescribeIamInstanceProfileAssociations", "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account-id
:role/DevTeam*" } ] }
La politique suivante permet aux utilisateurs d'attacher ou de remplacer un IAM rôle pour n'importe quelle instance. Les utilisateurs peuvent uniquement associer ou remplacer IAM des rôles dont le nom commence parTestRole-
. Pour l'iam:PassRole
action, assurez-vous de spécifier le nom du IAM rôle et non le profil de l'instance (si les noms sont différents). Pour plus d’informations, consultez Profils d’instance.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssociateIamInstanceProfile", "ec2:ReplaceIamInstanceProfileAssociation" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ec2:DescribeIamInstanceProfileAssociations", "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::
account-id
:role/TestRole-*" } ] }
Exemple : Utiliser des tables de routage
La politique suivante permet aux utilisateurs d'ajouter, de supprimer et de remplacer des itinéraires pour les tables de routage associées VPC vpc-ec43eb89
uniquement à. Pour spécifier un VPC pour la clé de ec2:Vpc
condition, vous devez spécifier l'intégralité ARN duVPC.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DeleteRoute", "ec2:CreateRoute", "ec2:ReplaceRoute" ], "Resource": [ "arn:aws:ec2:
region
:account-id
:route-table/*" ], "Condition": { "StringEquals": { "ec2:Vpc": "arn:aws:ec2:region
:account-id
:vpc/vpc-ec43eb89" } } } ] }
Exemple : autoriser une instance spécifique à afficher les ressources d'autres AWS services
Voici un exemple de politique que vous pouvez associer à un IAM rôle. La politique permet à une instance de visualiser les ressources de différents AWS services. Il utilise la clé de condition ec2:SourceInstanceARN
globale pour spécifier que l'instance à partir de laquelle la demande est faite doit être une instancei-093452212644b0dd6
. Si le même IAM rôle est associé à une autre instance, celle-ci ne peut effectuer aucune de ces actions.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeVolumes", "s3:ListAllMyBuckets", "dynamodb:ListTables", "rds:DescribeDBInstances" ], "Resource": [ "*" ], "Condition": { "ArnEquals": { "ec2:SourceInstanceARN": "arn:aws:ec2:
region
:account-id
:instance/i-093452212644b0dd6" } } } ] }
Exemple : Utiliser des modèles de lancement
La stratégie suivante permet aux utilisateurs de créer une version du modèle de lancement et de modifier un modèle de lancement, mais uniquement pour un modèle spécifique (lt-
). 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 politiques suivantes garantissent que les utilisateurs ne peuvent récupérer les métadonnées des instances qu'à l'aide de la version 2 (IMDSv2) du service de métadonnées d'instance. Vous pouvez combiner les quatre politiques suivantes en une seule politique avec quatre instructions. Lorsqu'elle est combinée en une seule politique, vous pouvez utiliser la politique en tant que politique de contrôle des services (SCP). Elle peut fonctionner aussi bien comme politique de refus que vous appliquez à une IAM politique existante (suppression et limitation des autorisations existantes) SCP que comme politique appliquée globalement à un compte, à une unité organisationnelle (UO) ou à l'ensemble d'une organisation.
Note
Les politiques d'options de RunInstances métadonnées suivantes doivent être utilisées conjointement avec une politique qui donne les autorisations principales pour lancer une instance RunInstances. Si le principal ne dispose pas également d' RunInstances autorisations, il ne sera pas en mesure de lancer une instance. Pour plus d’informations, consultez les stratégies dans Utiliser des instances et Instances de lancement (RunInstances).
Important
Si vous utilisez des groupes Auto Scaling et que vous devez en exiger l'utilisation IMDSv2 sur toutes les nouvelles instances, vos groupes Auto Scaling doivent utiliser des modèles de lancement.
Lorsqu'un groupe Auto Scaling utilise un modèle de lancement, les ec2:RunInstances
autorisations du IAM principal sont vérifiées lorsqu'un nouveau groupe Auto Scaling est créé. Elles sont également vérifiées lorsqu’un groupe Auto Scaling existant est mis à jour pour utiliser un nouveau modèle de lancement ou une nouvelle version d’un modèle de lancement.
Les restrictions relatives à l'utilisation de IMDSv1 on IAM principals pour ne RunInstances
sont vérifiées que lorsqu'un groupe Auto Scaling utilisant un modèle de lancement est créé ou mis à jour. Pour un groupe Auto Scaling configuré pour utiliser le modèle de lancement Latest
ou Default
, les autorisations ne sont pas vérifiées lors de la création d’une nouvelle version du modèle de lancement. Pour que les autorisations soient vérifiées, vous devez configurer le groupe Auto Scaling pour qu’il utilise une version spécifique du modèle de lancement.
Pour imposer l'utilisation des instances IMDSv2 lancées par les groupes Auto Scaling, les étapes supplémentaires suivantes sont requises :
-
Désactivez l'utilisation de configurations de lancement pour tous les comptes de votre organisation en utilisant des politiques de contrôle des services (SCPs) ou des limites d'IAMautorisations pour les nouveaux principaux créés. Pour les IAM directeurs existants disposant d'autorisations de groupe Auto Scaling, mettez à jour leurs politiques associées avec cette clé de condition. Pour désactiver l'utilisation des configurations de lancement, créez ou modifiez la limite d'autorisation ou la IAM politique pertinente SCP à l'aide de la clé de
"autoscaling:LaunchConfigurationName"
condition dont la valeur est spécifiée commenull
. -
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 LaunchTemplateSpecificationl'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, consultez la section Remplacer une configuration de lancement par un modèle de lancement dans le guide de l'utilisateur d'Amazon EC2 Auto Scaling.
-
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 précise que vous ne pouvez pas appeler le RunInstances API à moins que l'instance ne soit également activée pour exiger l'utilisation de IMDSv2 (indiquée par"ec2:MetadataHttpTokens": "required"
). Si vous ne spécifiez pas que l'instance l'exigeIMDSv2, une UnauthorizedOperation
erreur s'affiche lorsque vous appelez le RunInstances API.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireImdsV2", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringNotEquals": { "ec2:MetadataHttpTokens": "required" } } } ] }
Refuser le désabonnement de IMDSv2
La politique suivante indique que vous ne pouvez pas appeler ModifyInstanceMetadataOptions
API et autoriser l'option IMDSv1 ouIMDSv2. Si vous appelez le ModifyInstanceMetadataOptions
API, l'HttpTokens
attribut doit être défini surrequired
.
{ "Version": "2012-10-17", "Statement": [{ "Sid": "DenyIMDSv1HttpTokensModification", "Effect": "Deny", "Action": "ec2:ModifyInstanceMetadataOptions", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringNotEquals": { "ec2:Attribute/HttpTokens": "required" }, "Null": { "ec2:Attribute/HttpTokens": false } } }] }
Spécification d’une durée de vie (hop limit) maximale
La politique suivante indique que vous ne pouvez pas appeler le RunInstances API sauf si vous spécifiez également une limite de sauts, et la limite de sauts ne peut pas être supérieure à 3. Si vous ne le faites pas, vous obtenez un UnauthorizedOperation
message d'erreur lorsque vous appelez le RunInstances API.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "MaxImdsHopLimit", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "NumericGreaterThan": { "ec2:MetadataHttpPutResponseHopLimit": "3" } } } ] }
Restriction des personnes habilitées à modifier les options de métadonnées d’instance
La politique suivante permet uniquement aux utilisateurs ayant le rôle ec2-imds-admins
d’apporter des modifications aux options de métadonnées de l’instance. Si un principal autre que le ec2-imds-admins
rôle essaie d'appeler le ModifyInstanceMetadataOptions API, il obtiendra une UnauthorizedOperation
erreur. Cette instruction peut être utilisée pour contrôler l'utilisation du ModifyInstanceMetadataOptions API ; il n'existe actuellement aucun contrôle d'accès précis (conditions) pour le. ModifyInstanceMetadataOptions API
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOnlyImdsAdminsToModifySettings", "Effect": "Deny", "Action": "ec2:ModifyInstanceMetadataOptions", "Resource": "*", "Condition": { "StringNotLike": { "aws:PrincipalARN": "arn:aws:iam::*:role/ec2-imds-admins" } } } ] }
Exiger que les informations d'identification du rôle soient extraites de IMDSv2
La politique suivante précise que si cette politique est appliquée à un rôle, que le rôle est assumé par le EC2 service et que les informations d'identification obtenues sont utilisées pour signer une demande, la demande doit être signée à l'aide des informations d'identification de EC2 rôle extraitesIMDSv2. Sinon, tous ses API appels recevront un UnauthorizedOperation
message d'erreur. Cette déclaration/politique peut être appliquée de manière générale car, si la demande n'est pas signée par les informations d'identification du EC2 rôle, elle n'a aucun effet.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireAllEc2RolesToUseV2", "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "NumericLessThan": { "ec2:RoleDelivery": "2.0" } } } ] }
Travaillez avec les EBS volumes et les instantanés Amazon
Pour des exemples de politiques relatives à l'utilisation des EBS volumes et des instantanés Amazon, consultez la section Exemples de politiques basées sur l'identité pour Amazon. EBS