

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.

# Exemple de politiques pour contrôler l'accès à l'API Amazon EC2
<a name="ExamplePolicies_EC2"></a>

Vous pouvez utiliser les politiques IAM pour accorder aux utilisateurs les autorisations nécessaires pour travailler avec Amazon EC2. Pour obtenir des step-by-step instructions, reportez-vous à [la section Création de politiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dans le guide de l'*utilisateur IAM*.

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

**Topics**
+ [Accès en lecture seule](#iam-example-read-only)
+ [Restreindre l’accès à une région spécifique](#iam-example-region)
+ [Utiliser des instances](#iam-example-instances)
+ [Instances de lancement (RunInstances)](#iam-example-runinstances)
+ [Utiliser instances Spot](#iam-example-spot-instances)
+ [Utiliser instances réservées](#iam-example-reservedinstances)
+ [Baliser des ressources](#iam-example-taggingresources)
+ [Utiliser les rôles IAM](#iam-example-iam-roles)
+ [Utiliser des tables de routage](#iam-example-route-tables)
+ [Autoriser une instance spécifique à afficher les ressources d'autres AWS services](#iam-example-source-instance)
+ [Utiliser des modèles de lancement](#iam-example-launch-templates)
+ [Utiliser des métadonnées d’instance](#iam-example-instance-metadata)
+ [Travaillez avec les volumes Amazon EBS et les instantanés](#iam-example-ebs)

Pour obtenir des exemples de stratégies à utiliser sur la console Amazon EC2, consultez [Exemple de politiques pour contrôler l’accès à la console Amazon EC2](iam-policies-ec2-console.md).

## Exemple : accès en lecture seule
<a name="iam-example-read-only"></a>

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 \$1 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](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html).

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.

------
#### [ JSON ]

****  

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

------

## Exemple : Restreindre l’accès à une région spécifique
<a name="iam-example-region"></a>

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.

------
#### [ JSON ]

****  

```
{
  "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.

------
#### [ JSON ]

****  

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

------

## Utiliser des instances
<a name="iam-example-instances"></a>

**Topics**
+ [Exemple : Décrire, lancer, arrêter, démarrer et résilier toutes les instances](#iam-example-instances-all)
+ [Exemple : Décrire toutes les instances, et arrêter, démarrer et résilier uniquement des instances particulières](#iam-example-instances-specific)

### Exemple : Décrire, lancer, arrêter, démarrer et résilier toutes les instances
<a name="iam-example-instances-all"></a>

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 \$1 pour indiquer que les utilisateurs peuvent spécifier toutes les ressources avec ces actions d’API. Le caractère générique \$1 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](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html).

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.

------
#### [ JSON ]

****  

```
{
   "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
<a name="iam-example-instances-specific"></a>

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 résilier que les instances de la région `us-east-1`, avec la balise de ressource « `purpose=test` ». 

La première déclaration utilise un caractère générique \$1 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 \$1 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](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html).

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 mettre fin à toutes les instances de la `us-east-1` région 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. 

------
#### [ JSON ]

****  

```
{
   "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:111122223333:instance/i-1234567890abcdef0",
        "arn:aws:ec2:us-east-1:111122223333:instance/i-0598c7d356eba48d7"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "ec2:TerminateInstances",
      "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
      "Condition": {
         "StringEquals": {
            "aws:ResourceTag/purpose": "test"
         }
      }
   }

   ]
}
```

------

## Instances de lancement (RunInstances)
<a name="iam-example-runinstances"></a>

L'action d'[RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html)API 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](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html).

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](#iam-example-instances).

**Topics**
+ [AMIs](#iam-example-runinstances-ami)
+ [Types d’instances](#iam-example-runinstances-instance-type)
+ [Subnets](#iam-example-runinstances-subnet)
+ [Volumes EBS](#iam-example-runinstances-volumes)
+ [Étiquettes](#iam-example-runinstances-tags)
+ [Balises dans un modèle de lancement](#iam-example-tags-launch-template)
+ [Élastique GPUs](#iam-example-runinstances-egpu)
+ [Modèles de lancement](#iam-example-runinstances-launch-templates)

### AMIs
<a name="iam-example-runinstances-ami"></a>

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

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
        "arn:aws:ec2:us-east-1::image/ami-9e1670f7",
        "arn:aws:ec2:us-east-1::image/ami-45cf5c3c",
        "arn:aws:ec2:us-east-1:111122223333:instance/*",
        "arn:aws:ec2:us-east-1:111122223333:volume/*",
        "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
        "arn:aws:ec2:us-east-1:111122223333:security-group/*",
        "arn:aws:ec2:us-east-1:111122223333:subnet/*",
        "arn:aws:ec2:us-east-1:111122223333: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\$1 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).

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
         {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [ 
         "arn:aws:ec2:us-east-1::image/ami-*"
      ],
      "Condition": {
         "StringEquals": {
            "ec2:Owner": "amazon"
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [ 
         "arn:aws:ec2:us-east-1:111122223333:instance/*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:volume/*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*"
         ]
      }
   ]
}
```

------

### Types d’instances
<a name="iam-example-runinstances-instance-type"></a>

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`. 

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1:111122223333:instance/*"
      ],
      "Condition": {
         "StringEquals": {
            "ec2:InstanceType": ["t2.micro", "t2.small"]
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1::image/ami-*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:volume/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
         "arn:aws:ec2:us-east-1:111122223333: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`.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        { 
      "Effect": "Deny",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1:111122223333:instance/*"
      ],
      "Condition": {
         "StringNotEquals": {
            "ec2:InstanceType": ["t2.micro", "t2.small"]
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1::image/ami-*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:instance/*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:volume/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*"
         ]
      }
   ]
}
```

------

### Subnets
<a name="iam-example-runinstances-subnet"></a>

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

------
#### [ JSON ]

****  

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

------

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

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
         {
      "Effect": "Deny",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*"
      ],
      "Condition": {
         "ArnNotEquals": {
            "ec2:Subnet": "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-12345678"
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1::image/ami-*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:instance/*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:volume/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*"
         ]
      }
   ]
}
```

------

### Volumes EBS
<a name="iam-example-runinstances-volumes"></a>

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é.

------
#### [ JSON ]

****  

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

------

### Étiquettes
<a name="iam-example-runinstances-tags"></a>

**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 [Accordez l’autorisation de baliser les ressources Amazon EC2 lors de la création](supported-iam-actions-tagging.md).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333: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.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
   {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances"
      ],
      "Resource": [
         "arn:aws:ec2:us-east-1::image/*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances"
      ],
      "Resource": [
          "arn:aws:ec2:us-east-1:111122223333:volume/*",
          "arn:aws:ec2:us-east-1:111122223333:instance/*"
      ],
      "Condition": {
         "StringEquals": {
             "aws:RequestTag/environment": "production" ,
             "aws:RequestTag/purpose": "webserver"
          }
       }
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:*/*",
      "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. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
   {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances"
      ],
      "Resource": [
         "arn:aws:ec2:us-east-1::image/*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
          "ec2:RunInstances"
      ],
      "Resource": [
          "arn:aws:ec2:us-east-1:111122223333:volume/*",
          "arn:aws:ec2:us-east-1:111122223333:instance/*"
      ],
      "Condition": {
          "ForAnyValue:StringEquals": {
              "aws:TagKeys": ["environment","webserver"]
          }
       }
    },
    {
      "Effect": "Allow",
      "Action": [
          "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:*/*",
      "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`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:*/*",
      "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



------
#### [ JSON ]

****  

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

### Balises dans un modèle de lancement
<a name="iam-example-tags-launch-template"></a>

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.

------
#### [ JSON ]

****  

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

------

### Élastique GPUs
<a name="iam-example-runinstances-egpu"></a>

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`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
             {
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:*:111122223333: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:*:111122223333:network-interface/*",
                "arn:aws:ec2:*:111122223333:instance/*",
                "arn:aws:ec2:*:111122223333:subnet/*",
                "arn:aws:ec2:*:111122223333:volume/*",
                "arn:aws:ec2:*:111122223333:key-pair/*",
                "arn:aws:ec2:*:111122223333:security-group/*"
            ]
        }
    ]
}
```

------

### Modèles de lancement
<a name="iam-example-runinstances-launch-templates"></a>

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`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
         {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "*",
      "Condition": {
         "ArnLike": {
             "ec2:LaunchTemplate": "arn:aws:ec2:us-east-1:111122223333: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.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
         {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "*",
      "Condition": {
         "ArnLike": {
             "ec2:LaunchTemplate": "arn:aws:ec2:us-east-1:111122223333: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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_notresource.html)é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.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
        {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "NotResource": ["arn:aws:ec2:us-east-1:111122223333:subnet/*",
                      "arn:aws:ec2:us-east-1:111122223333:network-interface/*" ],
      "Condition": {
         "ArnLike": {
             "ec2:LaunchTemplate": "arn:aws:ec2:us-east-1:111122223333:launch-template/*" 
          }
       }
    },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": ["arn:aws:ec2:us-east-1:111122223333:subnet/*",
                   "arn:aws:ec2:us-east-1:111122223333:network-interface/*" ],
      "Condition": {
         "ArnLike": {
             "ec2:LaunchTemplate": "arn:aws:ec2:us-east-1:111122223333: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`.

------
#### [ JSON ]

****  

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

------

## Utiliser instances Spot
<a name="iam-example-spot-instances"></a>

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 est`spot-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.

------
#### [ JSON ]

****  

```
{
    "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": "DenySpotInstancesRequestsNOTSUPPORTEDDONOTUSE",
            "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.

------
#### [ JSON ]

****  

```
{
    "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.

------
#### [ JSON ]

****  

```
{
    "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": "RequestSpotInstancesOnlyIfTagIsEnvironmentProductionNOTSUPPORTEDDONOTUSE",
            "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 avec`environment=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.

------
#### [ JSON ]

****  

```
{
    "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
<a name="iam-example-reservedinstances"></a>

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 \$1 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 \$1 est également nécessaire dans les cas où l’action d’API ne prend pas en charge les autorisations au niveau des ressources.

------
#### [ JSON ]

****  

```
{
   "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.

------
#### [ JSON ]

****  

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

------

## Exemple : Baliser des ressources
<a name="iam-example-taggingresources"></a>

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 balise n’est autorisée et l’utilisateur ne peut pas étiqueter d’autres types de ressources.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
              {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": "arn:aws:ec2:us-east-1:111122223333: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.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
               {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": "arn:aws:ec2:us-east-1:111122223333:*/*",
            "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.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
       {
      "Effect": "Allow",
      "Action": "ec2:DeleteTags",
      "Resource": "arn:aws:ec2:us-east-1:111122223333: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.

------
#### [ JSON ]

****  

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

------

## Exemple : Utiliser des rôles IAM
<a name="iam-example-iam-roles"></a>

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. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:AssociateIamInstanceProfile",
        "ec2:ReplaceIamInstanceProfileAssociation",
        "ec2:DisassociateIamInstanceProfile"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/department":"test"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "ec2:DescribeIamInstanceProfileAssociations",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::111122223333: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](iam-roles-for-amazon-ec2.md#ec2-instance-profile).

------
#### [ JSON ]

****  

```
{
    "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::111122223333:role/TestRole-*"
        }
    ]
}
```

------

## Exemple : Utiliser des tables de routage
<a name="iam-example-route-tables"></a>

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.

------
#### [ JSON ]

****  

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

------

## Exemple : autoriser une instance spécifique à afficher les ressources d'autres AWS services
<a name="iam-example-source-instance"></a>

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.

------
#### [ JSON ]

****  

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

------

## Exemple : Utiliser des modèles de lancement
<a name="iam-example-launch-templates"></a>

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

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
   {
      "Action": [
        "ec2:CreateLaunchTemplateVersion",
        "ec2:ModifyLaunchTemplate"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:ec2:us-east-1:111122223333: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`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
       {
      "Action": [
        "ec2:DeleteLaunchTemplate",
        "ec2:DeleteLaunchTemplateVersions"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:ec2:us-east-1:111122223333:launch-template/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Purpose": "Testing"
        }
      }
    }
  ]
}
```

------

## Utiliser des métadonnées d’instance
<a name="iam-example-instance-metadata"></a>

Les politiques suivantes garantissent que les utilisateurs ne peuvent récupérer les [métadonnées des instances](ec2-instance-metadata.md) 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. 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](#iam-example-instances) et [Instances de lancement (RunInstances)](#iam-example-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 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 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.  
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'autorisations IAM pour les nouveaux principaux créés. Pour les principaux IAM existants disposant d’autorisations de groupe Auto Scaling, mettez à jour leurs politiques associées avec cette clé de condition. Pour désactiver l’utilisation des configurations de lancement, créez ou modifiez la stratégie SCP, les limites d’autorisations ou la stratégie IAM avec la clé de condition `"autoscaling:LaunchConfigurationName"` avec la valeur spécifiée comme `null`.
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 [LaunchTemplateSpecification](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_LaunchTemplateSpecification.html)manuel *Amazon EC2 Auto Scaling API* Reference, en particulier `Version` le 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 [Migration de vos groupes Auto Scaling vers des modèles de lancement](https://docs.aws.amazon.com/autoscaling/ec2/userguide/migrate-to-launch-templates.html) dans le *Guide de l’utilisateur 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 de plus amples informations, veuillez consulter [update-auto-scaling-group](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/update-auto-scaling-group.html).

**Topics**
+ [Exiger l'utilisation de IMDSv2](#iam-example-instance-metadata-requireIMDSv2)
+ [Refuser le désabonnement de IMDSv2](#iam-example-instance-metadata-denyoptoutIMDSv2)
+ [Spécification d’une durée de vie (hop limit) maximale](#iam-example-instance-metadata-maxHopLimit)
+ [Restriction des personnes habilitées à modifier les options de métadonnées d’instance](#iam-example-instance-metadata-limit-modify-IMDS-options)
+ [Exiger que les informations d'identification du rôle soient extraites de IMDSv2](#iam-example-instance-metadata-require-roles-to-use-IMDSv2-credentials)

### Exiger l'utilisation de IMDSv2
<a name="iam-example-instance-metadata-requireIMDSv2"></a>

La politique suivante précise que vous ne pouvez pas appeler l' 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 ce que l'instance requiert IMDSv2, une `UnauthorizedOperation` erreur s'affiche lorsque vous appelez l' RunInstances API.

------
#### [ JSON ]

****  

```
{
    "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
<a name="iam-example-instance-metadata-denyoptoutIMDSv2"></a>

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

------
#### [ JSON ]

****  

```
{
    "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
<a name="iam-example-instance-metadata-maxHopLimit"></a>

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.

------
#### [ JSON ]

****  

```
{
    "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
<a name="iam-example-instance-metadata-limit-modify-IMDS-options"></a>

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.

### Exiger que les informations d'identification du rôle soient extraites de IMDSv2
<a name="iam-example-instance-metadata-require-roles-to-use-IMDSv2-credentials"></a>

La politique suivante précise que si cette politique est appliquée à un rôle, que le rôle est assumé par le service EC2 et que les informations d'identification obtenues sont utilisées pour signer une demande, la demande doit être signée par les informations d'identification du rôle EC2 extraites. 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.

------
#### [ JSON ]

****  

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

------

## Travaillez avec les volumes Amazon EBS et les instantanés
<a name="iam-example-ebs"></a>

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](https://docs.aws.amazon.com/ebs/latest/userguide/security_iam_id-based-policy-examples.html).