

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Autorizzazioni del parco istanze spot
<a name="spot-fleet-prerequisites"></a>

**Importante**  
Spot Fleet utilizza un'API legacy senza investimenti pianificati. Consigliamo invece di utilizzare EC2 Fleet o un gruppo Auto Scaling. Per ulteriori informazioni, consulta [Qual è il metodo per parco istanze migliore da utilizzare?](which-fleet-method-to-use.md).

Se gli utenti IAM creano o gestiscono una serie di istanze spot, occorre concedere loro le autorizzazioni richieste.

Se utilizzi la console Amazon EC2 per creare una serie di istanze spot, viene creato un ruolo collegato ai due servizi denominato `AWSServiceRoleForEC2SpotFleet` e `AWSServiceRoleForEC2Spot` e un ruolo denominato `aws-ec2-spot-fleet-tagging-role` che concede al serie di istanze spot le autorizzazioni per richiedere, avviare, terminare e assegnare tag alle risorse per tuo conto. Se utilizzi AWS CLI o un'API, devi assicurarti che questi ruoli esistano.

Utilizzare le istruzioni seguenti per concedere le autorizzazioni necessarie e creare i ruoli.

**Topics**
+ [Concessione di autorizzazioni a un utente per la serie di istanze spot](#spot-fleet-iam-users)
+ [Service-linked ruolo per Spot Fleet](#service-linked-roles-spot-fleet-requests)
+ [Service-linked ruolo per le istanze Spot](#service-linked-roles-spot-instances)
+ [Ruolo IAM per l’assegnazione di tag a un parco istanze spot](#spot-fleet-service-linked-role)

## Concessione di autorizzazioni a un utente per la serie di istanze spot
<a name="spot-fleet-iam-users"></a>

Se gli utenti creano o gestiscono una serie di istanze spot, assicurati di concedere loro le autorizzazioni richieste.

**Per creare una policy per la serie di istanze spot**

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione, selezionare **Policies (Policy)**, quindi **Create policy (Crea policy)**.

1. Nella pagina **Crea policy** scegliere **JSON** e sostituire il testo con il seguente.

------
#### [ 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": "*"
           }
       ]
   }
   ```

------

   La policy di esempio precedente concede a un utente le autorizzazioni richieste dalla maggior parte dei casi d’uso della serie di istanze spot. Per limitare l’utente a operazioni API specifiche, specificare solo tali operazioni API.

   **EC2 e API IAM obbligatorie**

   Le API seguenti devono essere incluse nella policy:
   + `ec2:RunInstances` - Obbligatorio per avviare istanze in una serie di istanze spot
   + `ec2:CreateTags` - Obbligatorio per applicare tag alla richiesta della serie di istanze spot, alle istanze o ai volumi
   + `iam:PassRole` - Obbligatorio per specificare il ruolo della serie di istanze spot
   + `iam:CreateServiceLinkedRole` - Obbligatorio per creare il ruolo collegato ai servizi
   + `iam:ListRoles` - Obbligatorio per enumerare i ruoli IAM esistenti
   + `iam:ListInstanceProfiles` - Obbligatorio per enumerare i profili delle istanze esistenti
**Importante**  
Se specifichi un ruolo per il profilo dell’istanza IAM nella specifica di avvio o nel modello di avvio, devi concedere all’utente l’autorizzazione per passare il ruolo al servizio. A tale scopo, nella policy IAM includere `"arn:aws:iam::*:role/{{IamInstanceProfile-role}}"` come risorsa per l’operazione `iam:PassRole`. Per maggiori informazioni, consulta [ Concessione a un utente delle autorizzazioni per passare un ruolo a un AWS servizio ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) nella * IAM User Guide. *

   **API della serie di istanze spot**

   Aggiungere le operazioni API del parco istanze spot seguenti alla policy, se necessario:
   + `ec2:RequestSpotFleet`
   + `ec2:ModifySpotFleetRequest`
   + `ec2:CancelSpotFleetRequests`
   + `ec2:DescribeSpotFleetRequests`
   + `ec2:DescribeSpotFleetInstances`
   + `ec2:DescribeSpotFleetRequestHistory`

   **API IAM opzionali**

   (Facoltativo) Per consentire a un utente di creare ruoli o profili delle istanze utilizzando la console IAM, è anche necessario aggiungere le operazioni seguenti alla policy:
   + `iam:AddRoleToInstanceProfile`
   + `iam:AttachRolePolicy`
   + `iam:CreateInstanceProfile`
   + `iam:CreateRole`
   + `iam:GetRole`
   + `iam:ListPolicies`

1. Scegliere **Review policy (Esamina policy)**.

1. Nella pagina **Review policy (Rivedi policy)**, immettere un nome policy e una descrizione, poi selezionare **Create policy (Crea policy)**.

1. Per fornire l’accesso, aggiungi autorizzazioni agli utenti, gruppi o ruoli:
   + Utenti e gruppi in: Centro identità AWS IAM

     Crea un set di autorizzazioni. Segui le istruzioni riportate nella pagina [Create a permission set](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtocreatepermissionset.html) (Creazione di un set di autorizzazioni) nella *Guida per l’utente di Centro identità AWS IAM *.
   + Utenti gestiti in IAM tramite un provider di identità:

     Crea un ruolo per la federazione delle identità. Segui le istruzioni riportate nella pagina [Create a role for a third-party identity provider (federation)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html) della *Guida per l’utente IAM*.
   + Utenti IAM:
     + Crea un ruolo che l’utente possa assumere. Segui le istruzioni riportate nella pagina [Create a role for an IAM user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) della *Guida per l’utente IAM*.
     + (Non consigliato) Collega una policy direttamente a un utente o aggiungi un utente a un gruppo di utenti. Segui le istruzioni riportate nella pagina [Aggiunta di autorizzazioni a un utente (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) nella *Guida per l’utente IAM*.

## Service-linked ruolo per Spot Fleet
<a name="service-linked-roles-spot-fleet-requests"></a>

Amazon EC2 utilizza ruoli collegati ai servizi per le autorizzazioni di cui ha bisogno per eseguire chiamate ad altri servizi AWS per tuo conto. Un ruolo collegato ai servizi è un tipo unico di ruolo IAM collegato direttamente a un AWS servizio. Service-linked i ruoli forniscono un modo sicuro per delegare le autorizzazioni ai AWS servizi perché solo il servizio collegato può assumere un ruolo collegato al servizio. Per ulteriori informazioni, consulta [ Service-linked i ruoli ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create-service-linked-role.html) nella IAM User Guide. * *

Amazon EC2 utilizza il ruolo collegato al servizio denominato ** AWSServiceRoleForEC2Spot Fleet ** per avviare e gestire le istanze per tuo conto.

**Importante**  
Se specifichi un'AMI [ crittografata ](AMIEncryption.md) o uno snapshot Amazon EBS crittografato nella tua flotta Spot, devi concedere al ** ruolo Fleet l'autorizzazione a utilizzare la ** AWSServiceRoleForEC2Spot CMK in modo che Amazon EC2 possa avviare istanze per tuo conto. Per ulteriori informazioni, consulta [Concessione dell’accesso alle CMK per l’uso con le AMI crittografate e gli snapshot EBS](#spot-fleet-service-linked-roles-access-to-cmks).

### Autorizzazioni concesse da AWSServiceRoleForEC2SpotFleet
<a name="service-linked-role-permissions-granted-by-AWSServiceRoleForEC2SpotFleet"></a>

Il ** ruolo ** AWSServiceRoleForEC2Spot Fleet concede a Spot Fleet l'autorizzazione a richiedere, avviare, terminare ed etichettare le istanze per tuo conto. Amazon EC2 utilizza questo ruolo collegato ai servizi per completare le operazioni seguenti:
+ `ec2:RequestSpotInstances` – Richiesta di Istanze spot
+ `ec2:RunInstances` - Avviare istanze
+ `ec2:TerminateInstances` - Terminare istanze
+ `ec2:DescribeImages` - Descrivere le immagini Amazon Machine (AMI) per le istanze
+ `ec2:DescribeInstanceStatus` - Monitorare lo stato delle istanze.
+ `ec2:DescribeSubnets` - Descrivere le sottoreti per le istanze
+ `ec2:CreateTags` - Aggiungere tag alla richiesta della serie di istanze spot, alle istanze e ai volumi
+ `elasticloadbalancing:RegisterInstancesWithLoadBalancer` - Aggiungere le istanze specificate al load balancer specificato
+ `elasticloadbalancing:RegisterTargets` - Registrare le destinazioni specificate nel gruppo di destinazioni specificato

### Creazione del ruolo collegato ai servizi
<a name="service-linked-role-creating-for-spot-fleet"></a>

In gran parte dei casi, non è necessario creare manualmente un ruolo collegato ai servizi. Amazon EC2 crea il ruolo ** collegato al servizio ** AWSServiceRoleForEC2Spot Fleet la prima volta che crei uno Spot Fleet utilizzando la console. 

Se avevi una richiesta Spot Fleet attiva prima di ottobre 2017, quando Amazon EC2 ha iniziato a supportare questo ruolo collegato al servizio, Amazon EC2 ha creato il ruolo Fleet nel tuo account. ** AWSServiceRoleForEC2Spot ** AWS Per ulteriori informazioni, consulta [ A new role appeared in my AWS account ](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared) nella IAM User Guide. * *

Se utilizzi AWS CLI o un'API per creare una Spot Fleet, devi prima assicurarti che questo ruolo esista.

**Per creare il AWSServiceRoleForEC2SpotFleet ruolo per Spot Fleet utilizzando la console**

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, seleziona **Roles** (Ruoli).

1. Selezionare **Create role (Crea ruolo)**.

1. Nella pagina **Seleziona un’entità attendibile**, esegui le operazioni seguenti:

   1. Per **Tipo di entità attendibile**, scegli **Servizio AWS **.

   1. In **Caso d’uso**, per **Servizio o caso d’uso**, scegli **EC2**.

   1. In **Caso d’uso**, scegli **EC2 – Parco istanze spot**.
**Nota**  
Lo ** use case ** EC2 - Spot Fleet creerà automaticamente una policy con le autorizzazioni IAM richieste e suggerirà ** AWSEC2SpotFleetServiceRolePolicy ** come nome del ruolo.

   1. Scegli **Next (Successivo)**.

1. Nella pagina **Add permissions** (Aggiungi autorizzazioni), scegli **Next** (Successivo).

1. Nella pagina **Nomina, rivedi e crea** scegli **Crea ruolo**.

**Per creare il AWSServiceRoleForEC2SpotFleet ruolo per Spot Fleet utilizzando AWS CLI**  
Utilizzare il comando [create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) come segue.

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

Se non hai più bisogno di usare Spot Fleet, ti consigliamo di eliminare il ** ruolo ** AWSServiceRoleForEC2Spot Fleet. Dopo che questo ruolo è stato eliminato dall’account, Amazon EC2 creerà di nuovo il ruolo se viene richiesto un parco istanze spot utilizzando la console. Per ulteriori informazioni, consulta [Eliminazione del ruolo collegato ai servizi](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html#id_roles_manage_delete_slr) nella *Guida per l'utente IAM*.

### Concessione dell’accesso alle CMK per l’uso con le AMI crittografate e gli snapshot EBS
<a name="spot-fleet-service-linked-roles-access-to-cmks"></a>

Se specifichi un'AMI [ crittografata ](AMIEncryption.md) o un'istantanea Amazon EBS crittografata nella tua richiesta Spot Fleet e utilizzi una chiave gestita dal cliente per la crittografia, devi concedere al ** ruolo ** AWSServiceRoleForEC2Spot Fleet l'autorizzazione a utilizzare la CMK in modo che Amazon EC2 possa avviare istanze per tuo conto. Per farlo, occorre aggiungere una concessione alla chiave CMK, come mostrato nella procedura seguente.

Nel processo di assegnazione delle autorizzazioni, le concessioni rappresentano un’alternativa alle policy delle chiavi. Per ulteriori informazioni, consulta [Utilizzo delle concessioni](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) e [Utilizzo delle policy delle chiavi in AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) nella *Guida per gli sviluppatori di AWS Key Management Service *.

**Per concedere al AWSServiceRoleForEC2SpotFleet ruolo le autorizzazioni per l'utilizzo del CMK**
+ Usa il [ comando ](https://docs.aws.amazon.com/cli/latest/reference/kms/create-grant.html) create-grant per aggiungere una concessione al CMK e per specificare il principale (il ruolo ** collegato al servizio ** AWSServiceRoleForEC2Spot Fleet) a cui viene concessa l'autorizzazione per eseguire le operazioni consentite dalla concessione. La CMK è specificata dal parametro `key-id` e dal relativo ARN. L'entità principale è specificata dal `grantee-principal` parametro e dall'ARN del ruolo collegato al servizio Fleet. ** AWSServiceRoleForEC2Spot **

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

## Service-linked ruolo per le istanze Spot
<a name="service-linked-roles-spot-instances"></a>

Amazon EC2 utilizza il ruolo collegato al servizio denominato ** AWSServiceRoleForEC2Spot ** per avviare e gestire le istanze Spot per tuo conto. Per ulteriori informazioni, consulta [Service-linked ruolo per le richieste di istanza Spot](service-linked-roles-spot-instance-requests.md).

## Ruolo IAM per l’assegnazione di tag a un parco istanze spot
<a name="spot-fleet-service-linked-role"></a>

Il ruolo IAM `aws-ec2-spot-fleet-tagging-role` concede l’autorizzazione al serie di istanze spot per assegnare tag alla richiesta, alle istanze e ai volumi della serie di istanze spot. Per ulteriori informazioni, consulta [Applicare un tag a una richiesta nuova o esistente per un parco istanze spot e alle istanze e ai volumi che avvia](tag-spot-fleet.md).

**Importante**  
Se scegli di applicare tag alle istanze nel parco istanze e scegli anche di mantenere la capacità obiettivo (la richiesta della serie di istanze spot è di tipo `maintain`), le differenze nelle autorizzazioni impostate per l’utente e il `IamFleetRole` potrebbero generare un comportamento incoerente nell’assegnazione di tag alle istanze nel parco istanze. Se l’autorizzazione `IamFleetRole` `CreateTags` non include, alcune delle istanze lanciate dal parco istanze potrebbero non essere taggate. Mentre stiamo lavorando per risolvere questa incoerenza, per garantire che tutte le istanze lanciate dal parco istanze siano taggate, si consiglia di utilizzare il ruolo `aws-ec2-spot-fleet-tagging-role` per `IamFleetRole`. In alternativa, per utilizzare un ruolo esistente, collega la `AmazonEC2SpotFleetTaggingRole` AWS Managed Policy al ruolo esistente. In caso contrario, è necessario aggiungere manualmente l’autorizzazione `CreateTags` alla policy esistente.

**Per creare il ruolo IAM per l’assegnazione di tag a un parco istanze spot**

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, seleziona **Roles** (Ruoli).

1. Selezionare **Create role (Crea ruolo)**.

1. Nella pagina **Select trusted entity** (Seleziona entità attendibile) in **Trusted entity type** (Tipo di entità attendibile), scegli **AWS service** (Servizio ).

1. In **Use case** (Caso d’uso), da **Use cases for other AWS services** (Casi d’uso per altri servizi ), scegli **EC2**, quindi scegli **EC2 - Spot Fleet Tagging** (EC2 - Assegnazione di tag per la serie di istanze spot).

1. Scegli **Next** (Successivo).

1. Nella pagina **Add permissions** (Aggiungi autorizzazioni), scegli **Next** (Successivo).

1. Nella pagina **Name, review, and create** (Nome, revisione e creazione), per **Role name** (Nome ruolo) inserisci un nome per il ruolo (ad esempio **aws-ec2-spot-fleet-tagging-role**).

1. Rivedi le informazioni presenti nella pagina, quindi scegli **Create role** (Crea ruolo).

### Cross-service vice prevenzione confusa
<a name="cross-service-confused-deputy-prevention"></a>

Il [problema confused deputy](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) è un problema di sicurezza in cui un’entità che non dispone dell’autorizzazione per eseguire un’azione può costringere un’entità maggiormente privilegiata a eseguire l’azione. Consigliamo di utilizzare le chiavi di contesto delle condizioni globali [`aws:SourceArn`](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) e [`aws:SourceAccount`](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) nelle policy di attendibilità `aws-ec2-spot-fleet-tagging-role` per limitare le autorizzazioni con cui la serie di istanze spot fornisce un altro servizio alla risorsa.

**Per aggiungere le chiavi di SourceAccount condizione aws: SourceArn e aws: alla policy di fiducia `` aws-ec2-spot-fleet-tagging-role**

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione, seleziona **Ruoli**.

1. Individuare la policy `aws-ec2-spot-fleet-tagging-role` creata in precedenza e scegliere il collegamento (non la casella di spunta).

1. In **Summary** (Riepilogo), scegliere la scheda **Trust relationships** (Relazioni di attendibilità), quindi scegliere **Edit trust policy** (Modifica policy di attendibilità).

1. Nell’istruzione JSON, aggiungere un elemento `Condition` contenente le proprie chiavi di contesto delle condizioni globali `aws:SourceAccount` e `aws:SourceArn` per prevenire il [problema del “deputy confused”](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html), come segue:

   ```
   "Condition": {
         "ArnLike": {
           "aws:SourceArn": "arn:aws:ec2:us-east-1:{{111122223333}}:spot-fleet-request/sfr-*"
         },
         "StringEquals": {
           "aws:SourceAccount": "{{111122223333}}"
         }
   ```
**Nota**  
Se si utilizzano entrambe le chiavi di contesto delle condizioni globali e il valore `aws:SourceArn` contiene l’ID account, il valore `aws:SourceAccount` e l’account nel valore `aws:SourceArn` devono utilizzare lo stesso ID account quando viene utilizzato nella stessa dichiarazione di policy.

   La policy di attendibilità finale sarà la seguente:

------
#### [ 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. Scegli **Aggiorna policy**.

La tabella seguente fornisce valori potenziali affinché `aws:SourceArn` limiti l’ambito di `aws-ec2-spot-fleet-tagging-role` secondo diversi gradi di specificità.



| Operazione API | Servizio chiamato | Scope | `aws:SourceArn` | 
| --- | --- | --- | --- | 
| RequestSpotFleet | AWS STS (AssumeRole) | Limita la capacità di AssumeRole in aws-ec2-spot-fleet-tagging-role per spot-fleet-requests nell’account specificato. | arn:aws:ec2:\*:{{123456789012}}:spot-fleet-request/sfr-\* | 
| RequestSpotFleet | AWS STS (AssumeRole) | Limita la capacità di AssumeRole in aws-ec2-spot-fleet-tagging-role per spot-fleet-requests nell’account specificato e nella regione specificata. Questo ruolo non sarà utilizzabile in altre regioni. | arn:aws:ec2:{{us-east-1}}:{{123456789012}}:spot-fleet-request/sfr-\* | 
| RequestSpotFleet | AWS STS (AssumeRole) | Limita la capacità di AssumeRole in aws-ec2-spot-fleet-tagging-role alle sole operazioni che interessano il parco istanze sfr-11111111-1111-1111-1111-111111111111. Questo ruolo potrebbe non essere utilizzabile per altre serie di istanze spot. Inoltre, questo ruolo non può essere utilizzato per avviare nuove serie di istanze spot tramite il comando request-spot-fleet. | arn:aws:ec2:{{us-east-1}}:{{123456789012}}:spot-fleet-request/sfr-{{11111111-1111-1111-1111-111111111111}} | 