

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.

# Autorisations du parc d’instances Spot
<a name="spot-fleet-prerequisites"></a>

**Important**  
Spot Fleet utilise une ancienne API sans investissement planifié. Nous vous recommandons d'utiliser EC2 Fleet ou un groupe Auto Scaling à la place. Pour de plus amples informations, veuillez consulter [Quelle est la meilleure méthode de flotte à utiliser ?](which-fleet-method-to-use.md).

Si vos utilisateurs sont appelés à créer ou à gérer un parc d’instances Spot, veillez à leur accorder les autorisations nécessaires.

Si vous utilisez la console Amazon EC2 pour créer un parc d’instances Spot , cela crée un rôle lié au service nommé `AWSServiceRoleForEC2SpotFleet` et `AWSServiceRoleForEC2Spot`, et un rôle nommé `aws-ec2-spot-fleet-tagging-role` qui octroie au parc d’instances Spot les autorisations de demander, de lancer, de résilier et d’étiqueter des ressources en votre nom. Si vous utilisez l'API AWS CLI ou une API, vous devez vous assurer que ces rôles existent.

Suivez les instructions ci-dessous pour accorder les autorisations requises et créer les rôles.

**Topics**
+ [Accorder des autorisations aux utilisateurs pour un parc instances Spot](#spot-fleet-iam-users)
+ [Rôle lié à un service pour un parc d’instances Spot](#service-linked-roles-spot-fleet-requests)
+ [Rôle lié à un service pour les instances Spot](#service-linked-roles-spot-instances)
+ [Rôle IAM pour l’étiquetage d’un parc d’instances Spot](#spot-fleet-service-linked-role)

## Accorder des autorisations aux utilisateurs pour un parc instances Spot
<a name="spot-fleet-iam-users"></a>

Si vos utilisateurs sont appelés à créer ou à gérer un parc d’instances Spot, veillez à leur accorder les autorisations nécessaires.

**Pour créer une politique pour un parc d’instances Spot**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le panneau de navigation, choisissez **Policies (Stratégies)**, puis **Create policy (Créer une stratégie)**.

1. Sur la page **Créer une stratégie**, choisissez **JSON**, puis remplacez le texte par ce qui suit.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:RunInstances",
                   "ec2:CreateTags",
                   "ec2:RequestSpotFleet",
                   "ec2:ModifySpotFleetRequest",
                   "ec2:CancelSpotFleetRequests",
                   "ec2:DescribeSpotFleetRequests",
                   "ec2:DescribeSpotFleetInstances",
                   "ec2:DescribeSpotFleetRequestHistory"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::*:role/aws-ec2-spot-fleet-tagging-role"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "iam:CreateServiceLinkedRole",
                   "iam:ListRoles",
                   "iam:ListInstanceProfiles"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

   L’exemple de politique précédent accorde à un utilisateur les autorisations requises pour la plupart des cas d’utilisation de parc d’instances Spot. Pour limiter l’utilisateur à des actions d’API données, spécifiez celles qui sont autorisées.

   **EC2 et IAM requis APIs**

   Les éléments suivants APIs doivent être inclus dans la politique :
   + `ec2:RunInstances` : requis pour lancer des instances dans un parc d’instances Spot 
   + `ec2:CreateTags` : requis pour étiqueter la demande de parc d’instances Spot, les instances ou les volumes
   + `iam:PassRole` : requis pour spécifier le rôle du parc d’instances Spot
   + `iam:CreateServiceLinkedRole` : requis pour créer le rôle lié au service
   + `iam:ListRoles` : requis pour énumérer les rôles IAM existants
   + `iam:ListInstanceProfiles` : requis pour énumérer les profils d’instance existants
**Important**  
Si vous spécifiez un rôle pour le profil d’instance IAM dans la spécification ou le modèle de lancement, vous devez accorder à l’utilisateur l’autorisation de transmettre le rôle au service. Pour ce faire, dans la stratégie IAM, incluez `"arn:aws:iam::*:role/{{IamInstanceProfile-role}}"` comme ressource pour l’action `iam:PassRole`. Pour plus d'informations, consultez la section [Accorder à un utilisateur l'autorisation de transmettre un rôle à un AWS service](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) dans le *Guide de l'utilisateur IAM*.

   **Parc d’instances Spot APIs**

   Ajoutez les actions d’API de parc d’instances Spot suivantes à votre politique, selon vos besoins :
   + `ec2:RequestSpotFleet`
   + `ec2:ModifySpotFleetRequest`
   + `ec2:CancelSpotFleetRequests`
   + `ec2:DescribeSpotFleetRequests`
   + `ec2:DescribeSpotFleetInstances`
   + `ec2:DescribeSpotFleetRequestHistory`

   **IAM en option APIs**

   (Facultatif) Pour autoriser un utilisateur à créer des rôles ou des profils d’instances à l’aide de la console IAM, vous devez aussi ajouter les actions suivantes à la politique :
   + `iam:AddRoleToInstanceProfile`
   + `iam:AttachRolePolicy`
   + `iam:CreateInstanceProfile`
   + `iam:CreateRole`
   + `iam:GetRole`
   + `iam:ListPolicies`

1. Choisissez **Examiner une stratégie**.

1. Sur la page **Review Policy (Vérifier la stratégie)**, saisissez un nom et une description pour la stratégie, puis choisissez **Create policy (Créer une stratégie)**.

1. Pour activer l’accès, ajoutez des autorisations à vos utilisateurs, groupes ou rôles :
   + Utilisateurs et groupes dans AWS IAM Identity Center :

     Créez un jeu d’autorisations. Suivez les instructions de la rubrique [Création d’un jeu d’autorisations](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) du *Guide de l’utilisateur AWS IAM Identity Center *.
   + Utilisateurs gérés dans IAM par un fournisseur d’identité :

     Créez un rôle pour la fédération d’identité. Suivez les instructions de la rubrique [Création d’un rôle pour un fournisseur d’identité tiers (fédération)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) dans le *Guide de l’utilisateur IAM*.
   + Utilisateurs IAM :
     + Créez un rôle que votre utilisateur peut assumer. Suivez les instructions de la rubrique [Création d’un rôle pour un utilisateur IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) dans le *Guide de l’utilisateur IAM*.
     + (Non recommandé) Attachez une politique directement à un utilisateur ou ajoutez un utilisateur à un groupe d’utilisateurs. Suivez les instructions de la rubrique [Ajout d’autorisations à un utilisateur (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) du *Guide de l’utilisateur IAM*.

## Rôle lié à un service pour un parc d’instances Spot
<a name="service-linked-roles-spot-fleet-requests"></a>

Amazon EC2 utilise des rôles liés à un service pour les autorisations requises pour appeler d’autres services AWS en votre nom. Un rôle lié à un service est un type unique de rôle IAM directement lié à un service. AWS Les rôles liés à un service constituent un moyen sécurisé de déléguer des autorisations aux AWS services, car seul le service lié peut assumer un rôle lié au service. Pour plus d’informations, consultez la section [Rôles liés à un service](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create-service-linked-role.html) dans le *Guide de l’utilisateur IAM*.

Amazon EC2 utilise le rôle lié au service nommé **AWSServiceRoleForEC2SpotFleet**pour lancer et gérer des instances en votre nom.

**Important**  
Si vous spécifiez une [AMI chiffrée](AMIEncryption.md) ou un instantané Amazon EBS chiffré dans votre parc de spots, vous devez accorder au **AWSServiceRoleForEC2SpotFleet**rôle l'autorisation d'utiliser le CMK afin qu'Amazon EC2 puisse lancer des instances en votre nom. Pour de plus amples informations, veuillez consulter [Autoriser l'accès à CMKs des instantanés chiffrés AMIs et EBS à des fins d'utilisation](#spot-fleet-service-linked-roles-access-to-cmks).

### Autorisations accordées par AWSService RoleFor EC2 SpotFleet
<a name="service-linked-role-permissions-granted-by-AWSServiceRoleForEC2SpotFleet"></a>

Le **AWSServiceRoleForEC2SpotFleet**rôle accorde à Spot Fleet l'autorisation de demander, de lancer, de résilier et d'étiqueter des instances en votre nom. Amazon EC2 utilise ce rôle lié à un service pour effectuer les actions suivantes :
+ `ec2:RequestSpotInstances` - Demander des Instances Spot
+ `ec2:RunInstances` - Lancer des instances
+ `ec2:TerminateInstances` - Résilier des instances
+ `ec2:DescribeImages`- Décrivez Amazon Machine Images (AMIs) pour les instances
+ `ec2:DescribeInstanceStatus` - Décrire le statut des instances.
+ `ec2:DescribeSubnets` - Décrire les sous-réseaux des instances
+ `ec2:CreateTags` : ajouter des identifications à la demande de parc d’instances Spot, aux instances et aux volumes
+ `elasticloadbalancing:RegisterInstancesWithLoadBalancer` - Ajouter les instances spécifiées à l’équilibreur de charge indiqué.
+ `elasticloadbalancing:RegisterTargets` - Enregistrer les cibles spécifiées auprès du groupe cible indiqué.

### Création du rôle lié à un service
<a name="service-linked-role-creating-for-spot-fleet"></a>

Dans la plupart des cas, vous n’avez pas besoin de créer manuellement un rôle lié à un service. Amazon EC2 crée le rôle **AWSServiceRoleForEC2SpotFleet**lié au service la première fois que vous créez un parc de spots à l'aide de la console. 

Si vous avez reçu une demande Spot Fleet active avant octobre 2017, date à laquelle Amazon EC2 a commencé à prendre en charge ce rôle lié à un service, Amazon EC2 a créé le rôle dans votre compte. **AWSServiceRoleForEC2SpotFleet** AWS Pour plus d'informations, consultez la section [Un nouveau rôle est apparu dans mon AWS compte](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared) dans le *guide de l'utilisateur IAM*.

Si vous utilisez l'API AWS CLI ou une API pour créer un parc de spots, vous devez d'abord vous assurer que ce rôle existe.

**Pour créer le AWSService RoleFor EC2 SpotFleet rôle pour Spot Fleet à l'aide de la console**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le panneau de navigation, choisissez **Rôles**.

1. Sélectionnez **Create role** (Créer un rôle).

1. Sur la page **Select trusted entity** (Sélectionner une entité de confiance), procédez comme suit :

   1. Pour **Type d’entité de confiance**, choisissez **Service AWS **.

   1. Sous **Cas d’utilisation**, pour **Service ou cas d’utilisation**), choisissez **EC2**.

   1. Pour **Utiliser un cas**, choisissez **Parc d’instances Spot - EC2**.
**Note**  
Le cas d'utilisation d'**EC2 - Spot Fleet** créera automatiquement une politique avec les autorisations IAM requises et proposera le nom du **AWSEC2SpotFleetServiceRolePolicy**rôle.

   1. Choisissez **Suivant**.

1. Sur la page **Ajouter des autorisations**, sélectionnez **Suivant**.

1. Sur la page **Nommer, vérifier et créer**, choisissez **Créer un rôle**.

**Pour créer le AWSService RoleFor EC2 SpotFleet rôle de Spot Fleet à l'aide du AWS CLI**  
Utilisez la commande [create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) comme suit.

```
aws iam create-service-linked-role --aws-service-name spotfleet.amazonaws.com
```

Si vous n'avez plus besoin d'utiliser Spot Fleet, nous vous recommandons de supprimer le **AWSServiceRoleForEC2SpotFleet**rôle. Après sa suppression de votre compte, Amazon EC2 créera de nouveau le rôle si vous effectuez une demande de parc d’instances Spot à l’aide de la console. Pour plus d’informations, consultez la section [Suppression d’un rôle lié à un service](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html#id_roles_manage_delete_slr) dans le *Guide de l’utilisateur IAM*.

### Autoriser l'accès à CMKs des instantanés chiffrés AMIs et EBS à des fins d'utilisation
<a name="spot-fleet-service-linked-roles-access-to-cmks"></a>

Si vous spécifiez une [AMI chiffrée](AMIEncryption.md) ou un instantané Amazon EBS chiffré dans votre demande Spot Fleet et que vous utilisez une clé gérée par le client pour le chiffrement, vous devez accorder au **AWSServiceRoleForEC2SpotFleet**rôle l'autorisation d'utiliser le CMK afin qu'Amazon EC2 puisse lancer des instances en votre nom. Pour cela, vous devez ajouter une autorisation à la CMK, comme indiqué dans la procédure suivante.

Lorsque vous définissez les autorisations, les octrois constituent une alternative aux politiques de clé. Pour plus d’informations, consultez [Utilisation des octrois](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) et [Utilisation des stratégies de clé dans AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) dans le *Guide du développeur AWS Key Management Service *.

**Pour accorder au AWSService RoleFor EC2 SpotFleet rôle l'autorisation d'utiliser le CMK**
+ Utilisez la commande [create-grant](https://docs.aws.amazon.com/cli/latest/reference/kms/create-grant.html) pour ajouter une autorisation au CMK et pour spécifier le principal (le rôle **AWSServiceRoleForEC2SpotFleet**lié au service) autorisé à effectuer les opérations autorisées par l'autorisation. La CMK est spécifiée par le paramètre `key-id` et l’ARN de la CMK. Le principal est spécifié par le `grantee-principal` paramètre et l'ARN du rôle **AWSServiceRoleForEC2SpotFleet**lié au service.

  ```
  aws kms create-grant \
      --region {{us-east-1}} \
      --key-id arn:aws:kms:{{us-east-1}}:{{444455556666}}:key/{{1234abcd-12ab-34cd-56ef-1234567890ab}} \
      --grantee-principal arn:aws:iam::{{111122223333}}:role/aws-service-role/spotfleet.amazonaws.com/AWSServiceRoleForEC2SpotFleet \
      --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"
  ```

## Rôle lié à un service pour les instances Spot
<a name="service-linked-roles-spot-instances"></a>

Amazon EC2 utilise le rôle lié au service nommé **AWSServiceRoleForEC2Spot** pour lancer et gérer les instances Spot en votre nom. Pour de plus amples informations, veuillez consulter [Rôle lié à un service pour les demandes d’instance Spot](service-linked-roles-spot-instance-requests.md).

## Rôle IAM pour l’étiquetage d’un parc d’instances Spot
<a name="spot-fleet-service-linked-role"></a>

Le rôle IAM `aws-ec2-spot-fleet-tagging-role` accorde au parc d’instances Spot l’autorisation d’étiqueter la demande, les instances et les volumes. Pour de plus amples informations, veuillez consulter [Étiqueter un nouveau parc d’instances Spot et les instances et volumes qu’il lance](tag-spot-fleet.md).

**Important**  
Si vous choisissez d’étiqueter des instances dans la flotte et que vous choisissez également de maintenir la capacité cible (la demande de parc d’instances Spot est de type `maintain`), les différences dans les autorisations qui sont définies pour l’utilisateur et le rôle `IamFleetRole` peuvent entraîner un comportement d’étiquetage incohérent pour les instances de la flotte. Si le rôle `IamFleetRole` n’inclut pas l’autorisation `CreateTags`, il se peut que certaines instances lancées par le parc ne soient pas balisées. En attendant que cette incohérence soit corrigée, pour vous assurer que toutes les instances lancées par le parc sont marquées, nous vous recommandons d’utiliser le rôle `aws-ec2-spot-fleet-tagging-role` pour `IamFleetRole`. Sinon, pour utiliser un rôle existant, associez la politique `AmazonEC2SpotFleetTaggingRole` AWS gérée au rôle existant. Sinon, vous devrez ajouter manuellement l’autorisation `CreateTags` à votre stratégie.

**Pour créer le rôle IAM pour l’étiquetage d’un parc d’instances Spot**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le panneau de navigation, choisissez **Rôles**.

1. Sélectionnez **Create role** (Créer un rôle).

1. Sur la page **Select trusted entity (Sélectionner entité de confiance)**, sous **Trusted entity type (Type d’entité de service)** choisissez **AWS service**.

1. Sous**Use case (Cas d’utilisation)**, de**Use cases for other (Cas d’utilisation pour d’autres) AWS services**, choisissez**EC2**puis**EC2 - Spot Fleet Tagging (Marquage de flotte ponctuelle)**.

1. Choisissez **Suivant**.

1. Sur la page **Add permissions** (Ajouter des autorisations), sélectionnez **Next** (Suivant).

1. Sur la page **Name, review, and create (Nommer, réviser et créer)** pour le **Role name (nom de rôle)**, saisissez un nom de rôle (par exemple **aws-ec2-spot-fleet-tagging-role**).

1. Vérifiez les informations sur la page, puis choisissez **Create role(Créer un rôle)**.

### Prévention du cas de figure de l’adjoint désorienté entre services
<a name="cross-service-confused-deputy-prevention"></a>

Le [problème de l’adjoint confus](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) est un problème de sécurité dans lequel une entité qui n’a pas l’autorisation d’effectuer une action peut contraindre une entité plus privilégiée à effectuer cette action. Nous vous recommandons d’utiliser les clés de contexte de condition globale [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) et [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) dans la stratégie d’approbation `aws-ec2-spot-fleet-tagging-role` pour limiter les autorisations que le parc d’instances Spot octroie à un autre service pour la ressource.

**Pour ajouter les clés de SourceAccount condition aws : SourceArn et aws : à la politique de `aws-ec2-spot-fleet-tagging-role` confiance**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le panneau de navigation, choisissez **Rôles**.

1. Recherchez le `aws-ec2-spot-fleet-tagging-role` que vous avez créé précédemment et sélectionnez le lien (et non la case à cocher).

1. Sous Summary **Summary** (Résumé), sélectionnez l’onglet **Trust relationships** (Relations d’approbation), puis **Edit trust policy** (Modifier la politique d’approbation).

1. Dans l’instruction JSON, ajoutez un`Condition`élément contenant votre`aws:SourceAccount`et`aws:SourceArn`Clés de contexte de condition globales pour empêcher le[problème de l’adjoint confus](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html), comme suit :

   ```
   "Condition": {
         "ArnLike": {
           "aws:SourceArn": "arn:aws:ec2:us-east-1:{{111122223333}}:spot-fleet-request/sfr-*"
         },
         "StringEquals": {
           "aws:SourceAccount": "{{111122223333}}"
         }
   ```
**Note**  
Si vous utilisez les deux clés de contexte de condition globale et que la valeur de `aws:SourceArn` contient l’ID de compte, la valeur de `aws:SourceAccount` et le compte indiqué dans la valeur de `aws:SourceArn` doivent utiliser le même ID de compte lorsqu’il est utilisé dans la même déclaration de politique.

   La stratégie d’approbation finale sera la suivante :

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Sid": "ConfusedDeputyPreventionExamplePolicy",
       "Effect": "Allow",
       "Principal": {
         "Service": "spotfleet.amazonaws.com"
       },
       "Action": "sts:AssumeRole",
       "Condition": {
         "ArnLike": {
           "aws:SourceArn": "arn:aws:ec2:{{us-east-1}}:{{111122223333}}:spot-fleet-request/sfr-*"
         },
         "StringEquals": {
           "aws:SourceAccount": "{{111122223333}}"
         }
       }
     }
   }
   ```

------

1. Choisissez **Mettre à jour une politique**.

Le tableau suivant fournit les valeurs potentielles pour`aws:SourceArn`pour limiter la portée de votre`aws-ec2-spot-fleet-tagging-role`à divers degrés de spécificité.


****  

| Opération API | Service appelé | Scope | `aws:SourceArn` | 
| --- | --- | --- | --- | 
| RequestSpotFleet | AWS STS (AssumeRole) | Limitez la AssumeRole aws-ec2-spot-fleet-tagging-role capacité spot-fleet-requests au compte spécifié. | arn:aws:ec2:\*:{{123456789012}}:spot-fleet-request/sfr-\* | 
| RequestSpotFleet | AWS STS (AssumeRole) | Limitez la AssumeRole capacité aws-ec2-spot-fleet-tagging-role spot-fleet-requests au compte et à la région spécifiés. Notez que ce rôle ne sera pas utilisable dans d’autres régions. | arn:aws:ec2:{{us-east-1}}:{{123456789012}}:spot-fleet-request/sfr-\* | 
| RequestSpotFleet | AWS STS (AssumeRole) | Limitez laAssumeRolecapacité suraws-ec2-spot-fleet-tagging-roleuniquement aux actions affectant la flotte sfr-11111111-1111-1111-1111-111111111111. Notez que ce rôle peut ne pas être utilisable pour d’autres f Spot Fleets. De plus, ce rôle ne peut pas être utilisé pour lancer de nouvelles flottes ponctuelles. request-spot-fleet | arn:aws:ec2:{{us-east-1}}:{{123456789012}}:spot-fleet-request/sfr-{{11111111-1111-1111-1111-111111111111}} | 