

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

# Identità IAM
<a name="id"></a>

Un'identità IAM può essere associata a una o più policy, che determinano quali azioni un'identità è autorizzata a eseguire, su quali AWS risorse e in quali condizioni. Le identità IAM includono utenti IAM, ruoli IAM e gruppi IAM. Un’entità IAM è un tipo di identità che rappresenta un utente umano o un carico di lavoro programmatico che può essere autenticato e quindi autorizzato a eseguire operazioni in Account AWS. Le entità IAM includono utenti IAM e ruoli IAM. Per le definizioni dei termini di uso comune, consulta [Termini](introduction_identity-management.md#intro-structure-terms).

Puoi federare identità esistenti da un provider di identità esterno. Queste identità assumeranno ruoli IAM per accedere alle AWS risorse. Per ulteriori informazioni, consulta [Provider di identità e federazione in AWS](id_roles_providers.md).

Puoi anche utilizzarle AWS IAM Identity Center per creare e gestire identità e accedere alle AWS risorse. I set di autorizzazioni del Centro identità IAM creano automaticamente i ruoli IAM necessari per fornire l'accesso alle risorse. Per ulteriori informazioni, consulta [Cos'è il Centro identità IAM?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html).

 Utente root dell'account AWS È un Account AWS principio che viene creato quando Account AWS viene stabilito il tuo. L'utente root ha accesso a tutti i AWS servizi e le risorse dell'account. Per ulteriori informazioni, consulta [Utente root IAM](#id_root). 

**Nota**  
Segui le [best practice di sicurezza in IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/best-practices-use-cases.html) quando lavori con le identità IAM. 
Segui le [best practice per l'utente root per il tuo Account AWS](root-user-best-practices.md) quando lavori con l'utente root.
Se riscontri problemi di accesso, consulta [Accedi alla Console di gestione AWS](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html). 

## Utente root IAM
<a name="id_root"></a>

La prima volta che si crea un account Account AWS, si inizia con un'unica identità di accesso che ha accesso completo a tutte Servizi AWS le risorse dell'account. Questa identità è chiamata *utente Account AWS root*. Per ulteriori informazioni, consulta la sezione [Utente root dell'account AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html).

## Utenti IAM
<a name="id_iam-users"></a>

Un *utente IAM* è un'identità interna Account AWS che dispone di autorizzazioni specifiche per una singola persona o applicazione. Per ulteriori informazioni, consulta [Utenti IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html). 

## Gruppi di utenti IAM
<a name="id_iam-groups"></a>

Un *gruppo di utenti IAM* è un'identità che specifica un insieme di utenti IAM. Per ulteriori informazioni, consulta [Gruppi di utenti](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html).

## Ruoli IAM
<a name="id_iam-roles"></a>

Un *ruolo IAM* è un'identità interna all'utente Account AWS che dispone di autorizzazioni specifiche. È simile a un utente IAM, ma non è associato a una persona specifica. Per ulteriori informazioni, consulta [Ruoli IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html).

# Utente root dell'account AWS
<a name="id_root-user"></a>

Quando crei per la prima volta un account Amazon Web Services (AWS), inizi con un'identità di accesso singolo che ha accesso completo a tutti i AWS servizi e le risorse dell'account. Questa identità è chiamata *utente root* dell' AWS account. L'indirizzo e-mail e la password che hai usato per creare il tuo Account AWS sono le credenziali che usi per accedere come utente root.
+ Ricorri all'utente root solo per eseguire le attività che richiedono le autorizzazioni a livello root. Per un elenco completo delle attività che richiedono il tuo accesso come utente root, consulta la pagina [Attività che richiedono credenziali dell'utente root](#root-user-tasks). 
+ Segui le [best practice per gli utenti root per il tuo Account AWS](root-user-best-practices.md).
+ Se riscontri problemi di accesso, consulta [Accedi alla Console di gestione AWS](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html).

**Importante**  
Si consiglia vivamente di non utilizzare l'utente root per le attività quotidiane e di seguire le [best practice dell'utente root per il tuo Account AWS](root-user-best-practices.md). Conserva le credenziali dell’utente root e utilizzale per eseguire le operazioni che solo l’utente root può eseguire. Per un elenco completo delle attività che richiedono il tuo accesso come utente root, consulta la pagina [Attività che richiedono credenziali dell'utente root](#root-user-tasks). 

Sebbene l’MFA venga applicata per impostazione predefinita per gli utenti root, è comunque necessaria un’azione da parte del cliente per aggiungere l’MFA durante la creazione iniziale dell’account o quando viene richiesto durante l’accesso. Per ulteriori informazioni sull’utilizzo dell’MFA per proteggere l’utente root, consulta [Autenticazione a più fattori per Utente root dell'account AWS](enable-mfa-for-root.md).

## Gestire centralmente l'accesso root per gli account membri
<a name="id_root-user-access-management"></a>

Per aiutarti a gestire le credenziali su larga scala, puoi proteggere centralmente l'accesso alle credenziali degli utenti root per gli account membri in AWS Organizations. Quando abiliti AWS Organizations, unisci tutti i tuoi AWS account in un'organizzazione per la gestione centralizzata. La centralizzazione dell'accesso root consente di rimuovere le credenziali dell'utente root e completare le seguenti attività con privilegi sugli account membri.

**Rimuovere le credenziali dell'utente root per gli account membri**  
Dopo aver [centralizzato l'accesso root per gli account membri](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-enable-root-access.html), puoi scegliere di eliminare le credenziali dell'utente root dagli account membri in Organizations. Puoi rimuovere la password dell’utente root, le chiavi di accesso, i certificati per la firma e disattivare l’autenticazione a più fattori (MFA). Per impostazione predefinita, i nuovi account creati in Organizations non hanno credenziali dell'utente root. Gli account membri non possono accedere al proprio utente root o eseguirne il recupero della password a meno che non sia abilitato il recupero dell'account.

**Esegui attività con privilegi che richiedono credenziali dell'utente root.**  
Alcune attività possono essere eseguite solo quando si effettua l'accesso come utente root di un account. Alcune di queste [Attività che richiedono credenziali dell'utente root](#root-user-tasks) possono essere eseguite dall'account di gestione o dall'amministratore delegato di IAM. Per ulteriori informazioni su come eseguire azioni con privilegi sugli account membri, consulta [Eseguire un'attività con privilegi](id_root-user-privileged-task.md).

**Abilitare il ripristino dell'account dell'utente root**  
Se è necessario recuperare le credenziali dell'utente root per un account membro, l'account di gestione di Organizations o l'amministratore delegato può eseguire l'attività con privilegi **Consenti il recupero della password**. La persona con accesso alla casella di posta elettronica dell'utente root per l'account membro può [reimpostare la password dell'utente root](https://docs.aws.amazon.com/IAM/latest/UserGuide/reset-root-password.html) per recuperare le credenziali dell'utente root. Ti consigliamo di eliminare le credenziali dell'utente root una volta completata l'attività che richiede l'accesso all'utente root.

# Centralizzare l'accesso root per gli account dei membri
<a name="id_root-enable-root-access"></a>

Le credenziali dell'utente root sono le credenziali iniziali assegnate a chiunque Account AWS abbia accesso completo a tutti i AWS servizi e le risorse dell'account. Quando abiliti AWS Organizations, unisci tutti i tuoi AWS account in un'organizzazione per la gestione centralizzata. Ogni account membro ha il proprio utente root con autorizzazioni predefinite per eseguire qualsiasi azione nell'account membro. Ti consigliamo di proteggere centralmente le credenziali dell'utente root di Account AWS Managed Using AWS Organizations per impedire il ripristino e l'accesso delle credenziali dell'utente root su larga scala.

Dopo aver centralizzato l'accesso root, puoi scegliere di eliminare le credenziali dell'utente root dagli account membri dell'organizzazione. Puoi rimuovere la password dell’utente root, le chiavi di accesso, i certificati per la firma e disattivare l’autenticazione a più fattori (MFA). Per impostazione predefinita, i nuovi account creati in AWS Organizations non hanno credenziali dell’utente root. Gli account dei membri non possono accedere al proprio utente root o eseguirne il recupero della password.

**Nota**  
Sebbene alcune [Attività che richiedono credenziali dell'utente root](id_root-user.md#root-user-tasks) possano essere eseguite dall’account di gestione o dall’amministratore delegato per IAM, alcune attività possono essere eseguite solo quando si effettua l’accesso come utente root di un account.  
Se è necessario recuperare le credenziali dell’utente root per un account membro al fine di eseguire una di queste attività, segui la procedura indicata in [Eseguire un'attività con privilegi](id_root-user-privileged-task.md) e seleziona **Consenti il recupero della password**. La persona che ha accesso alla casella di posta elettronica dell’utente root per l’account membro può quindi seguire i passaggi per [reimpostare la password dell’utente root](https://docs.aws.amazon.com/IAM/latest/UserGuide/reset-root-password.html) e accedere come utente root dell’account membro.  
 Ti consigliamo di eliminare le credenziali dell'utente root una volta completata l'attività che richiede l'accesso all'utente root.

## Prerequisiti
<a name="enable-root-access-management_prerequisite"></a>

Prima di centralizzare l'accesso root, è necessario disporre di un account configurato con le seguenti impostazioni:
+ Bisogna possedere le seguenti autorizzazioni IAM:
  + `iam:GetAccessKeyLastUsed`
  + `iam:GetAccountSummary`
  + `iam:GetLoginProfile`
  + `iam:GetUser`
  + `iam:ListAccessKeys`
  + `iam:ListMFADevices`
  + `iam:ListSigningCertificates`
  + `sts:AssumeRoot`
**Nota**  
Per verificare lo stato delle credenziali dell'utente root di un account membro, è possibile utilizzare la politica [IAMAuditRootUserCredentials](security-iam-awsmanpol.md#security-iam-awsmanpol-IAMAuditRootUserCredentials) AWS gestita per definire l'ambito delle autorizzazioni quando si esegue un'attività privilegiata su un account AWS Organizations membro o utilizzare qualsiasi politica con accesso a. `iam:GetAccountSummary`  
Per generare il report informativo sulle credenziali dell’utente root, per le altre policy è sufficiente che l’operazione `iam:GetAccountSummary` produca lo stesso risultato. Inoltre, è possibile elencare oppure ottenere informazioni sulle credenziali dei singoli utenti root, compreso:  
Se è presente una password per l’utente root
Se è presente una chiave di accesso dell’utente root e quando è stata utilizzata l’ultima volta
Se l’utente root ha certificati di firma associati
I dispositivi MFA associati all’utente root
L’elenco dello stato delle credenziali consolidate dell’utente root
+ È necessario gestire il proprio account. Account AWS [AWS Organizations](https://docs.aws.amazon.com//organizations/latest/userguide/orgs_introduction.html)
+ Per abilitare questa funzionalità nella tua organizzazione, devi disporre delle seguenti autorizzazioni:
  + `iam:EnableOrganizationsRootCredentialsManagement`
  + `iam:EnableOrganizationsRootSessions`
  + `iam:ListOrganizationsFeatures`
  + `organizations:EnableAwsServiceAccess`
  + `organizations:ListAccountsForParent`
  + `organizations:RegisterDelegatedAdministrator` 
+ Per garantire una funzionalità ottimale della console, si consiglia di abilitare le seguenti autorizzazioni aggiuntive:
  + `organizations:DescribeAccount`
  + `organizations:DescribeOrganization`
  + `organizations:ListAWSServiceAccessForOrganization`
  + `organizations:ListDelegatedAdministrators`
  + `organizations:ListOrganizationalUnitsForParent`
  + `organizations:ListParents`
  + `organizations:ListTagsForResource`

## Abilitazione dell'accesso root centralizzato (console)
<a name="enable-root-access-console"></a>

**Per abilitare questa funzione per gli account dei membri in Console di gestione AWS**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione della console, scegli **Gestione degli accessi root**, quindi seleziona **Abilita**.
**Nota**  
Se vedi che la **gestione degli accessi root è disabilitata**, abilita l'accesso affidabile per AWS Identity and Access Management in AWS Organizations. Per i dettagli, consulta [AWS IAM e AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/services-that-can-integrate-iam.html) nella *Guida per l'utente di AWS Organizations *.

1. Nella sezione Funzionalità da abilitare, scegli le funzionalità da abilitare.
   + Seleziona **Gestione delle credenziali root** per consentire all'account di gestione e all'amministratore delegato di IAM di eliminare le credenziali utente root per gli account membri. È necessario abilitare le azioni root con privilegi negli account membri per consentire agli account membri di recuperare le credenziali dell'utente root dopo che sono state eliminate.
   + Seleziona **Azioni root con privilegi negli account membri** per consentire all'account di gestione e all'amministratore delegato di IAM di eseguire determinate attività che richiedono le credenziali dell'utente root.

1. (Facoltativo) Inserisci l'ID account dell'**amministratore delegato** autorizzato a gestire l'accesso degli utenti root e ad eseguire azioni con privilegi sugli account membri. Consigliamo un account destinato a scopi di sicurezza o gestione.

1. Scegli **Abilita **.

## Abilitazione dell'accesso root centralizzato (AWS CLI)
<a name="enable-root-access-cli"></a>

**Per abilitare l'accesso root centralizzato da AWS Command Line Interface ()AWS CLI**

1. Se non hai già abilitato l'accesso affidabile per AWS Identity and Access Management in AWS Organizations, usa il seguente comando: [aws organisations enable-aws-service-access](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/organizations/enable-aws-service-access.html).

1. Usa il seguente comando per consentire all'account di gestione e all'amministratore delegato di eliminare le credenziali dell'utente root per gli account dei membri: [aws iam enable-organizations-root-credentials](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/enable-organizations-root-credentials-management.html) -management.

1. [Utilizzare il comando seguente per consentire all'account di gestione e all'amministratore delegato di eseguire determinate attività che richiedono le credenziali dell'utente root: aws iam. enable-organizations-root-sessions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/enable-organizations-root-sessions.html)

1. [(Facoltativo) Utilizzate il seguente comando per registrare un amministratore delegato: aws organisations. register-delegated-administrator](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/organizations/register-delegated-administrator.html)

   L'esempio seguente assegna l'account 111111111111 come amministratore delegato per il servizio IAM.

   ```
   aws organizations register-delegated-administrator 
   --service-principal iam.amazonaws.com
   --account-id 111111111111
   ```

## Abilitazione dell'accesso root centralizzato (API)AWS
<a name="enable-root-access-api"></a>

**Per abilitare l'accesso root centralizzato dall'API AWS**

1. Se non hai già abilitato l'accesso affidabile per AWS Identity and Access Management in AWS Organizations, usa il seguente comando: [Enable AWSService Access.](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnableAWSServiceAccess.html)

1. Usa il comando seguente per consentire all'account di gestione e all'amministratore delegato di eliminare le credenziali dell'utente root per gli account dei membri:. [EnableOrganizationsRootCredentialsManagement](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableOrganizationsRootCredentialsManagement.html)

1. Utilizzare il comando seguente per consentire all'account di gestione e all'amministratore delegato di eseguire determinate attività che richiedono le credenziali dell'utente root:. [EnableOrganizationsRootSessions](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableOrganizationsRootSessions.html)

1. (Facoltativo) Utilizzate il seguente comando per registrare un amministratore delegato:. [RegisterDelegatedAdministrator](https://docs.aws.amazon.com/organizations/latest/APIReference/API_RegisterDelegatedAdministrator.html)

## Fasi successive
<a name="enable-root-access_next-steps"></a>

Dopo aver protetto centralmente le credenziali con privilegi per gli account membri dell'organizzazione, consulta [Eseguire un'attività con privilegi](id_root-user-privileged-task.md) per eseguire le azioni con privilegi su un account membro.

# Esegui un'attività privilegiata su un account AWS Organizations membro
<a name="id_root-user-privileged-task"></a>

L'account di AWS Organizations gestione o un account amministratore delegato per IAM può eseguire alcune attività privilegiate sugli account dei membri che altrimenti richiederebbero le credenziali dell'utente root. Con l'accesso root centralizzato, queste attività vengono eseguite tramite sessioni privilegiate a breve termine. Queste sessioni forniscono credenziali temporanee destinate a specifiche azioni privilegiate, senza richiedere l'accesso dell'utente root sull'account del membro.

Una volta avviata una sessione con privilegi, puoi eliminare una policy del bucket Amazon S3 configurata in modo errato, eliminare la policy di una coda Amazon SQS non configurata correttamente, eliminare le credenziali dell'utente root per un account membro e riabilitare le credenziali dell'utente root per un account membro.

**Nota**  
Per utilizzare l'accesso root centralizzato, devi accedere tramite un account di gestione o un account amministratore delegato come utente o ruolo IAM con l'autorizzazione concessa esplicitamente. `sts:AssumeRoot` Non è possibile utilizzare le credenziali dell'utente root per effettuare una chiamata. `sts:AssumeRoot`

## Prerequisiti
<a name="root-user-privileged-task_prerequisite"></a>

Prima di poter avviare una sessione con privilegi, è necessario disporre delle seguenti impostazioni:
+ Devi aver abilitato l'accesso root centralizzato nella tua organizzazione. Per le operazioni per abilitare questa funzionalità, consulta [Centralizzare l'accesso root per gli account dei membri](id_root-enable-root-access.md).
+ Il tuo account di gestione o l'account amministratore delegato deve disporre delle seguenti autorizzazioni: `sts:AssumeRoot`

## Esecuzione di un'azione con privilegi su un account membro (console)
<a name="root-user-privileged-task_action-console"></a>

**Per avviare una sessione di azione privilegiata in un account membro in Console di gestione AWS**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione della console, scegli **Gestione dell'accesso root**.

1. Seleziona un nome dall'elenco degli account membri e scegli **Esegui azioni con privilegi**.

1. Scegli l'azione con privilegi che desideri eseguire nell'account membro.
   + Seleziona **Elimina policy del bucket Amazon S3** per rimuovere una policy del bucket mal configurata che impedisce a tutti i principali di accedere al bucket Amazon S3.

     1. Scegli **Sfoglia S3** per selezionare un nome dai bucket di proprietà dell'account membro e seleziona **Scegli**.

     1. Scegli **Elimina policy del bucket**.

     1. Utilizza la console Amazon S3 per correggere la policy del bucket dopo aver eliminato la policy configurata non correttamente. Per informazioni, consulta [Aggiunta di una policy del bucket utilizzando la console Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html) nella *Guida per l'utente di Amazon S3*.
   + Seleziona **Elimina la policy Amazon SQS** per eliminare una policy basata sulle risorse Amazon Simple Queue Service che rifiuta a tutti i principali l'accesso a una coda Amazon SQS.

     1. Inserisci il nome della coda in **Nome della coda SQS** e seleziona **Elimina la policy SQS**.

     1. Utilizza la console Amazon SQS per correggere la policy della coda dopo aver eliminato la policy configurata non correttamente. Per ulteriori informazioni, consulta [Configurazione di una policy di accesso in Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-add-permissions.html) nella *Guida per gli sviluppatori di Amazon SQS*.
   + Seleziona **Elimina le credenziali root** per rimuovere l'accesso root da un account membro. L’eliminazione delle credenziali dell’utente root rimuove la password dell’utente root, le chiavi di accesso e i certificati di firma, e disattiva l’autenticazione a più fattori (MFA) per l’account membro.

     1. Scegli **Elimina le credenziali root**.
   + Seleziona **Consenti il recupero della password** per recuperare le credenziali dell'utente root per un account membro.

     Questa opzione è disponibile solo quando l'account membro non ha le credenziali dell'utente root.

     1. Scegli **Consenti il recupero della password**.

     1. Dopo aver eseguito questa azione con privilegi, la persona con accesso alla casella di posta elettronica dell'utente root per l'account membro può [reimpostare la password dell'utente root](https://docs.aws.amazon.com/IAM/latest/UserGuide/reset-root-password.html) e accedere all'utente root dell'account membro.

## Esecuzione di un'azione con privilegi su un account membro (AWS CLI)
<a name="root-user-privileged-task_action-cli"></a>

**Per avviare una sessione di azione privilegiata in un account membro dal AWS Command Line Interface**

1. Usa il seguente comando per assumere una sessione dell'utente root: [aws sts assume-root](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/assume-root.html).
**Nota**  
L'endpoint globale non è supportato per `sts:AssumeRoot`. È necessario inviare questa richiesta a un AWS STS endpoint regionale. Per ulteriori informazioni, consulta [Gestisci AWS STS in un Regione AWS](id_credentials_temp_enable-regions.md).

   Quando si avvia una sessione dell'utente root con privilegi per un account membro, è necessario definire l'`task-policy-arn` per limitare l'ambito della sessione all'azione con privilegi da eseguire durante la sessione. È possibile utilizzare una delle seguenti policy gestite da AWS per definire l'ambito delle azioni di sessione con privilegi.
   + [IAMAuditRootUserCredentials](security-iam-awsmanpol.md#security-iam-awsmanpol-IAMAuditRootUserCredentials)
   + [IAMCreateRootUserPassword](security-iam-awsmanpol.md#security-iam-awsmanpol-IAMCreateRootUserPassword)
   + [IAMDeleteRootUserCredentials](security-iam-awsmanpol.md#security-iam-awsmanpol-IAMDeleteRootUserCredentials)
   + [S3 UnlockBucketPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-S3UnlockBucketPolicy)
   + [SQSUnlockQueuePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-SQSUnlockQueuePolicy)

   [Per limitare le azioni che un account di gestione o un amministratore delegato possono eseguire durante una sessione utente root privilegiata, è possibile utilizzare la chiave di AWS STS condizione sts:. TaskPolicyArn](reference_policies_iam-condition-keys.md#ck_taskpolicyarn)

    Nel seguente esempio, l'amministratore delegato presuppone root per eliminare le credenziali dell'utente root per l'ID dell'account membro. *111122223333* 

   ```
   aws sts assume-root \
     --target-principal 111122223333 \
     --task-policy-arn arn=arn:aws:iam::aws:policy/root-task/IAMDeleteRootUserCredentials \
     --duration-seconds 900
   ```

1. Utilizza `SessionToken`, `AccessKeyId` e `SecretAccessKey` dalla risposta per eseguire operazioni con privilegi nell’account membro. È possibile omettere il nome utente e la password nella richiesta per impostare come impostazione predefinita l'account utente.
   + **Controlla lo stato delle credenziali dell'utente root**. Usa i seguenti comandi per controllare lo stato delle credenziali dell'utente root per un account membro.
     + [get-user](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/get-user.html)
     + [get-login-profile](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/get-login-profile.html)
     + [list-access-keys](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-access-keys.html)
     + [list-signing-certificates](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-signing-certificates.html)
     + [list-mfa-devices](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-mfa-devices.html)
     + [get-access-key-last-usato](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/get-access-key-last-used.html)
   + **Elimina le credenziali dell'utente root**. Per eliminare l'accesso root utilizza i comandi riportati di seguito. È possibile rimuovere la password dell’utente root, le chiavi di accesso, i certificati di firma e disattivare l’autenticazione a più fattori (MFA) per rimuovere l’accesso e il recupero dell’utente root.
     + [delete-login-profile](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/delete-login-profile.html)
     + [delete-access-key](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/delete-access-key.html)
     + [delete-signing-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/delete-signing-certificate.html)
     + [deactivate-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/deactivate-mfa-device.html)
   + **Elimina la policy del bucket Amazon S3**. Utilizza i seguenti comandi per leggere, modificare ed eliminare una policy del bucket configurata in modo errato che impedisce a tutti i principali di accedere al bucket Amazon S3.
     + [list-buckets](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/list-buckets.html)
     + [get-bucket-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-policy.html)
     + [put-bucket-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-policy.html)
     + [delete-bucket-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-bucket-policy.html)
   + **Elimina la policy di Amazon SQS**. Utilizza i seguenti comandi per visualizzare ed eliminare una policy basata sulle risorse Amazon Simple Queue Service che nega a tutti i principali l'accesso a una coda Amazon SQS.
     + [list-queues](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sqs/list-queues.html)
     + [get-queue-url](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sqs/get-queue-url.html)
     + [get-queue-attributes](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sqs/get-queue-attributes.html)
     + [set-queue-attributes](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sqs/set-queue-attributes.html)
   + **Consenti il recupero della password**. Usa i seguenti comandi per visualizzare il nome utente e recuperare le credenziali dell'utente root per un account membro.
     + [get-login-profile](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/get-login-profile.html)
     + [create-login-profile](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-login-profile.html)

## Esecuzione di un'azione privilegiata su un account membro (API)AWS
<a name="root-user-privileged-task_action-api"></a>

**Per avviare una sessione di azione privilegiata in un account membro dall'API AWS**

1. Usa il seguente comando per assumere una sessione utente root: [AssumeRoot](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoot.html).
**Nota**  
L'endpoint globale non è supportato per AssumeRoot. È necessario inviare questa richiesta a un AWS STS endpoint regionale. Per ulteriori informazioni, consulta [Gestisci AWS STS in un Regione AWS](id_credentials_temp_enable-regions.md).

   Quando si avvia una sessione dell'utente root con privilegi per un account membro, è necessario definire l'`TaskPolicyArn` per limitare l'ambito della sessione all'azione con privilegi da eseguire durante la sessione. È possibile utilizzare una delle seguenti politiche AWS gestite per definire l'ambito delle azioni di sessione privilegiate.
   + [IAMAuditRootUserCredentials](security-iam-awsmanpol.md#security-iam-awsmanpol-IAMAuditRootUserCredentials)
   + [IAMCreateRootUserPassword](security-iam-awsmanpol.md#security-iam-awsmanpol-IAMCreateRootUserPassword)
   + [IAMDeleteRootUserCredentials](security-iam-awsmanpol.md#security-iam-awsmanpol-IAMDeleteRootUserCredentials)
   + [S3 UnlockBucketPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-S3UnlockBucketPolicy)
   + [SQSUnlockQueuePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-SQSUnlockQueuePolicy)

   [Per limitare le azioni che un account di gestione o un amministratore delegato possono eseguire durante una sessione di utente root privilegiato, puoi utilizzare la chiave di AWS STS condizione sts:. TaskPolicyArn](reference_policies_iam-condition-keys.md#ck_taskpolicyarn)

   Nell'esempio seguente, l'amministratore delegato presuppone che sia root a leggere, modificare ed eliminare una policy basata sulle risorse non configurata correttamente per un bucket Amazon S3 per l'ID dell'account membro. *111122223333*

   ```
   https://sts.us-east-2.amazonaws.com/
     ?Version=2011-06-15
     &Action=AssumeRoot
     &TargetPrincipal=111122223333
     &PolicyArns.arn=arn:aws:iam::aws:policy/root-task/S3UnlockBucketPolicy 
     &DurationSeconds 900
   ```

1. Utilizza `SessionToken`, `AccessKeyId` e `SecretAccessKey` dalla risposta per eseguire operazioni con privilegi nell’account membro. È possibile omettere il nome utente e la password nella richiesta per impostare come impostazione predefinita l'account utente.
   + **Controlla lo stato delle credenziali dell'utente root**. Usa i seguenti comandi per controllare lo stato delle credenziali dell'utente root per un account membro.
     + [GetUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html)
     + [GetLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html)
     + [ListAccessKeys](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html)
     + [ListSigningCertificates](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSigningCertificates.html)
     + [ElencoMFADevices](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListMFADevices.html)
     + [GetAccessKeyLastUsed](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html)
   + **Elimina le credenziali dell'utente root**. Per eliminare l'accesso root utilizza i comandi riportati di seguito. È possibile rimuovere la password dell’utente root, le chiavi di accesso, i certificati di firma e disattivare l’autenticazione a più fattori (MFA) per rimuovere l’accesso e il recupero dell’utente root.
     + [DeleteLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteLoginProfile.html)
     + [DeleteAccessKey](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html)
     + [DeleteSigningCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteSigningCertificate.html)
     + [DeactivateMfaDevice](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html)
   + **Elimina la policy del bucket Amazon S3**. Utilizza i seguenti comandi per leggere, modificare ed eliminare una policy del bucket configurata in modo errato che impedisce a tutti i principali di accedere al bucket Amazon S3.
     + [ListBuckets](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)
     + [GetBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicy.html)
     + [PutBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketPolicy.html)
     + [DeleteBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketPolicy.html)
   + **Elimina la policy di Amazon SQS**. Utilizza i seguenti comandi per visualizzare ed eliminare una policy basata sulle risorse Amazon Simple Queue Service che nega a tutti i principali l'accesso a una coda Amazon SQS.
     + [ListQueues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ListQueues.html)
     + [GetQueueUrl](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueUrl.html)
     + [GetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueAttributes.html)
     + [SetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html)
   + **Consenti il recupero della password**. Usa i seguenti comandi per visualizzare il nome utente e recuperare le credenziali dell'utente root per un account membro.
     + [GetLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html)
     + [CreateLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateLoginProfile.html)

# Autenticazione a più fattori per Utente root dell'account AWS
<a name="enable-mfa-for-root"></a>

**Importante**  
AWS consiglia di utilizzare una passkey o una chiave di sicurezza per l'MFA AWS, laddove possibile, poiché sono più resistenti ad attacchi come il phishing. Per ulteriori informazioni, consulta [Passkey e chiavi di sicurezza](#passkeys-security-keys-for-root).

L'autenticazione a più fattori (MFA) è un meccanismo semplice ed efficace per migliorare la sicurezza. Il primo fattore, la password, è un segreto che viene memorizzato, noto anche come fattore di conoscenza. Altri fattori possono essere fattori di possesso (qualcosa che possiedi, come una chiave di sicurezza) o fattori intrinseci (qualcosa che sei, come una scansione biometrica). Per una maggiore sicurezza, ti consigliamo vivamente di configurare l'autenticazione a più fattori (MFA) per proteggere AWS le tue risorse.

**Nota**  
Tutti i Account AWS tipi (account standalone, di gestione e account membro) richiedono la configurazione dell'MFA per l'utente root. Gli utenti devono registrare l'MFA entro 35 giorni dal primo tentativo di accesso per accedere alla MFA se la Console di gestione AWS MFA non è già abilitata.

Puoi abilitare l'MFA per gli utenti Utente root dell'account AWS e IAM. Quando abiliti MFA per l'utente root, questa impostazione influisce solo sulle credenziali dell'utente root. Per ulteriori informazioni su come abilitare l'MFA per gli utenti IAM, consulta [AWS Autenticazione a più fattori in IAM](id_credentials_mfa.md).

**Nota**  
Account AWS managed using AWS Organizations può avere la possibilità di [gestire centralmente l'accesso root](id_root-user.md#id_root-user-access-management) per gli account dei membri per impedire il recupero e l'accesso alle credenziali su larga scala. Se questa opzione è abilitata, è possibile eliminare le credenziali dell’utente root dagli account membri, incluse password e MFA, impedendo efficacemente l’accesso come utente root, il recupero della password o la configurazione dell’MFA. In alternativa, se preferisci mantenere i metodi di accesso basati su password, proteggi il tuo account registrando l’MFA per una maggiore protezione.

Prima di abilitare MFA per il tuo utente root, rivedi e [aggiorna le impostazioni dell'account e le informazioni di contatto](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-root-user.html) per verificare di disporre dell'accesso a e-mail e numero di telefono. Se il dispositivo MFA viene smarrito, rubato o non funziona, è comunque possibile accedere come utente root verificando la propria identità utilizzando tale e-mail e il numero di telefono. Per ulteriori informazioni sull'accesso utilizzando fattori di autenticazione alternativi, consultare [Recuperare un'identità protetta da MFA in IAM](id_credentials_mfa_lost-or-broken.md). Per disabilitare questa funzionalità, contatta [Supporto AWS](https://console.aws.amazon.com/support/home#/). 

AWS supporta i seguenti tipi di MFA per l'utente root:
+ [Passkey e chiavi di sicurezza](#passkeys-security-keys-for-root)
+ [Applicazioni di autenticazione virtuale](#virtual-auth-apps-for-root)
+ [Token TOTP hardware](#hardware-totp-token-for-root)

## Passkey e chiavi di sicurezza
<a name="passkeys-security-keys-for-root"></a>

AWS Identity and Access Management supporta passkey e chiavi di sicurezza per MFA. In base agli standard FIDO, le passkey utilizzano la crittografia a chiave pubblica per fornire un'autenticazione forte e resistente al phishing, più sicura delle password. AWS supporta due tipi di passkey: passkey legate al dispositivo (chiavi di sicurezza) e passkey sincronizzate.
+ **Chiavi di sicurezza**: si tratta di dispositivi fisici, come un YubiKey, utilizzati come secondo fattore di autenticazione. Una singola chiave di sicurezza può supportare più account utente root e utenti IAM. 
+ **Passkey sincronizzate**: come secondo fattore utilizzano gestori di credenziali di provider come Google, Apple, account Microsoft e servizi di terze parti come 1Password, Dashlane e Bitwarden come secondo fattore.

Puoi utilizzare gli autenticatori biometrici integrati, come Touch ID su Apple MacBooks, per sbloccare il gestore delle credenziali e accedere a. AWS Le passkey vengono create con il provider scelto utilizzando l'impronta digitale, il viso o il PIN del dispositivo. Puoi anche utilizzare una passkey di autenticazione tra dispositivi (CDA) da un dispositivo, ad esempio un dispositivo mobile o una chiave di sicurezza hardware, per accedere su un altro dispositivo, ad esempio un laptop. Per ulteriori informazioni, consulta [Cross-device authentication (CDA)](https://passkeys.dev/docs/reference/terms/#cross-device-authentication-cda).

Puoi sincronizzare le passkey tra i tuoi dispositivi per facilitare gli accessi e migliorare l'usabilità e la recuperabilità. AWS Per ulteriori informazioni sull'abilitazione delle passkey e delle chiavi di sicurezza, consulta [Abilitare una passkey o una chiave di sicurezza per l'utente root (console)](enable-fido-mfa-for-root.md).

FIDO Alliance mantiene un elenco di tutti i [prodotti certificati FIDO](https://fidoalliance.org/certification/fido-certified-products/) compatibili con le specifiche FIDO.

## Applicazioni di autenticazione virtuale
<a name="virtual-auth-apps-for-root"></a>

Un'applicazione di autenticazione virtuale che viene eseguita su un telefono o altro dispositivo e simula un dispositivo fisico. Le app di autenticazione virtuale implementano l'algoritmo TOTP ([password monouso](https://datatracker.ietf.org/doc/html/rfc6238)) e supportano più token su un singolo dispositivo. L'utente deve immettere un codice valido dal dispositivo quando richiesto durante la procedura di accesso. Ogni token assegnato a un utente deve essere univoco. Per autenticarsi, un utente non può digitare un codice dal token di un altro utente.

È consigliabile utilizzare un dispositivo MFA virtuale nell'attesa dell'approvazione di un acquisto hardware o della consegna del dispositivo hardware. Per un elenco di alcune delle app supportate che puoi utilizzare come dispositivi MFA virtuali, consulta la pagina [Autenticazione a più fattori (MFA)](https://aws.amazon.com/iam/features/mfa/?audit=2019q1). Per istruzioni sulla configurazione di un dispositivo MFA virtuale con AWS, vedere. [Abilitare un dispositivo MFA virtuale per l'utente root (console)](enable-virt-mfa-for-root.md)

## Token TOTP hardware
<a name="hardware-totp-token-for-root"></a>

Un dispositivo hardware che genera un codice numerico a sei cifre basato sull'algoritmo con [password monouso](https://datatracker.ietf.org/doc/html/rfc6238). L'utente deve immettere un codice valido dal dispositivo su una seconda pagina Web durante la procedura di accesso. Ogni dispositivo MFA assegnato a un utente deve essere univoco. Per essere autenticati, gli utenti non possono digitare un codice generato dal dispositivo di un altro utente. Per informazioni sui dispositivi MFA hardware supportati, consulta [Autenticazione a più fattori (MFA)](https://aws.amazon.com/iam/features/mfa/?audit=2019q1). Per le istruzioni sulla configurazione di un token TOTP hardware con AWS, consulta [Abilitazione di un token TOTP hardware per l'utente root dell' (console)](enable-hw-mfa-for-root.md).

Se desideri utilizzare un dispositivo MFA fisico, ti consigliamo di utilizzare le chiavi di sicurezza FIDO come alternativa ai dispositivi TOTP hardware. Le chiavi di sicurezza FIDO offrono i vantaggi di non richiedere alcuna batteria, resistono al phishing e supportano più utenti root e IAM su un unico dispositivo per una maggiore sicurezza.

**Topics**
+ [Passkey e chiavi di sicurezza](#passkeys-security-keys-for-root)
+ [Applicazioni di autenticazione virtuale](#virtual-auth-apps-for-root)
+ [Token TOTP hardware](#hardware-totp-token-for-root)
+ [Abilitare una passkey o una chiave di sicurezza per l'utente root (console)](enable-fido-mfa-for-root.md)
+ [Abilitare un dispositivo MFA virtuale per l'utente root (console)](enable-virt-mfa-for-root.md)
+ [Abilitazione di un token TOTP hardware per l'utente root dell' (console)](enable-hw-mfa-for-root.md)

# Abilitare una passkey o una chiave di sicurezza per l'utente root (console)
<a name="enable-fido-mfa-for-root"></a>

Puoi configurare e abilitare una passkey per il tuo utente root Console di gestione AWS solo dall'API, non dall' AWS API AWS CLI o. <a name="enable_fido_root"></a>

**Per abilitare una passkey o una chiave di sicurezza per l'utente root (console)**

1. Apri la [Console di gestione AWS](https://console.aws.amazon.com/) e accedi utilizzando le credenziali dell'utente root.

   Per istruzioni, consulta [Accedere Console di gestione AWS come utente root nella Guida per](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html) *l'Accedi ad AWS utente*.

1. Scegli il nome dell'account sul lato destro della barra di navigazione, quindi seleziona **Credenziali di sicurezza**.  
![\[Security Credentials (Credenziali di sicurezza) nel menu di navigazione\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/security-credentials-root.shared.console.png)

1. Nella pagina **Le mie credenziali di sicurezza** dell'utente root, in **Autenticazione a più fattori (MFA)**, scegli **Assegna dispositivo MFA**.

1. Nella pagina **Nome del dispositivo MFA**, inserisci un **nome per il dispositivo**, scegli **Passkey o chiave di sicurezza**, quindi scegli **Avanti**.

1. In **Configura dispositivo**, configura la tua passkey. Crea una passkey con dati biometrici come il viso o l'impronta digitale, con un pin del dispositivo oppure inserendo la chiave di sicurezza FIDO nella porta USB del computer e toccandola.

1. Segui le istruzioni del tuo browser per scegliere un provider di passkey o selezionare dove vuoi archiviare la passkey da utilizzare su tutti i tuoi dispositivi. 

1. Scegli **Continua**.

Ora hai registrato la tua passkey per utilizzarla con AWS. La prossima volta che utilizzi le credenziali dell'utente root per effettuare l'accesso, dovrai autenticarti con la passkey per completare la procedura di accesso.

Per assistenza con la risoluzione dei problemi della chiave di sicurezza FIDO in , consulta [Risoluzione dei problemi relativi alle passkey e alle chiavi di sicurezza FIDO](troubleshoot_mfa-fido.md).

# Abilitare un dispositivo MFA virtuale per l'utente root (console)
<a name="enable-virt-mfa-for-root"></a>

È possibile utilizzare il Console di gestione AWS per configurare e abilitare un dispositivo MFA virtuale per l'utente root. Per abilitare i dispositivi MFA per Account AWS, è necessario accedere AWS utilizzando le credenziali dell'utente root. 

**Come configurare e abilitare un dispositivo MFA virtuale da utilizzare con l'utente root (console)**

1. Apri la [console di gestione AWS](https://console.aws.amazon.com/) e accedi utilizzando le credenziali dell'utente root.

   Per istruzioni, consulta [Accedere Console di gestione AWS come utente root nella Guida per](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html) l'*Accedi ad AWS utente*.

1. Selezionare il nome dell'account sul lato destro della barra di navigazione e scegliere **Security Credentials (Credenziali di sicurezza)**.  
![\[Security Credentials (Credenziali di sicurezza) nel menu di navigazione\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/security-credentials-root.shared.console.png)

1. Nella sezione **Multi-Factor Authentication (MFA) (Autenticazione a più fattori)**, scegliere **Assign MFA device (Assegna dispositivo MFA)**.

1. Nella procedura guidata, digita un **nome per il dispositivo**, scegli l'**app Authenticator** e quindi scegli **Next** (Avanti).

   IAM genera e visualizza le informazioni di configurazione per il dispositivo MFA virtuale, tra cui il codice grafico QR. Il grafico è una rappresentazione della chiave di configurazione segreta che è disponibile per l'inserimento manuale su dispositivi che non supportano i codici QR.

1. Aprire l'app MFA virtuale sul dispositivo. 

   Se l'app MFA virtuale supporta più account o dispositivi MFA virtuali, selezionare l'opzione che consente di creare un nuovo account o dispositivo MFA virtuale.

1. Il modo più semplice per configurare l'app è di utilizzare l'app per scannerizzare il codice QR. Se non è possibile scansionare il codice, è possibile digitare le informazioni di configurazione manualmente. Il codice QR e la chiave di configurazione segreta generati da IAM sono collegati al tuo Account AWS e non possono essere utilizzati con un altro account. Possono tuttavia essere riutilizzati per configurare un nuovo dispositivo MFA per l'account nel caso in cui si perda l'accesso al dispositivo MFA originale.
   + Per utilizzare il codice QR per la configurazione del dispositivo MFA virtuale, scegliere **Show QR code (Mostra codice QR)** nella procedura guidata. Quindi, seguire le istruzioni nell'app relative alla scansione del codice. Ad esempio, potrebbe essere necessario scegliere l'icona della fotocamera o un comando come **Scan account barcode (Scannerizza codice a barre account)** e utilizzare la fotocamera del dispositivo per eseguire la scansione del codice QR.
   + Nella procedura guidata **Set up device** (Configura dispositivo), scegli **Show secret key** (Mostra chiave segreta) e digita la chiave segreta nell'app MFA.
**Importante**  
Effettuare un backup sicuro del codice QR o della chiave segreta di configurazione o assicurarsi che più dispositivi MFA virtuali siano abilitati per il proprio account. Puoi registrare fino a **otto** dispositivi MFA di qualsiasi combinazione dei [tipi di MFA attualmente supportati](https://aws.amazon.com/iam/features/mfa/) con i tuoi Utente root dell'account AWS utenti e IAM. Un dispositivo MFA virtuale potrebbe non essere più disponibili, ad esempio, se si perde lo smartphone, in cui il dispositivo MFA virtuale è ospitato. In tal caso e se non riesci ad accedere al tuo account senza dispositivi MFA aggiuntivi collegati all'utente né tramite [Ripristino di un dispositivo MFA per l'utente root](id_credentials_mfa_lost-or-broken.md#root-mfa-lost-or-broken), non potrai accedere al tuo account e dovrai [contattare l'assistenza clienti](https://support.aws.amazon.com/#/contacts/aws-mfa-support) per rimuovere la protezione MFA per l'account. 

   Il dispositivo avvia la generazione di numeri a sei cifre.

1. Nella procedura guidata, nella casella **MFA Code 1** (Codice MFA 1), digita la password monouso visualizzata nel dispositivo MFA virtuale. Attendere fino a un massimo di 30 secondi prima che il dispositivo generi una nuova password una tantum. Quindi, digitare la seconda password monouso nella casella **Codice MFA 2**. Scegli **Aggiungi MFA**. 
**Importante**  
Inviare la richiesta immediatamente dopo la generazione dei codici. Se si generano i codici e si attende troppo a lungo per inviare la richiesta, il dispositivo MFA si associa correttamente con l'utente ma il dispositivo MFA non viene sincronizzato. Ciò accade perché le password monouso temporanee (TOTP) scadono dopo un breve periodo di tempo. Se ciò accade, è possibile [sincronizzare nuovamente il dispositivo](id_credentials_mfa_sync.md).

Il dispositivo è pronto per l'uso con. AWS Per ulteriori informazioni sull'utilizzo di MFA con la Console di gestione AWS, consulta [Accesso abilitato con MFA](console_sign-in-mfa.md).

# Abilitazione di un token TOTP hardware per l'utente root dell' (console)
<a name="enable-hw-mfa-for-root"></a>

Puoi configurare e abilitare un dispositivo MFA fisico per il tuo utente root Console di gestione AWS solo dall'API, non dall'API AWS CLI o AWS .

**Nota**  
È possibile che il testo visualizzato sia differente, ad esempio **Sign in using MFA (Accesso con un dispositivo MFA)** e **Troubleshoot your authentication device (Risoluzione dei problemi del dispositivo di autenticazione)**. Tuttavia, le funzionalità sono identiche. In entrambi i casi, se non fosse possibile verificare l'indirizzo e-mail e il numero di telefono dell'account utilizzando fattori alternativi dell'autenticazione, contatta [Supporto AWS](https://aws.amazon.com/forms/aws-mfa-support) per eliminare l'impostazione MFA.<a name="enable_physical_root"></a>

**Per abilitare un token TOTP hardware per l'utente root (console)**

1. Apri la [console di gestione AWS](https://console.aws.amazon.com/) e accedi utilizzando le credenziali dell'utente root.

   Per istruzioni, consulta [Accedere Console di gestione AWS come utente root nella Guida per](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html) *l'Accedi ad AWS utente*.

1. Scegli il nome dell'account sul lato destro della barra di navigazione, quindi seleziona **Credenziali di sicurezza**.  
![\[Security Credentials (Credenziali di sicurezza) nel menu di navigazione\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/security-credentials-root.shared.console.png)

1. Espandere la sezione **Multi-Factor Authentication (MFA) (Autenticazione a più fattori (MFA))**.

1. Scegli **Assegna dispositivo MFA**.

1. Nella procedura guidata, digitate il **nome del dispositivo**, scegliete il **token Hardware TOTP** e quindi scegliete **Avanti**.

1. Nella casella **Serial number (Numero di serie)** digitare il numero di serie riportato sulla parte posteriore del dispositivo MFA.

1. Nella casella **MFA code 1 (Codice MFA 1)** digitare il numero di sei cifre visualizzato nel dispositivo MFA. Per visualizzare il numero, potrebbe essere necessario premere il pulsante sul lato anteriore del dispositivo.  
![\[Pannello di controllo IAM - Dispositivo MFA\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/MFADevice.png)

1. Attendere 30 secondi per consentire al dispositivo di aggiornare il codice, quindi digitare il nuovo numero a sei cifre nella casella **MFA code 2 (Codice MFA 2)**. Per visualizzare il secondo numero, potrebbe essere necessario premere nuovamente il pulsante sul lato anteriore del dispositivo.

1. Scegli **Aggiungi MFA**. Il dispositivo MFA è ora associato all'account Account AWS.
**Importante**  
La richiesta deve essere inviata immediatamente dopo la generazione dei codici di autenticazione. Se dopo avere generato i codici attendi troppo a lungo prima di inviare la richiesta, il dispositivo MFA si associerà correttamente con l'utente, ma perderà la sincronizzazione. Ciò accade perché le password monouso temporanee (TOTP) scadono dopo un breve periodo di tempo. Se ciò accade, è possibile [sincronizzare nuovamente il dispositivo](id_credentials_mfa_sync.md).

   Al successivo utilizzo delle credenziali dell'utente root per effettuare l'accesso, dovrai immettere un codice dal dispositivo MFA.

# Cambiare la password per Utente root dell'account AWS
<a name="root-user-password"></a>

Puoi modificare l'indirizzo e-mail e la password in [Credenziali di sicurezza](https://console.aws.amazon.com/iam/home?#security_credential) o nella pagina **Account**. Puoi anche scegliere **Password dimenticata?** nella pagina di AWS accesso per reimpostare la password.

Per modificare la password dell'utente root, devi accedere come utente IAM Utente root dell'account AWS e non come utente. Per ulteriori informazioni su come reimpostare una password dell'utente root *dimenticata*, consulta [Reimpostare una password dell'utente root persa o dimenticata](reset-root-password.md). 

Per proteggere la password, consigliamo di seguire queste best practice:
+ Cambia periodicamente la password. 
+ Mantieni la password privata, perché chiunque la conosca può accedere al tuo account.
+ Usa una password diversa da AWS quella che usi su altri siti. 
+ Evitare password che sono facili da indovinare. Queste includono password, come `secret`, `password`, `amazon` o `123456`. Sono inclusi anche i dati come una parole comuni, il tuo nome, l'indirizzo e-mail o altre informazioni personali che possono essere ottenute facilmente.

**Importante**  
Account AWS managed using AWS Organizations può avere l'[accesso root centralizzato](id_root-user.md#id_root-user-access-management) abilitato per gli account dei membri. Questi account membri non dispongono di credenziali dell'utente root, non possono accedere come utente root e non possono recuperare la password dell'utente root. Contatta l'amministratore se devi eseguire un'operazione che richiede le credenziali dell'utente root.

------
#### [ Console di gestione AWS ]

**Come modificare la password per l'utente root**
**Autorizzazioni minime**  
Per eseguire le seguenti operazioni, devi disporre come minimo delle seguenti autorizzazioni IAM:  
È necessario accedere come utente Account AWS root, il che non richiede autorizzazioni aggiuntive AWS Identity and Access Management (IAM). Non è possibile eseguire questi passaggi come utente o ruolo IAM.

1. Apri la [Console di gestione AWS](https://console.aws.amazon.com/) e accedi utilizzando le credenziali dell'utente root.

   Per istruzioni, consulta [Accedere Console di gestione AWS come utente root nella Guida per](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html) *l'Accedi ad AWS utente*.

1. Nell’angolo in alto a destra della console, scegli il nome o il numero dell’account, quindi seleziona **Credenziali di sicurezza**.

1. Nella pagina **Account**, accanto a **AImpostazioni account**, scegli **Modifica**. Ti viene richiesto di effettuare nuovamente l'autenticazione per motivi di sicurezza.
**Nota**  
Se non vedi l'opzione **Modifica**, è probabile che tu non abbia effettuato l'accesso come utente root dell'account. Non è possibile modificare le impostazioni dell'account dopo aver effettuato l'accesso come utente o ruolo IAM.

1. Nella pagina **Aggiorna le impostazioni dell'account**, in **Password**, scegli **Modifica**.

1. Nella pagina **Aggiorna la password**, compila i campi **Password corrente**, **Nuova password** e **Conferma nuova password**.
**Importante**  
Scegli una password sicura. Anche se è possibile impostare una policy per le password dell'account per gli utenti IAM, tale policy non si applica all'utente root.

   AWS richiede che la password soddisfi le seguenti condizioni:
   + Deve avere un minimo di 8 caratteri e un massimo di 128 caratteri.
   + Deve includere almeno tre dei seguenti tipi di caratteri: maiuscole, minuscole, numeri e i simboli \$1 @ \$1 \$1 % ^ & \$1 () <> [] \$1\$1 \$1 \$1\$1-=.
   + Non deve essere identica al tuo Account AWS nome o indirizzo email.

1. Scegli **Save changes** (Salva modifiche).

------
#### [ AWS CLI or AWS SDK ]

Questa attività non è supportata in AWS CLI o da un'operazione API di uno dei AWS SDKs. È possibile eseguire questa operazione solo utilizzando Console di gestione AWS.

------

# Reimpostare una password dell'utente root persa o dimenticata
<a name="reset-root-password"></a>

Quando hai creato il tuo Account AWS, hai fornito un indirizzo email e una password. Queste sono le tue Utente root dell'account AWS credenziali. Se dimentichi la password dell'utente root, puoi reimpostarla dalla Console di gestione AWS.

Account AWS managed using AWS Organizations può avere l'[accesso root centralizzato](id_root-user.md#id_root-user-access-management) abilitato per gli account dei membri. Questi account membri non dispongono di credenziali dell'utente root, non possono accedere come utente root e non possono recuperare la password dell'utente root. Contatta l'amministratore se devi eseguire un'operazione che richiede le credenziali dell'utente root.

**Importante**  
**Hai problemi ad accedere a AWS?** Assicurati di essere nella [pagina di accesso AWS](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html) corretta per il tuo tipo di utente. Se sei il Utente root dell'account AWS (proprietario dell'account), puoi accedere AWS utilizzando le credenziali che hai configurato quando hai creato il Account AWS. Se sei un utente IAM, l'amministratore dell'account può fornirti le credenziali che puoi utilizzare per accedere ad AWS. Se hai bisogno di richiedere assistenza, non utilizzare il link di feedback in questa pagina, poiché il modulo non Supporto viene ricevuto dal team addetto alla AWS documentazione. Invece, nella pagina [Contattaci](https://aws.amazon.com/contact-us/) scegli **Ancora impossibile accedere al tuo AWS account**, quindi scegli una delle opzioni di supporto disponibili.

**Per reimpostare la password dell'utente root**

1. Apri la [console di gestione AWS](https://console.aws.amazon.com/) e accedi utilizzando le credenziali dell'utente root.

   Per istruzioni, consulta [Accedere Console di gestione AWS come utente root nella](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html) *Guida per l'Accedi ad AWS utente*.
**Nota**  
 Se è stato effettuato l'accesso alla [Console di gestione AWS](https://console.aws.amazon.com/) con le credenziali dell'*utente IAM*, per reimpostare la password dell'utente root è necessario prima disconnettersi. Se viene visualizzata la pagina di accesso dell'utente IAM specifica dell'account, seleziona **Accedi con le credenziali dell'account root** nella parte inferiore della pagina. Se necessario, fornisci l'indirizzo e-mail dell'account e scegli **Next (Avanti)** per accedere alla pagina **Root user sign in (Accesso utente root)**.

1. Selezionare **Forgot your password? (Password dimenticata?)**.
**Nota**  
Se sei un utente IAM, questa opzione non è disponibile. L'opzione **Password dimenticata?** è disponibile solo per l'account utente root. Gli utenti IAM devono chiedere al proprio amministratore di reimpostare una password dimenticata. Per ulteriori informazioni, consulta [Ho dimenticato la password utente IAM per il mio AWS account](https://docs.aws.amazon.com/signin/latest/userguide/troubleshooting-sign-in-issues.html#troubleshoot-forgot-iam-password). Se accedi tramite il portale di AWS accesso, consulta [Reimpostazione della password utente di IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/resetpassword-accessportal.html).

1. Fornire l'indirizzo e-mail associato all'account. Fornire quindi il testo CAPTCHA e selezionare **Continue (Continua)**.

1. Verifica la presenza di un messaggio proveniente da Amazon Web Services nell'indirizzo e-mail associato al tuo Account AWS . L'e-mail proviene da un indirizzo che termina con `@verify.signin.aws`. Seguire le istruzioni nel messaggio. Se il messaggio e-mail non viene visualizzato nel proprio account, controllare la cartella spam. Se non hai più accesso all'e-mail, consulta [Non ho accesso all'e-mail del mio AWS account nella Guida per](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-troubleshooting.html#credentials-not-working-console) *l'Accedi ad AWS utente*.

# Creare chiavi di accesso per l'utente root
<a name="id_root-user_manage_add-key"></a>

**avvertimento**  
Consigliamo fortemente di **non** creare coppie di chiavi di accesso per l'utente root. Poiché [solo alcune attività richiedono l'utente root](id_root-user.md#root-user-tasks) e in genere tali attività vengono eseguite raramente, si consiglia di accedere a per eseguire le Console di gestione AWS attività dell'utente root. Prima di creare le chiavi di accesso, esamina le [alternative alle chiavi di accesso a lungo termine](security-creds-programmatic-access.md#security-creds-alternatives-to-long-term-access-keys).

Sebbene non sia consigliabile, è possibile creare chiavi di accesso per l'utente root in modo da poter eseguire comandi in AWS Command Line Interface (AWS CLI) o utilizzare le operazioni API da una delle credenziali dell'utente root che AWS SDKs utilizzano. Quando crei una chiave di accesso, crei l'ID chiave di accesso e la chiave di accesso segreta come set. Durante la creazione della chiave di accesso, ti AWS offre l'opportunità di visualizzare e scaricare la parte della chiave di accesso segreta della chiave di accesso. Se non la scarichi o la perdi, puoi eliminare la chiave di accesso e quindi crearne una nuova. È possibile creare chiavi di accesso per utenti root con la AWS CLI console o AWS l'API.

Lo stato di una nuova chiave di accesso è *attiva*, il che significa che puoi usarla per le chiamate API e CLI. Inoltre, è possibile assegnare fino a due chiavi di accesso all'utente root.

Le chiavi di accesso non utilizzate dovrebbero essere disattivate. Una volta che una chiave di accesso è inattiva, non è possibile utilizzarla per le chiamate API. Le chiavi inattive contano comunque per il limite. Puoi creare o eliminare una chiave di accesso in qualsiasi momento. Tuttavia, una volta eliminata, viene persa per sempre e non può essere recuperata.

------
#### [ Console di gestione AWS ]

**Per creare una chiave di accesso per Utente root dell'account AWS**
**Autorizzazioni minime**  
Per eseguire le seguenti operazioni, devi disporre come minimo delle seguenti autorizzazioni IAM:  
È necessario accedere come utente Account AWS root, che non richiede autorizzazioni aggiuntive AWS Identity and Access Management (IAM). Non è possibile eseguire questi passaggi come utente o ruolo IAM.

1. Apri la [Console di gestione AWS](https://console.aws.amazon.com/) e accedi utilizzando le credenziali dell'utente root.

   Per istruzioni, consulta [Accedere Console di gestione AWS come utente root nella Guida per](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html) *l'Accedi ad AWS utente*.

1. Nell'angolo in alto a destra della console, seleziona il nome o il numero dell'account, quindi scegli **Credenziali di sicurezza**. 

1. Nella sezione **Chiavi di accesso**, scegliere **Crea chiave di accesso**. Se questa opzione non è disponibile, è già stato raggiunto il numero massimo di chiavi di accesso. È necessario eliminare una delle chiavi di accesso esistenti prima di poter creare una nuova chiave. Per ulteriori informazioni, consulta la pagina [Quote degli oggetti IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-entities). 

1. Nella pagina **Alternative alle chiavi di accesso dell'utente root**, consulta le raccomandazioni di sicurezza. Per continuare, seleziona la casella di controllo, quindi scegli **Crea chiave di accesso**. 

1. Nella pagina **Recupera la chiave d'accesso**, viene visualizzato l'ID della **Chiave di accesso**. 

1. In **Chiave di accesso segreta**, seleziona **Mostra**, quindi copia l'ID della chiave di accesso e della chiave segreta dalla finestra del browser e incollale in un luogo sicuro. In alternativa, puoi selezionare **Scarica file .csv**: eseguirai il download di un file denominato `rootkey.csv` che contiene l'ID chiave di accesso e la chiave segreta. Salvare il file da qualche parte al sicuro.

1. Seleziona **Fatto**. Quando non hai più bisogno della chiave di accesso, [ti consigliamo di eliminarla](id_root-user_manage_delete-key.md) o almeno di valutare se disattivarla, in modo che nessuno possa usarla in modo improprio.

------
#### [ AWS CLI & SDKs ]

**Per creare una chiave di accesso per l'utente root**
**Nota**  
Per eseguire il seguente comando od operazione API come utente root, è necessario disporre già di una coppia di chiavi di accesso attive. Se non disponi delle chiavi di accesso, crea la prima chiave di accesso utilizzando la Console di gestione AWS. Quindi, puoi utilizzare le credenziali della prima chiave di accesso con la AWS CLI per creare la seconda chiave di accesso o per eliminare una chiave di accesso.
+ AWS CLI: [era io create-access-key](https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html)  
**Example**  

  ```
  $ aws iam create-access-key
  {
      "AccessKey": {
          "UserName": "MyUserName",
          "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
          "Status": "Active",
          "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
          "CreateDate": "2021-04-08T19:30:16+00:00"
      }
  }
  ```
+ AWS API: [CreateAccessKey](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html)nel *riferimento all'API IAM*. 

------

# Eliminare le chiavi di accesso per l'utente root
<a name="id_root-user_manage_delete-key"></a>

È possibile utilizzare l' Console di gestione AWS, the AWS CLI o l' AWS API per eliminare le chiavi di accesso dell'utente root.

------
#### [ Console di gestione AWS ]

**Per eliminare una chiave di accesso per l'utente root**
**Autorizzazioni minime**  
Per eseguire le seguenti operazioni, devi disporre come minimo delle seguenti autorizzazioni IAM:  
È necessario accedere come utente Account AWS root, il che non richiede autorizzazioni aggiuntive AWS Identity and Access Management (IAM). Non è possibile eseguire questi passaggi come utente o ruolo IAM.

1. Apri la [Console di gestione AWS](https://console.aws.amazon.com/) e accedi utilizzando le credenziali dell'utente root.

   Per istruzioni, consulta [Accedere Console di gestione AWS come utente root nella Guida per](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html) *l'Accedi ad AWS utente*.

1. Nell'angolo in alto a destra della console, seleziona il nome o il numero dell'account, quindi scegli **Credenziali di sicurezza**. 

1. Nella sezione **Chiavi di accesso**, individua la chiave di accesso che desideri eliminare, quindi scegli **Operazioni** e poi **Elimina**.
**Nota**  
In alternativa, puoi **disattivare** una chiave di accesso anziché eliminarla definitivamente. In questo modo potrai riutilizzarla in futuro senza dover modificare l'ID chiave o la chiave segreta. Sebbene la chiave sia inattiva, qualsiasi tentativo di utilizzarla nelle richieste all' AWS API fallisce e viene negato l'errore di accesso.

1. Nella finestra di dialogo **Elimina <ID chiave di accesso>**, scegli **Disattiva**, inserisci l'ID della chiave di accesso per confermare che desideri eliminarla, quindi scegli **Elimina**. 

------
#### [ AWS CLI & SDKs ]

**Per eliminare una chiave di accesso per l'utente root**
**Autorizzazioni minime**  
Per eseguire le seguenti operazioni, devi disporre come minimo delle seguenti autorizzazioni IAM:  
È necessario accedere come utente Account AWS root, operazione che non richiede autorizzazioni aggiuntive AWS Identity and Access Management (IAM). Non è possibile eseguire questi passaggi come utente o ruolo IAM.
+ AWS CLI: [era iam delete-access-key](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html)  
**Example**  

  ```
  $ aws iam delete-access-key \
      --access-key-id AKIAIOSFODNN7EXAMPLE
  ```

  Questo comando non produce alcun output se ha esito positivo.
+ AWS API: [DeleteAccessKey](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html) 

------

## Attività che richiedono credenziali dell'utente root
<a name="root-user-tasks"></a>

Ti consigliamo di [configurare un utente amministrativo AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html) per eseguire le attività quotidiane e accedere alle AWS risorse. Tuttavia, è possibile eseguire le attività elencate di seguito solo se si effettua l'accesso come utente root di un account.

Per semplificare la gestione delle credenziali degli utenti root privilegiati tra gli account dei membri in AWS Organizations, puoi abilitare l'accesso root centralizzato per aiutarti a proteggere centralmente l'accesso altamente privilegiato al tuo. Account AWS[Gestire centralmente l'accesso root per gli account membri](#id_root-user-access-management)consente di rimuovere e impedire centralmente il ripristino a lungo termine delle credenziali degli utenti root, migliorando la sicurezza dell'account nell'organizzazione. Dopo aver abilitato questa funzionalità, è possibile completare le seguenti attività con privilegi sugli account membri.
+ Rimuovi le credenziali dell'utente root dell'account membro per impedire il recupero dell'account dell'utente root. Puoi anche consentire il recupero della password per recuperare le credenziali dell'utente root per un account membro.
+ Rimuovi una policy del bucket configurata non correttamente che impedisce a tutti i principali di accedere al bucket Amazon S3.
+ Elimina una policy basata sulle risorse Amazon Simple Queue Service che nega a tutti i principali l'accesso a una coda Amazon SQS.

**Attività di gestione degli account**
+ [Modifica le impostazioni del tuo Account AWS .](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-root-user.html) Le versioni autonome Account AWS che non fanno parte di AWS Organizations richiedono le credenziali root per aggiornare l'indirizzo e-mail, la password dell'utente root e le chiavi di accesso dell'utente root. Altre impostazioni dell'account, come il nome dell'account, le informazioni di contatto, i contatti alternativi, la preferenza della valuta di pagamento e Regioni AWS, non richiedono credenziali dell'utente root.
**Nota**  
AWS Organizations, con tutte le funzionalità abilitate, può essere utilizzato per gestire centralmente le impostazioni degli account membro dall’account di gestione e dagli account amministratore delegato. Gli utenti IAM autorizzati o i ruoli IAM sia nell'account di gestione che negli account di amministrazione delegati possono chiudere gli account dei membri e aggiornare gli indirizzi e-mail principali, i nomi degli account, le informazioni di contatto, i contatti alternativi e Regioni AWS gli account dei membri. 
+ [Chiudi il tuo. Account AWS](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/close-account.html) Le versioni autonome Account AWS che non fanno parte di AWS Organizations richiedono le credenziali di root per chiudere l'account. Con AWS Organizations, puoi chiudere gli account dei membri centralmente dall'account di gestione e dagli account di amministratore delegato.
+ [Ripristina le autorizzazioni dell'utente IAM.](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html) Se l'unico amministratore IAM revoca accidentalmente le autorizzazioni, sarà possibile effettuare l'accesso come utente root per modificare le policy e ripristinare le autorizzazioni.

**Attività di fatturazione**
+ [Attivare l'accesso IAM alla console di gestione fatturazione e costi](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/control-access-billing.html#ControllingAccessWebsite-Activate).
+ Alcune attività di fatturazione sono limitate all'utente root. Per ulteriori informazioni, consulta [Managing an Account AWS](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/manage-account-payment.html) in AWS Billing User Guide.
+ Visualizzare alcune fatture fiscali. Un utente IAM con il [portale aws:](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-permissions-ref.html#user-permissions) l'ViewBillingautorizzazione può visualizzare e scaricare le fatture IVA dall' AWS Europa, ma non da AWS Inc. o Amazon Internet Services Private Limited (AISPL).

**AWS GovCloud (US) Attività**
+ [Registrazione per AWS GovCloud (US)](https://docs.aws.amazon.com/govcloud-us/latest/UserGuide/getting-started-sign-up.html).
+ Richiedi le chiavi di accesso per l'utente root dell' AWS GovCloud (US) account da Supporto AWS.

**Attività di Amazon EC2**
+ [Registrati come venditore](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html) nel marketplace di istanze riservate.

**AWS KMS Attività**
+ Nel caso in cui una AWS Key Management Service chiave diventi ingestibile, un amministratore può recuperarla contattandola Supporto; tuttavia, Supporto risponde al numero di telefono principale dell'utente root per l'autorizzazione confermando l'OTP del ticket.

**Attività di Amazon Mechanical Turk**
+  [Collega Your al tuo account Requester. Account AWS MTurk ](https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMechanicalTurkGettingStartedGuide/SetUp.html#accountlinking)

**Attività di Amazon Simple Storage Service**
+ [Configura un bucket Amazon S3 per abilitare l'autenticazione a più fattori (MFA)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/MultiFactorAuthenticationDelete.html).
+ [Modifica o elimina una policy del bucket Amazon S3 che rifiuta tutti i principali](https://aws.amazon.com/premiumsupport/knowledge-center/change-vpc-endpoint-s3-bucket-policy/).

  Puoi utilizzare azioni con privilegi per sbloccare un bucket Amazon S3 con una policy di bucket configurata non correttamente. Per informazioni dettagliate, vedi [Esegui un'attività privilegiata su un account AWS Organizations membro](id_root-user-privileged-task.md).

**Attività di Amazon Simple Queue Service**
+ [Modifica o elimina una policy basata sulle risorse Amazon SQS che rifiuta tutti i principali](https://aws.amazon.com/premiumsupport/knowledge-center/sqs-queue-access-issues-deny-policy).

  Puoi utilizzare azioni con privilegi per sbloccare una coda Amazon SQS con una policy basata sulle risorse configurata non correttamente. Per informazioni dettagliate, vedi [Esegui un'attività privilegiata su un account AWS Organizations membro](id_root-user-privileged-task.md).

## Risorse aggiuntive
<a name="id_root-user-resources"></a>

Per ulteriori informazioni sull'utente AWS root, consulta le seguenti risorse:
+ Per assistenza con i problemi relativi agli utenti root, consulta [Risoluzione dei problemi con l'utente root](troubleshooting_root-user.md).
+ Per gestire centralmente gli indirizzi e-mail degli utenti root in AWS Organizations, vedere [Aggiornamento dell'indirizzo e-mail dell'utente root per un account membro](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_update_primary_email.html) nella *Guida per l'AWS Organizations utente*.

I seguenti articoli forniscono ulteriori informazioni sull'utilizzo dell'utente root.
+ [Quali sono le migliori pratiche per proteggere le mie Account AWS e le relative risorse?](https://repost.aws/knowledge-center/security-best-practices)
+ [Come posso creare una regola di EventBridge evento per informarmi che è stato utilizzato il mio utente root?](https://repost.aws/knowledge-center/root-user-account-eventbridge-rule) 
+ [Monitora e invia notifiche sulle Utente root dell'account AWS attività](https://aws.amazon.com/blogs/mt/monitor-and-notify-on-aws-account-root-user-activity/) 
+ [Monitoraggio dell'attività dell'utente root IAM](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/monitor-iam-root-user-activity.html) 

# Utenti IAM
<a name="id_users"></a>

**Importante**  
 [Le best practice](best-practices.md) di IAM consigliano di richiedere agli utenti umani di utilizzare la federazione con un provider di identità per accedere AWS utilizzando credenziali temporanee anziché utilizzare utenti IAM con credenziali a lungo termine. Ti consigliamo di utilizzare gli utenti IAM solo per [casi d'uso specifici](gs-identities-iam-users.md) non supportati dagli utenti federati.

Un *utente IAM* è un'entità che viene creata nell' Account AWS. L'utente IAM rappresenta la persona o il carico di lavoro utilizzato dall'utente IAM per interagire con le risorse AWS . Un utente IAM dispone di un nome e di credenziali.

Un utente IAM con le autorizzazioni di amministratore non è la stessa cosa dell' Utente root dell'account AWS. Per ulteriori informazioni sull'utilizzo dell'utente root, consulta [Utente root dell'account AWS](id_root-user.md).

## Come AWS identifica un utente IAM
<a name="id_users_create_aws-identifiers"></a>

Quando crei un utente IAM, IAM crea questi metodi per identificare quell'utente:
+ Un "nome semplice" per l'utente IAM, che è il nome specificato quando hai creato l'utente IAM, ad esempio `Richard` o `Anaya`. Questi sono i nomi che vedi nella Console di gestione AWS. Poiché i nomi utente IAM compaiono in Amazon Resource Names (ARNs), non è consigliabile includere informazioni di identificazione personale nel nome IAM. Fai riferimento a [Requisiti del nome IAM](reference_iam-quotas.md#reference_iam-quotas-names) per i requisiti e le restrizioni per i nomi IAM.
+ Un nome della risorsa Amazon (ARN) per l'utente IAM. L'ARN viene utilizzato quando è necessario identificare in modo univoco l'utente IAM in tutto il mondo. AWS Ad esempio, puoi usare un ARN per specificare l'utente IAM come `Principal` in una policy IAM per un bucket Amazon S3. Un ARN per un utente IAM potrebbe essere simile al seguente: 

  `arn:aws:iam::account-ID-without-hyphens:user/Richard`
+ Un identificatore univoco per l'utente IAM. Questo ID viene restituito solo quando utilizzi l'API, Tools for Windows PowerShell o AWS CLI per creare l'utente IAM; non lo vedi nella console.

Per ulteriori informazioni su questi identificatori, consulta [Identificatori IAM](reference_identifiers.md).

## Utenti IAM e credenziali
<a name="id_users_creds"></a>

Puoi accedere AWS in diversi modi a seconda delle credenziali utente IAM:
+ [**Password console**](id_credentials_passwords.md): una password che l'utente IAM può inserire per accedere a sessioni interattive come la Console di gestione AWS. La disabilitazione della password (accesso alla console) per un utente IAM impedisce loro di accedere Console di gestione AWS utilizzando le proprie credenziali di accesso. Non modifica le autorizzazioni né impedisce l'accesso alla console utilizzando un ruolo assunto. Gli utenti IAM con accesso alla console abilitato possono anche utilizzare le stesse credenziali per autenticarsi AWS CLI e accedere all'SDK utilizzando il comando. `aws login` AWS CLI Questi utenti dovranno disporre delle autorizzazioni. [SignInLocalDevelopmentAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/SignInLocalDevelopmentAccess.html) Per maggiori dettagli, consulta [la sezione Autenticazione e credenziali di accesso AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-authentication.html) nella *Guida per AWS Command Line Interface l'utente*. 
+ [**Tasti di accesso**](id_credentials_access-keys.md): utilizzati per effettuare chiamate programmatiche a AWS. Tuttavia, ci sono alternative più sicure da considerare prima di creare le chiavi di accesso per gli utenti IAM. Per ulteriori informazioni, consulta [Considerazioni e alternative per le chiavi di accesso a lungo termine](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#alternatives-to-long-term-access-keys) nella *Riferimenti generali di AWS*. Se l'utente IAM dispone di chiavi di accesso attive, queste continuano a funzionare e consentono l' AWS CLI accesso tramite Tools for Windows PowerShell, AWS API o l'applicazione AWS Console Mobile.
+ [**Chiavi SSH da utilizzare con CodeCommit**](id_credentials_ssh-keys.md): una chiave pubblica SSH nel formato OpenSSH che può essere utilizzata per eseguire l'autenticazione con CodeCommit.
+ [**Certificati server**](id_credentials_server-certs.md): SSL/TLS certificati che è possibile utilizzare per l'autenticazione con alcuni AWS servizi. Ti consigliamo di utilizzare AWS Certificate Manager (ACM) per fornire, gestire e distribuire i certificati del server. Utilizza IAM solo quando è necessario il supporto alle connessioni HTTPS in una regione che non è supportata da ACM. Per informazioni sulle regioni che supportano ACM, consulta [Endpoint e quote di AWS Certificate Manager](https://docs.aws.amazon.com/general/latest/gr/acm.html) nella *Riferimenti generali di AWS*.

È possibile scegliere le credenziali che meglio si adattano all'utente IAM. Quando utilizzi la Console di gestione AWS per creare un utente IAM, devi scegliere di includere almeno una password o delle chiavi di accesso alla console. Per impostazione predefinita, un nuovo utente IAM creato utilizzando l' AWS API AWS CLI or non dispone di credenziali di alcun tipo. Il tipo di credenziali dell'utente IAM da creare dipende dal caso d'uso. 

Hai le seguenti opzioni per amministrare le password, le chiavi di accesso e i dispositivi con l'autenticazione a più fattori (MFA):
+ **[Gestione di password per gli utenti IAM](id_credentials_passwords.md).** Crea e modifica le password che consentono l'accesso alla Console di gestione AWS. Imposta una policy per la password, così da implementare un minimo di complessità per la password. Consenti agli utenti IAM di cambiare le loro password. 
+ **[Gestione delle chiavi di accesso per gli utenti IAM](id_credentials_access-keys.md).** Crea e aggiorna le chiavi di accesso per l'accesso programmatico alle risorse nel tuo account. 
+ **[Abilita l'utente IAM all'autenticazione a più fattori (MFA)](id_credentials_mfa.md).** Come [best practice](best-practices.md), ti consigliamo di richiedere l'autenticazione a più fattori per tutti gli utenti IAM nel tuo account. Con l'MFA, gli utenti IAM devono fornire due forme di identificazione. Innanzitutto, forniscono le credenziali che fanno parte dell'identità utente (una password o una chiave di accesso). Inoltre, forniscono un codice numerico temporaneo generato su un dispositivo hardware o da un'applicazione su uno smartphone o un tablet.
+ **[Trovare password e chiavi di accesso non utilizzate](id_credentials_finding-unused.md).** Chiunque disponga di una password o di chiavi di accesso per il tuo account o di un utente IAM nel tuo account ha accesso alle tue AWS risorse. La [best practice](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html) di sicurezza consiste nel rimuovere le password e le chiavi di accesso quando gli utenti IAM non ne hanno più bisogno.
+ **[Download di un report delle credenziali per l'account](id_credentials_getting-report.md).** È possibile generare e scaricare un report delle credenziali che riporta tutti gli utenti IAM presenti nell'account e lo stato delle loro diverse credenziali, tra cui password, chiavi di accesso e dispositivi MFA. Per le password e le chiavi di accesso, il report sulle credenziali mostra se la password o la chiave di accesso siano state utilizzate di recente.

## Utenti e autorizzazioni IAM
<a name="id_users_perms"></a>

Per impostazione predefinita, un nuovo utente IAM non ha le [autorizzazioni](access.md) per svolgere alcuna operazione. Non sono autorizzati a eseguire alcuna AWS operazione o ad accedere a nessuna AWS risorsa. Un vantaggio di avere singoli utenti IAM è quello di poter assegnare le autorizzazioni individualmente a ogni utente. Potresti assegnare autorizzazioni amministrative a pochi utenti, che quindi possono amministrare AWS le tue risorse e possono persino creare e gestire altri utenti IAM. Nella maggior parte dei casi, tuttavia, desideri limitare le autorizzazioni di un utente solo alle attività (AWS azioni o operazioni) e alle risorse necessarie per il lavoro. 

Prendiamo a esempio un utente denominato Diego. Quando crei l'utente IAM`Diego`, crei una password per lui e alleghi le autorizzazioni che gli consentono di avviare un' EC2 istanza Amazon specifica e leggere (`GET`) informazioni da una tabella in un database Amazon RDS. Per le procedure su come creare gli utenti IAM e concedere loro le credenziali iniziali e le autorizzazioni, consulta [Crea un utente IAM nel tuo Account AWS](id_users_create.md). Per le procedure su come modificare le autorizzazioni agli utenti esistenti, consulta [Modificare le autorizzazioni per un utente IAM](id_users_change-permissions.md). Per le procedure su come cambiare la password dell'utente o le chiavi di accesso, consulta la pagina [Password utente in AWS](id_credentials_passwords.md) e [Gestione delle chiavi di accesso per gli utenti IAM](id_credentials_access-keys.md).

Puoi anche aggiungere un limite delle autorizzazioni agli utenti IAM. Un limite di autorizzazioni è una funzionalità avanzata che consente di utilizzare policy AWS gestite per limitare le autorizzazioni massime che una policy basata sull'identità può concedere a un utente o un ruolo IAM. Per ulteriori informazioni sui tipi di policy e i relativi utilizzi, consulta [Politiche e autorizzazioni in AWS Identity and Access Management](access_policies.md).

## Utenti IAM e account
<a name="id_users_accounts"></a>

Ogni utente IAM è associato a un solo Account AWS. Poiché gli utenti IAM sono definiti all'interno del tuo account Account AWS, non è necessario che abbiano un metodo di pagamento registrato. AWS Qualsiasi AWS attività svolta dagli utenti IAM nel tuo account viene fatturata sul tuo account.

Il numero e la dimensione delle risorse IAM in un AWS account sono limitati. Per ulteriori informazioni, consulta [IAM e AWS STS quote](reference_iam-quotas.md).

## Utenti IAM come account di servizio
<a name="id_users_service_accounts"></a>

Un utente IAM è una risorsa in IAM con credenziali e autorizzazioni associate. Un utente IAM può rappresentare una persona o un'applicazione che utilizza le proprie credenziali per effettuare richieste AWS . In genere questo si chiama *account di servizio*. Se nella tua applicazione scegli di utilizzare le credenziali a lungo termine di un utente IAM, **non integrare le chiavi di accesso direttamente nel codice dell'applicazione**. AWS SDKs E ti AWS Command Line Interface consentono di inserire le chiavi di accesso in posizioni note in modo da non doverle conservare in codice. Per ulteriori informazioni, consulta [Gestione corretta delle chiavi di accesso dell'utente IAM](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html#iam-user-access-keys) nella *Riferimenti generali di AWS*. Oppure, come best practice, puoi [utilizzare le credenziali di sicurezza temporanee (ruoli IAM) al posto delle chiavi di accesso a lungo termine](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html#use-roles).

# In che modo gli utenti IAM accedono a AWS
<a name="id_users_sign-in"></a>

Per accedere Console di gestione AWS come utente IAM, devi fornire l'ID o l'alias dell'account oltre al nome utente e alla password. Quando l'amministratore ha creato l'utente IAM nella console, dovrebbero aver inviato le credenziali di accesso, ovvero nome utente e URL della pagina di accesso dell'account che include l'ID account o l'alias dell'account. 

```
https://My_AWS_Account_ID.signin.aws.amazon.com/console/
```

**Suggerimento**  
Per creare un segnalibro per la pagina di accesso al tuo account nel tuo browser Web, devi digitare manualmente l'URL della pagina di accesso per il tuo account nella voce segnalibro. Non utilizzare la funzione di segnalibro del tuo browser Web perché gli indirizzamenti possono oscurare l'URL della pagina di accesso. 

Puoi effettuare l'accesso anche al seguente endpoint generale di accesso e digitare manualmente l'ID account o l'alias dell'account:

```
[https://console.aws.amazon.com/](https://console.aws.amazon.com/)
```

Per comodità, la pagina di AWS accesso utilizza un cookie del browser per ricordare il nome utente IAM e le informazioni sull'account. La volta successiva che l'utente accede a qualsiasi pagina di Console di gestione AWS, la console utilizza il cookie per reindirizzare l'utente alla pagina di accesso dell'account.

Hai accesso solo alle AWS risorse specificate dall'amministratore nella policy allegata alla tua identità utente IAM. Per lavorare nella console, devi disporre delle autorizzazioni necessarie per eseguire le azioni eseguite dalla console, come elencare e creare AWS risorse. Per ulteriori informazioni, consultare [Gestione degli accessi AWS alle risorse](access.md) e [Esempi di policy basate su identità IAM](access_policies_examples.md).

**Nota**  
Se la tua organizzazione dispone di un suo sistema di identità, puoi pensare di creare un'opzione Single Sign-On (SSO). L'SSO consente agli utenti di accedere al Console di gestione AWS tuo account senza richiedere loro di avere un'identità utente IAM. L'SSO elimina inoltre la necessità per gli utenti di accedere al sito dell'organizzazione e di farlo AWS separatamente. Per ulteriori informazioni, consulta [Abilita l'accesso personalizzato del broker di identità alla AWS console](id_roles_providers_enable-console-custom-url.md). 

**Registrazione dei dettagli di accesso in CloudTrail**  
Se abiliti CloudTrail la registrazione degli eventi di accesso nei tuoi registri, devi sapere come CloudTrail scegli dove registrare gli eventi.
+ Se gli utenti accedono direttamente a una console, vengono reindirizzati a un endpoint di accesso globale o regionale, a seconda se la console del servizio selezionato supporti o meno le regioni. Ad esempio, la homepage della console principale supporta le regioni, perciò se effettui l'accesso al seguente URL:

  ```
  https://alias.signin.aws.amazon.com/console
  ```

  vieni reindirizzato a un dispositivo di accesso regionale, ad esempio`https://us-east-2.signin.aws.amazon.com`, con una voce di CloudTrail registro regionale nel registro dell'area dell'utente:

  D'altra parte, la console Amazon S3 non supporta le regioni, perciò se si effettua l'accesso al seguente URL:

  ```
  https://alias.signin.aws.amazon.com/console/s3
  ```

  AWS reindirizza l'utente all'endpoint di accesso globale all'indirizzo`https://signin.aws.amazon.com`, generando una voce di registro globale. CloudTrail 
+ È possibile richiedere manualmente un determinato endpoint di accesso regionale tramite l'accesso alla homepage della console principale con attivazione regionale, utilizzando una sintassi di URL simile a quella riportata di seguito:

  ```
  https://alias.signin.aws.amazon.com/console?region=ap-southeast-1
  ```

  AWS reindirizza l'utente all'endpoint di accesso `ap-southeast-1` regionale e genera un evento di registro regionale. CloudTrail 

Per ulteriori informazioni su CloudTrail e IAM, consulta [Registrazione](https://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html) degli eventi IAM con. CloudTrail

Se gli utenti richiedono un accesso programmatico per funzionare con il tuo account, puoi creare una coppia di chiavi di accesso (un ID chiave di accesso e una chiave di accesso segreta) per ciascun utente, come descritto in . Tuttavia, ci sono alternative più sicure da considerare prima di creare le chiavi di accesso per gli utenti. Per ulteriori informazioni, consulta [Considerazioni e alternative per le chiavi di accesso a lungo termine](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#alternatives-to-long-term-access-keys) nella *Riferimenti generali di AWS*.

## Risorse aggiuntive
<a name="id_users_sign-in-additional-resources"></a>

Le seguenti risorse possono aiutarti a saperne di più sull' AWS accesso.
+ La [Guida per l’utente per l’accesso ad AWS](https://docs.aws.amazon.com/signin/latest/userguide/what-is-sign-in.html) aiuta a comprendere i diversi modi in cui è possibile accedere ad Amazon Web Services (AWS), a seconda del tipo di utente specifico.
+ Puoi accedere contemporaneamente a un massimo di cinque identità diverse in un unico browser web nella Console di gestione AWS. Per maggiori dettagli, consulta [Accesso a più account](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/multisession.html) nella *Guida introduttiva alla Console di gestione AWS *.

# Accesso abilitato con MFA
<a name="console_sign-in-mfa"></a>

Gli utenti configurati con dispositivi di [autenticazione a più fattori (MFA)](id_credentials_mfa.md) devono utilizzare i propri dispositivi MFA per accedere alla Console di gestione AWS. Dopo che l'utente ha inserito le proprie credenziali di accesso, AWS controlla l'account dell'utente per vedere se l'MFA è richiesta per quell'utente. 

**Importante**  
Se si utilizzano le credenziali della chiave di accesso e della chiave segreta per Console di gestione AWS l'accesso diretto con la chiamata AWS STS [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html)API, l'autenticazione MFA NON sarà richiesta. Per ulteriori informazioni, consulta [Utilizzo delle chiavi di accesso e delle credenziali segrete per l’accesso alla console](securing_access-keys.md#console-access-security-keys).

Gli argomenti seguenti forniscono informazioni su come gli utenti completano l'accesso quando è necessaria l'autenticazione MFA. 

**Topics**
+ [Più dispositivi MFA abilitati](#console_sign-in-multiple-mfa)
+ [Chiave di sicurezza FIDO](#console_sign-in-mfa-fido)
+ [Dispositivo MFA virtuale](#console_sign-in-mfa-virtual)
+ [Token TOTP hardware](#console_sign-in-mfa-hardware)

## Più dispositivi MFA abilitati
<a name="console_sign-in-multiple-mfa"></a>

Se un utente accede Console di gestione AWS come utente Account AWS root o utente IAM con più dispositivi MFA abilitati per quell'account, deve utilizzare un solo dispositivo MFA per accedere. Dopo l'autenticazione con la password dell'utente, l'utente seleziona il tipo di dispositivo MFA che desidera utilizzare per completare l'autenticazione. Quindi all'utente viene richiesto di autenticarsi con il tipo di dispositivo selezionato. 

## Chiave di sicurezza FIDO
<a name="console_sign-in-mfa-fido"></a>

Se l'autenticazione MFA è obbligatorio per l'utente, viene visualizzata una seconda pagina di accesso. L'utente deve toccare la chiave di sicurezza FIDO.

**Nota**  
Gli utenti di Chrome non devono scegliere alcuna delle opzioni disponibili nel pop-up di Google Chrome che chiede di **verificare la tua identità con amazon.com**. Limitati a toccare la chiave di sicurezza.

A differenza di altri dispositivi MFA, le chiavi di sicurezza FIDO sono sempre aggiornate. Se una chiave di sicurezza FIDO viene smarrita o danneggiata, gli amministratori possono disattivarla. Per ulteriori informazioni, consulta [Disattivazione dei dispositivi MFA (console)](id_credentials_mfa_disable.md#deactive-mfa-console).

Per informazioni sui browser che supportano WebAuthn e sui dispositivi compatibili con FIDO che supportano, vedere. AWS [Configurazioni supportate per l'uso delle passkey e delle chiavi di sicurezza](id_credentials_mfa_fido_supported_configurations.md)

## Dispositivo MFA virtuale
<a name="console_sign-in-mfa-virtual"></a>

Se l'autenticazione MFA è obbligatorio per l'utente, viene visualizzata una seconda pagina di accesso. Nella casella **MFA code (Codice MFA)**, l'utente deve immettere il codice numerico fornito dall'applicazione MFA.

Se il codice MFA è corretto, l'utente può accedere alla Console di gestione AWS. Se il codice non è corretto, l'utente può riprovare con un altro codice. 

Un dispositivo MFA virtuale può andare fuori sincrono. Se un utente non riesce ad accedere Console di gestione AWS dopo diversi tentativi, all'utente viene richiesto di sincronizzare il dispositivo MFA virtuale. L'utente può seguire le istruzioni mostrate sullo schermo per sincronizzare il dispositivo MFA virtuale. Per informazioni su come sincronizzare un dispositivo per conto di un utente del tuo paese, consulta. Account AWS[Risincronizzare i dispositivi MFA virtuali e hardware](id_credentials_mfa_sync.md) 

## Token TOTP hardware
<a name="console_sign-in-mfa-hardware"></a>

Se l'autenticazione MFA è obbligatorio per l'utente, viene visualizzata una seconda pagina di accesso. Nella casella **MFA code** (Codice MFA), l'utente deve immettere il codice numerico fornito dal token TOTP hardware. 

Se il codice MFA è corretto, l'utente può accedere alla Console di gestione AWS. Se il codice non è corretto, l'utente può riprovare con un altro codice. 

Un token TOTP hardware può non essere sempre sincronizzato. Se un utente non riesce ad accedere Console di gestione AWS dopo diversi tentativi, all'utente viene richiesto di sincronizzare il dispositivo token MFA. L'utente può seguire le istruzioni visualizzate per sincronizzare il dispositivo token MFA. Per informazioni su come sincronizzare un dispositivo per conto di un utente del tuo, consulta. Account AWS[Risincronizzare i dispositivi MFA virtuali e hardware](id_credentials_mfa_sync.md) 

# Crea un utente IAM nel tuo Account AWS
<a name="id_users_create"></a>

**Importante**  
 [Le migliori pratiche](best-practices.md) IAM consigliano di richiedere agli utenti umani di utilizzare la federazione con un provider di identità per accedere AWS utilizzando credenziali temporanee anziché utilizzare utenti IAM con credenziali a lungo termine. Ti consigliamo di utilizzare gli utenti IAM solo per [casi d'uso specifici](gs-identities-iam-users.md) non supportati dagli utenti federati.

Il processo con cui si crea un utente IAM e gli si consente di eseguire attività è costituito dalle fasi seguenti:

1. Crea l'[utente negli Console di gestione AWS](getting-started-workloads.md) strumenti per Windows PowerShell o utilizzando un'operazione AWS API. AWS CLI Se crei l'utente in Console di gestione AWS, i passaggi da 1 a 4 vengono gestiti automaticamente, in base alle tue scelte. Se crei gli utenti IAM in modo programmatico, allora devi eseguire ognuna di queste fasi singolarmente.

1. Creazione delle credenziali per l'utente, a seconda del tipo di accesso che l'utente richiede:
   + **Abilita l'accesso alla console: *facoltativo***: se l'utente deve accedere a Console di gestione AWS, [crea una password per](id_credentials_passwords_admin-change-user.md) l'utente. La disabilitazione dell'accesso alla console per un utente gli impedisce di accedere alla Console di gestione AWS tramite il nome utente e la password. Non modifica le autorizzazioni né impedisce l'accesso alla console utilizzando un ruolo assunto.
**Suggerimento**  
Crea solo le credenziali di cui l'utente necessita. Ad esempio, per un utente che richiede l'accesso solo tramite Console di gestione AWS, non creare chiavi di accesso.

1. Concedi all'utente le autorizzazioni per eseguire le attività richieste. Consigliamo di inserire gli utenti IAM in gruppi e gestire le autorizzazioni tramite le policy collegate a tali gruppi. Tuttavia, puoi concedere autorizzazioni anche collegando le policy di autorizzazione direttamente all'utente. Se usi la console per aggiungere l'utente, puoi copiare le autorizzazioni da un utente esistente al nuovo utente.

   Puoi anche aggiungere un [limite delle autorizzazioni](access_policies_boundaries.md) per limitare le autorizzazioni dell'utente specificando una policy che definisce le autorizzazioni massime che l'utente può avere. I limiti delle autorizzazioni non concedono alcuna autorizzazione.

   Per istruzioni sulla creazione di una policy di autorizzazione personalizzata da utilizzare per concedere le autorizzazioni o impostare un limite delle autorizzazioni, consulta [Definire le autorizzazioni IAM personalizzate con policy gestite dal cliente](access_policies_create.md).

1. (Facoltativo) Aggiungere metadati all'utente collegando tag. Per ulteriori informazioni sull'utilizzo dei tag in IAM, consultare [Tag per AWS Identity and Access Management le risorse](id_tags.md).

1. Fornisci all'utente le necessarie informazioni di accesso. Queste informazioni includono la password e l'URL della console per la pagina di accesso all'account in cui l'utente immette tali credenziali. Per ulteriori informazioni, consulta [In che modo gli utenti IAM accedono a AWS](id_users_sign-in.md).

1. (Facoltativo) Configura [multi-factor authentication (MFA)](id_credentials_mfa.md) per l'utente. La MFA richiede all'utente di fornire un one-time-use codice ogni volta che accede a. Console di gestione AWS

1. (Facoltativo) Fornisci agli utenti IAM le autorizzazioni per gestire le proprie credenziali di sicurezza. (Per impostazione predefinita, gli utenti IAM non dispongono delle autorizzazioni per gestire le proprie credenziali). Per ulteriori informazioni, consulta [Consentire agli utenti IAM di cambiare le loro password](id_credentials_passwords_enable-user-change.md).
**Nota**  
Se si utilizza la console per creare l'utente e si seleziona **L'utente deve creare una nuova password all'accesso successivo (consigliato)**, l'utente dispone delle autorizzazioni necessarie.

Per informazioni sulle autorizzazioni di cui hai bisogno per creare un utente, consulta la pagina [Autorizzazioni necessarie per accedere alle risorse IAM](access_permissions-required.md).

Per istruzioni sulla creazione di utenti IAM per casi d'uso specifici, consulta i seguenti argomenti:
+ [Creare un utente IAM per l'accesso di emergenza](getting-started-emergency-iam-user.md)
+ [Creare un utente IAM per carichi di lavoro che non possono utilizzare i ruoli IAM](getting-started-workloads.md)

# Visualizzare gli utenti IAM
<a name="id_users_list"></a>

Puoi elencare gli utenti IAM nel tuo Account AWS o in uno specifico gruppo IAM ed elencare tutti i gruppi IAM in cui si trova un utente. Per informazioni sulle autorizzazioni necessarie per elencare gli utenti, consulta [Autorizzazioni necessarie per accedere alle risorse IAM](access_permissions-required.md). 

## Per visualizzare tutti gli utenti IAM nel tuo account
<a name="id_users_manage_list-users"></a>

------
#### [ Console ]

1. Segui la procedura di accesso appropriata al tuo tipo di utente, come descritto nell'argomento [Come accedere ad AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l'utente di AWS Sign-In*.

1. Nella **home page della console IAM**, nel pannello di navigazione a sinistra, immetti la query nella casella di testo **Cerca IAM**.

1. Nel pannello di navigazione, seleziona **Utenti**. 

La console mostra gli utenti IAM del tuo Account AWS.

------
#### [ AWS CLI ]

Esegui il comando seguente:
+ `[aws iam list-users](https://docs.aws.amazon.com/cli/latest/reference/iam/list-users.html)`

------
#### [ API ]

Chiamare l'operazione seguente:
+ `[ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html)` 

------

## Per elencare gli utenti IAM in un gruppo IAM
<a name="id_users_manage_list-users-group"></a>

------
#### [ Console ]

1. Segui la procedura di accesso appropriata al tuo tipo di utente, come descritto nell'argomento [Come accedere ad AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l'utente di AWS Sign-In*.

1. Nella **home page della console IAM**, nel pannello di navigazione a sinistra, immetti la query nella casella di testo **Cerca IAM**.

1. Nel pannello di navigazione, seleziona **Gruppi di utenti**.

1. Scegli il nome del gruppo di utenti. 

Gli utenti IAM che sono membri del gruppo sono elencati nella scheda **Utenti**.

------
#### [ AWS CLI ]

Esegui il comando seguente:
+ `[aws iam get-group](https://docs.aws.amazon.com/cli/latest/reference/iam/get-group.html)`

------
#### [ API ]

Chiamare l'operazione seguente:
+ `[GetGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetGroup.html)` 

------

## Per elencare tutti i gruppi IAM in cui si trova un utente
<a name="id_users_manage_list-groups-users"></a>

------
#### [ Console ]

1. Segui la procedura di accesso appropriata al tuo tipo di utente, come descritto nell'argomento [Come accedere ad AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l'utente di AWS Sign-In*.

1. Nella **home page della console IAM**, nel pannello di navigazione a sinistra, immetti la query nella casella di testo **Cerca IAM**.

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Nell'elenco degli **Utenti**, seleziona il nome dell'utente IAM. 

1. Seleziona la scheda **Gruppi** per visualizzare l'elenco dei gruppi IAM che includono l'utente corrente.

------
#### [ AWS CLI ]

Esegui il comando seguente:
+ `[aws iam list-groups-for-user](https://docs.aws.amazon.com/cli/latest/reference/iam/list-groups-for-user.html)`

------
#### [ API ]

Chiamare l'operazione seguente:
+ `[ListGroupsForUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroupsForUser.html)` 

------

## Fasi successive
<a name="id_users_list-next-steps"></a>

Una volta che hai un elenco dei tuoi utenti IAM, puoi rinominare, eliminare o disattivare un utente IAM utilizzando le seguenti procedure.
+ [Ridenominare un utente IAM](id_users_rename.md)
+ [Rimuovere o disattivare un utente IAM](id_users_remove.md)

# Ridenominare un utente IAM
<a name="id_users_rename"></a>

**Nota**  
Come [procedura](best-practices.md) consigliata, si consiglia di richiedere agli utenti umani di utilizzare la federazione con un provider di identità per accedere AWS utilizzando credenziali temporanee. Se segui le best practice, non gestisci utenti e gruppi IAM. Gli utenti e i gruppi sono invece gestiti all'esterno AWS e possono accedere alle AWS risorse come identità *federata*. Un'identità federata è un utente dell'elenco utenti aziendale, un provider di identità Web, il AWS Directory Service, la directory Identity Center o qualsiasi utente che accede AWS ai servizi utilizzando le credenziali fornite tramite un'origine di identità. Le identità federate utilizzano i gruppi definiti dal rispettivo gestore di identità. Se lo utilizzi AWS IAM Identity Center, consulta [Gestisci le identità in IAM Identity Center nella](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-sso.html) *Guida per l'AWS IAM Identity Center utente* per informazioni sulla creazione di utenti e gruppi in IAM Identity Center.

Amazon Web Services offre vari strumenti per gestire gli utenti IAM nel proprio Account AWS. Puoi elencare gli utenti IAM nel tuo account o in un gruppo di utenti oppure elencare tutti i gruppi IAM di cui un utente è membro. È possibile rinominare o modificare il percorso di un utente IAM. Se desideri utilizzare le identità federate invece degli utenti IAM, puoi eliminare un utente IAM dall'account AWS o disattivarlo.

Per ulteriori informazioni sull'aggiunta, la modifica o la rimozione di policy gestite per un utente IAM, consulta [Modificare le autorizzazioni per un utente IAM](id_users_change-permissions.md). Per informazioni sulla gestione di policy in linea per utenti IAM, consulta [Aggiunta e rimozione di autorizzazioni per identità IAM](access_policies_manage-attach-detach.md), [Modificare le policy IAM](access_policies_manage-edit.md) e [Eliminare le policy IAM](access_policies_manage-delete.md). Come best practice, utilizza le policy gestite anziché le policy in linea. Le *policy gestite da AWS * concedono autorizzazioni per numerosi casi d'uso comuni. Tieni presente che le policy AWS gestite potrebbero non concedere le autorizzazioni con il privilegio minimo per i tuoi casi d'uso specifici, poiché sono disponibili per l'uso da parte di tutti i clienti. AWS Ti consigliamo pertanto di ridurre ulteriormente le autorizzazioni definendo [Policy gestite dal cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies) specifiche per i tuoi casi d'uso. Per ulteriori informazioni, consulta [AWS politiche gestite](access_policies_managed-vs-inline.md#aws-managed-policies). Per ulteriori informazioni sulle politiche AWS gestite progettate per funzioni lavorative specifiche, consulta. [AWS politiche gestite per le funzioni lavorative](access_policies_job-functions.md)

Per ulteriori informazioni sulla convalida delle policy IAM, consulta [Convalida delle policy IAM](access_policies_policy-validator.md).

**Suggerimento**  
[IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) analizza i servizi e le azioni utilizzati dai tuoi ruoli IAM e quindi genera una policy dettagliata che puoi utilizzare. Dopo aver testato ogni policy generata, puoi distribuirla nell'ambiente di produzione. In questo modo si garantisce di concedere solo le autorizzazioni necessarie ai carichi di lavoro. Per ulteriori informazioni sulla generazione delle policy, consulta [IAM Access Analyzer policy generation](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html).

Per informazioni sulla gestione delle password utente IAM, consulta [Gestione delle password per gli utenti IAM](id_credentials_passwords_admin-change-user.md).

## Ridenominazione di un utente IAM
<a name="id_users_renaming"></a>

Per modificare il nome o il percorso di un utente, è necessario utilizzare gli AWS CLI strumenti per Windows PowerShell o AWS l'API. Non è disponibile alcuna opzione nella console per rinominare un utente. Per informazioni sulle autorizzazioni necessarie per ridenominare un utente, consulta [Autorizzazioni necessarie per accedere alle risorse IAM](access_permissions-required.md). 

Quando si modifica il nome o il percorso di un utente, si verificano i seguenti eventi: 
+ Qualsiasi policy collegata all'utente viene mantenuta per l'utente con il nuovo nome.
+ L'utente rimane negli stessi gruppi IAM con il nuovo nome.
+ L'ID univoco dell'utente rimane invariato. Per ulteriori informazioni su unique IDs, consulta[Identificatori univoci](reference_identifiers.md#identifiers-unique-ids).
+ Qualsiasi policy relativa alle risorse o ai ruoli che fa riferimento all'utente *come principale* (l'utente a cui viene consentito l'accesso) viene automaticamente aggiornata per l'utilizzo del nuovo nome o percorso. Ad esempio, qualsiasi policy basata su code in Amazon SQS o basata sulle risorse in Amazon S3 viene aggiornata automaticamente per utilizzare il nuovo nome e percorso. 

IAM non aggiorna automaticamente le policy che fanno riferimento all'utente *come una risorsa* per l'utilizzo del nuovo nome o percorso, è necessario un aggiornamento manuale. Ad esempio, si immagini che l'utente `Richard` disponga di una policy collegata che permette di gestire le credenziali di sicurezza dell'utente. Se un amministratore rinomina `Richard` in `Rich`, l'amministratore deve anche aggiornare questa policy per modificar la risorsa da:

```
arn:aws:iam::111122223333:user/division_abc/subdivision_xyz/Richard
```

a:

```
arn:aws:iam::111122223333:user/division_abc/subdivision_xyz/Rich
```

Ciò è valido anche se un amministratore cambia il percorso, l'amministratore deve aggiornare la policy in base al nuovo percorso per l'utente. 

### Per rinominare un utente
<a name="id_users_manage_list-users-rename"></a>
+ AWS CLI: [aws iam update-user](https://docs.aws.amazon.com/cli/latest/reference/iam/update-user.html)
+ AWS API: [UpdateUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateUser.html) 

# Rimuovere o disattivare un utente IAM
<a name="id_users_remove"></a>

[Le migliori pratiche](best-practices.md#remove-credentials) consigliano di rimuovere gli utenti IAM non utilizzati dal tuo Account AWS. Se desideri conservare le credenziali dell'utente IAM per uso futuro, invece di eliminarle dall'account è possibile disattivare l'accesso dell'utente. Per ulteriori informazioni, consulta [Disattivazione di un utente IAM](#id_users_deactivating).

**avvertimento**  
Una volta che un utente IAM e le relative chiavi di accesso vengono eliminate, non possono essere ripristinate o recuperate.

## Prerequisito: visualizzazione dell'accesso dell'utente IAM
<a name="users-manage_prerequisites"></a>

Prima di rimuovere un utente, esamina la sua attività recente a livello di servizio. Questo aiuta a prevenire la rimozione dell'accesso da parte di un principale (persona o applicazione) che lo utilizza. Per ulteriori informazioni sulla visualizzazione delle ultime informazioni di accesso, vedere [Perfeziona le autorizzazioni AWS utilizzando le informazioni dell'ultimo accesso](access_policies_last-accessed.md).

## Rimozione di un utente IAM (console)
<a name="id_users_deleting_console"></a>

Quando utilizzi Console di gestione AWS per rimuovere un utente IAM, IAM elimina automaticamente le seguenti informazioni associate: 
+ L'identificatore dell'utente IAM
+ Qualsiasi appartenenza al gruppo, ovvero, l'utente IAM viene rimosso da qualsiasi gruppo di cui l'utente IAM era membro
+ Qualsiasi password associata all'utente IAM 
+ Tutte le policy in linea integrate nell'utente IAM (le policy applicate a un utente IAM tramite le autorizzazioni del gruppo di utenti non sono interessate) 
**Nota**  
IAM rimuove tutte le policy gestite collegate all'utente IAM quando si elimina l'utente, ma non elimina le policy gestite. 
+ Qualsiasi dispositivo MFA associato

### Per rimuovere un utente IAM (console)
<a name="id_users_remove-section-1"></a>

------
#### [ Console ]

1. Segui la procedura di accesso appropriata al tuo tipo di utente, come descritto nell'argomento [Come accedere ad AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l'utente di AWS Sign-In*.

1. Nella **home page della console IAM**, nel pannello di navigazione a sinistra, immetti la query nella casella di testo **Cerca IAM**.

1. Nel riquadro di navigazione seleziona **Utenti**, quindi seleziona la casella di controllo accanto al nome dell'utente IAM da eliminare. 

1. Nella parte superiore della pagina, scegli **Delete (Elimina)**.
**Nota**  
Se uno qualsiasi degli utenti dispone di chiavi di accesso attive, è necessario disattivarle prima di eliminare gli utenti. Per ulteriori informazioni, consulta [Per disattivare una chiave di accesso per un utente IAM](access-keys-admin-managed.md#admin-deactivate-access-key).

1. Nella casella di dialogo di conferma, inserisci il nome utente nel campo di inserimento testo per confermare l'eliminazione dell'utente. Scegli **Elimina**. 

La console visualizza una notifica di stato che indica che l'utente IAM è stato eliminato.

------

## Eliminazione di un utente IAM (AWS CLI)
<a name="id_users_deleting_cli"></a>

A differenza di Console di gestione AWS, quando elimini un utente IAM con AWS CLI, devi eliminare manualmente gli elementi collegati all'utente IAM. Questa procedura illustra il processo. 

**Per eliminare un utente IAM dal tuo Account AWS (AWS CLI)**

1. Eliminare la password dell'utente, se l'utente ne ha una.

   `[aws iam delete-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-login-profile.html)`

1. Eliminare le chiavi di accesso dell'utente, se disponibili.

   `[aws iam list-access-keys](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html)` (per elencare le chiavi di accesso dell'utente) e `[aws iam delete-access-key](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html)`

1. Eliminare il certificato di firma dell'utente. Si noti che quando si eliminano delle credenziali di sicurezza queste vengono viene eliminate per sempre e non possono più essere recuperate.

   `[aws iam list-signing-certificates](https://docs.aws.amazon.com/cli/latest/reference/iam/list-signing-certificates.html)` (per elencare i certificati di firma dell'utente) e `[aws iam delete-signing-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-signing-certificate.html)`

1. Eliminare la chiave pubblica SSH dell'utente, se disponibile.

   `[aws iam list-ssh-public-keys](https://docs.aws.amazon.com/cli/latest/reference/iam/list-ssh-public-keys.html)` (per elencare le chiavi pubbliche SSH dell'utente) e `[aws iam delete-ssh-public-key](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-ssh-public-key.html)`

1. Eliminare le credenziali Git dell'utente.

   `[aws iam list-service-specific-credentials](https://docs.aws.amazon.com/cli/latest/reference/iam/list-service-specific-credentials.html)` (per elencare le credenziali git dell'utente) e `[aws iam delete-service-specific-credential](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-service-specific-credential.html)`

1. Disattivare il dispositivo Multi-Factor Authentication (MFA), se uno è disponibile.

   `[aws iam list-mfa-devices](https://docs.aws.amazon.com/cli/latest/reference/iam/list-mfa-devices.html)` (per elencare i dispositivi MFA dell'utente), `[aws iam deactivate-mfa-device](https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html)` (per disattivare il dispositivo) e `[aws iam delete-virtual-mfa-device](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-virtual-mfa-device.html)` (per eliminare definitivamente un dispositivo MFA virtuale) 

1. Eliminare le policy inline dell'utente. 

   `[aws iam list-user-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-user-policies.html)` (per elencare le policy inline per l'utente) e [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-user-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-user-policy.html) (per eliminare la policy) 

1. Scollegare le policy gestite collegate all'utente. 

   `[aws iam list-attached-user-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-attached-user-policies.html)` (per elencare le policy gestite collegate all'utente) e [https://docs.aws.amazon.com/cli/latest/reference/iam/detach-user-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/detach-user-policy.html) (per scollegare la policy) 

1. Rimuovere l'utente da qualsiasi gruppo IAM. 

   `[aws iam list-groups-for-user](https://docs.aws.amazon.com/cli/latest/reference/iam/list-groups-for-user.html)` (per elencare i gruppi IAM a cui appartiene l'utente) e `[aws iam remove-user-from-group](https://docs.aws.amazon.com/cli/latest/reference/iam/remove-user-from-group.html)` 

1. Eliminare l’utente.

   `[aws iam delete-user](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-user.html)` 

## Disattivazione di un utente IAM
<a name="id_users_deactivating"></a>

Potrebbe essere necessario disattivare un utente IAM mentre è temporaneamente lontano dall'azienda. Puoi bloccare l'accesso ad AWS pur lasciando attive le sue credenziali di utente IAM.

Per disattivare un utente, crea e collega una policy per negare all'utente l'accesso a AWS. Puoi ripristinare l'accesso dell'utente in un secondo momento.

Di seguito sono riportati due esempi di policy di diniego che puoi collegare a un utente per negargli l'accesso.

La seguente policy non include un limite di tempo. È necessario rimuovere la policy per ripristinare l'accesso dell'utente.

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

****  

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

------

La seguente policy include una condizione che avvia la policy il 24 dicembre 2024 alle 23:59 (UTC) e la termina il 28 febbraio 2025 alle 23:59 (UTC).

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
      {
        "Effect": "Deny",
        "Action": "*",
        "Resource": "*",
        "Condition": {
          "DateGreaterThan": {"aws:CurrentTime": "2024-12-24T23:59:59Z"},
          "DateLessThan": {"aws:CurrentTime": "2025-02-28T23:59:59Z"}
          }
       }
   ]
}
```

------

# Controlla l'accesso degli utenti IAM a Console di gestione AWS
<a name="console_controlling-access"></a>

Gli utenti IAM con autorizzazione che accedono al tuo account Account AWS tramite il Console di gestione AWS possono accedere alle tue risorse. AWS L'elenco seguente mostra i modi in cui puoi concedere agli utenti IAM l'accesso alle tue Account AWS risorse tramite Console di gestione AWS. Mostra anche come gli utenti IAM possono accedere ad altre funzionalità AWS dell'account tramite il AWS sito web.

**Nota**  
L'uso di IAM non comporta alcun costo.

**Il Console di gestione AWS**  
È possibile creare una password per ciascun utente IAM che deve accedere alla Console di gestione AWS. Gli utenti accedono alla console tramite la pagina di Account AWS accesso abilitata a IAM. Per informazioni su come visualizzare la pagina di accesso, consulta [Come accedere ad AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l'utente di Accedi ad AWS *. Per informazioni sulla creazione di password , consulta [Password utente in AWS](id_credentials_passwords.md).  
Puoi impedire a un utente IAM di accedere a Console di gestione AWS rimuovendo la sua password. Ciò impedisce loro di accedere Console di gestione AWS utilizzando le proprie credenziali di accesso. Non modifica le autorizzazioni né impedisce l'accesso alla console utilizzando un ruolo assunto. Se l'utente dispone di chiavi di accesso attive, queste continuano a funzionare e consentono l' AWS CLI accesso tramite Tools for Windows PowerShell, AWS API o AWS Console Mobile Application.

** AWS Le tue risorse, come istanze Amazon EC2, bucket Amazon S3 e così via**  
Anche se gli utenti IAM dispongono di password, hanno ancora bisogno dell'autorizzazione per accedere alle risorse AWS . Quando crei un utente IAM, questo non dispone di autorizzazioni per impostazione predefinita. Per assegnare agli utenti IAM le autorizzazioni necessarie, puoi associare loro delle policy. Se disponi di molti utenti IAM che eseguiranno le stesse attività con le stesse risorse, puoi assegnare tali utenti IAM a un gruppo. Quindi assegna le autorizzazioni a tale gruppo. Per informazioni sulla creazione di utenti e gruppi IAM, vedere [Identità IAM](id.md). Per ulteriori informazioni sull'utilizzo di policy per impostare le autorizzazioni, vedere [Gestione degli accessi AWS alle risorse](access.md).

**AWS Forum di discussione**  
Chiunque può leggere i post sui [forum di discussione AWS](https://forums.aws.amazon.com/). Gli utenti che desiderano pubblicare domande o commenti sul Forum di AWS discussione possono farlo utilizzando il proprio nome utente. La prima volta che un utente pubblica un post sul Forum di AWS discussione, gli viene richiesto di inserire un soprannome e un indirizzo e-mail. Solo quell'utente può usare quel soprannome nei forum di AWS discussione. 

**Le tue informazioni Account AWS di fatturazione e utilizzo**  
Puoi consentire agli utenti di accedere alle tue informazioni di Account AWS fatturazione e utilizzo. Per ulteriori informazioni, consulta [Controllo dell'accesso alle informazioni di fatturazione](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/control-access-billing.html) nella *Guida per l'utente di AWS Billing *. 

**Le informazioni del tuo Account AWS profilo**  
Gli utenti non possono accedere alle informazioni Account AWS del tuo profilo.

**Le tue credenziali Account AWS di sicurezza**  
Gli utenti non possono accedere alle tue credenziali Account AWS di sicurezza.

**Nota**  
Le policy IAM controllano l'accesso indipendentemente dall'interfaccia. Ad esempio, è possibile fornire a un utente la password per accedere alla Console di gestione AWS. Le policy per tale utente (o per qualsiasi gruppo cui l'utente appartiene) determina ciò che l'utente può fare nella Console di gestione AWS. In alternativa, puoi fornire all'utente le chiavi di AWS accesso a cui effettuare AWS chiamate API. In questo caso, le policy controllano le operazioni che l'utente può richiamare tramite una libreria o un client che utilizza le chiavi di accesso per l'autenticazione.

# Modificare le autorizzazioni per un utente IAM
<a name="id_users_change-permissions"></a>

[Puoi modificare le autorizzazioni per un utente IAM del tuo paese Account AWS modificando l'appartenenza ai gruppi, copiando le autorizzazioni da un utente esistente, allegando le policy direttamente a un utente o impostando un limite di autorizzazioni.](access_policies_boundaries.md) Il limite delle autorizzazioni controlla il numero massimo di autorizzazioni che è possibile concedere a un utente. I limiti delle autorizzazioni sono una funzionalità avanzata. AWS 

Per informazioni sulle autorizzazioni necessarie per modificare le autorizzazioni per un utente, consulta la pagina [Autorizzazioni necessarie per accedere alle risorse IAM](access_permissions-required.md).

**Topics**
+ [Visualizzazione dell'accesso utente](#users-modify_prerequisites)
+ [Generazione di una policy basata sull'attività di accesso di un utente](#users_change_permissions-gen-policy)
+ [Aggiunta di autorizzazioni a un utente (console)](#users_change_permissions-add-console)
+ [Modifica delle autorizzazioni per un utente (console)](#users_change_permissions-change-console)
+ [Per rimuovere una policy delle autorizzazioni da un utente (console)](#users_change_permissions-remove-policy-console)
+ [Per rimuovere il limite delle autorizzazioni da un utente (console)](#users_change_permissions-remove-boundary-console)
+ [Aggiungere e rimuovere le autorizzazioni (AWS CLI o AWS API) di un utente](#users_change_permissions-add-programmatic)

## Visualizzazione dell'accesso utente
<a name="users-modify_prerequisites"></a>

Prima di modificare le autorizzazioni per un utente, è opportuno esaminare la sua attività recente a livello di servizio. È un'opzione importante per non rimuovere l'accesso da parte di un principale (persona o applicazione) che la sta utilizzando. Per ulteriori informazioni sulla visualizzazione delle ultime informazioni di accesso, vedere [Perfeziona le autorizzazioni AWS utilizzando le informazioni dell'ultimo accesso](access_policies_last-accessed.md).

## Generazione di una policy basata sull'attività di accesso di un utente
<a name="users_change_permissions-gen-policy"></a>

Talvolta, è possibile concedere autorizzazioni a un'entità IAM (utente o ruolo) oltre a quelle richieste. Per ottimizzare le autorizzazioni concesse, puoi generare una policy IAM basata sull'attività di accesso per un'entità. IAM Access Analyzer esamina AWS CloudTrail i log e genera un modello di policy che contiene le autorizzazioni utilizzate dall'entità nell'intervallo di date specificato. È possibile utilizzare il modello per creare una policy gestita con autorizzazioni granulari e quindi collegarla al ruolo IAM. In questo modo, concedi solo le autorizzazioni necessarie all'utente o al ruolo per interagire con le AWS risorse per il tuo caso d'uso specifico. Per ulteriori informazioni, consulta [Generazione di policy per Sistema di analisi degli accessi IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html).

## Aggiunta di autorizzazioni a un utente (console)
<a name="users_change_permissions-add-console"></a>

Per aggiungere policy di autorizzazione a un utente, IAM offre tre diverse possibilità:
+ **Aggiungi l'utente IAM a un gruppo IAM**: rende l'utente membro di un gruppo. Le policy del gruppo vengono collegate all'utente.
+ **Copia le autorizzazioni da un utente IAM esistente**: copia tutte le appartenenze ai gruppi, le policy gestite collegate, le policy in linea e tutti i limiti delle autorizzazioni esistenti dall'utente di origine.
+ **Collega direttamente le policy all'utente IAM**: collega una policy gestita direttamente all'utente. Per una gestione più semplice delle autorizzazioni, collega le policy a un gruppo e rendi quindi gli utenti IAM membri dei gruppi appropriati.

**Importante**  
Se l'utente ha un limite delle autorizzazioni, non sarà possibile aggiungere più autorizzazioni di quante ne consenta il limite delle autorizzazioni.

### Per aggiungere le autorizzazioni aggiungendo l'utente IAM a un gruppo
<a name="users_change_permissions-add-group-console"></a>

L'aggiunta di un utente IAM a un gruppo IAM aggiorna immediatamente le autorizzazioni dell'utente con le autorizzazioni definite per il gruppo.

------
#### [ Console ]

1. Segui la procedura di accesso appropriata al tuo tipo di utente, come descritto nell'argomento [Come accedere ad AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l'utente di AWS Sign-In*.

1. Nella **home page della console IAM**, nel pannello di navigazione a sinistra, immetti la query nella casella di testo **Cerca IAM**.

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Nell'elenco degli **Utenti**, seleziona il nome dell'utente IAM. 

1. Seleziona la scheda **Gruppi** per visualizzare l'elenco dei gruppi IAM che includono l'utente corrente.

1. Scegli **Aggiungi utente ai gruppi**. 

1. Seleziona la casella di controllo per ciascun gruppo in cui si desidera includere l'utente. L'elenco mostra il nome di ciascun gruppo e le policy che l'utente riceve se diventa un membro di tale gruppo.

1. (Facoltativo) Puoi scegliere **Crea gruppo** per definire un nuovo gruppo. Ciò è utile se desideri aggiungere l'utente a un gruppo con policy collegate diverse rispetto ai gruppi esistenti:

   1. Nella nuova scheda, per **User group name** (Nome gruppo di utenti), digita un nome per il nuovo gruppo.
**Nota**  
Il numero e la dimensione delle risorse IAM in un AWS account sono limitati. Per ulteriori informazioni, consulta [IAM e AWS STS quote](reference_iam-quotas.md). I nomi dei gruppi possono essere una combinazione di un massimo di 128 lettere, cifre e dei seguenti caratteri: più (\$1), uguale (=), virgola (,), punto (.), chiocciola (@) e trattino (-). I nomi devono essere univoci all'interno di un account. Non si distinguono per caso. Ad esempio, non è possibile creare due gruppi chiamati *TESTGROUP* e *testgroup*.

   1. Seleziona una o più caselle di controllo per le policy gestite da collegare al gruppo. È inoltre possibile creare una nuova policy gestita selezionando **Create policy (Crea policy)**. In questo caso, tornare a questa scheda o finestra del browser quando la nuova policy è stata completata, selezionare **Refresh (Aggiorna)** e quindi selezionare la nuova policy da collegare al gruppo. Per ulteriori informazioni, consulta [Definire le autorizzazioni IAM personalizzate con policy gestite dal cliente](access_policies_create.md).

   1. Scegli **Create user group** (Crea gruppo di utenti).

   1. Tornare alla scheda originale e aggiornare l'elenco di gruppi. Quindi seleziona la casella di controllo del nuovo gruppo.

1. Scegli **Aggiungi utente ai gruppi**.

La console visualizza un messaggio di stato che informa che l'utente è stato aggiunto ai gruppi specificati.

------

### Per aggiungere le autorizzazioni tramite copia da un altro utente IAM
<a name="users_change_permissions-add-copy-console"></a>

Se scegli di aggiungere autorizzazioni a un utente IAM copiando le autorizzazioni, IAM copia tutte le appartenenze ai gruppi, le policy gestite collegate, le policy in linea e tutti i limiti delle autorizzazioni esistenti dall'utente specificato e li applica immediatamente all'utente correntemente selezionato.

------
#### [ Console ]

1. Segui la procedura di accesso appropriata al tuo tipo di utente, come descritto nell'argomento [Come accedere ad AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l'utente di AWS Sign-In*.

1. Nella **home page della console IAM**, nel pannello di navigazione a sinistra, immetti la query nella casella di testo **Cerca IAM**.

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Nell'elenco degli **Utenti**, seleziona il nome dell'utente IAM. 

1. Nella scheda **Autorizzazioni**, scegli **Aggiungi autorizzazioni**.

1. Nella pagina **Aggiungi autorizzazioni**, scegli **Copia autorizzazioni**. L'elenco mostra gli utenti IAM disponibili con le relative appartenenze ai gruppi e le policy collegate. 

1. Selezionare il pulsante di opzione accanto all'utente che dispone delle autorizzazioni che si desidera copiare. 

1. Seleziona **Next** (Successivo) per visualizzare l'elenco delle modifiche che devono essere apportate all'utente. Selezionare quindi **Add permissions (Aggiungi autorizzazioni)**.

La console visualizza un messaggio di stato che ti informa che le autorizzazioni sono state copiate dall'utente IAM che hai specificato.

------

### Per aggiungere le autorizzazioni collegando le policy direttamente all'utente IAM
<a name="users_change_permissions-add-directly-console"></a>

Puoi collegare una policy gestita direttamente a un utente IAM. Le autorizzazioni aggiornate vengono applicate immediatamente.

------
#### [ Console ]

1. Segui la procedura di accesso appropriata al tuo tipo di utente, come descritto nell'argomento [Come accedere ad AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l'utente di AWS Sign-In*.

1. Nella **home page della console IAM**, nel pannello di navigazione a sinistra, immetti la query nella casella di testo **Cerca IAM**.

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Nell'elenco degli **Utenti**, seleziona il nome dell'utente IAM. 

1. Nella scheda **Autorizzazioni**, scegli **Aggiungi autorizzazioni**.

1. Nella pagina **Aggiungi autorizzazioni**, seleziona **Collega direttamente le policy**. L'elenco **Policy di autorizzazione** mostra le policy disponibili insieme ai relativi tipi di policy e alle entità collegate. 

1. Seleziona il pulsante di opzione accanto al **nome della policy** che desideri collegare. 

1. Seleziona **Next** (Successivo) per visualizzare l'elenco delle modifiche che devono essere apportate all'utente. Selezionare quindi **Add permissions (Aggiungi autorizzazioni)**.

La console visualizza un messaggio di stato che informa che la policy è stata aggiunta all'utente IAM specificato.

------

### Per impostare il limite delle autorizzazioni per un utente IAM
<a name="users_change_permissions-set-boundary-console"></a>

Un limite di autorizzazioni è una funzionalità avanzata per la gestione delle autorizzazioni AWS che viene utilizzata per impostare le autorizzazioni massime che un utente IAM può avere. L'impostazione di un limite delle autorizzazioni limita immediatamente le autorizzazioni degli utenti IAM al limite, indipendentemente dalle altre autorizzazioni concesse.

------
#### [ Console ]

1. Segui la procedura di accesso appropriata al tuo tipo di utente, come descritto nell'argomento [Come accedere ad AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l'utente di AWS Sign-In*.

1. Nella **home page della console IAM**, nel pannello di navigazione a sinistra, immetti la query nella casella di testo **Cerca IAM**.

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Nell'elenco **Utenti**, scegli il nome dell'utente IAM di cui si desidera modificare il limite delle autorizzazioni. 

1. Scegli la scheda **Autorizzazioni**. Se necessario, apri la sezione **Permissions boundary** (Limite delle autorizzazioni), quindi seleziona **Set permissions boundary** (Imposta limite delle autorizzazioni).

1. Nella pagina **Imposta il limite delle autorizzazioni**, in **Policy delle autorizzazioni**, seleziona la policy da utilizzare per il limite delle autorizzazioni.

1. Scegliere **Set boundary (Imposta limite)**.

La console visualizza un messaggio di stato che informa che il limite delle autorizzazioni è stato aggiunto.

------

## Modifica delle autorizzazioni per un utente (console)
<a name="users_change_permissions-change-console"></a>

IAM consente di modificare le autorizzazioni associate a un utente nei modi seguenti:
+ **Modifica una policy di autorizzazione**: è possibile modificare la policy in linea di un utente, la policy in linea del gruppo dell'utente o la policy gestita collegato all'utente direttamente o da un gruppo. Se l'utente ha un limite delle autorizzazioni, non è possibile fornire più autorizzazioni di quante ne consenta la policy utilizzata come limite delle autorizzazioni dell'utente.
+ **Modifica del limite delle autorizzazioni**: modifica la policy utilizzata come limite delle autorizzazioni per l'utente. In questo modo è possibile ampliare o limitare il numero massimo di autorizzazioni che un utente può avere. 

### Modifica di una policy di autorizzazione collegata a un utente
<a name="users_change_permissions-edit-policy-console"></a>

La modifica delle autorizzazioni aggiorna immediatamente l'accesso dell'utente.

------
#### [ Console ]

1. Segui la procedura di accesso appropriata al tuo tipo di utente, come descritto nell'argomento [Come accedere ad AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l'utente di AWS Sign-In*.

1. Nella **home page della console IAM**, nel pannello di navigazione a sinistra, immetti la query nella casella di testo **Cerca IAM**.

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Nell'elenco **Utenti**, scegli il nome dell'utente IAM di cui si desidera modificare il limite delle autorizzazioni. 

1. Scegli la scheda **Autorizzazioni**. Se necessario, apri la sezione **Limite delle autorizzazioni**.

1. Selezionare il nome della policy da modificare per visualizzare i relativi dettagli. Seleziona la scheda **Entità collegate** per visualizzare le altre entità (utenti, gruppi e ruoli IAM) che potrebbero essere interessate dalla modifica della policy. 

1. Selezionare la scheda **Permissions (Autorizzazioni)** e rivedere le autorizzazioni concesse dalla policy. Per apportare modifiche alle autorizzazioni, scegli **Modifica**. 

1. Modifica la policy e risolvi eventuali suggerimenti [di convalida della policy](access_policies_policy-validator.md). Per ulteriori informazioni, consulta [Modificare le policy IAM](access_policies_manage-edit.md).

1. Seleziona **Successivo**, esamina il riepilogo della policy, quindi scegli **Salva le modifiche**.

La console visualizza un messaggio di stato che informa che la policy è stata aggiornata.

------

### Per modificare il limite delle autorizzazioni per un utente
<a name="users_change_permissions-change-boundary-console"></a>

La modifica del limite delle autorizzazioni aggiorna immediatamente l'accesso dell'utente.

------
#### [ Console ]

1. Segui la procedura di accesso appropriata al tuo tipo di utente, come descritto nell'argomento [Come accedere ad AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l'utente di AWS Sign-In*.

1. Nella **home page della console IAM**, nel pannello di navigazione a sinistra, immetti la query nella casella di testo **Cerca IAM**.

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Nell'elenco **Utenti**, scegli il nome dell'utente IAM di cui si desidera modificare il limite delle autorizzazioni. 

1. Scegli la scheda **Autorizzazioni**. Se necessario, aprire la sezione **Permissions boundary (Limite delle autorizzazioni)** e selezionare **Change boundary (Modifica limite)**.

1. Selezionare la policy da utilizzare per il limite delle autorizzazioni.

1. Scegliere **Set boundary (Imposta limite)**.

La console visualizza un messaggio di stato che informa che il limite delle autorizzazioni è stato modificato.

------

## Per rimuovere una policy delle autorizzazioni da un utente (console)
<a name="users_change_permissions-remove-policy-console"></a>

La rimozione di una policy di autorizzazioni aggiorna immediatamente l'accesso dell'utente.

------
#### [ Console ]

1. Segui la procedura di accesso appropriata al tuo tipo di utente, come descritto nell'argomento [Come accedere ad AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l'utente di AWS Sign-In*.

1. Nella **home page della console IAM**, nel pannello di navigazione a sinistra, immetti la query nella casella di testo **Cerca IAM**.

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Selezionare il nome dell'utente per cui rimuovere le policy di autorizzazioni. 

1. Scegli la scheda **Autorizzazioni**. 

1. Se desideri rimuovere le autorizzazioni rimuovendo una policy esistente, visualizza la colonna **Collegato tramite** per comprendere il modo in cui l'utente riceve la policy prima di selezionare **Rimuovi** per rimuoverla:
   + Se la policy è applicata tramite l'appartenenza a un gruppo, seleziona **X** per rimuovere l'utente dal gruppo. Ricordare che potrebbero essere presenti più policy associate a un singolo gruppo. Se si rimuove un utente da un gruppo, l'utente perde l'accesso a *tutte* le policy che ricevute tramite l'appartenenza a tale gruppo.
   + Se la policy è una policy gestita collegata direttamente all'utente, scegliendo **Remove** (Rimuovi) questa sarà scollegata dall'utente. Ciò non influisce sulla policy stessa o su qualsiasi altra entità a cui la policy potrebbe essere collegata.
   + Se la policy è una policy in linea integrata, scegliendo **Rimuovi** la policy verrà rimossa da IAM. Le policy inline collegate direttamente a un utente sono presenti solo in tale utente.

Se la policy è stata concessa all'utente tramite l'appartenenza a un gruppo, la console visualizza un messaggio di stato che informa che l'utente IAM è stato rimosso dal gruppo IAM. Se la policy è collegata direttamente o in linea, il messaggio di stato informa che la policy è stata rimossa.

------

## Per rimuovere il limite delle autorizzazioni da un utente (console)
<a name="users_change_permissions-remove-boundary-console"></a>

La rimozione del limite delle autorizzazioni aggiorna immediatamente l'accesso dell'utente.

------
#### [ Console ]

1. Segui la procedura di accesso appropriata al tuo tipo di utente, come descritto nell'argomento [Come accedere ad AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l'utente di AWS Sign-In*.

1. Nella **home page della console IAM**, nel pannello di navigazione a sinistra, immetti la query nella casella di testo **Cerca IAM**.

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Nell'elenco **Utenti**, scegli il nome dell'utente IAM di cui si desidera rimuovere il limite delle autorizzazioni. 

1. Scegli la scheda **Autorizzazioni**. Se necessario, apri la sezione **Limite delle autorizzazioni**.

1.  Selezionare **Change boundary (Modifica limite)**. Nella finestra di dialogo di conferma, scegli **Rimuovi limite** per confermare la rimozione del limite delle autorizzazioni.

La console visualizza un messaggio di stato che informa che il limite delle autorizzazioni è stato rimosso.

------

## Aggiungere e rimuovere le autorizzazioni (AWS CLI o AWS API) di un utente
<a name="users_change_permissions-add-programmatic"></a>

Per aggiungere o rimuovere le autorizzazioni a livello di codice, è necessario aggiungere o rimuovere i gruppi di appartenenza, collegare o distaccare le appartenenze ai gruppi, collegare o distaccare le policy gestite oppure aggiungere o eliminare le policy inline. Per ulteriori informazioni, consulta i seguenti argomenti:
+ [Modificare gli utenti nei gruppi IAM](id_groups_manage_add-remove-users.md)
+ [Aggiunta e rimozione di autorizzazioni per identità IAM](access_policies_manage-attach-detach.md)

# Password utente in AWS
<a name="id_credentials_passwords"></a>

Puoi gestire le password per gli utenti IAM del tuo account. Gli utenti IAM necessitano di password per accedere a. Console di gestione AWS Gli utenti non hanno bisogno di password per accedere alle AWS risorse in modo programmatico utilizzando Tools for Windows AWS CLI PowerShell, o. AWS SDKs APIs Per questi ambienti, hai la possibilità di assegnare [chiavi di accesso](id_credentials_access-keys.md) agli utenti IAM. Tuttavia, ci sono altre alternative più sicure delle chiavi di accesso che ti consigliamo di prendere in considerazione per prime. Per ulteriori informazioni, consulta [AWS credenziali di sicurezza](security-creds.md).

**Nota**  
Se uno dei tuoi utenti IAM perde o dimentica la propria password, *non potrai* recuperarla da IAM. A seconda delle impostazioni, l'utente o l'amministratore devono creare una nuova password.

**Topics**
+ [Configurare una policy delle password di un account per gli utenti IAM](id_credentials_passwords_account-policy.md)
+ [Gestione delle password per gli utenti IAM](id_credentials_passwords_admin-change-user.md)
+ [Consentire agli utenti IAM di cambiare le loro password](id_credentials_passwords_enable-user-change.md)
+ [Come un utente IAM può modificare la propria password](id_credentials_passwords_user-change-own.md)

# Configurare una policy delle password di un account per gli utenti IAM
<a name="id_credentials_passwords_account-policy"></a>

Puoi impostare una politica di password personalizzata Account AWS per specificare i requisiti di complessità e i periodi di rotazione obbligatori per le password degli utenti IAM. Se non imposti una politica di password personalizzata, le password utente IAM devono soddisfare la politica di password predefinita AWS . Per ulteriori informazioni, consulta [Opzioni di policy delle password personalizzata](#password-policy-details).

**Topics**
+ [Impostazione di una policy delle password](#password-policy-rules)
+ [Autorizzazioni necessarie per impostare una policy delle password](#default-policy-permissions-required)
+ [Policy delle password predefinita](#default-policy-details)
+ [Opzioni di policy delle password personalizzata](#password-policy-details)
+ [Per impostare una policy delle password (console)](#IAMPasswordPolicy)
+ [Per modificare una policy delle password (console)](#id_credentials_passwords_account-policy-section-1)
+ [Eliminazione di una policy delle password personalizzata (console)](#id_credentials_passwords_account-policy-section-2)
+ [Impostazione di una policy sulle password (AWS CLI)](#PasswordPolicy_CLI)
+ [Impostazione di una politica in materia di password (AWS API)](#PasswordPolicy_API)

## Impostazione di una policy delle password
<a name="password-policy-rules"></a>

La policy sulle password IAM non si applica alla Utente root dell'account AWS password o alle chiavi di accesso utente IAM. Se una password scade, l'utente IAM non può accedere Console di gestione AWS ma può continuare a utilizzare le proprie chiavi di accesso.

Quando si crea o si modifica una policy sulle password, la maggior parte delle impostazioni sulla policy delle password vengono applicate la prossima volta che gli utenti modificano le password. Tuttavia, alcune delle impostazioni vengono applicate immediatamente. Ad esempio: 
+ Quando si impostano i requisiti minimi di lunghezza e del tipo di caratteri, le impostazioni vengono applicate la volta successiva che gli utenti cambiano le password. Gli utenti non sono costretti a modificare le proprie password esistenti, anche se le password esistenti non rispettano i criteri della policy aggiornata sulle password.
+ Quando si imposta un periodo di scadenza della password, il periodo di scadenza viene applicato immediatamente. Ad esempio, un periodo di scadenza della password viene impostato a 90 giorni. In tal caso, la password scade per tutti gli utenti IAM la cui password attuale è più vecchia di 90 giorni. Gli utenti sono tenuti a modificare la propria password all'accesso successivo.

Non è possibile creare una "policy di esclusione" per bloccare un utente fuori dall'account dopo un numero specificato di tentativi di accesso non riusciti. Per una maggiore sicurezza, si consiglia di combinare una policy delle password complessa con l'autenticazione Multi-Factor Authentication (MFA). Per ulteriori informazioni sulla funzionalità MFA, consultare [AWS Autenticazione a più fattori in IAM](id_credentials_mfa.md).

## Autorizzazioni necessarie per impostare una policy delle password
<a name="default-policy-permissions-required"></a>

È necessario configurare le autorizzazioni per consentire a un'entità IAM (utente o ruolo) di visualizzare o modificare la policy delle password dell'account. È possibile includere le seguenti operazioni di policy della password in una policy IAM: 
+ `iam:GetAccountPasswordPolicy`: consente all'entità di visualizzare la policy delle password per il proprio account
+ `iam:DeleteAccountPasswordPolicy`: consente all'entità di eliminare la policy delle password personalizzata per il proprio account e ripristinare la policy delle password di default
+ `iam:UpdateAccountPasswordPolicy`: consente all'entità di creare o modificare la policy delle password personalizzata per il proprio account

La policy seguente consente l'accesso completo per visualizzare e modificare la policy delle password dell'account. Per ulteriori informazioni su come creare una policy IAM usando il documento di policy JSON di esempio, consulta [Creazione di policy utilizzando l'editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "FullAccessPasswordPolicy",
            "Effect": "Allow",
            "Action": [
                "iam:GetAccountPasswordPolicy",
                "iam:DeleteAccountPasswordPolicy",
                "iam:UpdateAccountPasswordPolicy"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Per informazioni sulle autorizzazioni necessarie per modificare la password da parte di un utente IAM, consulta [Consentire agli utenti IAM di cambiare le loro password](id_credentials_passwords_enable-user-change.md).

## Policy delle password predefinita
<a name="default-policy-details"></a>

Se un amministratore non imposta una politica di password personalizzata, le password degli utenti IAM devono soddisfare la politica di AWS password predefinita.

La policy delle password predefinita applica le seguenti condizioni:
+ Deve avere una lunghezza minima di 8 caratteri e massima di 128 caratteri
+ Deve includere almeno tre dei seguenti tipi di caratteri: lettere maiuscole, lettere minuscole, numeri e caratteri non alfanumerici (`! @ # $ % ^ & * ( ) _ + - = [ ] { } | '`)
+ Non essere identico al tuo Account AWS nome o indirizzo email
+ Password che non scadono mai

## Opzioni di policy delle password personalizzata
<a name="password-policy-details"></a>

Quando si configura una policy delle password personalizzata per l'account, è possibile specificare le seguenti condizioni:
+ **Lunghezza minima della password**: è possibile specificare un minimo di 6 caratteri e un massimo di 128 caratteri.
+ **Complessità della password**: puoi selezionare una delle seguenti caselle di controllo per definire la complessità delle password dell'utente IAM:
  + Richiedi almeno una lettera maiuscola dall'alfabeto latino (A-Z)
  + Richiedi almeno una lettera minuscola dall'alfabeto latino (a-z)
  + Richiedere almeno un numero
  + Richiedere almeno un carattere non alfanumerico `! @ # $ % ^ & * ( ) _ + - = [ ] { } | '` 
+ **Turn on password expiration** (Abilita scadenza della password): puoi selezionare e specificare un minimo di 1 e un massimo di 1.095 giorni di validità delle password utente IAM dopo che sono state impostate. Ad esempio, se specifichi una scadenza di 90 giorni, ciò influisce immediatamente su tutti gli utenti. Dopo la modifica, gli utenti con password impostata da oltre 90 giorni dovranno impostarne una nuova quando accedono alla console. Gli utenti con password vecchie di 75-89 giorni ricevono un Console di gestione AWS avviso sulla scadenza della password. Gli utenti IAM possono modificare la password in qualsiasi momento se dispongono dell'autorizzazione. Quando impostano una nuova password, il periodo di scadenza per tale password ricomincia da capo. Un utente IAM può avere solo una password valida alla volta.
+ **La scadenza della password richiede la reimpostazione dell'amministratore**: seleziona questa opzione per impedire agli utenti IAM di utilizzare il Console di gestione AWS per aggiornare le proprie password dopo la scadenza della password. Prima di selezionare questa opzione, verifica che nell' Account AWS sia presente più di un utente con le autorizzazioni amministrative per ripristinare le password degli utenti IAM. Gli amministratori che dispongono dell'autorizzazione `iam:UpdateLoginProfile` possono reimpostare le password degli utenti IAM. Gli utenti IAM che dispongono dell'autorizzazione `iam:ChangePassword` e di chiavi di accesso attive possono reimpostare autonomamente la propria password della console utente IAM a livello di programmazione. Se si deseleziona questa casella di controllo, gli utenti IAM con password scadute devono comunque impostare una nuova password prima di poter accedere alla Console di gestione AWS.
+ **Allow users to change their own password** (Consenti agli utenti di modificare la propria password): puoi consentire a tutti gli utenti IAM nel tuo account di modificare autonomamente le proprie password. Ciò consente agli utenti di accedere all'operazione `iam:ChangePassword` solo per il proprio utente e all'operazione `iam:GetAccountPasswordPolicy`. Questa opzione non associa una policy di autorizzazione a ciascun utente. Piuttosto, IAM applica le autorizzazioni a livello di account per tutti gli utenti. In alternativa, è possibile consentire solo ad alcuni utenti di gestire in autonomia le proprie password. A tale scopo, deseleziona questa casella di controllo. Per ulteriori informazioni sull'utilizzo di policy per limitare chi può gestire le password, consultare [Consentire agli utenti IAM di cambiare le loro password](id_credentials_passwords_enable-user-change.md).
+ **Impedisci il riutilizzo di una password**: puoi impedire che gli utenti IAM riutilizzino un determinato numero di password precedenti. È possibile specificare un numero minimo di 1 e un numero massimo di 24 password precedenti che non possono essere ripetute. 

## Per impostare una policy delle password (console)
<a name="IAMPasswordPolicy"></a>

Puoi utilizzare la Console di gestione AWS per creare, modificare o eliminare una politica di password personalizzata. Le modifiche alla policy delle password si applicano ai nuovi utenti IAM creati dopo questa modifica della policy e agli utenti IAM esistenti quando questi modificano le proprie password.

------
#### [ Console ]

1. Segui la procedura di accesso appropriata al tuo tipo di utente, come descritto nell'argomento [Come accedere ad AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l'utente di AWS Sign-In*.

1. Nella **home page della console IAM**, nel pannello di navigazione a sinistra, immetti la query nella casella di testo **Cerca IAM**.

1. Nel riquadro di navigazione, scegliere **Account settings (Impostazioni account)**.

1. Nella sezione **Password policy** (Policy delle password), scegli **Edit** (Modifica). 

1. Scegli **Custom** (Personalizzato) per utilizzare una policy di password personalizzata.

1. Seleziona le opzioni che desideri applicare alla policy delle password e scegli **Salva modifiche**. 

1. Conferma che desideri impostare la policy delle password personalizzata scegliendo **Set custom** (Imposta personalizzata).

La console visualizza un messaggio di stato che informa che i requisiti di password per gli utenti IAM sono stati aggiornati.

------

## Per modificare una policy delle password (console)
<a name="id_credentials_passwords_account-policy-section-1"></a>

È possibile utilizzare la Console di gestione AWS per creare, modificare o eliminare una politica personalizzata in materia di password. Le modifiche alla policy delle password si applicano ai nuovi utenti IAM creati dopo questa modifica della policy e agli utenti IAM esistenti quando questi modificano le proprie password.

------
#### [ Console ]

1. Segui la procedura di accesso appropriata al tuo tipo di utente, come descritto nell'argomento [Come accedere ad AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l'utente di AWS Sign-In*.

1. Nella **home page della console IAM**, nel pannello di navigazione a sinistra, immetti la query nella casella di testo **Cerca IAM**.

1. Nel riquadro di navigazione, scegliere **Account settings (Impostazioni account)**.

1. Nella sezione **Password policy** (Policy delle password), scegli **Edit** (Modifica). 

1. Seleziona le opzioni che desideri applicare alla policy delle password e scegli **Salva modifiche**. 

1. Conferma che desideri impostare la policy delle password personalizzata scegliendo **Set custom** (Imposta personalizzata).

La console visualizza un messaggio di stato che informa che i requisiti di password per gli utenti IAM sono stati aggiornati.

------

## Eliminazione di una policy delle password personalizzata (console)
<a name="id_credentials_passwords_account-policy-section-2"></a>

È possibile utilizzare la Console di gestione AWS per creare, modificare o eliminare una politica personalizzata in materia di password. Le modifiche alla policy delle password si applicano ai nuovi utenti IAM creati dopo questa modifica della policy e agli utenti IAM esistenti quando questi modificano le proprie password.

------
#### [ Console ]

1. Segui la procedura di accesso appropriata al tuo tipo di utente, come descritto nell'argomento [Come accedere ad AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l'utente di AWS Sign-In*.

1. Nella **home page della console IAM**, nel pannello di navigazione a sinistra, immetti la query nella casella di testo **Cerca IAM**.

1. Nel riquadro di navigazione, scegliere **Account settings (Impostazioni account)**.

1. Nella sezione **Password policy** (Policy delle password), scegli **Edit** (Modifica). 

1. Scegli **IAM default** (Predefinito IAM) per eliminare la policy di password personalizzata, quindi scegli **Save changes** (Salva modifiche).

1. Conferma che desideri impostare la policy delle password predefinita IAM scegliendo **Set default** (Imposta predefinita).

La console visualizza un messaggio di stato che informa che la policy delle password è impostata sul valore predefinito di IAM.

------

## Impostazione di una policy sulle password (AWS CLI)
<a name="PasswordPolicy_CLI"></a>

È possibile utilizzare il AWS Command Line Interface per impostare una politica in materia di password.

**Per gestire la politica personalizzata in materia di password dell'account dal AWS CLI**  
Esegui i comandi seguenti:
+ Per creare o modificare la policy delle password personalizzata: [https://docs.aws.amazon.com/cli/latest/reference/iam/update-account-password-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-account-password-policy.html)
+ Per visualizzare la policy delle password: [https://docs.aws.amazon.com/cli/latest/reference/iam/get-account-password-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-account-password-policy.html) 
+ Per eliminare la policy delle password personalizzata: [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-account-password-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-account-password-policy.html) 

## Impostazione di una politica in materia di password (AWS API)
<a name="PasswordPolicy_API"></a>

È possibile utilizzare le operazioni AWS API per impostare una politica in materia di password.

**Per gestire la politica personalizzata in materia di password dell'account dall' AWS API**  
Chiamare le operazioni seguenti:
+ Per creare o modificare la policy delle password personalizzata: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccountPasswordPolicy.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccountPasswordPolicy.html)
+ Per visualizzare la policy delle password: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountPasswordPolicy.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountPasswordPolicy.html) 
+ Per eliminare la policy delle password personalizzata: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccountPasswordPolicy.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccountPasswordPolicy.html) 

# Gestione delle password per gli utenti IAM
<a name="id_credentials_passwords_admin-change-user"></a>

Gli utenti IAM che utilizzano il Console di gestione AWS per lavorare con AWS le risorse devono disporre di una password per poter accedere. Puoi creare, modificare o eliminare una password di un utente IAM nel tuo account AWS . 

Dopo aver assegnato una password a un utente, l'utente può accedere Console di gestione AWS utilizzando l'URL di accesso per il tuo account, che ha il seguente aspetto: 

```
https://12-digit-AWS-account-ID or alias.signin.aws.amazon.com/console
```

Per ulteriori informazioni su come gli utenti IAM accedono a Console di gestione AWS, consulta [Come accedere a AWS nella](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) *Guida per l'Accedi ad AWS utente*. 

Anche se gli utenti hanno le proprie password, hanno ancora bisogno delle autorizzazioni per accedere alle tue risorse AWS . Per impostazione predefinita, un utente non ha autorizzazioni. Per fornire agli utenti le autorizzazioni di cui hanno bisogno, assegna loro le policy o ai gruppi di appartenenza. Per ulteriori informazioni sulla creazione di utenti e gruppi, vedere [Identità IAM](id.md). Per ulteriori informazioni sull'utilizzo di policy per impostare le autorizzazioni, vedere [Modificare le autorizzazioni per un utente IAM](id_users_change-permissions.md). 

Puoi concedere le autorizzazioni agli utenti per modificare le loro password. Per ulteriori informazioni, consulta [Consentire agli utenti IAM di cambiare le loro password](id_credentials_passwords_enable-user-change.md). Per informazioni su come gli utenti accedono alla pagina di accesso del tuo account, consulta [Come accedere ad AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l'utente di Accedi ad AWS *. 

**Topics**
+ [Creazione, modifica o eliminazione di una password dell'utente IAM (console)](#id_credentials_passwords_admin-change-user_console)

## Creazione, modifica o eliminazione di una password dell'utente IAM (console)
<a name="id_credentials_passwords_admin-change-user_console"></a>

Puoi utilizzare il Console di gestione AWS per gestire le password per i tuoi utenti IAM.

Le esigenze di accesso degli utenti possono cambiare nel tempo. Potrebbe essere necessario consentire a un utente destinato all'accesso CLI di accedere alla console, modificare la password di un utente perché riceve l'e-mail con le proprie credenziali o eliminare un utente quando lascia l'organizzazione o non ha più bisogno dell'accesso. AWS 

### Per creare una password per l'utente IAM (console)
<a name="id_credentials_passwords_admin-change-user-section-1"></a>

Utilizza questa procedura per consentire a un utente di accedere alla console creando una password associata al nome utente.

------
#### [ Console ]

1. Segui la procedura di accesso appropriata al tuo tipo di utente, come descritto nell'argomento [Come accedere ad AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l'utente di AWS Sign-In*.

1. Nella **home page della console IAM**, nel pannello di navigazione a sinistra, immetti la query nella casella di testo **Cerca IAM**.

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Seleziona il nome dell'utente sul quale desideri creare la password. 

1. Scegli la scheda **Security credentials** (Credenziali di sicurezza), quindi in **Console sign-in** (Accesso alla console), scegli **Enable console access** (Abilita l'accesso alla console).

1. Nella finestra di dialogo **Consenti accesso alla console**, seleziona **Reimposta password**, quindi scegli se IAM deve generare una password o se deve essere creata una password personalizzata: 
   + Per fare in modo che IAM generi una password, scegli **Password autogenerata**
   + Per creare una password personalizzata, scegliere **Custom password (Password personalizzata)** e digitare la password. 
**Nota**  
La password creata deve essere conforme alla [policy delle password](id_credentials_passwords_account-policy.md) dell'account.

1. Per richiedere all'utente di creare una nuova password all'accesso, scegli **L'utente deve creare una nuova password al prossimo accesso**. 

1. Per richiedere all'utente di utilizzare immediatamente la nuova password, seleziona **Revoca sessioni di console attive**. Ciò collega una policy in linea all'utente IAM che nega all'utente l'accesso alle risorse se le sue credenziali sono più vecchie del periodo specificato dalla policy.

1. Scegliere **Reimposta password**

1. La finestra di dialogo **Password della console** ti informa che è stata abilitata la nuova password dell'utente. Per visualizzare la password in modo da poterla condividere con l'utente, scegli **Mostra** nella finestra di dialogo **Password della console**. Seleziona **Scarica il file .csv** per scaricare un file con le credenziali dell'utente.
**Importante**  
Per motivi di sicurezza, non è possibile accedere alla password dopo aver completato questa fase, ma è possibile creare una nuova password in qualsiasi momento.

La console visualizza un messaggio di stato che informa che l'accesso alla console è stato abilitato.

------

### Come cambiare la password per un utente IAM (console)
<a name="id_credentials_passwords_admin-change-user-section-2"></a>

Utilizza questa procedura per aggiornare una password associata al nome utente.

------
#### [ Console ]

1. Segui la procedura di accesso appropriata al tuo tipo di utente, come descritto nell'argomento [Come accedere ad AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l'utente di AWS Sign-In*.

1. Nella **home page della console IAM**, nel pannello di navigazione a sinistra, immetti la query nella casella di testo **Cerca IAM**.

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Seleziona il nome dell'utente di cui desideri modificare la password. 

1. Scegli la scheda **Security credentials** (Credenziali di sicurezza), quindi in **Console sign-in** (Accesso alla console), scegli **Manage console access** (Gestisci l'accesso alla console).

1. Nella finestra di dialogo **Gestisci l'accesso alla console**, seleziona **Reimposta password**, quindi scegli se la password deve essere generata da IAM o se deve essere creata una password personalizzata: 
   + Per fare in modo che IAM generi una password, scegli **Password autogenerata**
   + Per creare una password personalizzata, scegliere **Custom password (Password personalizzata)** e digitare la password. 
**Nota**  
La password creata deve essere conforme alla [policy delle password](id_credentials_passwords_account-policy.md) dell'account.

1. Per richiedere all'utente di creare una nuova password all'accesso, scegli **L'utente deve creare una nuova password al prossimo accesso**. 

1. Per richiedere all'utente di utilizzare immediatamente la nuova password, seleziona **Revoca sessioni di console attive**. Ciò collega una policy in linea all'utente IAM che nega all'utente l'accesso alle risorse se le sue credenziali sono più vecchie del periodo specificato dalla policy.

1. Scegliere **Reimposta password**

1. La finestra di dialogo **Password della console** ti informa che è stata abilitata la nuova password dell'utente. Per visualizzare la password in modo da poterla condividere con l'utente, scegli **Mostra** nella finestra di dialogo **Password della console**. Seleziona **Scarica il file .csv** per scaricare un file con le credenziali dell'utente.
**Importante**  
Per motivi di sicurezza, non è possibile accedere alla password dopo aver completato questa fase, ma è possibile creare una nuova password in qualsiasi momento.

La console visualizza un messaggio di stato che informa che l'accesso alla console è stato aggiornato.

------

### Come eliminare (disabilitare) una password dell'utente IAM (console)
<a name="id_credentials_passwords_admin-change-user-section-3"></a>

Utilizza questa procedura per eliminare una password associata al nome utente rimuovendo l'accesso alla console per l'utente.

**Importante**  
Puoi impedire a un utente IAM di accedere a Console di gestione AWS rimuovendo la sua password. Ciò impedisce loro di accedere Console di gestione AWS utilizzando le proprie credenziali di accesso. Non modifica le autorizzazioni né impedisce l'accesso alla console utilizzando un ruolo assunto. Se l'utente dispone di chiavi di accesso attive, queste continuano a funzionare e consentono l' AWS CLI accesso tramite Tools for Windows PowerShell, AWS API o AWS Console Mobile Application.

------
#### [ Console ]

1. Segui la procedura di accesso appropriata al tuo tipo di utente, come descritto nell'argomento [Come accedere ad AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l'utente di AWS Sign-In*.

1. Nella **home page della console IAM**, nel pannello di navigazione a sinistra, immetti la query nella casella di testo **Cerca IAM**.

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Seleziona il nome dell'utente di cui desideri eliminare la password. 

1. Scegli la scheda **Security credentials** (Credenziali di sicurezza), quindi in **Console sign-in** (Accesso alla console), scegli **Manage console access** (Gestisci l'accesso alla console).

1. Per richiedere all'utente di interrompere immediatamente l'uso della console, seleziona **Revoca sessioni di console attive**. Ciò collega una policy in linea all'utente IAM che nega all'utente l'accesso alle risorse se le sue credenziali sono più vecchie del periodo specificato dalla policy.

1. Scegli **Disabilita accesso**

La console visualizza un messaggio di stato che informa che l'accesso alla console è stato disabilitato.

------

### Creazione, modifica o eliminazione di una password utente IAM (AWS CLI)
<a name="Using_ManagingPasswordsCLIAPI"></a>

Puoi utilizzare l' AWS CLI API per gestire le password per i tuoi utenti IAM.

**Per creare una password (AWS CLI)**

1. (Facoltativo) Per determinare se un utente dispone di una password, esegui questo comando: [aws iam get-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/get-login-profile.html)

1. Per creare una password, esegui questo comando: [aws iam create-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/create-login-profile.html)

**Per modificare la password di un utente (AWS CLI)**

1. (Facoltativo) Per determinare se un utente dispone di una password, esegui questo comando: [aws iam get-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/get-login-profile.html)

1. Per modificare una password, esegui questo comando: [aws iam update-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/update-login-profile.html)

**Per eliminare (disabilitare) una password utente (AWS CLI)**

1. (Facoltativo) Per determinare se un utente dispone di una password, esegui questo comando: [aws iam get-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/get-login-profile.html)

1. (Facoltativo) Per determinare quando una password è stata utilizzata per l'ultima volta, eseguire questo comando: [aws iam get-user](https://docs.aws.amazon.com/cli/latest/reference/iam/get-user.html)

1. Per eliminare una password, esegui questo comando: [aws iam delete-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-login-profile.html)

**Importante**  
Quando elimini una password dell'utente, l'utente non può più accedere alla Console di gestione AWS. Se l'utente dispone di chiavi di accesso attive, queste continuano a funzionare e consentono l'accesso tramite AWS CLI le chiamate di funzione Tools for Windows PowerShell o AWS API. Quando utilizzi Tools for Windows o PowerShell l' AWS CLI AWS API per eliminare un utente dal tuo Account AWS, devi prima eliminare la password utilizzando questa operazione. Per ulteriori informazioni, consulta [Eliminazione di un utente IAM (AWS CLI)](id_users_remove.md#id_users_deleting_cli). 

**Per revocare le sessioni di console attive di un utente prima di un orario specificato (AWS CLI)**

1. [Per incorporare una policy in linea che revochi le sessioni di console attive di un utente IAM prima di un orario specificato, utilizza la seguente policy in linea ed esegui questo comando: aws iam put-user-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-user-policy.html)

   Questa policy in linea nega tutte le autorizzazioni e include la chiave di condizione `aws:TokenIssueTime`. Revoca le sessioni di console attive dell'utente prima del tempo specificato nell'elemento `Condition` della policy in linea. Sostituire il valore della chiave di condizione `aws:TokenIssueTime` con il proprio valore.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Deny",
       "Action": "*",
       "Resource": "*",
       "Condition": {
         "DateLessThan": {
           "aws:TokenIssueTime": "2014-05-07T23:47:00Z"
         }
       }
     }
   }
   ```

------

1. [(Facoltativo) Per elencare i nomi delle politiche in linea incorporate nell'utente IAM, esegui questo comando: aws iam list-user-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-user-policies.html)

1. [(Facoltativo) Per visualizzare la policy in linea denominata incorporata nell'utente IAM, esegui questo comando: aws iam get-user-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/get-user-policy.html)

### Creazione, modifica o eliminazione di una password utente IAM (API)AWS
<a name="Using_ManagingPasswordsAPI"></a>

Puoi utilizzare l' AWS API per gestire le password per i tuoi utenti IAM.

**Per creare una password (AWS API)**

1. (Facoltativo) Per determinare se un utente dispone di una password, richiamate questa operazione: [GetLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html)

1. Per creare una password, richiamate questa operazione: [CreateLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateLoginProfile.html)

**Per modificare la password di un utente (AWS API)**

1. (Facoltativo) Per determinare se un utente dispone di una password, richiamate questa operazione: [GetLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html)

1. Per modificare una password, chiamate questa operazione: [UpdateLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateLoginProfile.html)

**Per eliminare (disabilitare) la password di un utente (AWS API)**

1. (Facoltativo) Per determinare se un utente dispone di una password, esegui questo comando: [GetLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html)

1. (Facoltativo) Per determinare quando è stata utilizzata l'ultima volta una password, esegui questo comando: [GetUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html)

1. Per eliminare una password, esegui questo comando: [DeleteLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteLoginProfile.html)

**Importante**  
Quando elimini una password dell'utente, l'utente non può più accedere alla Console di gestione AWS. Se l'utente dispone di chiavi di accesso attive, queste continuano a funzionare e consentono l'accesso tramite AWS CLI le chiamate di funzione Tools for Windows PowerShell o AWS API. Quando utilizzi Tools for Windows o PowerShell l' AWS CLI AWS API per eliminare un utente dal tuo Account AWS, devi prima eliminare la password utilizzando questa operazione. Per ulteriori informazioni, consulta [Eliminazione di un utente IAM (AWS CLI)](id_users_remove.md#id_users_deleting_cli). 

**Per revocare le sessioni di console attive di un utente prima di un orario specificato (API)AWS**

1. Per incorporare una policy in linea che revochi le sessioni di console attive di un utente IAM prima di un orario specificato, utilizza la seguente policy in linea ed esegui questo comando: [PutUserPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutUserPolicy.html)

   Questa policy in linea nega tutte le autorizzazioni e include la chiave di condizione `aws:TokenIssueTime`. Revoca le sessioni di console attive dell'utente prima del tempo specificato nell'elemento `Condition` della policy in linea. Sostituire il valore della chiave di condizione `aws:TokenIssueTime` con il proprio valore.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Deny",
       "Action": "*",
       "Resource": "*",
       "Condition": {
         "DateLessThan": {
           "aws:TokenIssueTime": "2014-05-07T23:47:00Z"
         }
       }
     }
   }
   ```

------

1. (Facoltativo) Per elencare i nomi delle politiche in linea incorporate nell'utente IAM, esegui questo comando: [ListUserPolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUserPolicies.html)

1. (Facoltativo) Per visualizzare la policy in linea denominata incorporata nell'utente IAM, esegui questo comando: [GetUserPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUserPolicy.html)

# Consentire agli utenti IAM di cambiare le loro password
<a name="id_credentials_passwords_enable-user-change"></a>

**Nota**  
Per modificare le password, gli utenti con identità federate utilizzeranno il processo definito dal proprio gestore di identità. Come [procedura ottimale](best-practices.md), richiedi agli utenti umani di utilizzare la federazione con un provider di identità per accedere AWS utilizzando credenziali temporanee.

Puoi concedere agli utenti IAM l'autorizzazione per modificare le password di accesso alla Console di gestione AWS. Ci sono due modi per farlo:
+ [Consenti a tutti gli utenti IAM nell'account di cambiare le loro password](#proc_letalluserschangepassword). 
+ [Consentire solo agli utenti IAM selezionati di cambiare le loro password](#proc_letselectuserschangepassword). In questo scenario, è possibile disattivare l'opzione di modifica della password per tutti gli utenti e utilizzare una policy IAM per concedere autorizzazioni solo ad alcuni utenti. Questo approccio consente a questi utenti di modificare le proprie password e, facoltativamente, altre credenziali, come le proprie chiavi di accesso. 

**Importante**  
Consigliamo di [impostare una policy delle password personalizzata](id_credentials_passwords_account-policy.md) che richieda agli utenti IAM di creare password complesse.

## Per consentire a tutti gli utenti IAM di cambiare le loro password
<a name="proc_letalluserschangepassword"></a>

------
#### [ Console ]

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione, fai clic su **Impostazioni account**.

1. Nella sezione **Password policy** (Policy delle password), scegli **Edit** (Modifica).

1. Scegli **Custom** (Personalizzato) per utilizzare una policy di password personalizzata.

1. Seleziona **Allow users to change their own password** (Consenti agli utenti di modificare la propria password), quindi scegli **Save changes (Salva modifiche**). Ciò consente a tutti gli utenti nell'account di accedere `iam:ChangePassword` all'operazione solo per il proprio utente e all'operazione `iam:GetAccountPasswordPolicy`.

1. Fornisci agli utenti le seguenti istruzioni per modificare le password: [Come un utente IAM può modificare la propria password](id_credentials_passwords_user-change-own.md). 

------
#### [ AWS CLI ]

Esegui il comando seguente:
+ `[aws iam update-account-password-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/update-account-password-policy.html)`

------
#### [ API ]

Per creare un alias per l'URL della pagina di accesso della Console di gestione AWS , chiama l'operazione seguente:
+ `[UpdateAccountPasswordPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccountPasswordPolicy.html)` 

------

## Per consentire a utenti IAM selezionati di cambiare le loro password.
<a name="proc_letselectuserschangepassword"></a>

------
#### [ Console ]

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione, fai clic su **Impostazioni account**. 

1. Nella sezione **Impostazioni account**, assicurati che l'opzione **Consenti a tutti gli utenti di cambiare la propria password** non sia selezionata. Se questa casella di controllo è selezionata, tutti gli utenti possono modificare le proprie password. (Consulta la procedura precedente.) 

1. Crea gli utenti che dovrebbero essere autorizzati a modificare la propria password, se non esistono ancora. Per informazioni dettagliate, vedi [Crea un utente IAM nel tuo Account AWS](id_users_create.md). 

1. (Facoltativo) Crea un gruppo IAM per gli utenti che possono modificare le loro password e aggiungi gli utenti dalla fase precedente a tale gruppo. Per informazioni dettagliate, vedi [Gruppi di utenti IAM](id_groups.md). 

1. Assegnare la policy seguente al gruppo. Per ulteriori informazioni, consulta [Gestire le policy IAM](access_policies_manage.md).

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "iam:GetAccountPasswordPolicy",
         "Resource": "*"
       },
       {
         "Effect": "Allow",
         "Action": "iam:ChangePassword",
         "Resource": "arn:aws:iam::*:user/${aws:username}"
       }
     ]
   }
   ```

------

   Questa policy concede l'accesso all'[ChangePassword](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ChangePassword.html)azione, che consente agli utenti di modificare solo le proprie password dalla console AWS CLI, dagli Strumenti per Windows PowerShell o dall'API. Concede inoltre l'accesso all'[GetAccountPasswordPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountPasswordPolicy.html)azione, che consente all'utente di visualizzare la politica corrente in materia di password; questa autorizzazione è necessaria per consentire all'utente di visualizzare la politica sulla password dell'account nella pagina **Modifica** password. L'utente deve essere autorizzato a leggere la policy delle password corrente per assicurare che la password modificata soddisfi i requisiti della policy.

1. Fornisci agli utenti le seguenti istruzioni per modificare le password: [Come un utente IAM può modificare la propria password](id_credentials_passwords_user-change-own.md). 

------

### Ulteriori informazioni
<a name="HowToPwdIAMUser-moreinfo"></a>

Per ulteriori informazioni sulla gestione delle credenziali, consultare i seguenti argomenti:
+ [Consentire agli utenti IAM di cambiare le loro password](#id_credentials_passwords_enable-user-change) 
+ [Password utente in AWS](id_credentials_passwords.md)
+ [Configurare una policy delle password di un account per gli utenti IAM](id_credentials_passwords_account-policy.md)
+ [Gestire le policy IAM](access_policies_manage.md)
+ [Come un utente IAM può modificare la propria password](id_credentials_passwords_user-change-own.md)

# Come un utente IAM può modificare la propria password
<a name="id_credentials_passwords_user-change-own"></a>

Se ti è stata concessa l'autorizzazione a modificare la tua password utente IAM, puoi utilizzare una pagina speciale Console di gestione AWS per farlo. Puoi anche usare l' AWS API AWS CLI or.

**Topics**
+ [Autorizzazioni richieste](#change-own-passwords-permissions-required)
+ [Come gli utenti IAM possono cambiare le proprie password (console)](#ManagingUserPwdSelf-Console)
+ [In che modo gli utenti IAM modificano la propria password (AWS CLI o AWS API)](#ManagingUserPwdSelf-CLIAPI)

## Autorizzazioni richieste
<a name="change-own-passwords-permissions-required"></a>

Per modificare la password del proprio utente IAM, è necessario disporre delle autorizzazioni dalla policy seguente: [AWS: consente agli utenti IAM di modificare la password della console sulla pagina Credenziali di sicurezza](reference_policies_examples_aws_my-sec-creds-self-manage-password-only.md).

## Come gli utenti IAM possono cambiare le proprie password (console)
<a name="ManagingUserPwdSelf-Console"></a>

La procedura seguente descrive come gli utenti IAM possono utilizzare il Console di gestione AWS per modificare la propria password.

**Come cambiare la propria password utente IAM (console)**

1. Utilizza l' AWS ID o l'alias dell'account, il nome utente IAM e la password per accedere alla [console IAM](https://console.aws.amazon.com/iam).
**Nota**  
Per comodità, la pagina di AWS accesso utilizza un cookie del browser per ricordare il nome utente IAM e le informazioni sull'account. Se in precedenza è stato eseguito l'accesso con un utente diverso, scegli il link **Accedi a un account differente** nella parte inferiore della pagina per ritornare alla pagina principale di accesso. Da lì, puoi digitare l'ID o l'alias dell'account per essere reindirizzato alla pagina di accesso utente IAM relativa al tuo AWS account.

   Per ottenere il tuo Account AWS ID, contatta l'amministratore.

1. Seleziona il nome utente in alto a destra nella barra di navigazione e scegli **Security credentials** (Credenziali di sicurezza).   
![\[AWS Link alle credenziali di sicurezza della console di gestione\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. Nella scheda **Credenziali AWS IAM**, seleziona **Aggiorna password**.

1. In **Current password (Password corrente)** digitare la password attuale. Digitare una nuova password per **New password (Nuova password)** e **Confirm new password (Conferma nuova password)**. Quindi sceglie **Aggiorna password**.
**Nota**  
La nuova password deve soddisfare i requisiti della nuova policy delle password per l'account. Per ulteriori informazioni, consulta [Configurare una policy delle password di un account per gli utenti IAM](id_credentials_passwords_account-policy.md). 

## In che modo gli utenti IAM modificano la propria password (AWS CLI o AWS API)
<a name="ManagingUserPwdSelf-CLIAPI"></a>

La procedura seguente descrive come gli utenti IAM possono utilizzare l' AWS API AWS CLI or per modificare la propria password.

**Per modificare la propria password IAM, utilizza i seguenti comandi:**
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/change-password.html](https://docs.aws.amazon.com/cli/latest/reference/iam/change-password.html)
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ChangePassword.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ChangePassword.html)

# Gestione delle chiavi di accesso per gli utenti IAM
<a name="id_credentials_access-keys"></a>

**Importante**  
Come [best practice](best-practices.md), utilizza credenziali di sicurezza temporanee (come i ruoli IAM) invece di creare credenziali a lungo termine come le chiavi di accesso. Prima di creare le chiavi di accesso, esamina le [alternative alle chiavi di accesso a lungo termine](security-creds-programmatic-access.md#security-creds-alternatives-to-long-term-access-keys).

Le chiavi di accesso sono credenziali a lungo termine per un utente IAM o l' Utente root dell'account AWS. Puoi utilizzare le chiavi di accesso per firmare le richieste programmatiche all' AWS API AWS CLI o (direttamente o utilizzando l' AWS SDK). Per ulteriori informazioni, consulta [Accesso programmatico con AWS credenziali di sicurezza](security-creds-programmatic-access.md).

Le chiavi di accesso sono composte da due parti: un ID chiave di accesso (ad esempio `AKIAIOSFODNN7EXAMPLE`) e una chiave di accesso segreta (ad esempio, `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`). È necessario utilizzare sia l'ID chiave di accesso sia la chiave di accesso segreta insieme per autenticare le richieste dell'utente.



Se crei una coppia di chiavi di accesso, salva l'ID chiave di accesso e la chiave di accesso segreta in una posizione sicura. La chiave di accesso segreta può essere recuperata solo al momento della creazione. Se perdi la chiave di accesso segreta, è necessario eliminarla e crearne una nuova. Per ulteriori istruzioni, consulta [Aggiornare le chiavi di accesso](id-credentials-access-keys-update.md).

È possibile avere al massimo due chiavi di accesso per utente.

**Importante**  
Gli utenti IAM con chiavi di accesso rappresentano un rischio per la sicurezza dell’account. Gestisci le chiavi di accesso in modo sicuro. Non fornire le chiavi di accesso a parti non autorizzate, neppure per contribuire a [trovare gli identificatori di account](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html). In questo modo, potresti concedere a qualcuno l'accesso permanente al tuo account.  
Quando utilizzi le chiavi di accesso, tieni presente quanto segue:  
**NON** utilizzare le credenziali root dell’account per creare chiavi di accesso.
**NON** inserire chiavi di accesso o informazioni sulle credenziali nei file dell’applicazione. 
**NON** includere file che contengono chiavi di accesso o informazioni sulle credenziali nell’area del progetto.
Le chiavi di accesso o le informazioni sulle credenziali archiviate nel file delle AWS credenziali condivise vengono archiviate in testo non crittografato.

## Consigli sul monitoraggio
<a name="monitor-access-keys"></a>

Dopo aver creato le chiavi di accesso:
+ Utilizzatelo AWS CloudTrail per monitorare l'utilizzo delle chiavi di accesso e rilevare eventuali tentativi di accesso non autorizzati. Per ulteriori informazioni, consulta [Registrazione delle chiamate IAM e AWS STS API con AWS CloudTrail](cloudtrail-integration.md).
+ Imposta CloudWatch allarmi per notificare agli amministratori i tentativi di accesso negato per aiutare a rilevare attività dannose. Per ulteriori informazioni, consulta la [Amazon CloudWatch User Guide](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/).
+ Rivedi, aggiorna ed elimina regolarmente le chiavi di accesso secondo necessità.

I seguenti argomenti descrivono in dettaglio le attività di gestione associate alle chiavi di accesso.

**Topics**
+ [Consigli sul monitoraggio](#monitor-access-keys)
+ [Controllo dell’uso delle chiavi di accesso collegando una policy inline a un utente IAM](access-keys_inline-policy.md)
+ [Autorizzazioni necessarie per gestire le chiavi di accesso](access-keys_required-permissions.md)
+ [Come gli utenti IAM possono gestire le proprie chiavi di accesso](access-key-self-managed.md)
+ [In che modo un amministratore IAM può gestire le chiavi di accesso dell'utente IAM](access-keys-admin-managed.md)
+ [Aggiornare le chiavi di accesso](id-credentials-access-keys-update.md)
+ [Proteggere le chiavi di accesso](securing_access-keys.md)

# Controllo dell’uso delle chiavi di accesso collegando una policy inline a un utente IAM
<a name="access-keys_inline-policy"></a>

Come best practice, consigliamo di [far utilizzare ai carichi di lavoro credenziali temporanee con ruoli IAM](best-practices.md#bp-workloads-use-roles) per l’accesso ad AWS. Agli utenti IAM con chiavi di accesso deve essere assegnato l’accesso con privilegio minimo e deve essere abilitata l’[autenticazione a più fattori (MFA)](id_credentials_mfa.md). Per ulteriori informazioni sull’assunzione dei ruoli IAM, consulta [Metodi per assumere un ruolo](id_roles_manage-assume.md).

Tuttavia, se stai creando un test proof of concept di un’automazione di servizio o un altro caso d’uso a breve termine e scegli di eseguire carichi di lavoro utilizzando un utente IAM con chiavi di accesso, ti consigliamo di [utilizzare le condizioni di policy per limitare ulteriormente l’accesso](best-practices.md#use-policy-conditions) alle sue credenziali utente IAM.

In questa situazione puoi creare una policy a tempo limitato che faccia scadere le credenziali dopo il tempo specificato oppure, se stai eseguendo un carico di lavoro da una rete sicura, puoi utilizzare una policy di limitazione dell’IP.

Per entrambi questi casi d’uso, puoi utilizzare una policy inline collegata all’utente IAM che dispone delle chiavi di accesso.

**Per configurare una policy a tempo limitato per un’utente IAM**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, scegli **Utenti**, quindi seleziona l’utente per il caso d’uso a breve termine. Se non hai ancora creato l’utente, puoi [crearlo](getting-started-workloads.md) ora.

1. Nella pagina **Dettagli**, scegli la scheda **Autorizzazioni**.

1. Scegli **Aggiungi autorizzazioni**, quindi scegli **Crea policy inline**.

1. Nella sezione **Editor di policy**, seleziona **JSON** per visualizzare l’editor JSON.

1. Nell’editor JSON, immetti la seguente policy, sostituendo il valore del timestamp `aws:CurrentTime` con la data e l’ora di scadenza desiderate:

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

****  

   ```
   {
   "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Deny",
         "Action": "*",
         "Resource": "*",
         "Condition": {
         "DateGreaterThan": {
         "aws:CurrentTime": "2025-03-01T00:12:00Z"
           }
         }
       }
     ]
   }
   ```

------

   Questa policy utilizza l’effetto `Deny` per limitare tutte le operazioni su tutte le risorse dopo la data specificata. La condizione `DateGreaterThan` confronta l’ora corrente con il timestamp impostato.

1. Seleziona **Next** (Successivo) per passare alla pagina **Review and create** (Rivedi e crea). Nei dettagli della **Policy**, in **Nome della policy** inserisci un nome per la policy, quindi scegli **Crea policy**.

Una volta creata, la policy viene visualizzata nella scheda **Autorizzazioni** per l’utente. Quando l'ora corrente è maggiore o uguale all'ora specificata nella policy, l'utente non avrà più accesso alle AWS risorse. Assicurati di informare gli sviluppatori dei carichi di lavoro della data di scadenza specificata per queste chiavi di accesso. 

**Per configurare una policy di limitazione dell’IP per un utente IAM**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, scegli **Utenti**, quindi seleziona l’utente che eseguirà il carico di lavoro dalla rete sicura. Se non hai ancora creato l’utente, puoi [crearlo](getting-started-workloads.md) ora.

1. Nella pagina **Dettagli**, scegli la scheda **Autorizzazioni**.

1. Scegli **Aggiungi autorizzazioni**, quindi scegli **Crea policy inline**.

1. Nella sezione **Editor di policy**, seleziona **JSON** per visualizzare l’editor JSON.

1. Copia la seguente policy IAM nell'editor JSON e modifica il pubblico, IPv6 gli indirizzi IPv4 o gli intervalli in base alle tue esigenze. Puoi usare [https://checkip.amazonaws.com/](https://checkip.amazonaws.com/)per determinare il tuo attuale indirizzo IP pubblico. Puoi specificare singoli indirizzi IP o intervalli di indirizzi IP utilizzando la notazione slash. Per ulteriori informazioni, consulta [aws:SourceIp](reference_policies_condition-keys.md#condition-keys-sourceip). 
**Nota**  
Gli indirizzi IP non devono essere offuscati da una VPN o da un server proxy.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid":"IpRestrictionIAMPolicyForIAMUser",
         "Effect": "Deny",
         "Action": "*",
         "Resource": "*",
         "Condition": {
           "NotIpAddress": {
             "aws:SourceIp": [
               "203.0.113.0/24",
               "2001:DB8:1234:5678::/64",
               "203.0.114.1"
             ]
           },
           "BoolIfExists": {
             "aws:ViaAWSService": "false"
           }
         }
       }
     ]
   }
   ```

------

   Questo esempio di policy nega l'uso delle chiavi di accesso di un utente IAM con questa policy applicata, a meno che la richiesta non provenga dalle reti (specificate nella notazione CIDR) «203.0.113.0/24», «2001:: 1234:5678DB8: :/64» o dall'indirizzo IP specifico «203.0.114.1» 

1. Seleziona **Next** (Successivo) per passare alla pagina **Review and create** (Rivedi e crea). Nei dettagli della **Policy**, in **Nome della policy** inserisci un nome per la policy, quindi scegli **Crea policy**.

Una volta creata, la policy viene visualizzata nella scheda **Autorizzazioni** per l’utente. 

Puoi anche applicare questa politica come policy di controllo del servizio (SCP) su più AWS account in AWS Organizations, ti consigliamo di utilizzare una condizione aggiuntiva, `aws:PrincipalArn` per fare in modo che questa dichiarazione di politica si applichi solo agli utenti IAM all'interno degli AWS account soggetti a questo SCP. La seguente policy include tale aggiornamento:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "IpRestrictionServiceControlPolicyForIAMUsers",
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": [
            "203.0.113.0/24",
            "2001:DB8:1234:5678::/64",
            "203.0.114.1"
          ]
        },
        "BoolIfExists": {
          "aws:ViaAWSService": "false"
        },
        "ArnLike": {
          "aws:PrincipalArn": "arn:aws:iam::*:user/*"
        }
      }
    }
  ]
}
```

------

# Autorizzazioni necessarie per gestire le chiavi di accesso
<a name="access-keys_required-permissions"></a>

**Nota**  
`iam:TagUser` è un'autorizzazione facoltativa per l'aggiunta e la modifica di descrizioni della chiave di accesso. Per ulteriori informazioni, consulta [Aggiungere tag agli utenti IAM](id_tags_users.md)

Per creare le chiavi di accesso per l'utente IAM, è necessario disporre delle autorizzazioni dalla policy seguente:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CreateOwnAccessKeys",
            "Effect": "Allow",
            "Action": [
                "iam:CreateAccessKey",
                "iam:GetUser",
                "iam:ListAccessKeys",
                "iam:TagUser"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        }
    ]
}
```

------

Per aggiornare le chiavi di accesso per l'utente IAM, è necessario disporre delle autorizzazioni concesse dalla policy seguente:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ManageOwnAccessKeys",
            "Effect": "Allow",
            "Action": [
                "iam:CreateAccessKey",
                "iam:DeleteAccessKey",
                "iam:GetAccessKeyLastUsed",
                "iam:GetUser",
                "iam:ListAccessKeys",
                "iam:UpdateAccessKey",
                "iam:TagUser"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        }
    ]
}
```

------

# Come gli utenti IAM possono gestire le proprie chiavi di accesso
<a name="access-key-self-managed"></a>

Gli amministratori IAM possono concedere agli utenti IAM l'autorizzazione per gestire autonomamente le proprie chiavi di accesso collegando la policy descritta in [Autorizzazioni necessarie per gestire le chiavi di accesso](access-keys_required-permissions.md).

Con queste autorizzazioni, l'utente IAM può utilizzare le seguenti procedure per creare, attivare, disattivare ed eliminare le chiavi di accesso associate al proprio nome utente.

**Topics**
+ [Creare una chiave di accesso per se stessi (console)](#Using_CreateAccessKey)
+ [Disattivare la tua chiave di accesso (console)](#deactivate-access-key-seccreds)
+ [Attivare la tua chiave di accesso (console)](#activate-access-key-seccreds)
+ [Eliminare la tua chiave di accesso (console)](#delete-access-key-seccreds)

## Creare una chiave di accesso per se stessi (console)
<a name="Using_CreateAccessKey"></a>

Se ti sono state concesse le autorizzazioni appropriate, puoi utilizzarle Console di gestione AWS per creare le tue chiavi di accesso.

**Per creare le proprie chiavi di accesso (console)**

1. Utilizza l' AWS ID o l'alias dell'account, il nome utente IAM e la password per accedere alla console [IAM](https://console.aws.amazon.com/iam).
**Nota**  
Per comodità, la pagina di AWS accesso utilizza un cookie del browser per ricordare il nome utente IAM e le informazioni sull'account. Se in precedenza è stato eseguito l'accesso con un utente diverso, scegli il link **Accedi a un account differente** nella parte inferiore della pagina per ritornare alla pagina principale di accesso. Da lì, puoi digitare l'ID o l'alias dell'account per essere reindirizzato alla pagina di accesso utente IAM relativa al tuo AWS account.

   Per ottenere il tuo Account AWS ID, contatta l'amministratore.

1. Seleziona il nome utente in alto a destra nella barra di navigazione e scegli **Security credentials** (Credenziali di sicurezza).   
![\[AWS Link alle credenziali di sicurezza della console di gestione\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. Nella sezione **Chiavi di accesso**, scegliere **Crea chiave di accesso**. Se dispone già di due chiavi di accesso, questo pulsante è disattivato e sarà necessario eliminare una chiave di accesso prima di crearne una nuova.

1. Sulla pagina **Access key best practices & alternatives** (Best practice e alternative per le chiavi di accesso), scegli il tuo caso d'uso per scoprire altre opzioni che possono aiutarti a evitare di creare una chiave di accesso a lungo termine. Se ritieni che il tuo caso d'uso richieda comunque una chiave di accesso, scegli **Other** (Altro) e poi **Next** (Successivo).

1. (Facoltativo) Imposta un valore del tag descrittivo per la chiave di accesso. Questo aggiunge una coppia chiave-valore di tag all'utente IAM. Ciò consente di identificare e aggiornare le chiavi di accesso in un secondo momento. La chiave di tag è impostata sull'ID della chiave di accesso. Il valore del tag è impostato sulla descrizione della chiave di accesso specificata. Al termine, scegli **Create access key** (Crea chiave di accesso).

1. Nella pagina **Retrieve access keys** (Recupera chiavi di accesso), scegli **Show** (Mostra) per rivelare il valore della chiave di accesso segreta dell'utente o **Download .csv file** (Scarica il file .csv). Questa è la tua unica opportunità di salvare la chiave di accesso segreta. Dopo aver salvato la chiave di accesso segreta in una posizione sicura, scegli **Done** (Fatto).

## Disattivare la tua chiave di accesso (console)
<a name="deactivate-access-key-seccreds"></a>

Se ti sono state concesse le autorizzazioni appropriate, puoi utilizzarle Console di gestione AWS per disattivare la tua chiave di accesso.

**Disattivazione di una chiave di accesso**

1. [Utilizza l'ID o l'alias dell'account, il nome utente IAM e la password per accedere alla console IAM. AWS](https://console.aws.amazon.com/iam)
**Nota**  
Per comodità, la pagina di AWS accesso utilizza un cookie del browser per ricordare il nome utente IAM e le informazioni sull'account. Se in precedenza è stato eseguito l'accesso con un utente diverso, scegli il link **Accedi a un account differente** nella parte inferiore della pagina per ritornare alla pagina principale di accesso. Da lì, puoi digitare l'ID o l'alias dell'account per essere reindirizzato alla pagina di accesso utente IAM relativa al tuo AWS account.

   Per ottenere il tuo Account AWS ID, contatta l'amministratore.

1. Seleziona il nome utente in alto a destra nella barra di navigazione e scegli **Security credentials** (Credenziali di sicurezza).   
![\[AWS Link alle credenziali di sicurezza della console di gestione\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. Nella sezione **Access keys** (Chiavi di accesso) individua la chiave che desideri disattivare, quindi scegli **Actions** (Operazioni) e poi **Deactivate** (Disattiva). Quando viene richiesta la conferma, scegliere **Disattiva**. Una chiave di accesso disattivata viene comunque conteggiata per il limite di due chiavi di accesso.

## Attivare la tua chiave di accesso (console)
<a name="activate-access-key-seccreds"></a>

Se ti sono state concesse le autorizzazioni appropriate, puoi utilizzarle Console di gestione AWS per attivare la tua chiave di accesso.

**Attivazione di una chiave di accesso**

1. Utilizza l' AWS ID o l'alias dell'account, il nome utente IAM e la password per accedere alla console [IAM](https://console.aws.amazon.com/iam).
**Nota**  
Per comodità, la pagina di AWS accesso utilizza un cookie del browser per ricordare il nome utente IAM e le informazioni sull'account. Se in precedenza è stato eseguito l'accesso con un utente diverso, scegli il link **Accedi a un account differente** nella parte inferiore della pagina per ritornare alla pagina principale di accesso. Da lì, puoi digitare l'ID o l'alias dell'account per essere reindirizzato alla pagina di accesso utente IAM relativa al tuo AWS account.

   Per ottenere il tuo Account AWS ID, contatta l'amministratore.

1. Seleziona il nome utente in alto a destra nella barra di navigazione e scegli **Security credentials** (Credenziali di sicurezza).   
![\[AWS Link alle credenziali di sicurezza della console di gestione\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. Nella sezione **Access keys** (Chiavi di accesso) individua la chiave che desideri attivare, quindi scegli **Actions** (Operazioni) e poi **Activate** (Attiva).

## Eliminare la tua chiave di accesso (console)
<a name="delete-access-key-seccreds"></a>

Se ti sono state concesse le autorizzazioni appropriate, puoi utilizzarle Console di gestione AWS per eliminare la tua chiave di accesso.

**Eliminazione di una chiave di accesso quando non è più necessaria**

1. Utilizza l' AWS ID o l'alias dell'account, il nome utente IAM e la password per accedere alla console [IAM](https://console.aws.amazon.com/iam).
**Nota**  
Per comodità, la pagina di AWS accesso utilizza un cookie del browser per ricordare il nome utente IAM e le informazioni sull'account. Se in precedenza è stato eseguito l'accesso con un utente diverso, scegli il link **Accedi a un account differente** nella parte inferiore della pagina per ritornare alla pagina principale di accesso. Da lì, puoi digitare l'ID o l'alias dell'account per essere reindirizzato alla pagina di accesso utente IAM relativa al tuo AWS account.

   Per ottenere il tuo Account AWS ID, contatta l'amministratore.

1. Seleziona il nome utente in alto a destra nella barra di navigazione e scegli **Security credentials** (Credenziali di sicurezza).   
![\[AWS Link alle credenziali di sicurezza della console di gestione\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. Nella sezione **Access keys** (Chiavi di accesso) individua la chiave che desideri eliminare, quindi scegli **Actions** (Operazioni) e poi **Delete** (Elimina). Segui le istruzioni nella finestra di dialogo prima per **disattivare** la chiave e poi conferma l'eliminazione. Si consiglia di verificare che la chiave di accesso non sia più in uso prima di eliminarla definitivamente.

# In che modo un amministratore IAM può gestire le chiavi di accesso dell'utente IAM
<a name="access-keys-admin-managed"></a>

Gli amministratori IAM possono creare, attivare, disattivare ed eliminare le chiavi di accesso associate ai singoli utenti IAM. Possono anche elencare gli utenti IAM dell'account che dispongono delle chiavi di accesso e individuare quale utente IAM dispone di una chiave di accesso specifica.

**Topics**
+ [Come creare una chiave di accesso per un utente IAM](#admin-create-access-key)
+ [Per disattivare una chiave di accesso per un utente IAM](#admin-deactivate-access-key)
+ [Per attivare una chiave di accesso per un utente IAM](#admin-activate-access-key)
+ [Come eliminare una chiave di accesso per un utente IAM](#admin-delete-access-key)
+ [Per elencare le chiavi di accesso per un utente IAM](#admin-list-access-key)
+ [Per elencare le chiavi di accesso per un utente IAM](#admin-list-access-key)
+ [Per visualizzare tutte le chiavi di accesso IDs per gli utenti del tuo account](#admin-list-all-access-keys)
+ [Per utilizzare l'ID di una chiave di accesso per trovare un utente](#admin-find-user-access-keys)
+ [Per trovare l'uso più recente di un ID della chiave di accesso](#admin-find-most-recent-use-access-keys)

## Come creare una chiave di accesso per un utente IAM
<a name="admin-create-access-key"></a>

------
#### [ Console ]

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Scegli il nome utente per passare alla pagina dei dettagli dell'utente.

1. Nella scheda **Credenziali di sicurezza**, nella sezione **Chiavi di accesso**, scegli **Crea chiave di accesso**.

   Se il pulsante è disattivato, dovrai eliminare una delle chiavi esistenti prima di poterne creare una nuova.

1. Sulla pagina **Access key best practices & alternatives** (Best practice e alternative per le chiavi di accesso), esamina le best practice e le alternative. Scegli il tuo caso d'uso per scoprire altre opzioni che possono aiutarti a evitare di creare una chiave di accesso a lungo termine.

1. Se ritieni che il tuo caso d'uso richieda comunque una chiave di accesso, scegli **Other** (Altro) e poi **Next** (Successivo).

1. **(Facoltativo)** Nella pagina **Imposta il tag di descrizione**, puoi aggiungere un tag descrittivo alla chiave di accesso per monitorare la chiave di accesso. Seleziona **Crea chiave di accesso**.

1. Nella pagina **Retrieve access key** (Recupera chiave di accesso), scegli **Show** (Mostra) per rivelare il valore della chiave di accesso segreta dell'utente.

1. Per salvare l'ID della chiave di accesso e la chiave di accesso segreta in un file `.csv` in una posizione sicura sul computer, seleziona il pulsante **Download .csv file** (Scarica file .csv).
**Importante**  
Questa è l’unica opportunità per visualizzare o scaricare la chiave di accesso appena creata e non sarà possibile recuperarla. Assicurati di conservare in modo sicuro la tua chiave di accesso.

Quando crei una chiave di accesso per il tuo utente, la coppia di chiavi è attiva di default e può essere utilizzata immediatamente.

------
#### [ AWS CLI ]

Esegui il comando seguente:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html)

------
#### [ API ]

Chiamare l'operazione seguente:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html) 

------

## Per disattivare una chiave di accesso per un utente IAM
<a name="admin-deactivate-access-key"></a>

------
#### [ Console ]

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Scegli il nome utente per passare alla pagina dei dettagli dell'utente.

1. Nella scheda **Credenziali di sicurezza**, nella sezione **Chiavi di accesso**, scegli il menu a discesa **Azioni**, quindi scegli **Disattiva**.

1. Nella finestra di dialogo **Disattiva**, conferma di voler disattivare la chiave di accesso selezionando **Disattiva**

Una volta disattivata, una chiave di accesso non può più essere utilizzata dalle chiamate API. Se necessario, puoi riattivarla.

------
#### [ AWS CLI ]

Esegui il comando seguente:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html)

------
#### [ API ]

Chiamare l'operazione seguente:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html) 

------

## Per attivare una chiave di accesso per un utente IAM
<a name="admin-activate-access-key"></a>

------
#### [ Console ]

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Scegli il nome utente per passare alla pagina dei dettagli dell'utente.

1. Nella scheda **Credenziali di sicurezza**, nella sezione **Chiavi di accesso**, scegli il menu a discesa **Azioni**, quindi scegli **Attiva**.

Una volta attivata, una chiave di accesso può essere utilizzata dalle chiamate API. Se necessario, puoi disattivarla.

------
#### [ AWS CLI ]

Esegui il comando seguente:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html)

------
#### [ API ]

Chiamare l'operazione seguente:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html) 

------

## Come eliminare una chiave di accesso per un utente IAM
<a name="admin-delete-access-key"></a>

Dopo aver disattivato una chiave di accesso, se non è più necessaria, eliminala.

------
#### [ Console ]

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Scegli il nome utente per passare alla pagina dei dettagli dell'utente.

1. Nella scheda **Credenziali di sicurezza**, nella sezione **Chiavi di accesso**, scegli il menu a discesa **Azioni** per la chiave di accesso inattiva, quindi scegli **Elimina**.

1. Nella finestra di dialogo **Elimina**, conferma di voler eliminare la chiave di accesso inserendo l'ID della chiave di accesso nel campo di immissione del testo e quindi selezionando **Elimina**.

Una volta eliminata, una chiave di accesso non può essere recuperata.

------
#### [ AWS CLI ]

Esegui il comando seguente:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html)

------
#### [ API ]

Chiamare l'operazione seguente:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html) 

------

## Per elencare le chiavi di accesso per un utente IAM
<a name="admin-list-access-key"></a>

Puoi visualizzare un elenco della chiave di accesso IDs associata a un utente IAM. 

------
#### [ Console ]

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Scegli il nome utente per passare alla pagina dei dettagli dell'utente.

1. Nella scheda **Credenziali di sicurezza**, la sezione **Chiavi di accesso** elenca le chiavi di accesso per l'utente.

Ogni utente IAM può avere due chiavi di accesso.

------
#### [ AWS CLI ]

Esegui il comando seguente:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html)

------
#### [ API ]

Chiamare l'operazione seguente:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html) 

------

## Per elencare le chiavi di accesso per un utente IAM
<a name="admin-list-access-key"></a>

Puoi visualizzare un elenco della chiave di accesso IDs associata a un utente IAM. 

------
#### [ Console ]

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Scegli il nome utente per passare alla pagina dei dettagli dell'utente.

1. Nella scheda **Credenziali di sicurezza**, la sezione **Chiavi di accesso** elenca la chiave di accesso IDs per l'utente, incluso lo stato di ogni chiave visualizzata.
**Nota**  
Solo l'ID chiave di accesso dell'utente è visibile. La chiave di accesso segreta può essere recuperata solo al momento della creazione.

Ogni utente IAM può avere due chiavi di accesso.

------
#### [ AWS CLI ]

Esegui il comando seguente:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html)

------
#### [ API ]

Chiamare l'operazione seguente:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html) 

------

## Per visualizzare tutte le chiavi di accesso IDs per gli utenti del tuo account
<a name="admin-list-all-access-keys"></a>

Puoi visualizzare un elenco delle chiavi di accesso IDs per gli utenti nel tuo Account AWS. 

------
#### [ Console ]

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Scegli il nome utente per passare alla pagina dei dettagli dell'utente.

1. Se necessario, aggiungere la colonna **Access key ID (ID chiave di accesso)** alla tabella degli utenti mediante la procedura seguente:

   1. Sopra la tabella all'estrema destra, seleziona l'icona **Preferenze** (![\[Preferences icon\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/console-settings-icon.console.png)).

   1. Nella finestra di dialogo **Preferenze**, in **Seleziona colonne visibili**, attiva **ID della chiave di accesso**.

   1. Seleziona **Confirm** (Conferma) per tornare all'elenco degli utenti. L'elenco viene aggiornato in modo da includere l'ID della chiave di accesso.

1. La colonna **ID chiave di accesso** mostra lo stato di ogni chiave di accesso seguito dal relativo ID, ad esempio **`Active - AKIAIOSFODNN7EXAMPLE`** o **`Inactive - AKIAI44QH8DHBEXAMPLE`**. 

   Puoi utilizzare queste informazioni per visualizzare e copiare le chiavi di accesso IDs per gli utenti con una o due chiavi di accesso. Per gli utenti senza chiavi di accesso nella colonna è riportato **`-`**.
**Nota**  
La chiave di accesso segreta può essere recuperata solo al momento della creazione.

Ogni utente IAM può avere due chiavi di accesso.

------

## Per utilizzare l'ID di una chiave di accesso per trovare un utente
<a name="admin-find-user-access-keys"></a>

Puoi utilizzare un ID di chiave di accesso per trovare un utente nel tuo Account AWS. 

------
#### [ Console ]

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, nella casella di ricerca, inserisci il valore **ID chiave di accesso**, ad esempio AKIAI44QH8DHBEXAMPLE. 

1. L'utente IAM a cui è associato l'ID della chiave di accesso viene visualizzato nel riquadro di navigazione. Scegli il nome utente per passare alla pagina dei dettagli dell'utente.

------

## Per trovare l'uso più recente di un ID della chiave di accesso
<a name="admin-find-most-recent-use-access-keys"></a>

L'uso più recente di una chiave di accesso viene visualizzato nell'elenco degli utenti nella pagina degli utenti IAM, nella pagina dei dettagli dell'utente e fa parte del report sulle credenziali. 

------
#### [ Console ]

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nell'elenco degli utenti, consulta la colonna **Ultimo utilizzo chiave di accesso**.

   Se la colonna non è visualizzata, scegli l’icona **Preferenze** (![\[Preferences icon\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/console-settings-icon.console.png)) e in **Seleziona colonne visibili** attiva l’opzione **Chiave di accesso utilizzata per l’ultima volta** per visualizzare la colonna.

1. (Facoltativo) Nel riquadro di navigazione, in **Report di accesso**, seleziona **Report delle credenziali** per scaricare un report che include le informazioni sull'ultimo utilizzo della chiave di accesso per tutti gli utenti IAM del tuo account.

1. (Facoltativo) Seleziona l'utente IAM per visualizzare i dettagli dell'utente. La sezione **Riepilogo** include la chiave di accesso IDs, il relativo stato e l'ultima volta che sono state utilizzate.

------
#### [ AWS CLI ]

Esegui il comando seguente:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html)

------
#### [ API ]

Chiamare l'operazione seguente:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html) 

------

# Aggiornare le chiavi di accesso
<a name="id-credentials-access-keys-update"></a>

Come [best practice](best-practices.md#update-access-keys) di sicurezza, è consigliabile aggiornare le chiavi di accesso degli utenti IAM all'occorrenza, ad esempio quando un dipendente lascia l'azienda. Gli utenti IAM possono aggiornare le proprie chiavi di accesso se dispongono delle autorizzazioni necessarie.

Per informazioni dettagliate su come concedere agli utenti IAM le autorizzazioni per aggiornare le proprie chiavi di accesso, consulta la pagina [AWS: consente agli utenti IAM di gestire la propria password, le chiavi di accesso e le chiavi pubbliche SSH nella pagina Credenziali di sicurezza](reference_policies_examples_aws_my-sec-creds-self-manage-pass-accesskeys-ssh.md). Inoltre, è possibile applicare all'account una policy delle password per richiedere che tutti gli utenti IAM aggiornino periodicamente le loro password e con quale frequenza. Per ulteriori informazioni, consulta [Configurare una policy delle password di un account per gli utenti IAM](id_credentials_passwords_account-policy.md). 

**Nota**  
Se perdi la chiave di accesso segreta, è necessario eliminarla e crearne una nuova. La chiave di accesso segreta può essere recuperata solo al momento della creazione. Utilizza questa procedura per disattivare e quindi sostituire eventuali chiavi di accesso perse con nuove credenziali.

**Topics**
+ [Aggiornamento delle chiavi di accesso dell'utente IAM (console)](#rotating_access_keys_console)
+ [Aggiornamento delle chiavi di accesso (AWS CLI)](#rotating_access_keys_cli)
+ [Aggiornamento delle chiavi di accesso (AWS API)](#rotating_access_keys_api)

## Aggiornamento delle chiavi di accesso dell'utente IAM (console)
<a name="rotating_access_keys_console"></a>

È possibile aggiornare le chiavi di accesso dalla Console di gestione AWS.

**Per aggiornare le chiavi di accesso per un utente IAM senza interrompere le applicazioni (console)**

1. Mentre la prima chiave di accesso è ancora attiva, creare una seconda chiave di accesso.

   1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

   1. Nel pannello di navigazione, seleziona **Utenti**.

   1. Selezionare il nome dell'utente, quindi selezionare la scheda **Security credentials (Credenziali di sicurezza)**.

   1. Nella sezione **Chiavi di accesso**, scegliere **Crea chiave di accesso**. Sulla pagina **Access key best practices & alternatives** (Best practice e alternative per le chiavi di accesso), scegli **Other** (Altro), quindi scegli **Next** (Successivo).

   1. (Facoltativo) Imposta un valore del tag di descrizione per la chiave di accesso per aggiungere una coppia chiave-valore del tag a questo utente IAM. Ciò consente di identificare e aggiornare le chiavi di accesso in un secondo momento. La chiave di tag è impostata sull'ID della chiave di accesso. Il valore del tag è impostato sulla descrizione della chiave di accesso specificata. Al termine, scegli **Create access key** (Crea chiave di accesso).

   1. Nella pagina **Retrieve access keys** (Recupera chiavi di accesso), scegli **Show** (Mostra) per rivelare il valore della chiave di accesso segreta dell'utente o **Download .csv file** (Scarica il file .csv). Questa è la tua unica opportunità di salvare la chiave di accesso segreta. Dopo aver salvato la chiave di accesso segreta in una posizione sicura, scegli **Done** (Fatto).

      Quando crei una chiave di accesso per il tuo utente, la coppia di chiavi è attiva di default e può essere utilizzata immediatamente. A questo punto, l'utente dispone di due chiavi di accesso attive.

1. Aggiornare tutte le applicazioni e gli strumenti in modo che utilizzino la nuova chiave di accesso.

1. <a name="id_credentials_access-keys-key-still-in-use"></a>Determina se la prima chiave di accesso è ancora in uso consultando la colonna **Last used** (Ultimo utilizzo) della chiave di accesso più vecchia. Un approccio è aspettare diversi giorni e quindi verificare se la vecchia chiave di accesso sia stata utilizzata prima di procedere.

1. Anche se il valore della colonna **Last used** (Ultimo utilizzo) indica che la vecchia chiave non è mai stata utilizzata, è consigliabile non eliminare immediatamente la prima chiave di accesso. Al contrario, seleziona **Actions** (Azioni) e poi **Deactivate** (Disattiva) per disattivare la prima chiave di accesso.

1. Utilizzare solo la nuova chiave di accesso per verificare che le applicazioni funzionino. Tutte le applicazioni e gli strumenti che utilizzano ancora la chiave di accesso originale smetteranno di funzionare a questo punto perché non hanno più accesso alle AWS risorse. Se questo è il caso, puoi riattivare la prima chiave di accesso. Quindi, tornare a [Step 3](#id_credentials_access-keys-key-still-in-use) e aggiornare l'applicazione in modo che utilizzi la nuova chiave.

1. Dopo aver atteso un periodo di tempo per avere la certezza che tutte le applicazioni e gli strumenti siano stati aggiornati, è possibile eliminare la prima chiave di accesso:

   1. Accedi a Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

   1. Nel pannello di navigazione, seleziona **Utenti**.

   1. Selezionare il nome dell'utente, quindi selezionare la scheda **Security credentials (Credenziali di sicurezza)**.

   1. Nella sezione **Access keys** (Chiavi di accesso) individua la chiave di accesso che desideri eliminare, quindi scegli **Actions** (Operazioni) e poi **Delete** (Elimina). Segui le istruzioni nella finestra di dialogo prima per **disattivare** la chiave e poi per confermare l'eliminazione.

**Per determinare quali chiavi di accesso devono essere aggiornate o eliminate (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Se necessario, aggiungere la colonna **Access key age (Durata chiave di accesso)** alla tabella degli utenti mediante la procedura seguente:

   1. Sopra la tabella all'estrema destra, selezionare l'icona delle impostazioni (![\[Settings icon\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/console-settings-icon.console.png)).

   1. In **Manage columns (Gestisci colonne)** selezionare **Access key age (Durata chiave di accesso)**.

   1. Selezionare **Close (Chiudi)** per tornare all'elenco degli utenti.

1. La colonna **Access key age (Durata chiave di accesso)** mostra il numero di giorni trascorsi dalla creazione della più vecchia chiave di accesso attiva. È possibile utilizzare queste informazioni per trovare gli utenti per i quali potrebbe essere necessario aggiornare o eliminare le chiavi di accesso. La colonna visualizza **None (Nessuna)** per gli utenti senza chiavi di accesso.

## Aggiornamento delle chiavi di accesso (AWS CLI)
<a name="rotating_access_keys_cli"></a>

È possibile aggiornare le chiavi di accesso dalla AWS Command Line Interface.

**Per aggiornare le chiavi di accesso senza interrompere le applicazioni (AWS CLI)**

1. Mentre la prima chiave di accesso è ancora attiva, creare una seconda chiave di accesso, che è attiva per default. Esegui il comando seguente:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html)

     A questo punto, l'utente dispone di due chiavi di accesso attive.

1. <a name="step-update-apps"></a>Aggiornare tutte le applicazioni e gli strumenti in modo che utilizzino la nuova chiave di accesso.

1. <a name="step-determine-use"></a>Determinare se la prima chiave di accesso è ancora in uso utilizzando questo comando:
   +  [https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html)

   Un approccio è aspettare diversi giorni e quindi verificare se la vecchia chiave di accesso sia stata utilizzata prima di procedere.

1. Anche se la fase [Step 3](#step-determine-use) indica che la vecchia chiave non è stata utilizzata, è consigliabile non eliminare immediatamente la prima chiave di accesso. Al contrario, modificare lo stato della prima chiave di accesso in `Inactive` utilizzando questo comando:
   +  [https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html)

1. Utilizzare solo la nuova chiave di accesso per verificare che le applicazioni funzionino. Tutte le applicazioni e gli strumenti che utilizzano ancora la chiave di accesso originale smetteranno di funzionare a questo punto perché non hanno più accesso alle AWS risorse. Se questo è il caso, è possibile ripristinare lo stato `Active` per riattivare la prima chiave di accesso. Quindi, tornare alla fase [Step 2](#step-update-apps) e aggiornare l'applicazione in modo che utilizzi la nuova chiave.

1. Dopo aver atteso un periodo di tempo per avere la certezza che tutte le applicazioni e gli strumenti siano stati aggiornati, è possibile eliminare la prima chiave di accesso con questo comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html)

## Aggiornamento delle chiavi di accesso (AWS API)
<a name="rotating_access_keys_api"></a>

È possibile aggiornare le chiavi di accesso utilizzando l' AWS API.

**Per aggiornare le chiavi di accesso senza interrompere le applicazioni (AWS API)**

1. Mentre la prima chiave di accesso è ancora attiva, creare una seconda chiave di accesso, che è attiva per default. Chiamare l'operazione seguente:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html)

     A questo punto, l'utente dispone di due chiavi di accesso attive.

1. <a name="step-update-apps-2"></a>Aggiornare tutte le applicazioni e gli strumenti in modo che utilizzino la nuova chiave di accesso.

1. <a name="step-determine-use-2"></a>Determinare se la prima chiave di accesso è ancora in uso chiamando questa operazione:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html)

   Un approccio è aspettare diversi giorni e quindi verificare se la vecchia chiave di accesso sia stata utilizzata prima di procedere.

1. Anche se la fase [Step 3](#step-determine-use-2) indica che la vecchia chiave non è stata utilizzata, è consigliabile non eliminare immediatamente la prima chiave di accesso. Al contrario, modificare lo stato della prima chiave di accesso in `Inactive` chiamando questa operazione:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html)

1. Utilizzare solo la nuova chiave di accesso per verificare che le applicazioni funzionino. Tutte le applicazioni e gli strumenti che utilizzano ancora la chiave di accesso originale smetteranno di funzionare a questo punto perché non hanno più accesso alle AWS risorse. Se questo è il caso, è possibile ripristinare lo stato `Active` per riattivare la prima chiave di accesso. Quindi, tornare alla fase [Step 2](#step-update-apps-2) e aggiornare l'applicazione in modo che utilizzi la nuova chiave.

1. Dopo aver atteso un periodo di tempo per avere la certezza che tutte le applicazioni e gli strumenti siano stati aggiornati, è possibile eliminare la prima chiave di accesso chiamando questa operazione:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html)

# Proteggere le chiavi di accesso
<a name="securing_access-keys"></a>

Chiunque disponga delle tue chiavi di accesso ha lo stesso livello di accesso alle tue AWS risorse che hai tu. Di conseguenza, AWS fa di tutto per proteggere le vostre chiavi di accesso e, in linea con il nostro [modello di responsabilità condivisa](https://aws.amazon.com/compliance/shared-responsibility-model/), dovreste farlo anche voi. 

Espandi le seguenti sezioni per ulteriori informazioni su come proteggere le chiavi di accesso. 

**Nota**  
La tua organizzazione può avere policy e requisiti di sicurezza differenti rispetto a quelli descritti in questo argomento. I suggerimenti qui forniti sono destinati a essere linee guida generali. 

## Rimuovi (o non genera) le chiavi di accesso Utente root dell'account AWS
<a name="root-password"></a>

**Uno dei modi migliori per proteggere il tuo account è non disporre di chiavi di accesso dell' Utente root dell'account AWS.** A meno che non necessiti di disporre delle chiavi di accesso dell'utente root (il che è raro), è consigliabile non generarle. Crea invece un utente amministrativo AWS IAM Identity Center per le attività amministrative quotidiane. Per informazioni su come creare un utente amministrativo in IAM Identity Center, consulta la [Guida introduttiva](https://docs.aws.amazon.com//singlesignon/latest/userguide/getting-started.html) alla *IAM Identity Center* User Guide.

Se già disponi di chiavi di accesso dell'utente root per il tuo account, ti consigliamo di attenerti alle seguenti indicazioni: trova i punti nelle applicazioni in cui stai attualmente utilizzando le chiavi di accesso (se presenti) e sostituisci le chiavi di accesso dell'utente root con le chiavi di accesso dell'utente IAM. Quindi disabilita e rimuovi le chiavi di accesso dell'utente root. Per ulteriori informazioni sull'aggiornamento delle chiavi di accesso, consulta la pagina [Aggiornare le chiavi di accesso](id-credentials-access-keys-update.md)



## Utilizzo di credenziali di sicurezza temporanee (ruoli IAM) al posto delle chiavi di accesso a lungo termine
<a name="use-roles"></a>

In molti scenari, non è necessaria una chiave di accesso a lungo termine a validità illimitata (come accade invece per gli utenti IAM). Al contrario, è possibile creare ruoli IAM e generare credenziali di sicurezza temporanee. Tali credenziali sono composte dall'ID della chiave di accesso e dalla chiave di accesso segreta, ma includono anche un token di sicurezza che ne indica la scadenza. 

Le chiavi di accesso a lungo termine, ad esempio quelle associate a utenti IAM ed all'utente root, rimangono valide finché non vengono revocate manualmente. Tuttavia, le credenziali di sicurezza temporanee ottenute tramite i ruoli IAM e altre funzionalità di IAM AWS Security Token Service scadono dopo un breve periodo di tempo. Utilizza le credenziali di sicurezza temporanee per ridurre i rischi in caso di esposizione accidentale delle credenziali.

Utilizzare un ruolo IAM e le credenziali di sicurezza temporanee in questi scenari:
+ **Hai un'applicazione o AWS CLI degli script in esecuzione su un'istanza Amazon EC2.** Non utilizzare le chiavi di accesso direttamente nell'applicazione. Non passare le chiavi di accesso all'applicazione, incorporarle nell'applicazione o lasciare che l'applicazione legga una chiave da qualsiasi origine. Al contrario, definisci un ruolo IAM con le autorizzazioni appropriate per l'applicazione e avvia l'istanza Amazon Elastic Compute Cloud (Amazon EC2) con i [ruoli per EC2](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html). In questo modo viene associato un ruolo IAM all'istanza Amazon EC2. Questa pratica, inoltre, consente all'applicazione di ottenere credenziali di sicurezza temporanee, che a sua volta può utilizzare per effettuare chiamate a livello di programmazione ad AWS. The AWS SDKs and the AWS Command Line Interface (AWS CLI) può ottenere automaticamente credenziali temporanee dal ruolo. 
+ **Devi concedere l'accesso tra account.** Utilizzare un ruolo IAM per stabilire l'attendibilità tra gli account, quindi concedere agli utenti di un account autorizzazioni limitate per accedere all'account attendibile. Per ulteriori informazioni, consulta [Tutorial IAM: delega l'accesso tra AWS account utilizzando i ruoli IAM](tutorial_cross-account-with-roles.md).
+ **Hai a disposizione un'app mobile.** Non integrare le chiavi di accesso con l'app, anche nell'archiviazione crittografata. Al contrario, utilizzare [Amazon Cognito](https://aws.amazon.com/cognito/) per la gestione dell'identità degli utenti nell'applicazione. Questo servizio consente di autenticare gli utenti utilizzando Login with Amazon, Facebook, Google o qualsiasi provider di identità compatibile con OpenID Connect (OIDC). È quindi possibile utilizzare il provider di credenziali Amazon Cognito per gestire le credenziali che l'app usa per le richieste ad AWS.
+ **Vuoi unirti a SAML 2.0 AWS e la tua organizzazione supporta SAML 2.0.** Se si lavora per un'organizzazione che dispone di un provider di identità che supporta SAML 2.0, configurare il provider per l'utilizzo di SAML. Puoi utilizzare SAML per scambiare informazioni di autenticazione AWS e recuperare un set di credenziali di sicurezza temporanee. Per ulteriori informazioni, consulta [Federazione SAML 2.0](id_roles_providers_saml.md).
+ **Vuoi eseguire la federazione AWS e la tua organizzazione dispone di un archivio di identità locale.** Se gli utenti possono autenticarsi all'interno dell'organizzazione, è possibile scrivere un'applicazione in grado di emettere loro credenziali di sicurezza temporanee per l'accesso alle risorse. AWS Per ulteriori informazioni, consulta [Abilita l'accesso personalizzato del broker di identità alla AWS console](id_roles_providers_enable-console-custom-url.md).
+ **Utilizza le condizioni nelle policy IAM per consentire l’accesso solo dalle reti previste.** Puoi limitare dove e come vengono utilizzate le chiavi di accesso implementando [policy IAM con condizioni](reference_policies_elements_condition_operators.md) che specificano e consentano solo le reti previste, come gli indirizzi IP pubblici o i Virtual Private Clouds ()VPCs. In questo modo sai che le chiavi di accesso possono essere utilizzate solo da reti previste e accettabili. 

**Nota**  
Stai usando un'istanza Amazon EC2 con un'applicazione che richiede l'accesso programmatico alle risorse? AWS In tal caso, utilizza i [ruoli IAM per EC2](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html).

## Gestione corretta delle chiavi di accesso dell'utente IAM
<a name="iam-user-access-keys"></a>

Se devi creare chiavi di accesso per l'accesso programmatico AWS, creale per gli utenti IAM, concedendo agli utenti solo le autorizzazioni di cui hanno bisogno.

Osserva queste precauzioni per proteggere le chiavi di accesso degli utenti IAM:
+ **Non incorporare le chiavi di accesso direttamente nel codice.** Gli strumenti da [riga di AWS comando [AWS SDKs](https://aws.amazon.com/tools/#sdk)e gli strumenti](https://aws.amazon.com/tools/#cli) a riga di comando ti consentono di inserire le chiavi di accesso in posizioni note in modo da non doverle conservare nel codice. 

  Colloca le chiavi di accesso in una delle posizioni seguenti:
  + **Il file AWS delle credenziali.** L' AWS SDKs e utilizza AWS CLI automaticamente le credenziali archiviate nel file delle AWS credenziali. 

    Per informazioni sull'utilizzo del file delle AWS credenziali, consulta la documentazione del tuo SDK. *Gli esempi includono [Set AWS Credentials and Region nella AWS SDK per Java](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup-credentials.html) *Developer Guide e i [file di configurazione e credenziali](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) nella Guida* per l'utente.AWS Command Line Interface *

    Per memorizzare le credenziali per AWS SDK per .NET and the AWS Tools for Windows PowerShell, ti consigliamo di utilizzare SDK Store. Per ulteriori informazioni, consulta [Utilizzo dell'SDK Store](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/sdk-store.html) nella *Guida per gli sviluppatori di AWS SDK per .NET *.
  + **Variabili di ambiente.** In un sistema multi-tenant, scegli le variabili di ambiente dell'utente e non le variabili di ambiente del sistema. 

    Per ulteriori informazioni sull'utilizzo di variabili di ambiente per archiviare le credenziali, consultare la sezione [Variabili di ambiente](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html) nella *Guida per l'utente di AWS Command Line Interface *. 
+ **Utilizza chiavi di accesso diverse per applicazioni differenti.** Esegui questa operazione in modo da isolare le autorizzazioni e revocare le chiavi di accesso per le singole applicazioni in caso una di esse venga esposta. Avere chiavi di accesso separate per applicazioni diverse genera anche voci distinte nei file di log [AWS CloudTrail](https://aws.amazon.com/cloudtrail/). Questa configurazione consente di determinare più facilmente quale applicazione ha eseguito azioni specifiche. 
+ **Aggiorna le chiavi di accesso all'occorrenza.** Se esiste il rischio che la chiave di accesso possa essere compromessa, aggiorna la chiave di accesso ed elimina quella precedente. Per maggiori dettagli, consultare [Aggiornare le chiavi di accesso](id-credentials-access-keys-update.md). 
+ **Rimuovi le chiavi di accesso inutilizzate.** Se un utente lascia l'organizzazione, rimuovere l'utente IAM corrispondente in modo che non possa più accedere alle risorse. Per scoprire quando è stata utilizzata l'ultima volta una chiave di accesso, utilizza l'[https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html)API (AWS CLI comando: [https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html)).
+ **Utilizza le credenziali temporanee e configura l'autenticazione a più fattori (MFA) per le operazioni API più sensibili.** Con le policy IAM, è possibile specificare le operazioni API che un utente è autorizzato a chiamare. In alcuni casi, potresti richiedere la sicurezza aggiuntiva di richiedere l'autenticazione degli utenti con AWS MFA prima di consentire loro di eseguire azioni particolarmente sensibili. Potrebbe ad esempio esserci una policy che permette a un utente di eseguire le operazioni `RunInstances`, `DescribeInstances` e `StopInstances` di Amazon EC2. Ma potresti voler limitare un'azione distruttiva come `TerminateInstances` e assicurarti che gli utenti possano eseguire tale azione solo se si autenticano con un dispositivo AWS MFA. Per ulteriori informazioni, consulta [Accesso sicuro alle API con MFA](id_credentials_mfa_configure-api-require.md).

## Accedi all'app per dispositivi mobili utilizzando i tasti di accesso AWS
<a name="access-keys-mobile-app"></a>

Puoi accedere a un set limitato di AWS servizi e funzionalità utilizzando l'app AWS mobile. L'app mobile ti aiuta a supportare la risposta agli incidenti mentre sei in viaggio. Per ulteriori informazioni e per scaricare l'app, consulta [AWS Console Mobile Application](https://aws.amazon.com/console/mobile/).

È possibile accedere all'app per dispositivi mobili utilizzando la password della console o le chiavi di accesso. Come best practice, non utilizzare le chiavi di accesso dell'utente root. Ti consigliamo invece vivamente, oltre a utilizzare una password o un blocco biometrico sul tuo dispositivo mobile, di creare un utente IAM specifico per la gestione AWS delle risorse tramite l'app mobile. Se si perde il dispositivo mobile, è possibile rimuovere l'accesso dell'utente IAM.

**Accesso mediante le chiavi di accesso (app per dispositivi mobili)**

1. Apri l'app sul tuo dispositivo mobile.

1. Se questa è la prima volta che aggiungi un'identità al dispositivo, scegli **Add an identity (Aggiungi un'identità)** e scegli **Access keys (Chiavi di accesso)**.

   Se hai già effettuato l'accesso utilizzando un'altra identità, scegli l'icona del menu e scegli **Switch identity (Cambia identità)**. Quindi scegli **Sign in as a different identity (Accedi come identità diversa)** e quindi **Access keys (Chiavi di accesso)**.

1. Nella pagina **Access keys (Chiavi di accesso)** immetti le informazioni nei campi.
   + **ID chiave di accesso**: immettere l'ID chiave di accesso.
   + **Chiave di accesso segreta**: inserire la chiave di accesso segreta.
   + **Nome dell'identità**: immettere il nome dell'identità che verrà visualizzata nell'applicazione per dispositivi mobili. Non è necessario che corrisponda al nome utente IAM.
   + **PIN identità**: creare un PIN (Personal Identification Number) da utilizzare per gli accessi futuri.
**Nota**  
Se abiliti la biometria per l'app AWS mobile, ti verrà richiesto di utilizzare l'impronta digitale o il riconoscimento facciale per la verifica anziché il PIN. Se la biometria restituisce un errore, potrebbe venire richiesto il PIN.

1. Scegliere **Verify and add keys (Verifica e aggiungi chiavi)**.

   È ora possibile accedere a un set selezionato di risorse mediante l'app per dispositivi mobili.

## Informazioni correlate
<a name="more-resources"></a>

I seguenti argomenti forniscono indicazioni per la configurazione AWS SDKs e l'utilizzo dei tasti AWS CLI di accesso:
+ [Imposta AWS le credenziali e la regione](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup-credentials.html) nella Guida per gli *AWS SDK per Java sviluppatori*
+ [Utilizzo dell'SDK Store](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/sdk-store.html) nella *Guida per gli sviluppatori di AWS SDK per .NET *.
+ [Specifica delle credenziali all'SDK](https://docs.aws.amazon.com/aws-sdk-php/v2/guide/credentials.html) nella *Guida per gli sviluppatori di AWS SDK per PHP *.
+ [Configurazione](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#configuration) nella documentazione di Boto 3 (AWS SDK per Python)
+ [Utilizzo delle credenziali AWS](https://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html) nella *Guida per l'utente di AWS Tools for Windows PowerShell * 
+ [File di configurazione e delle credenziali](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) nella *Guida per l'utente di AWS Command Line Interface *. 
+ [Concessione dell'accesso utilizzando un ruolo IAM](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-hosm.html) nella *Guida per gli sviluppatori di AWS SDK per .NET *
+ [Configurazione dei ruoli IAM per Amazon EC2](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java-dg-roles.html) nell'*AWS SDK for Java 2.x*

## Utilizzo delle chiavi di accesso e delle credenziali segrete per l’accesso alla console
<a name="console-access-security-keys"></a>

È possibile utilizzare la chiave di accesso e le credenziali della chiave segreta per l’accesso diretto alla Console di gestione AWS , non solo la AWS CLI. Ciò può essere ottenuto utilizzando la AWS STS [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html)chiamata API. Creando un URL della console utilizzando le credenziali e il token temporanei forniti da `GetFederationToken`, i principali IAM possono accedere alla console. Per ulteriori informazioni, consulta [Abilita l'accesso personalizzato del broker di identità alla AWS console](id_roles_providers_enable-console-custom-url.md).

È bene chiarire che quando si accede alla console direttamente utilizzando credenziali utente IAM o root con MFA abilitata, sarà richiesta l’MFA. Tuttavia, se si utilizza il metodo sopra descritto (utilizzando credenziali temporanee con `GetFederationToken`), l’MFA NON sarà richiesta.



## Audit delle chiavi di accesso
<a name="Using_access-keys-audit"></a>

Puoi esaminare le chiavi di AWS accesso contenute nel codice per determinare se provengono da un account di tua proprietà. Puoi passare l'ID di una chiave di accesso utilizzando il [https://docs.aws.amazon.com/cli/latest/reference/sts/get-access-key-info.html](https://docs.aws.amazon.com/cli/latest/reference/sts/get-access-key-info.html) AWS CLI comando o l'operazione [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetAccessKeyInfo.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetAccessKeyInfo.html) AWS API.

Le operazioni AWS CLI and AWS API restituiscono l'ID Account AWS a cui appartiene la chiave di accesso. Le chiavi di accesso che IDs iniziano con `AKIA` sono credenziali a lungo termine per un utente IAM o un Utente root dell'account AWS. Le chiavi di accesso che IDs iniziano con `ASIA` sono credenziali temporanee create utilizzando AWS STS le operazioni. Se l'account nella risposta appartiene a te, puoi effettuare l'accesso come utente root e rivedere le chiavi di accesso dell'utente root. Quindi, puoi estrarre un [report delle credenziali](id_credentials_getting-report.md) per scoprire quale utente IAM possiede le chiavi. Per sapere chi ha richiesto le credenziali temporanee per una chiave di `ASIA` accesso, visualizza gli AWS STS eventi nei tuoi CloudTrail registri.

Per motivi di sicurezza, puoi [esaminare AWS CloudTrail i log](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds) per scoprire chi ha eseguito un'azione in. AWSÈ possibile utilizzare la chiave di condizione `sts:SourceIdentity` nella policy di attendibilità del ruolo per richiedere agli utenti di specificare un'identità quando assumono un ruolo. Ad esempio, è possibile richiedere che gli utenti IAM specifichino il proprio nome utente come identità di origine. In questo modo è possibile determinare quale utente ha eseguito un'operazione specifica in AWS. Per ulteriori informazioni, consulta [`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity).

Questa operazione non indica lo stato della chiave di accesso. La chiave potrebbe essere attiva, inattiva o eliminata. Le chiavi attive potrebbero non disporre delle autorizzazioni per eseguire un'operazione. Fornire una chiave di accesso eliminata potrebbe restituire un errore indicante che la chiave non esiste.

# AWS Autenticazione a più fattori in IAM
<a name="id_credentials_mfa"></a>

Per una maggiore sicurezza, ti consigliamo di configurare l'autenticazione a più fattori (MFA) per proteggere AWS le tue risorse. Puoi abilitare l'MFA per tutti Account AWS, inclusi gli account autonomi, gli account Utente root dell'account AWS di gestione e gli account dei membri, nonché per i tuoi utenti IAM. Ti consigliamo di utilizzare MFA resistenti al phishing, come passkey e chiavi di sicurezza, ogni volta che è possibile. Questi autenticatori basati su FIDO utilizzano la crittografia a chiave pubblica e resistono agli attacchi di phishing e replay man-in-the-middle, offrendo un livello di sicurezza più elevato rispetto alle opzioni basate su TOTP.

L’MFA viene applicata a tutti i tipi di account per il relativo utente root. Per ulteriori informazioni, consulta [Proteggi le AWS Organizations credenziali utente root del tuo account](root-user-best-practices.md#ru-bp-organizations). 

Quando abiliti MFA per l'utente root, questa impostazione influisce solo sulle credenziali dell'utente root. Gli utenti IAM nell'account sono identità distinte con proprie credenziali e ogni identità ha la propria configurazione MFA. Per ulteriori informazioni sull’utilizzo dell’MFA per proteggere l’utente root, consulta [Autenticazione a più fattori per Utente root dell'account AWS](enable-mfa-for-root.md).

I tuoi utenti Utente root dell'account AWS e IAM possono registrare fino a otto dispositivi MFA di qualsiasi tipo. La registrazione di più dispositivi MFA può offrire flessibilità e contribuire a ridurre il rischio di interruzione dell'accesso in caso di smarrimento o guasto di un dispositivo. È necessario un solo dispositivo MFA per accedere alla Console di gestione AWS o creare una sessione tramite la AWS CLI.

**Nota**  
Ti consigliamo di richiedere agli utenti umani di utilizzare credenziali temporanee per l'accesso. AWS Hai preso in considerazione l'utilizzo AWS IAM Identity Center? Puoi utilizzare IAM Identity Center per gestire centralmente l'accesso a più account Account AWS e fornire agli utenti un accesso Single Sign-On protetto da MFA a tutti gli account assegnati da un'unica posizione. Con IAM Identity Center puoi creare e gestire le identità degli utenti in IAM Identity Center o connetterti facilmente al tuo attuale gestore dell'identità digitale (IdP) compatibile con SAML 2.0. Per ulteriori informazioni, consulta [Cos'è IAM Identity Center?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) nella *Guida per l'utente di AWS IAM Identity Center *.

La MFA aggiunge una maggiore sicurezza che richiede agli utenti di fornire un'autenticazione unica da un meccanismo AWS MFA supportato oltre alle credenziali di accesso quando accedono a siti Web o servizi. AWS 

## Tipi di MFA
<a name="id_credentials_mfa-types"></a>

AWS supporta i seguenti tipi di MFA:

**Contents**
+ [Passkey e chiavi di sicurezza](#passkeys-security-keys-for-iam-users)
+ [Applicazioni di autenticazione virtuale](#virtual-auth-apps-for-iam-users)
+ [Token TOTP hardware](#hardware-totp-token-for-iam-users)

### Passkey e chiavi di sicurezza
<a name="passkeys-security-keys-for-iam-users"></a>

AWS Identity and Access Management supporta passkey e chiavi di sicurezza per MFA. In base agli standard FIDO, le passkey utilizzano la crittografia a chiave pubblica per fornire un'autenticazione forte e resistente al phishing, più sicura delle password. AWS supporta due tipi di passkey: passkey legate al dispositivo (chiavi di sicurezza) e passkey sincronizzate.
+ **Chiavi di sicurezza**: si tratta di dispositivi fisici, come un YubiKey, utilizzati come secondo fattore di autenticazione. Una singola chiave di sicurezza può supportare più account utente root e utenti IAM.
+ **Passkey sincronizzate**: come secondo fattore utilizzano gestori di credenziali di provider come Google, Apple, account Microsoft e servizi di terze parti come 1Password, Dashlane e Bitwarden come secondo fattore.

Puoi utilizzare gli autenticatori biometrici integrati, come Touch ID su Apple MacBooks, per sbloccare il gestore delle credenziali e accedere a. AWS Le passkey vengono create con il provider scelto utilizzando l'impronta digitale, il viso o il PIN del dispositivo. Puoi anche utilizzare una passkey di autenticazione tra dispositivi (CDA) da un dispositivo, ad esempio un dispositivo mobile o una chiave di sicurezza hardware, per accedere su un altro dispositivo, ad esempio un laptop. Per ulteriori informazioni, consulta [Cross-device authentication (CDA)](https://passkeys.dev/docs/reference/terms/#cross-device-authentication-cda).

Puoi sincronizzare le passkey tra i tuoi dispositivi per facilitare gli accessi e migliorare l'usabilità e la recuperabilità. AWS Per ulteriori informazioni sull'abilitazione delle passkey e delle chiavi di sicurezza, consulta [Abilitare una passkey o una chiave di sicurezza per l'utente root (console)](enable-fido-mfa-for-root.md).

FIDO Alliance mantiene un elenco di tutti i [prodotti certificati FIDO](https://fidoalliance.org/certification/fido-certified-products/) compatibili con le specifiche FIDO.

### Applicazioni di autenticazione virtuale
<a name="virtual-auth-apps-for-iam-users"></a>

Un'applicazione di autenticazione virtuale che viene eseguita su un telefono o altro dispositivo e simula un dispositivo fisico. Le app di autenticazione virtuale implementano l'algoritmo TOTP ([password monouso](https://datatracker.ietf.org/doc/html/rfc6238)) e supportano più token su un singolo dispositivo. L'utente deve immettere un codice valido dal dispositivo quando richiesto durante la procedura di accesso. Ogni token assegnato a un utente deve essere univoco. Per autenticarsi, un utente non può digitare un codice dal token di un altro utente.

Ti consigliamo di utilizzare MFA resistenti al phishing [come passkey o chiavi di sicurezza](#passkeys-security-keys-for-iam-users) per la massima protezione. Se non sei ancora in grado di utilizzare le passkey o le chiavi di sicurezza, ti consigliamo di utilizzare un dispositivo MFA virtuale come misura provvisoria in attesa dell'approvazione dell'acquisto dell'hardware o mentre aspetti che arrivi l'hardware. Per un elenco di alcune delle app supportate che puoi utilizzare come dispositivi MFA virtuali, consulta la pagina [Autenticazione a più fattori (MFA)](https://aws.amazon.com/iam/features/mfa/?audit=2019q1).

Per istruzioni sulla configurazione di un dispositivo MFA virtuale per un utente IAM, consulta [Assegna un dispositivo MFA virtuale nel Console di gestione AWS](id_credentials_mfa_enable_virtual.md).

**Nota**  
I dispositivi MFA virtuali non assegnati vengono eliminati quando aggiungi nuovi dispositivi MFA virtuali tramite o durante Console di gestione AWS la procedura di accesso. Account AWS I dispositivi MFA virtuali non assegnati sono dispositivi presenti nell’account ma non utilizzati dall’utente root dell’account o dagli utenti IAM per il processo di accesso. Vengono eliminati in modo da poter aggiungere nuovi dispositivi MFA virtuali al tuo account. Questo consente anche di riutilizzare i nomi dei dispositivi.  
Per visualizzare i dispositivi MFA virtuali non assegnati nel tuo account, puoi utilizzare [list-virtual-mfa-devices](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-virtual-mfa-devices.html) AWS CLI il comando [o](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListVirtualMFADevices.html) la chiamata API.
Per disattivare un dispositivo MFA virtuale, puoi utilizzare [deactivate-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/deactivate-mfa-device.html) AWS CLI il comando [o](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html) la chiamata API. Verrà annullata l’assegnazione del dispositivo.
Per collegare un dispositivo MFA virtuale non assegnato all' Account AWS utente root o agli utenti IAM, è necessario il codice di autenticazione generato dal dispositivo insieme al comando [o [enable-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/enable-mfa-device.html)AWS CLI](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html)alla chiamata API.

### Token TOTP hardware
<a name="hardware-totp-token-for-iam-users"></a>

Un dispositivo hardware che genera un codice numerico a sei cifre basato sull'algoritmo con [password monouso](https://datatracker.ietf.org/doc/html/rfc6238). L'utente deve immettere un codice valido dal dispositivo su una seconda pagina Web durante la procedura di accesso.

Questi token vengono utilizzati esclusivamente con. Account AWS Puoi utilizzare solo token con i loro token seed unici condivisi in modo sicuro. AWS I token seed sono chiavi segrete generate al momento della produzione dei token. I token acquistati da altre origini non funzioneranno con IAM. Per garantire la compatibilità, è necessario acquistare il dispositivo hardware MFA da uno dei seguenti link: [token OTP](https://www.amazon.com/SafeNet-IDProve-Time-based-6-Digit-Services/dp/B002CRN5X8) o [scheda video OTP](https://www.amazon.com/SafeNet-IDProve-Card-Amazon-Services/dp/B00J4NGUO4).
+ Ogni dispositivo MFA assegnato a un utente deve essere univoco. Per essere autenticati, gli utenti non possono digitare un codice generato dal dispositivo di un altro utente. Per informazioni sui dispositivi MFA hardware supportati, consulta [Autenticazione a più fattori (MFA)](https://aws.amazon.com/iam/features/mfa/?audit=2019q1).
+ Se desideri utilizzare un dispositivo MFA fisico, ti consigliamo di utilizzare le chiavi di sicurezza come alternativa ai dispositivi TOTP hardware. Le chiavi di sicurezza non richiedono batterie, sono resistenti al phishing e supportano più utenti su un singolo dispositivo.

Puoi abilitare una passkey o una chiave di sicurezza Console di gestione AWS solo dall'API, non dall' AWS CLI API. AWS Prima di abilitare una chiave di sicurezza, è necessario disporre di un accesso fisico al dispositivo.

Per le istruzioni di configurazione di un token TOTP hardware per un utente IAM, consulta [Assegna un token TOTP hardware nel Console di gestione AWS](id_credentials_mfa_enable_physical.md).

**Nota**  
**MFA basata su SMS** AWS : supporto terminato per l'abilitazione dell'autenticazione a più fattori (MFA) tramite SMS. Consigliamo ai clienti con utenti IAM che utilizzano la MFA basata su SMS di passare a uno dei seguenti metodi alternativi di autenticazione a più fattori: [passkey o chiave di sicurezza](id_credentials_mfa_enable_fido.md), [dispositivo MFA virtuale (basato su software)](id_credentials_mfa_enable_virtual.md) o [dispositivo MFA basato su hardware](id_credentials_mfa_enable_physical.md). Puoi identificare gli utenti nel tuo account con un dispositivo MFA SMS assegnato. Nella console IAM, seleziona **Utenti** dal pannello di navigazione e cerca gli utenti con l'opzione **SMS** nella colonna **MFA** della tabella.

## Suggerimenti per MFA
<a name="id_credentials_mfa-recommendations"></a>

Per proteggere le tue AWS identità, segui questi consigli per l'autenticazione MFA. 
+ Ti consigliamo di utilizzare MFA resistenti al phishing, [come passkey e chiavi di sicurezza, come](#passkeys-security-keys-for-iam-users) dispositivo MFA. Questi autenticatori basati su FIDO offrono la protezione più efficace contro attacchi come il phishing.
+ Ti consigliamo di abilitare più dispositivi MFA per gli utenti IAM del Utente root dell'account AWS tuo. Account AWS In questo modo puoi alzare il livello di sicurezza del tuo sistema Account AWS e semplificare la gestione dell'accesso a utenti con privilegi elevati, come. Utente root dell'account AWS
+ Puoi registrare fino a **otto** dispositivi MFA di qualsiasi combinazione dei [tipi di MFA attualmente supportati](https://aws.amazon.com/iam/features/mfa/) con i tuoi Utente root dell'account AWS utenti e IAM. Con più dispositivi MFA, è sufficiente un solo dispositivo MFA per accedere Console di gestione AWS o creare una sessione tramite l' AWS CLI as quell'utente. Per abilitare o disabilitare un dispositivo MFA aggiuntivo, un utente IAM deve prima autenticarsi con un dispositivo MFA esistente.
+ In caso di smarrimento, furto o inaccessibilità di un dispositivo MFA, è possibile utilizzare uno dei dispositivi MFA rimanenti per accedervi senza eseguire la Account AWS procedura di ripristino. Account AWS In caso di smarrimento o furto di un dispositivo MFA, consigliamo di dissociare il dispositivo dal principale IAM a cui era associato.
+ L'uso di più dispositivi MFAs consente ai dipendenti che si trovano in località geograficamente disperse o che lavorano in remoto di utilizzare l'MFA basata su hardware per accedere AWS senza dover coordinare lo scambio fisico di un singolo dispositivo hardware tra i dipendenti.
+ L'uso di dispositivi MFA aggiuntivi per i principali IAM consente di utilizzarne uno o più MFAs per l'uso quotidiano, mantenendo allo stesso tempo i dispositivi MFA fisici in un luogo fisico sicuro come un deposito o sicuro per il backup e la ridondanza.

**Note**  
Non è possibile passare le informazioni MFA per una chiave di sicurezza o una passkey alle operazioni AWS STS API per richiedere credenziali temporanee. È possibile ottenere credenziali da utilizzare con AWS CLI e AWS SDKs quando si utilizza una chiave di sicurezza o una passkey eseguendo il comando. `aws login`
Non è possibile utilizzare AWS CLI comandi o operazioni AWS API per abilitare le chiavi di sicurezza [FIDO](id_credentials_mfa_enable_fido.md).
Non puoi utilizzare lo stesso nome per più di un utente root o dispositivo MFA IAM.

## Risorse aggiuntive
<a name="id_credentials_mfa-resources"></a>

Le seguenti risorse possono rivelarsi utili per saperne di più sull’MFA.
+ Per ulteriori informazioni sull'utilizzo della tecnologia MFA per l'accesso AWS, vedere. [Accesso abilitato con MFA](console_sign-in-mfa.md)
+  Puoi sfruttare IAM Identity Center per abilitare l'accesso MFA sicuro al AWS tuo portale di accesso, alle app integrate di IAM Identity Center e al. AWS CLI Per ulteriori informazioni, consulta [Abilitare l'MFA nel Centro identità IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/mfa-getting-started.html).

# Assegna una passkey o una chiave di sicurezza nel Console di gestione AWS
<a name="id_credentials_mfa_enable_fido"></a>

Le passkey sono un tipo di [dispositivo di autenticazione a più fattori (MFA)](id_credentials_mfa.md) che puoi utilizzare per proteggere le tue risorse. AWS AWS supporta passkey sincronizzate e passkey legate al dispositivo, note anche come chiavi di sicurezza. 

Le passkey sincronizzate consentono agli utenti IAM di accedere alle proprie credenziali di accesso FIDO su molti dei loro dispositivi, anche su quelli nuovi, senza dover registrare nuovamente tutti i dispositivi su ogni account. Le passkey sincronizzate includono gestori di credenziali proprietari come Google, Apple e Microsoft e gestori di credenziali di terze parti come 1Password, Dashlane e Bitwarden come secondo fattore. Puoi anche utilizzare la biometria sul dispositivo (ad esempio, TouchID, FaceID) per sbloccare il gestore di credenziali scelto per utilizzare le passkey. 

In alternativa, le passkey collegate al dispositivo sono associate a una chiave di sicurezza FIDO da collegare a una porta USB del computer e quindi toccare quando richiesto per completare in modo sicuro la procedura di accesso. Se utilizzi già una chiave di sicurezza FIDO con altri servizi e questa ha una [configurazione AWS supportata](id_credentials_mfa_fido_supported_configurations.md) (ad esempio, la serie YubiKey 5 di Yubico), puoi utilizzarla anche con. AWS Altrimenti, è necessario acquistare una chiave di sicurezza FIDO se si desidera utilizzarla WebAuthn per l' AWS MFA in. Inoltre, le chiavi di sicurezza FIDO possono supportare più utenti IAM o root sullo stesso dispositivo, migliorandone l'utilità per la sicurezza degli account. Per specifiche e informazioni sull'acquisto per entrambi i tipi di dispositivo, consulta [Multi-Factor Authentication](https://aws.amazon.com/iam/details/mfa/).

Puoi registrare fino a **otto** dispositivi MFA di qualsiasi combinazione dei [tipi di MFA attualmente supportati](https://aws.amazon.com/iam/features/mfa/) con i tuoi Utente root dell'account AWS utenti e IAM. Con più dispositivi MFA, è sufficiente un solo dispositivo MFA per accedere Console di gestione AWS o creare una sessione tramite l' AWS CLI as quell'utente. Consigliamo di registrare più dispositivi MFA. Ad esempio, è possibile registrare un autenticatore integrato e anche una chiave di sicurezza da conservare in un luogo fisicamente sicuro. Se è impossibile utilizzare l'autenticatore integrato, si può utilizzare la chiave di sicurezza registrata. Per le applicazioni di autenticazione, consigliamo inoltre di abilitare le funzionalità di backup o sincronizzazione su cloud in tali app per evitare di perdere l'accesso all'account in caso di smarrimento o guasto del dispositivo che dispone delle app di autenticazione.

**Nota**  
Consigliamo di richiedere agli utenti di utilizzare credenziali temporanee per l'accesso a AWS. I tuoi utenti possono unirsi AWS a un provider di identità dove si autenticano con le credenziali aziendali e le configurazioni MFA. Per gestire l'accesso AWS e le applicazioni aziendali, ti consigliamo di utilizzare IAM Identity Center. Per ulteriori informazioni, consulta la [Guida per l'utente del Centro identità IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html). 

**Topics**
+ [Autorizzazioni richieste](#enable-fido-mfa-for-iam-user-permissions-required)
+ [Abilitare una passkey o una chiave di sicurezza per il proprio utente IAM (console)](#enable-fido-mfa-for-own-iam-user)
+ [Abilitare una passkey o una chiave di sicurezza per un altro utente IAM (console)](#enable-fido-mfa-for-iam-user)
+ [Sostituire una passkey o una chiave di sicurezza](#replace-fido-mfa)
+ [Configurazioni supportate per l'uso delle passkey e delle chiavi di sicurezza](id_credentials_mfa_fido_supported_configurations.md)

## Autorizzazioni richieste
<a name="enable-fido-mfa-for-iam-user-permissions-required"></a>

Per gestire una passkey FIDO per il proprio utente IAM proteggendo le operazioni sensibili correlate all'MFA, devi disporre delle autorizzazioni concesse dalla policy seguente:

**Nota**  
I valori dell'ARN sono valori statici e non sono un indicatore del protocollo utilizzato per registrare l'autenticatore. U2F è obsoleto, quindi tutte le nuove implementazioni lo utilizzano. WebAuthn

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowManageOwnUserMFA",
            "Effect": "Allow",
            "Action": [
                "iam:DeactivateMFADevice",
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "DenyAllExceptListedIfNoMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}
```

------

## Abilitare una passkey o una chiave di sicurezza per il proprio utente IAM (console)
<a name="enable-fido-mfa-for-own-iam-user"></a>

Puoi abilitare una passkey o una chiave di sicurezza per il tuo utente IAM Console di gestione AWS solo dall'API o, non dall'API. AWS CLI AWS Prima di abilitare una chiave di sicurezza, è necessario disporre di un accesso fisico al dispositivo.

**Per abilitare una passkey o una chiave di sicurezza per il proprio utente IAM (console)**

1. Usa l' AWS ID o l'alias dell'account, il nome utente IAM e la password per accedere alla console [IAM](https://console.aws.amazon.com/iam).
**Nota**  
Per comodità, la pagina di AWS accesso utilizza un cookie del browser per ricordare il nome utente IAM e le informazioni sull'account. Se in precedenza è stato eseguito l'accesso con un utente diverso, scegli il link **Accedi a un account differente** nella parte inferiore della pagina per ritornare alla pagina principale di accesso. Da lì, puoi digitare l'ID o l'alias dell'account per essere reindirizzato alla pagina di accesso utente IAM relativa al tuo AWS account.

   Per ottenere il tuo Account AWS ID, contatta l'amministratore.

1. Seleziona il nome utente in alto a destra nella barra di navigazione e scegli **Security credentials** (Credenziali di sicurezza).   
![\[Console di gestione AWS Link alle credenziali di sicurezza\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. Nella pagina dell'utente IAM selezionato, scegli la scheda **Credenziali di sicurezza**.

1. Nella sezione **Autenticazione a più fattori (MFA)**, scegliere **Assegna dispositivo MFA**.

1. Nella pagina **Nome del dispositivo MFA**, inserisci un **nome per il dispositivo**, scegli **Passkey o chiave di sicurezza**, quindi scegli **Avanti**.

1. In **Configura dispositivo**, configura la tua passkey. Crea una passkey con dati biometrici come il viso o l'impronta digitale, con un pin del dispositivo oppure inserendo la chiave di sicurezza FIDO nella porta USB del computer e toccandola.

1. Segui le istruzioni sul tuo browser e poi scegli **Continua**.

Ora hai registrato la tua passkey o la chiave di sicurezza per utilizzarla con. AWS Per informazioni sull'utilizzo della tecnologia MFA con Console di gestione AWS, vedere. [Accesso abilitato con MFA](console_sign-in-mfa.md) 

## Abilitare una passkey o una chiave di sicurezza per un altro utente IAM (console)
<a name="enable-fido-mfa-for-iam-user"></a>

Puoi abilitare una passkey o una sicurezza per un altro utente IAM Console di gestione AWS solo dall'API AWS CLI o AWS , non dall'API.

**Per abilitare una passkey o una chiave di sicurezza per un altro utente IAM (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, seleziona **Utenti**.

1. In **Utenti**, scegli il nome dell'utente per il quale desideri abilitare l'MFA.

1. Nella pagina dell'utente IAM selezionato, scegli la scheda **Credenziali di sicurezza**. 

1. Nella sezione **Autenticazione a più fattori (MFA)**, scegliere **Assegna dispositivo MFA**.

1. Nella pagina **Nome del dispositivo MFA**, inserisci un **nome per il dispositivo**, scegli **Passkey o chiave di sicurezza**, quindi scegli **Avanti**.

1. In **Configura dispositivo**, configura la tua passkey. Crea una passkey con dati biometrici come il viso o l'impronta digitale, con un pin del dispositivo oppure inserendo la chiave di sicurezza FIDO nella porta USB del computer e toccandola.

1. Segui le istruzioni sul tuo browser e poi scegli **Continua**.

Ora hai registrato una passkey o una chiave di sicurezza per un altro utente IAM da utilizzare con AWS. Per informazioni sull'utilizzo della tecnologia MFA con Console di gestione AWS, vedere. [Accesso abilitato con MFA](console_sign-in-mfa.md)

## Sostituire una passkey o una chiave di sicurezza
<a name="replace-fido-mfa"></a>

Puoi avere fino a otto dispositivi MFA di qualsiasi combinazione dei [tipi di MFA attualmente supportati](https://aws.amazon.com/iam/features/mfa/) assegnati a un utente alla volta con i tuoi Utente root dell'account AWS utenti e IAM. Se l'utente dovesse perdere l'autenticatore FIDO o in caso di sostituzione, dovrai prima disattivare il vecchio autenticatore FIDO. e quindi aggiungere un nuovo dispositivo MFA.
+ Per disattivare il dispositivo correntemente associato a un utente IAM, consulta [Disattivare un dispositivo MFA](id_credentials_mfa_disable.md).
+ Per aggiungere una nuova chiave di sicurezza FIDO per un utente IAM, consulta la sezione [Abilitare una passkey o una chiave di sicurezza per il proprio utente IAM (console)](#enable-fido-mfa-for-own-iam-user).

Se non hai accesso a una nuova passkey o a una chiave di sicurezza, puoi abilitare un nuovo dispositivo MFA virtuale o un token TOTP hardware. Per istruzioni, consulta uno dei seguenti articoli:
+ [Assegna un dispositivo MFA virtuale nel Console di gestione AWS](id_credentials_mfa_enable_virtual.md) 
+ [Assegna un token TOTP hardware nel Console di gestione AWS](id_credentials_mfa_enable_physical.md) 

# Configurazioni supportate per l'uso delle passkey e delle chiavi di sicurezza
<a name="id_credentials_mfa_fido_supported_configurations"></a>

Puoi utilizzare passkey FIDO2 legate al dispositivo, note anche come chiavi di sicurezza, come metodo di autenticazione a più fattori (MFA) con IAM utilizzando le configurazioni attualmente supportate. Questi includono i FIDO2 dispositivi supportati da IAM e i browser che lo supportano. FIDO2 Prima di registrare il FIDO2 dispositivo, verifica di utilizzare la versione più recente del browser e del sistema operativo (OS). Le funzionalità possono comportarsi in modo diverso tra browser, autenticatori e client del sistema operativo. Se la registrazione del dispositivo non riesce su un browser, puoi provare a registrarti con un altro browser. 

FIDO2 è uno standard di autenticazione aperto e un'estensione di FIDO U2F, che offre lo stesso elevato livello di sicurezza basato sulla crittografia a chiave pubblica. FIDO2 è costituito dalla specifica di autenticazione Web (WebAuthn API) del W3C e dal FIDO Alliance Client-to-Authenticator Protocol (CTAP), un protocollo a livello di applicazione. CTAP consente la comunicazione tra client o piattaforma, come un browser o un sistema operativo, con un autenticatore esterno. Quando abiliti un autenticatore certificato FIDO AWS, la chiave di sicurezza crea una nuova coppia di chiavi da utilizzare solo con. AWS In primo luogo, è necessario immettere le credenziali. Quando richiesto, tocca la chiave di sicurezza, che risponde alla richiesta di autenticazione emessa da AWS. [Per saperne di più sullo FIDO2 standard, consulta il Progetto. FIDO2](https://en.wikipedia.org/wiki/FIDO2_Project)

## FIDO2 dispositivi supportati da AWS
<a name="id_credentials_mfa_fido_supported_devices"></a>

IAM supporta i dispositivi di FIDO2 sicurezza che si connettono ai tuoi dispositivi tramite USB o NFC. Bluetooth IAM supporta anche gli autenticatori di piattaforma come TouchID o FaceID. IAM non supporta la registrazione locale delle passkey per Windows Hello. Per creare e utilizzare le passkey, gli utenti Windows devono utilizzare l'[autenticazione tra dispositivi](https://passkeys.dev/docs/reference/terms/#cross-device-authentication-cda), che prevede l'utilizzo di una passkey di un dispositivo, ad esempio un dispositivo mobile, o di una chiave di sicurezza hardware per accedere su un altro dispositivo, ad esempio un laptop.

**Nota**  
AWS richiede l'accesso alla porta USB fisica del computer per verificare il FIDO2 dispositivo. Le chiavi di sicurezza non funzioneranno con una macchina virtuale, una connessione remota o la modalità in incognito di un browser.

FIDO Alliance mantiene un elenco di tutti i [FIDO2prodotti](https://fidoalliance.org/certification/fido-certified-products/) compatibili con le specifiche FIDO.

## Browser che supportano FIDO2
<a name="id_credentials_mfa_fido_browsers"></a>

La disponibilità dei dispositivi di FIDO2 sicurezza che funzionano in un browser Web dipende dalla combinazione di browser e sistema operativo. Al momento i seguenti browser supportano l'uso delle chiavi di sicurezza:


****  

| Browser | macOS 10.15\$1 | Windows 10 | Linux | iOS 14.5\$1 | Android 7\$1 | 
| --- | --- | --- | --- | --- | --- | 
| Chrome | Sì  | Sì | Sì | Sì | No | 
| Safari | Sì | No | No | Sì | No | 
| Edge | Sì | Sì | No | Sì | No | 
| Firefox | Sì  | Sì | No | Sì | No | 

**Nota**  
La maggior parte delle versioni di Firefox attualmente FIDO2 supportate non abilitano il supporto per impostazione predefinita. Per istruzioni su come abilitare FIDO2 il supporto in Firefox, consulta[Risoluzione dei problemi relativi alle passkey e alle chiavi di sicurezza FIDO](troubleshoot_mfa-fido.md).  
Firefox su macOS potrebbe non supportare completamente i flussi di lavoro di autenticazione tra dispositivi per le passkey. È possibile che venga richiesto di toccare una chiave di sicurezza invece di procedere con l'autenticazione tra dispositivi. Per accedere con passkey su macOS, consigliamo di utilizzare un browser diverso, come Chrome o Safari.

Per ulteriori informazioni sul supporto dei browser per un dispositivo FIDO2 certificato, ad esempio YubiKey, vedi [Supporto del sistema operativo e del browser web per FIDO2 U2F](https://support.yubico.com/hc/en-us/articles/360016615020-Operating-system-and-web-browser-support-for-FIDO2-and-U2F).

### Plug-in del browser
<a name="id_credentials_mfa_fido_plugins"></a>

AWS supporta solo i browser che supportano nativamente. FIDO2 AWS non supporta l'utilizzo di plugin per aggiungere il supporto al FIDO2 browser. Alcuni plugin del browser sono incompatibili con lo FIDO2 standard e possono causare risultati imprevisti con FIDO2 le chiavi di sicurezza. 

Per informazioni su come disabilitare i plug-in del browser e altri suggerimenti per la risoluzione dei problemi, consulta [Non riesco ad abilitare la chiave di sicurezza FIDO](troubleshoot_mfa-fido.md#troubleshoot_mfa-fido-cant-enable). 

## Certificazioni dei dispositivi
<a name="id_credentials_mfa_fido_certifications"></a>

Acquisiamo e assegniamo le certificazioni relative ai dispositivi, come la convalida FIPS e il livello di certificazione FIDO, solo durante la registrazione di una chiave di sicurezza. La certificazione del dispositivo viene recuperata dal [FIDO Alliance Metadata Service (MDS)](https://fidoalliance.org/metadata/). Se lo stato o il livello di certificazione della chiave di sicurezza cambia, ciò non si rifletterà automaticamente nei tag del dispositivo. Per aggiornare le informazioni di certificazione di un dispositivo, è necessario registrarlo nuovamente per recuperare le informazioni di certificazione aggiornate. 

AWS fornisce i seguenti tipi di certificazione come chiavi di condizione durante la registrazione del dispositivo, ottenute da FIDO MDS: livelli di certificazione FIDO, FIPS-140-2 e FIPS-140-3. Hai la possibilità di specificare la registrazione di autenticatori specifici nelle loro policy IAM, in base al tipo e al livello di certificazione che preferisci. Per ulteriori informazioni, consulta le policy seguenti.

### Policy di esempio per le certificazioni dei dispositivi
<a name="id_credentials_mfa_fido_certifications_policies"></a>

I seguenti casi d'uso mostrano policy di esempio che consentono di registrare i dispositivi MFA con certificazioni FIPS.

**Topics**
+ [Caso d'uso 1: consentire la registrazione di dispositivi con certificazioni FIPS-140-2 L2](#id_credentials_mfa_fido_certifications_policies_use_case_1)
+ [Caso d'uso 2: consentire la registrazione di dispositivi con certificazioni FIPS-140-2 L2 o FIDO L1](#id_credentials_mfa_fido_certifications_policies_use_case_2)
+ [Caso d'uso 3: consentire la registrazione di dispositivi con certificazioni FIPS-140-2 L2 o FIPS-140-3 L2](#id_credentials_mfa_fido_certifications_policies_use_case_3)
+ [Caso d'uso 4: consenti la registrazione di dispositivi con certificazione FIPS-140-2 L2 e che supportano altri tipi di autenticazione a più fattori, come autenticatori virtuali e hardware TOTP](#id_credentials_mfa_fido_certifications_policies_use_case_4)

#### Caso d'uso 1: consentire la registrazione di dispositivi con certificazioni FIPS-140-2 L2
<a name="id_credentials_mfa_fido_certifications_policies_use_case_1"></a>

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-2-certification": "L2"
                }
            }
        }
    ]
}
```

------

#### Caso d'uso 2: consentire la registrazione di dispositivi con certificazioni FIPS-140-2 L2 o FIDO L1
<a name="id_credentials_mfa_fido_certifications_policies_use_case_2"></a>

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-2-certification": "L2",
                    "iam:FIDO-certification": "L1"
                }
            }
        }
    ]
}
```

------

#### Caso d'uso 3: consentire la registrazione di dispositivi con certificazioni FIPS-140-2 L2 o FIPS-140-3 L2
<a name="id_credentials_mfa_fido_certifications_policies_use_case_3"></a>

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-2-certification": "L2"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-3-certification": "L2"
                }
            }
        }
    ]
}
```

------

#### Caso d'uso 4: consenti la registrazione di dispositivi con certificazione FIPS-140-2 L2 e che supportano altri tipi di autenticazione a più fattori, come autenticatori virtuali e hardware TOTP
<a name="id_credentials_mfa_fido_certifications_policies_use_case_4"></a>

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iam:EnableMFADevice",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "iam:RegisterSecurityKey": "Create"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "iam:EnableMFADevice",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "iam:RegisterSecurityKey": "Activate",
          "iam:FIDO-FIPS-140-2-certification": "L2"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "iam:EnableMFADevice",
      "Resource": "*",
      "Condition": {
        "Null": {
          "iam:RegisterSecurityKey": "true"
        }
      }
    }
  ]
}
```

------

## AWS CLI e API AWS
<a name="id_credentials_mfa_fido_cliapi"></a>

AWS supporta l'utilizzo di chiavi di accesso e chiavi di sicurezza solo in. Console di gestione AWS L'utilizzo delle passkey e delle chiavi di sicurezza per MFA non è supportato nella [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/) e nell'[API AWS](https://aws.amazon.com/tools/) o per l'accesso alle [operazioni API protette da MFA](id_credentials_mfa_configure-api-require.md).

## Risorse aggiuntive
<a name="id_credentials_mfa_fido_additional_resources"></a>
+ Per ulteriori informazioni sull'utilizzo delle chiavi di accesso e delle chiavi di sicurezza in AWS, vedere. [Assegna una passkey o una chiave di sicurezza nel Console di gestione AWS](id_credentials_mfa_enable_fido.md)
+ Per informazioni sulla risoluzione dei problemi relativi alle passkey e alle chiavi di sicurezza in AWS, vedere. [Risoluzione dei problemi relativi alle passkey e alle chiavi di sicurezza FIDO](troubleshoot_mfa-fido.md)
+ Per informazioni generali sul settore dell' FIDO2 assistenza, consulta [FIDO2 Project](https://en.wikipedia.org/wiki/FIDO2_Project). 

# Assegna un dispositivo MFA virtuale nel Console di gestione AWS
<a name="id_credentials_mfa_enable_virtual"></a>

**Importante**  
AWS consiglia di utilizzare una passkey o una chiave di sicurezza per l'MFA AWS, ove possibile. Per ulteriori informazioni, consulta [Assegna una passkey o una chiave di sicurezza nel Console di gestione AWS](id_credentials_mfa_enable_fido.md).

Puoi utilizzare un telefono o un altro dispositivo come dispositivo di autenticazione a più fattori (MFA) virtuale. A tale scopo, installa un'app mobile conforme a [RFC 6238, un algoritmo TOTP (password monouso temporanea) basato su standard](https://datatracker.ietf.org/doc/html/rfc6238). Queste app generano un codice di autenticazione a sei cifre. Poiché gli autenticatori possono funzionare su dispositivi mobili non protetti e i codici potrebbero essere potenzialmente condivisi con parti non autorizzate, l'MFA basata su TOTP non offre lo stesso livello di sicurezza delle opzioni resistenti al phishing come chiavi di sicurezza e passkey. [FIDO2](https://en.wikipedia.org/wiki/FIDO_Alliance#FIDO2) Ti consigliamo di utilizzare passkey o chiavi di sicurezza per l'MFA per la massima protezione da attacchi come il phishing.

Se non sei ancora in grado di utilizzare passkey o chiavi di sicurezza, ti consigliamo di utilizzare un dispositivo MFA virtuale come misura provvisoria in attesa dell'approvazione dell'acquisto di hardware o dell'arrivo dell'hardware.

La maggior parte delle app MFA virtuali supporta la creazione di più dispositivi virtuali, consentendoti di utilizzare la stessa app per più utenti Account AWS . Puoi registrare fino a **otto** dispositivi MFA di qualsiasi combinazione di [tipi MFA](https://aws.amazon.com/iam/features/mfa/) con i tuoi Utente root dell'account AWS utenti e quelli di IAM. È necessario un solo dispositivo MFA per accedere Console di gestione AWS o creare una sessione tramite. AWS CLI Consigliamo di registrare più dispositivi MFA. Per le applicazioni di autenticazione, consigliamo inoltre di abilitare le funzionalità di backup o sincronizzazione su cloud per evitare di perdere l'accesso all'account in caso di smarrimento o guasto del dispositivo che dispone delle app di autenticazione.

AWS richiede un'app MFA virtuale che produca una OTP a sei cifre. Per un elenco delle app MFA virtuali che è possibile utilizzare, consulta [Multi-Factor Authentication](https://aws.amazon.com/iam/features/mfa/?audit=2019q1). 

**Topics**
+ [Autorizzazioni richieste](#mfa_enable_virtual_permissions-required)
+ [Abilitazione di un dispositivo MFA virtuale per un utente IAM (console)](#enable-virt-mfa-for-iam-user)
+ [Sostituzione di un dispositivo MFA virtuale](#replace-virt-mfa)

## Autorizzazioni richieste
<a name="mfa_enable_virtual_permissions-required"></a>

Per gestire i dispositivi MFA virtuali per l'utente IAM, è necessario disporre delle autorizzazioni dalla policy seguente: [AWS: consente agli utenti IAM autenticati con MFA di gestire il proprio dispositivo MFA nella pagina Credenziali di sicurezza](reference_policies_examples_aws_my-sec-creds-self-manage-mfa-only.md).

## Abilitazione di un dispositivo MFA virtuale per un utente IAM (console)
<a name="enable-virt-mfa-for-iam-user"></a>

Puoi utilizzare IAM Console di gestione AWS per abilitare e gestire un dispositivo MFA virtuale per un utente IAM nel tuo account. È possibile collegare tag alle risorse IAM, inclusi i dispositivi MFA virtuali, per identificare, organizzare e controllare l'accesso a tali risorse. È possibile etichettare i dispositivi MFA virtuali solo quando si utilizza l'API AWS CLI o AWS . Per abilitare e gestire un dispositivo MFA utilizzando l' AWS API AWS CLI or, vedere. [Assegna dispositivi MFA nell' AWS CLI API o AWS](id_credentials_mfa_enable_cliapi.md) Per ulteriori informazioni sul tagging delle risorse IAM, consulta [Tag per AWS Identity and Access Management le risorse](id_tags.md). 

**Nota**  
È necessario avere l'accesso fisico all'hardware che ospiterà il dispositivo MFA virtuale dell'utente per configurare MFA. Ad esempio, è possibile configurare MFA per un utente che utilizzerà un dispositivo MFA virtuale in esecuzione su uno smartphone. In questo caso, è necessario disporre di uno smartphone per completare la procedura guidata. Per questo motivo, è possibile consentire agli utenti di configurare e gestire i propri dispositivi MFA virtuali. In questo caso è necessario concedere agli utenti le autorizzazioni per eseguire le necessarie operazioni IAM. Per ulteriori informazioni e per un esempio di una policy IAM che concede queste autorizzazioni, consulta [Tutorial IAM: consentire agli utenti di gestire le proprie credenziali e impostazioni MFA](tutorial_users-self-manage-mfa-and-creds.md) e la policy di esempio [AWS: consente agli utenti IAM autenticati con MFA di gestire il proprio dispositivo MFA nella pagina Credenziali di sicurezza](reference_policies_examples_aws_my-sec-creds-self-manage-mfa-only.md). 

**Come abilitare un dispositivo MFA virtuale per un utente IAM (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Nell'elenco degli **Utenti**, seleziona il nome dell'utente IAM.

1. Seleziona la scheda **Credenziali di sicurezza**. Nella sezione **Autenticazione a più fattori (MFA)**, scegliere **Assegna dispositivo MFA**.

1. Nella procedura guidata, digita un **nome per il dispositivo**, scegli l'**app Authenticator** e quindi scegli **Next** (Avanti).

   IAM genera e visualizza le informazioni di configurazione per il dispositivo MFA virtuale, tra cui il codice grafico QR. Il grafico è una rappresentazione della "chiave di configurazione segreta" disponibile per l'inserimento manuale sui dispositivi che non supportano i codici QR.

1. Aprire l'app MFA virtuale. Per un elenco delle app che è possibile utilizzare per ospitare i dispositivi MFA virtuali, consultare la pagina [Autenticazione a più fattori](https://aws.amazon.com/iam/details/mfa/). 

   Se l'app MFA virtuale supporta più account o dispositivi MFA virtuali, selezionare l'opzione che consente di creare un nuovo account o dispositivo MFA virtuale.

1. Determinare se l'app MFA supporta i codici QR e procedere in uno dei seguenti modi:
   + Nella procedura guidata, scegliere **Mostra codice QR** ed eseguire la scansione del codice QR tramite l'app. Potrebbe trattarsi dell'icona della fotocamera o dell'opzione **Scannerizza codice** che utilizza la fotocamera del dispositivo per eseguire la scansione del codice.
   + Nella procedura guidata, scegli **Show secret key** (Mostra chiave segreta) e digitare la chiave segreta nell'app MFA.

   Al termine, il dispositivo MFA virtuale avvia la generazione di password una tantum. 

1. Nella pagina **Set up device** (Configura il dispositivo), nella casella **MFA code 1** (Codice MFA 1), digita la password monouso correntemente visualizzata nel dispositivo MFA virtuale. Attendere fino a un massimo di 30 secondi prima che il dispositivo generi una nuova password una tantum. Quindi, digitare la seconda password monouso nella casella **Codice MFA 2**. Scegli **Aggiungi MFA**. 
**Importante**  
Inviare la richiesta immediatamente dopo la generazione dei codici. Se si generano i codici e si attende troppo a lungo per inviare la richiesta, il dispositivo MFA si associa correttamente con l'utente ma il dispositivo MFA non viene sincronizzato. Ciò accade perché le password monouso temporanee (TOTP) scadono dopo un breve periodo di tempo. Se ciò accade, è possibile [sincronizzare nuovamente il dispositivo](id_credentials_mfa_sync.md).

Il dispositivo MFA virtuale è ora pronto per l'uso con. AWS Per informazioni sull'utilizzo della tecnologia MFA con Console di gestione AWS, vedere. [Accesso abilitato con MFA](console_sign-in-mfa.md)

**Nota**  
I dispositivi MFA virtuali non assegnati nel Account AWS tuo vengono eliminati quando aggiungi nuovi dispositivi MFA virtuali tramite o durante Console di gestione AWS la procedura di accesso. I dispositivi MFA virtuali non assegnati sono dispositivi presenti nell’account ma non utilizzati dall’utente root dell’account o dagli utenti IAM per il processo di accesso. Vengono eliminati in modo da poter aggiungere nuovi dispositivi MFA virtuali al tuo account. Questo consente anche di riutilizzare i nomi dei dispositivi.  
Per visualizzare i dispositivi MFA virtuali non assegnati nel tuo account, puoi utilizzare [list-virtual-mfa-devices](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-virtual-mfa-devices.html) AWS CLI il comando [o](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListVirtualMFADevices.html) la chiamata API.
Per disattivare un dispositivo MFA virtuale, puoi utilizzare [deactivate-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/deactivate-mfa-device.html) AWS CLI il comando [o](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html) la chiamata API. Verrà annullata l’assegnazione del dispositivo.
Per collegare un dispositivo MFA virtuale non assegnato all' Account AWS utente root o agli utenti IAM, è necessario il codice di autenticazione generato dal dispositivo insieme al comando [o [enable-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/enable-mfa-device.html)AWS CLI](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html)alla chiamata API.

## Sostituzione di un dispositivo MFA virtuale
<a name="replace-virt-mfa"></a>

Tu Utente root dell'account AWS e gli utenti IAM potete registrare fino a **otto** dispositivi MFA di qualsiasi combinazione di tipi di MFA. Se l'utente dovesse perdere il proprio dispositivo o in caso di sostituzione, dovrai disattivare il vecchio dispositivo. e quindi aggiungere quello nuovo.
+ Per disattivare il dispositivo correntemente associato a un altro utente IAM, consulta [Disattivare un dispositivo MFA](id_credentials_mfa_disable.md).
+ Per aggiungere un dispositivo MFA virtuale sostitutivo per un altro utente IAM, segui la procedura [Abilitazione di un dispositivo MFA virtuale per un utente IAM (console)](#enable-virt-mfa-for-iam-user) descritta sopra.
+ Per aggiungere un dispositivo MFA virtuale sostitutivo per Utente root dell'account AWS, segui i passaggi della procedura. [Abilitare un dispositivo MFA virtuale per l'utente root (console)](enable-virt-mfa-for-root.md)

# Assegna un token TOTP hardware nel Console di gestione AWS
<a name="id_credentials_mfa_enable_physical"></a>

**Importante**  
AWS consiglia di utilizzare una passkey o una chiave di sicurezza per l'MFA AWS, ove possibile. Per ulteriori informazioni, consulta [Assegna una passkey o una chiave di sicurezza nel Console di gestione AWS](id_credentials_mfa_enable_fido.md).

Un dispositivo MFA hardware genera un codice numerico di sei cifre basato su un algoritmo di password monouso sincronizzato nel tempo. L'utente deve immettere un codice valido dal dispositivo quando richiesto durante la procedura di accesso. Ogni dispositivo MFA assegnato a un utente deve essere univoco; un utente non può immettere un codice dal dispositivo di un altro utente per effettuare l'autenticazione. I dispositivi MFA non possono essere condivisi tra account o utenti.

I dispositivi MFA hardware e le [chiavi di sicurezza FIDO](id_credentials_mfa_enable_fido.md) sono entrambi dispositivi fisici che si acquistano. I dispositivi hardware MFA generano codici TOTP per l'autenticazione quando accedi a. AWS Si basano sulle batterie, che potrebbero richiedere la sostituzione e la risincronizzazione nel tempo. AWS Le chiavi di sicurezza FIDO, che utilizzano la crittografia a chiave pubblica, non richiedono batterie e offrono un processo di autenticazione senza interruzioni. Consigliamo di utilizzare le chiavi di sicurezza FIDO per la loro resistenza al phishing e perché forniscono un'alternativa più sicura ai dispositivi TOTP. Inoltre, le chiavi di sicurezza FIDO possono supportare più utenti IAM o root sullo stesso dispositivo, migliorandone l'utilità per la sicurezza degli account. Per specifiche e informazioni sull'acquisto per entrambi i tipi di dispositivo, consulta [Multi-Factor Authentication](https://aws.amazon.com/iam/details/mfa/).



Puoi abilitare un token TOTP hardware per un utente IAM dalla Console di gestione AWS riga di comando o dall'API IAM. Per abilitare un dispositivo MFA per il tuo Utente root dell'account AWS, consulta. [Abilitazione di un token TOTP hardware per l'utente root dell' (console)](enable-hw-mfa-for-root.md)

Puoi registrare fino a **otto** dispositivi MFA di qualsiasi combinazione dei [tipi di MFA attualmente supportati](https://aws.amazon.com/iam/features/mfa/) con i tuoi Utente root dell'account AWS utenti e IAM. Con più dispositivi MFA, è sufficiente un solo dispositivo MFA per accedere Console di gestione AWS o creare una sessione tramite l' AWS CLI as quell'utente.

**Importante**  
Ti consigliamo di abilitare più dispositivi MFA per gli utenti in modo da garantire l'accesso continuo al tuo account in caso di smarrimento del dispositivo MFA o se diventa inaccessibile.

**Nota**  
Per abilitare il dispositivo MFA dalla riga di comando, utilizzare [https://docs.aws.amazon.com/cli/latest/reference/iam/enable-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/enable-mfa-device.html). Per abilitare il dispositivo MFA con l'API IAM, utilizza l'operazione [https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html). 

**Topics**
+ [Autorizzazioni richieste](#enable-hw-mfa-for-iam-user-permissions-required)
+ [Abilitazione di un dispositivo MFA hardware per un utente IAM (console)](#enable-hw-mfa-for-own-iam-user)
+ [Abilitazione di un dispositivo MFA hardware per un altro utente IAM (console)](#enable-hw-mfa-for-iam-user)
+ [Sostituzione di un dispositivo MFA fisico](#replace-phys-mfa)

## Autorizzazioni richieste
<a name="enable-hw-mfa-for-iam-user-permissions-required"></a>

Per gestire un dispositivo MFA hardware per il proprio utente IAM proteggendo le operazioni sensibili correlate a MFA, è necessario disporre delle autorizzazioni dalla policy seguente:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowManageOwnUserMFA",
            "Effect": "Allow",
            "Action": [
                "iam:DeactivateMFADevice",
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "DenyAllExceptListedIfNoMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}
```

------

## Abilitazione di un dispositivo MFA hardware per un utente IAM (console)
<a name="enable-hw-mfa-for-own-iam-user"></a>

 È possibile abilitare il proprio dispositivo MFA hardware tramite Console di gestione AWS.

**Nota**  
Prima di abilitare un dispositivo MFA hardware è necessario disporre di accesso fisico al dispositivo.

**Come abilitare un dispositivo MFA hardware per un utente IAM (console)**

1. [Utilizza l'ID o l'alias dell'account, il nome utente IAM e la password per accedere alla console IAM. AWS](https://console.aws.amazon.com/iam)
**Nota**  
Per comodità, la pagina di AWS accesso utilizza un cookie del browser per ricordare il nome utente IAM e le informazioni sull'account. Se in precedenza è stato eseguito l'accesso con un utente diverso, scegli il link **Accedi a un account differente** nella parte inferiore della pagina per ritornare alla pagina principale di accesso. Da lì, puoi digitare l'ID o l'alias dell'account per essere reindirizzato alla pagina di accesso utente IAM relativa al tuo AWS account.

   Per ottenere il tuo Account AWS ID, contatta l'amministratore.

1. Seleziona il nome utente in alto a destra nella barra di navigazione e scegli **Security credentials** (Credenziali di sicurezza).   
![\[Console di gestione AWS Link alle credenziali di sicurezza\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. Nella scheda **Credenziali AWS IAM**, nella sezione **Autenticazione a più fattori**, seleziona **Gestione dispositivo MFA**.

1. Nella procedura guidata, digitate il **nome del dispositivo**, scegliete il **token Hardware TOTP** e quindi scegliete **Avanti**.

1. Digitare il numero di serie del dispositivo. In genere, il numero di serie è indicato sulla parte posteriore del dispositivo.

1. Nella casella **MFA code 1 (Codice MFA 1)** digitare il numero di sei cifre visualizzato nel dispositivo MFA. Per visualizzare il numero, potrebbe essere necessario premere il pulsante sul lato anteriore del dispositivo.  
![\[Pannello di controllo IAM - Dispositivo MFA\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/MFADevice.png)

1. Attendere 30 secondi per consentire al dispositivo di aggiornare il codice, quindi digitare il nuovo numero a sei cifre nella casella **MFA code 2 (Codice MFA 2)**. Per visualizzare il secondo numero, potrebbe essere necessario premere nuovamente il pulsante sul lato anteriore del dispositivo.

1. Scegli **Aggiungi MFA**.
**Importante**  
La richiesta deve essere inviata immediatamente dopo la generazione dei codici di autenticazione. Se dopo avere generato i codici attendi troppo a lungo prima di inviare la richiesta, il dispositivo MFA si associerà correttamente con l'utente, ma perderà la sincronizzazione. Ciò accade perché le password monouso temporanee (TOTP) scadono dopo un breve periodo di tempo. Se ciò accade, è possibile [sincronizzare nuovamente il dispositivo](id_credentials_mfa_sync.md).

Il dispositivo è pronto per l'uso con AWS. Per ulteriori informazioni sull'utilizzo di MFA con la Console di gestione AWS, consulta [Accesso abilitato con MFA](console_sign-in-mfa.md).

## Abilitazione di un dispositivo MFA hardware per un altro utente IAM (console)
<a name="enable-hw-mfa-for-iam-user"></a>

 Puoi abilitare un dispositivo MFA hardware per un altro utente IAM dalla Console di gestione AWS.

**Come abilitare un dispositivo MFA hardware per un altro utente IAM (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Scegli il nome del segreto per il quale desideri abilitare la rotazione.

1. Seleziona la scheda **Credenziali di sicurezza**. Nella sezione **Multi-Factor Authentication (MFA) (Autenticazione a più fattori)**, scegliere **Assign MFA device (Assegna dispositivo MFA)**.

1. Nella procedura guidata, digitate il **nome del dispositivo**, scegliete il **token Hardware TOTP** e quindi scegliete **Avanti**.

1. Digitare il numero di serie del dispositivo. In genere, il numero di serie è indicato sulla parte posteriore del dispositivo.

1. Nella casella **MFA code 1 (Codice MFA 1)** digitare il numero di sei cifre visualizzato nel dispositivo MFA. Per visualizzare il numero, potrebbe essere necessario premere il pulsante sul lato anteriore del dispositivo.  
![\[Pannello di controllo IAM - Dispositivo MFA\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/MFADevice.png)

1. Attendere 30 secondi per consentire al dispositivo di aggiornare il codice, quindi digitare il nuovo numero a sei cifre nella casella **MFA code 2 (Codice MFA 2)**. Per visualizzare il secondo numero, potrebbe essere necessario premere nuovamente il pulsante sul lato anteriore del dispositivo.

1. Scegli **Aggiungi MFA**.
**Importante**  
La richiesta deve essere inviata immediatamente dopo la generazione dei codici di autenticazione. Se dopo avere generato i codici attendi troppo a lungo prima di inviare la richiesta, il dispositivo MFA si associerà correttamente con l'utente, ma perderà la sincronizzazione. Ciò accade perché le password monouso temporanee (TOTP) scadono dopo un breve periodo di tempo. Se ciò accade, è possibile [sincronizzare nuovamente il dispositivo](id_credentials_mfa_sync.md).

Il dispositivo è pronto per l'uso con AWS. Per ulteriori informazioni sull'utilizzo di MFA con la Console di gestione AWS, consulta [Accesso abilitato con MFA](console_sign-in-mfa.md).

## Sostituzione di un dispositivo MFA fisico
<a name="replace-phys-mfa"></a>

Puoi avere fino a otto dispositivi MFA di qualsiasi combinazione dei [tipi di MFA attualmente supportati](https://aws.amazon.com/iam/features/mfa/) assegnati a un utente alla volta con i tuoi Utente root dell'account AWS utenti e IAM. Se l'utente dovesse perdere il proprio dispositivo o in caso di sostituzione, dovrai disattivare il vecchio dispositivo e quindi aggiungere quello nuovo.
+ Per disattivare il dispositivo associato al momento con un utente, consultare [Disattivare un dispositivo MFA](id_credentials_mfa_disable.md).
+ Per aggiungere un dispositivo MFA hardware sostitutivo per un utente IAM, segui la procedura [Abilitazione di un dispositivo MFA hardware per un altro utente IAM (console)](#enable-hw-mfa-for-iam-user)descritta prima in questo argomento.
+ Per aggiungere un token TOTP hardware sostitutivo per Utente root dell'account AWS, segui i passaggi della procedura descritta in [Abilitazione di un token TOTP hardware per l'utente root dell' (console)](enable-hw-mfa-for-root.md) precedenza in questo argomento.

# Assegna dispositivi MFA nell' AWS CLI API o AWS
<a name="id_credentials_mfa_enable_cliapi"></a>

Puoi utilizzare AWS CLI comandi o operazioni AWS API per abilitare un dispositivo MFA virtuale per un utente IAM. Non è possibile abilitare un dispositivo MFA per il Utente root dell'account AWS AWS CLI, AWS API, Tools for Windows PowerShell o qualsiasi altro strumento da riga di comando. Tuttavia, è possibile utilizzare il Console di gestione AWS per abilitare un dispositivo MFA per l'utente root. 

Quando abiliti un dispositivo MFA da Console di gestione AWS, la console esegue più passaggi per te. Se invece crei AWS CLI un dispositivo virtuale utilizzando Tools for Windows PowerShell o AWS API, devi eseguire i passaggi manualmente e nell'ordine corretto. Ad esempio, per creare un dispositivo MFA virtuale, è necessario creare l'oggetto IAM ed estrarre il codice sotto forma di stringa o di codice grafico QR. Quindi è necessario sincronizzare il dispositivo e associarlo a un utente IAM. Vedi la sezione **Esempi** di [New- IAMVirtual MFADevice](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=New-IAMVirtualMFADevice.html&tocid=New-IAMVirtualMFADevice) per maggiori dettagli. Per un dispositivo fisico, si salta la fase di creazione per andare direttamente a sincronizzare il dispositivo e associarlo con l'utente. 

È possibile collegare tag alle risorse IAM, inclusi i dispositivi MFA virtuali, per identificare, organizzare e controllare l'accesso a tali risorse. È possibile etichettare i dispositivi MFA virtuali solo quando si utilizza l'API AWS CLI o AWS .

Un utente IAM che utilizza l'SDK o la CLI può abilitare un dispositivo MFA aggiuntivo chiamando [https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html) o disattivarlo chiamando [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html). Per eseguire correttamente questa operazione, devono prima chiamare [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) e inviare i codici MFA con un dispositivo MFA esistente. Questa chiamata restituisce credenziali di sicurezza temporanee che possono quindi essere utilizzate per firmare operazioni API che richiedono l'autenticazione MFA. Per un esempio di richiesta e risposta, consulta [`GetSessionToken`: credenziali temporanee per gli utenti in ambienti non attendibili](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_getsessiontoken). 

**Creazione dell'entità del dispositivo virtuale in IAM in modo che rappresenti un dispositivo MFA virtuale**  
Questi comandi forniscono un ARN per il dispositivo che viene usato al posto di un numero di serie in molti dei seguenti comandi.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/create-virtual-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-virtual-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateVirtualMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateVirtualMFADevice.html) 

**Per abilitare un dispositivo MFA da utilizzare con AWS**  
Questi comandi sincronizzano il dispositivo AWS e lo associano a un utente. Se il dispositivo è virtuale, utilizzare l'ARN di un dispositivo virtuale come numero di serie.

**Importante**  
La richiesta deve essere inviata immediatamente dopo la generazione dei codici di autenticazione. Se dopo avere generato i codici attendi troppo a lungo prima di inviare la richiesta, il dispositivo MFA si associerà correttamente con l'utente, ma perderà la sincronizzazione. Ciò accade perché le password monouso temporanee (TOTP) scadono dopo un breve periodo di tempo. In questo caso, è possibile risincronizzare il dispositivo utilizzando i comandi descritti di seguito.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/enable-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/enable-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html) 

**Per disattivare un dispositivo**  
Utilizzare questi comandi per dissociare il dispositivo dall'utente e disattivarlo. Se il dispositivo è virtuale, utilizzare l'ARN di un dispositivo virtuale come numero di serie. È inoltre necessario eliminare separatamente l'entità del dispositivo virtuale. 
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html)

**Elenco delle entità del dispositivo MFA virtuale**  
Utilizzare questi comandi per elencare le entità di un dispositivo MFA virtuale.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/list-virtual-mfa-devices.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-virtual-mfa-devices.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListVirtualMFADevices.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListVirtualMFADevices.html) 

**Per applicare tag a un dispositivo MFA virtuale**  
Utilizzare questi comandi per applicare tag a un dispositivo MFA virtuale.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/tag-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagMFADevice.html) 

**Per elencare i tag per un dispositivo MFA virtuale**  
Utilizzare questi comandi per elencare i tag collegati a un dispositivo MFA virtuale.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/list-mfa-device-tags.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-mfa-device-tags.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListMFADeviceTags.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListMFADeviceTags.html) 

**Per rimuovere i tag da un dispositivo MFA virtuale**  
Utilizzare questi comandi per rimuovere i tag collegati a un dispositivo MFA virtuale.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/untag-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagMFADevice.html) 

**Risincronizzare un dispositivo MFA**  
Usa questi comandi se il dispositivo genera codici che non sono accettati da AWS. Se il dispositivo è virtuale, utilizzare l'ARN di un dispositivo virtuale come numero di serie.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/resync-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/resync-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResyncMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResyncMFADevice.html) 

**Come eliminare un'entità del dispositivo MFA virtuale in IAM**  
Dopo che il dispositivo è stato dissociato da parte dell'utente, è possibile eliminare l'entità del dispositivo.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-virtual-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-virtual-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteVirtualMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteVirtualMFADevice.html) 

**Per recuperare un dispositivo MFA virtuale che è stato smarrito o non funziona**  
Potrebbe accadere che il dispositivo di un utente che ospita l'app MFA virtuale venga smarrito o sostituito o non funzioni. Quando ciò si verifica, l'utente non può recuperarlo autonomamente. L'utente deve contattare un amministratore per disattivare il dispositivo. Per ulteriori informazioni, consulta [Recuperare un'identità protetta da MFA in IAM](id_credentials_mfa_lost-or-broken.md).

# Verifica dello stato MFA
<a name="id_credentials_mfa_checking-status"></a>

Utilizza la console IAM per verificare se un utente Utente root dell'account AWS o un utente IAM ha abilitato un dispositivo MFA valido.

**Come verificare lo stato MFA di un utente root**

1. Accedi a Console di gestione AWS con le tue credenziali utente root, quindi apri la console IAM all'indirizzo. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 

1. Seleziona il nome utente in alto a destra nella barra di navigazione e scegli **Security credentials** (Credenziali di sicurezza).

1. Controlla in **Multi-Factor Authentication (MFA)** per verificare se l'autenticazione MFA è abilitata o disabilitata. Se l'autenticazione MFA non è abilitata, viene visualizzato un simbolo di avviso (![\[Alert icon\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/console-alert-icon.console.png)). 

Per abilitare l'autenticazione MFA per l'account, consultare uno dei seguenti articoli:
+ [Abilitare un dispositivo MFA virtuale per l'utente root (console)](enable-virt-mfa-for-root.md)
+ [Abilitare una passkey o una chiave di sicurezza per l'utente root (console)](enable-fido-mfa-for-root.md)
+ [Abilitazione di un token TOTP hardware per l'utente root dell' (console)](enable-hw-mfa-for-root.md)

**Come verificare lo stato MFA degli utenti IAM**

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 **Utenti**.

1. Se necessario, aggiungere la colonna **MFA** alla tabella degli utenti mediante la procedura seguente:

   1. Sopra la tabella all'estrema destra, selezionare l'icona delle impostazioni (![\[Settings icon\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/console-settings-icon.console.png)).

   1. In **Manage Columns (Gestisci colonne)** selezionare **MFA**.

   1. (Facoltativo) Deselezionare la casella di controllo per le intestazioni di colonna che non si desidera visualizzare nella tabella utenti.

   1. Selezionare **Close (Chiudi)** per tornare all'elenco degli utenti.

1. La colonna **MFA** fornisce informazioni sul dispositivo MFA abilitato. Se per l'utente non è attivo alcun dispositivo MFA, la console visualizza **None** (Nessuno). Se l'utente dispone di un dispositivo MFA abilitato, la colonna **MFA** mostra il tipo di dispositivo abilitato con il valore **Virtual** (Virtuale), **Security Key** (Chiave di sicurezza), **Hardware** o **SMS**.
**Nota**  
AWS è terminato il supporto per l'abilitazione dell'autenticazione a più fattori (MFA) tramite SMS. Consigliamo ai clienti con utenti IAM che utilizzano la MFA basata su messaggi di testo SMS di passare a uno dei seguenti metodi alternativi di autenticazione a più fattori: [dispositivo MFA virtuale (basato su software)](id_credentials_mfa_enable_virtual.md), [chiave di sicurezza FIDO](id_credentials_mfa_enable_fido.md) o [dispositivo MFA basato su hardware](id_credentials_mfa_enable_physical.md). Puoi identificare gli utenti nel tuo account con un dispositivo MFA SMS assegnato. Per farlo, vai alla console IAM, scegli **Users (Utenti)** dal riquadro di navigazione e individua gli utenti con **SMS** nella colonna della tabella **MFA**.

1. Per visualizzare ulteriori informazioni sul dispositivo MFA per un utente, selezionare il nome dell'utente di cui si desidera verificare lo stato MFA. Quindi, selezionare la scheda **Security credentials (Credenziali di sicurezza)**. 

1. Se per l'utente non è attivo alcun dispositivo MFA, la console visualizza **No MFA devices (Nessun dispositivo MFA). Assegna un dispositivo MFA per migliorare la sicurezza del AWS tuo** ambiente nella sezione **Autenticazione a più fattori (MFA**). Se l'utente ha i dispositivi MFA abilitati, la sezione **Autenticazione a più fattori (MFA)** mostra i dettagli dei dispositivi:
   + Il nome del dispositivo
   + Il tipo di dispositivo
   + L'identificatore del dispositivo, ad esempio un numero di serie per un dispositivo fisico o l'ingresso ARN AWS per un dispositivo virtuale
   + Quando il dispositivo è stato creato

Per rimuovere o risincronizzare un dispositivo, scegli il pulsante d'opzione accanto al dispositivo e scegli **Remove** (Rimuovi) o **Resync** (Risincronizza).

Per ulteriori informazioni sull'abilitazione di MFA, consultare quanto segue: 
+ [Assegna un dispositivo MFA virtuale nel Console di gestione AWS](id_credentials_mfa_enable_virtual.md)
+ [Assegna una passkey o una chiave di sicurezza nel Console di gestione AWS](id_credentials_mfa_enable_fido.md)
+ [Assegna un token TOTP hardware nel Console di gestione AWS](id_credentials_mfa_enable_physical.md)

# Risincronizzare i dispositivi MFA virtuali e hardware
<a name="id_credentials_mfa_sync"></a>

È possibile utilizzarli AWS per risincronizzare i dispositivi di autenticazione a più fattori (MFA) virtuali e hardware. Se il dispositivo dell'utente non è sincronizzato quando si tenta di utilizzarlo, il tentativo di accesso dell'utente non riesce e IAM richiede all'utente di risincronizzare il dispositivo.

**Nota**  
Le chiavi di sicurezza FIDO sono sempre sincronizzate. Se una chiave di sicurezza FIDO viene smarrita o danneggiata, puoi disattivarla. Per istruzioni sulla disattivazione dei dispositivi MFA, consulta [Come disattivare un dispositivo MFA per un altro utente IAM (console)](id_credentials_mfa_disable.md#deactivate-mfa-for-user).

In qualità di AWS amministratore, puoi risincronizzare i dispositivi MFA virtuali e hardware degli utenti IAM se non vengono sincronizzati.

Se il dispositivo Utente root dell'account AWS MFA non funziona, puoi risincronizzarlo utilizzando la console IAM con o senza completare la procedura di accesso. Se non riesci a risincronizzare correttamente il dispositivo, potrebbe essere necessario dissociarlo e associarlo nuovamente. Per ulteriori informazioni su come effettuare tale operazione, consulta [Disattivare un dispositivo MFA](id_credentials_mfa_disable.md) e [AWS Autenticazione a più fattori in IAM](id_credentials_mfa.md).

**Topics**
+ [Autorizzazioni richieste](#id_credentials_mfa_sync_console-permissions-required)
+ [Risincronizzazione dei dispositivi MFA virtuali e hardware (console IAM)](#id_credentials_mfa_sync_console)
+ [Risincronizzazione dei dispositivi MFA virtuali e hardware (AWS CLI)](#id_credentials_mfa_sync_cli)
+ [Risincronizzazione di dispositivi MFA (API) virtuali e hardware AWS](#id_credentials_mfa_sync_api)

## Autorizzazioni richieste
<a name="id_credentials_mfa_sync_console-permissions-required"></a>

Per sincronizzare nuovamente i dispositivi MFA virtuali o hardware per l'utente IAM, è necessario disporre delle autorizzazioni dalla politica seguente. Questa politica non consente di creare o disattivare un dispositivo.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowListActions",
            "Effect": "Allow",
            "Action": [
                "iam:ListVirtualMFADevices"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowUserToViewAndManageTheirOwnUserMFA",
            "Effect": "Allow",
            "Action": [
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "BlockAllExceptListedIfNoMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:ListMFADevices",
                "iam:ListVirtualMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}
```

------

## Risincronizzazione dei dispositivi MFA virtuali e hardware (console IAM)
<a name="id_credentials_mfa_sync_console"></a>

Puoi utilizzare la console IAM per risincronizzare i dispositivi MFA virtuali e hardware.

**Come risincronizzare un dispositivo MFA virtuale o hardware per un utente IAM (console)**

1. [Utilizza l'ID o l'alias dell'account, il nome utente IAM e la password per accedere alla console IAM. AWS](https://console.aws.amazon.com/iam)
**Nota**  
Per comodità, la pagina di AWS accesso utilizza un cookie del browser per ricordare il nome utente IAM e le informazioni sull'account. Se in precedenza è stato eseguito l'accesso con un utente diverso, scegli il link **Accedi a un account differente** nella parte inferiore della pagina per ritornare alla pagina principale di accesso. Da lì, puoi digitare l'ID o l'alias dell'account per essere reindirizzato alla pagina di accesso utente IAM relativa al tuo AWS account.

   Per ottenere il tuo Account AWS ID, contatta l'amministratore.

1. Seleziona il nome utente in alto a destra nella barra di navigazione e scegli **Security credentials** (Credenziali di sicurezza).   
![\[AWS Link alle credenziali di sicurezza della console di gestione\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. Nella scheda **Credenziali AWS IAM**, nella sezione **Autenticazione a più fattori (MFA)**, scegli il pulsante d'opzione accanto al dispositivo MFA e seleziona **Risincronizza**.

1. Digitare i successivi due codici generati in sequenza dal dispositivo in **MFA code 1 (Codice MFA 1)** e **MFA code 2 (Codice MFA 2)**. Quindi scegli **Resync** (Risincronizza).
**Importante**  
Inviare la richiesta immediatamente dopo la generazione dei codici. Se si generano i codici e si attende troppo a lungo per inviare la richiesta, la richiesta sembra riuscita ma il dispositivo non è comunque sincronizzato. Ciò accade perché le password monouso temporanee (TOTP) scadono dopo un breve periodo di tempo.

**Come risincronizzare un dispositivo MFA virtuale o hardware per un altro utente IAM (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione, selezionare **Users (Utenti)**e il nome dell'utente con dispositivo MFA da risincronizzare.

1. Selezionare la scheda **Security Credentials (Credenziali di sicurezza)**. Nella sezione **Multi-factor authentication (MFA)** (Autenticazione a più fattori (MFA), scegli il pulsante d'opzione accanto al dispositivo MFA e scegli **Resync** (Risincronizza).

1. Digitare i successivi due codici generati in sequenza dal dispositivo in **MFA code 1 (Codice MFA 1)** e **MFA code 2 (Codice MFA 2)**. Quindi scegli **Resync** (Risincronizza).
**Importante**  
Inviare la richiesta immediatamente dopo la generazione dei codici. Se si generano i codici e si attende troppo a lungo per inviare la richiesta, la richiesta sembra riuscita ma il dispositivo non è comunque sincronizzato. Ciò accade perché le password monouso temporanee (TOTP) scadono dopo un breve periodo di tempo.

**Come risincronizzare l'autenticazione MFA dell'utente root prima dell'accesso (console)**

1. Nella pagina **Accesso ad Amazon Web Services con dispositivo di autenticazione**, seleziona ** Problemi con il tuo dispositivo di autenticazione? Fai clic qui**.
**Nota**  
È possibile che il testo visualizzato sia differente, ad esempio **Sign in using MFA (Accesso con un dispositivo MFA)** e **Troubleshoot your authentication device (Risoluzione dei problemi del dispositivo di autenticazione)**. Tuttavia, le funzionalità sono identiche.

1. Nella sezione **Re-Sync With Our Servers (Risincronizzazione con i nostri server)**, digitare i successivi due codici generati in sequenza dal dispositivo in **MFA code 1 (Codice MFA 1)** e **MFA code 2 (Codice MFA 2)**. Quindi selezionare **Re-sync authentication device (Risincronizza dispositivo di autenticazione)**.

1. Se necessario, digitare di nuovo la password e selezionare **Accedi**. Quindi completare l'accesso utilizzando il dispositivo MFA.

**Come risincronizzare l'autenticazione MFA dell'utente root dopo l'accesso (console)**

1. Accedi alla [console IAM](https://console.aws.amazon.com/iam/) come proprietario dell'account selezionando **Utente root** e inserendo il tuo indirizzo Account AWS email. Nella pagina successiva, inserisci la password.
**Nota**  
Come utente root, non puoi accedere alla pagina **Sign in as IAM user** (Accedi come utente IAM). Se viene visualizzata la pagina **Sign in as IAM user** (Accedi come utente IAM), scegli **Sign in using root user email** (Accedi con l'indirizzo e-mail dell'utente root) nella parte inferiore della pagina. Per informazioni sull'accesso come utente root, consulta [Accedere Console di gestione AWS come utente root nella Guida per](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-          root-user-sign-in-tutorial.html) *l'Accedi ad AWS utente*.

1. Sul lato destro della barra di navigazione, seleziona il nome dell'account, quindi **Security Credentials** (Credenziali di sicurezza). Se necessario, seleziona **Continue to Security Credentials** (Continua con le credenziali di sicurezza).  
![\[Credenziali di sicurezza nel menu di navigazione\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/security-credentials-root.shared.console.png)

1. Espandere la sezione **Multi-Factor Authentication (MFA) (Autenticazione a più fattori, MFA)** della pagina.

1. Seleziona il pulsante d'opzione accanto al dispositivo e scegli **Resync** (Risincronizza).

1. Nella finestra di dialogo **Resync MFA device** (Risincronizza dispositivo MFA), digita i successivi due codici generati in sequenza dal dispositivo in **MFA code 1 (Codice MFA 1)** e **MFA code 2 (Codice MFA 2)**. Quindi scegli **Resync** (Risincronizza).
**Importante**  
Inviare la richiesta immediatamente dopo la generazione dei codici. Se si attende troppo a lungo per inviare la richiesta dopo la generazione dei codici, il dispositivo MFA verrà associato all'utente, ma non verrà sincronizzato. Ciò accade perché le password monouso temporanee (TOTP) scadono dopo un breve periodo di tempo.

## Risincronizzazione dei dispositivi MFA virtuali e hardware (AWS CLI)
<a name="id_credentials_mfa_sync_cli"></a>

Puoi risincronizzare i dispositivi MFA virtuali e hardware da AWS CLI.

**Come risincronizzare un dispositivo MFA virtuale o hardware per un utente IAM (AWS CLI)**  
Al prompt dei comandi, esegui il resync-mfa-device comando [aws iam](https://docs.aws.amazon.com/cli/latest/reference/iam/resync-mfa-device.html):
+ Dispositivo MFA virtuale: specificare l'Amazon Resource Name (ARN) del dispositivo come numero di serie.

  ```
  aws iam resync-mfa-device --user-name Richard --serial-number arn:aws:iam::123456789012:mfa/RichardsMFA --authentication-code1 123456 --authentication-code2 987654
  ```
+ Dispositivo MFA hardware: specificare il numero di serie del dispositivo hardware come numero di serie. Il formato è specifico del fornitore. Ad esempio, puoi acquistare un token gemalto da Amazon. Il suo numero di serie è in genere quattro lettere seguite da quattro numeri.

  ```
  aws iam resync-mfa-device --user-name Richard --serial-number ABCD12345678 --authentication-code1 123456 --authentication-code2 987654
  ```

**Importante**  
Inviare la richiesta immediatamente dopo la generazione dei codici. Se si generano i codici e si attende troppo lungo per inviare la richiesta, la richiesta ha esito negativo perché i codici scadono dopo un breve periodo di tempo.

## Risincronizzazione di dispositivi MFA (API) virtuali e hardware AWS
<a name="id_credentials_mfa_sync_api"></a>

In IAM è disponibile una chiamata API che esegue la sincronizzazione. In questo caso, ti consigliamo di fornire agli utenti del dispositivo MFA virtuale e hardware l'autorizzazione per accedere a questa chiamata API. Quindi, crea uno strumento basato su tale chiamata API per consentire agli utenti di risincronizzare i propri dispositivi ogni volta che è necessario.

**Per risincronizzare un dispositivo MFA virtuale o hardware per un utente IAM (API)AWS**
+ [Invia la richiesta di risincronizzazione. MFADevice](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResyncMFADevice.html)

# Disattivare un dispositivo MFA
<a name="id_credentials_mfa_disable"></a>

In caso di problemi di accesso con un dispositivo con autenticazione a più fattori (MFA) come utente IAM, contatta il tuo amministratore per assistenza.

In qualità di amministratore, puoi disattivare il dispositivo per un altro utente IAM. In questo modo, l''utente potrà effettuare l'accesso senza utilizzare MFA. Questa soluzione può essere temporanea, se il dispositivo MFA è momentaneamente non disponibile o in attesa che venga sostituito. Tuttavia, ti consigliamo di abilitare un nuovo dispositivo per l'utente quanto prima possibile. Per informazioni su come abilitare un nuovo dispositivo MFA, consultare [AWS Autenticazione a più fattori in IAM](id_credentials_mfa.md).

**Nota**  
Se utilizzi l'API o desideri AWS CLI eliminare un utente dal tuo Account AWS, devi disattivare o eliminare il dispositivo MFA dell'utente. Tale modifica fa paarte del processo di rimozione dell'utente. Per ulteriori informazioni sulla rimozione di utenti, consulta [Rimuovere o disattivare un utente IAM](id_users_remove.md).

**Topics**
+ [Disattivazione dei dispositivi MFA (console)](#deactive-mfa-console)
+ [Disattivazione dei dispositivi MFA (AWS CLI)](#deactivate-mfa-cli)
+ [Disattivazione dei dispositivi MFA (API)AWS](#deactivate-mfa-api)

## Disattivazione dei dispositivi MFA (console)
<a name="deactive-mfa-console"></a><a name="deactivate-mfa-for-user"></a>

**Come disattivare un dispositivo MFA per un altro utente IAM (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Per disattivare un dispositivo MFA, scegli il nome dell'utente a cui appartiene l'MFA da rimuovere.

1. Selezionare la scheda **Security Credentials (Credenziali di sicurezza)**.

1. In **Multi-factor authentication (MFA)** (Autenticazione a più fattori (MFA), scegli il pulsante d'opzione accanto al dispositivo MFA, quindi scegli **Remove** (Rimuovi) e poi di nuovo **Remove** (Rimuovi).

   Il dispositivo viene rimosso da AWS. Non può essere utilizzato per accedere o autenticare le richieste finché non viene riattivato e associato a un AWS utente o. Utente root dell'account AWS<a name="deactivate-mfa-for-root"></a>

**Per disattivare il dispositivo MFA per la Utente root dell'account AWS tua (console)**

1. Accedi alla [console IAM](https://console.aws.amazon.com/iam/) come proprietario dell'account scegliendo **Utente root** e inserendo il tuo Account AWS indirizzo email. Nella pagina successiva, inserisci la password.
**Nota**  
Come utente root, non puoi accedere alla pagina **Sign in as IAM user** (Accedi come utente IAM). Se viene visualizzata la pagina **Sign in as IAM user** (Accedi come utente IAM), scegli **Sign in using root user email** (Accedi con l'indirizzo e-mail dell'utente root) nella parte inferiore della pagina. Per informazioni sull'accesso come utente root, consulta [Accedere Console di gestione AWS come utente root nella Guida per](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-          root-user-sign-in-tutorial.html) *l'Accedi ad AWS utente*.

1. Sul lato destro della barra di navigazione, seleziona il nome dell'account, quindi **Security Credentials** (Credenziali di sicurezza). Se necessario, seleziona **Continue to Security Credentials** (Continua con le credenziali di sicurezza).  
![\[Credenziali di sicurezza nel menu di navigazione\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/security-credentials-root.shared.console.png)

1. Nella sezione **Multi-factor authentication (MFA)** (Autenticazione a più fattori (MFA), scegli il pulsante d'opzione accanto al dispositivo MFA da disattivare e scegli **Remove** (Rimuovi).

1. Scegli **Rimuovi**.

   Il dispositivo MFA è disattivato per l' Account AWS. Controlla l'e-mail associata al tuo indirizzo Account AWS per ricevere un messaggio di conferma da Amazon Web Services. L'e-mail ti informa che la tua autenticazione multifattore (MFA) di Amazon Web Services è stata disattivata. Il messaggio verrà inviato da `@amazon.com` o `@aws.amazon.com`.

**Nota**  
I dispositivi MFA virtuali non assegnati nel Account AWS tuo vengono eliminati quando aggiungi nuovi dispositivi MFA virtuali tramite o durante Console di gestione AWS la procedura di accesso. I dispositivi MFA virtuali non assegnati sono dispositivi presenti nell’account ma non utilizzati dall’utente root dell’account o dagli utenti IAM per il processo di accesso. Vengono eliminati in modo da poter aggiungere nuovi dispositivi MFA virtuali al tuo account. Questo consente anche di riutilizzare i nomi dei dispositivi.

## Disattivazione dei dispositivi MFA (AWS CLI)
<a name="deactivate-mfa-cli"></a>

**Come disattivare un dispositivo MFA per un utente IAM (AWS CLI)**
+ Eseguire il comando: [https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html)

## Disattivazione dei dispositivi MFA (API)AWS
<a name="deactivate-mfa-api"></a>

**Per disattivare un dispositivo MFA per un utente AWS IAM (API)**
+ Richiamare l'operazione: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html)

# Recuperare un'identità protetta da MFA in IAM
<a name="id_credentials_mfa_lost-or-broken"></a>

Se il [dispositivo MFA virtuale](id_credentials_mfa_enable_virtual.md) o il [token TOTP hardware](id_credentials_mfa_enable_physical.md) sembra funzionare correttamente, ma non è possibile utilizzarlo per accedere alle AWS risorse, potrebbe non essere sincronizzato con. AWS Per informazioni sulla sincronizzazione di un dispositivo MFA virtuale o hardware, consulta [Risincronizzare i dispositivi MFA virtuali e hardware](id_credentials_mfa_sync.md). [Le chiavi di sicurezza FIDO](id_credentials_mfa_enable_fido.md) sono sempre sincronizzate.

Se il [dispositivo MFA](id_credentials_mfa.md) di a Utente root dell'account AWS viene smarrito, danneggiato o non funziona, puoi ripristinare l'accesso al tuo account. Gli utenti IAM devono contattare un amministratore per disattivare il dispositivo.

**Importante**  
Consigliamo di attivare più dispositivi MFA. La registrazione di più dispositivi MFA aiuta a garantire l'accesso continuo in caso di smarrimento o danneggiamento di un dispositivo. I tuoi utenti Utente root dell'account AWS e IAM possono registrare fino a otto dispositivi MFA di qualsiasi tipo.

## Prerequisito: utilizzare un altro dispositivo MFA
<a name="mfa-lost-or-broken-prerequisites"></a>

Se il tuo [dispositivo di autenticazione a più fattori (MFA)](id_credentials_mfa.md) viene perso, danneggiato o non funziona, potrai accedere utilizzando un altro dispositivo MFA registrato dello stesso utente root o utente IAM.

**Per accedere utilizzando un altro dispositivo MFA**

1. Accedi alla [Console di gestione AWS](url-comsole-domain;iam) con il tuo ID Account AWS o l'alias e la password dell'account.

1. Nella pagina **Verifica aggiuntiva richiesta** o nella pagina **Autenticazione a più fattori**, scegli **Prova un altro metodo MFA**.

1. Effettua l'autenticazione con il tipo di dispositivo MFA selezionato.

1. Il passaggio successivo varia a seconda che l'accesso sia stato eseguito correttamente con un dispositivo MFA alternativo.
   + Se hai effettuato correttamente l'accesso, puoi [Risincronizzare i dispositivi MFA virtuali e hardware](id_credentials_mfa_sync.md), il che potrebbe risolvere il problema. In caso di smarrimento o di malfunzionamento del dispositivo MFA, puoi disattivarlo. Per istruzioni sulla disattivazione dei dispositivi MFA, consulta [Disattivare un dispositivo MFA](id_credentials_mfa_disable.md).
   + Se non riesci ad accedere con MFA, segui i passaggi indicati in [Ripristino di un dispositivo MFA per l'utente root](#root-mfa-lost-or-broken) o [Ripristino di un dispositivo MFA dell'utente IAM](#iam-user-mfa-lost-or-broken) per recuperare la tua identità protetta da MFA.



## Ripristino di un dispositivo MFA per l'utente root
<a name="root-mfa-lost-or-broken"></a>

Se non è possibile effettuare con MFA, puoi utilizzare metodi di autenticazione alternativi per accedere tramite la verifica dell'identità, utilizzando l'e-mail e il numero di telefono di contatto principale registrati nell'account.

Prima di utilizzare fattori di autenticazione alternativi per accedere come utente root, assicurati di avere accesso all'e-mail e al numero di telefono di contatto principale associati all'account. Se devi aggiornare il numero di telefono di contatto principale, puoi accedere come utente IAM con accesso da *Amministratore* anziché come utente root. Per ulteriori istruzioni sull'aggiornamento delle informazioni di contatto dell'account, consulta [Modifica le informazioni di contatto](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-contact-primary.html) nella *Guida per l'utente AWS Billing *. Se non hai accesso a un'e-mail e al numero di telefono di contatto principale, contatta [Supporto AWS](https://support.aws.amazon.com/#/contacts/aws-mfa-support).

**Importante**  
Ti consigliamo di mantenere aggiornati l'indirizzo email e il numero di telefono di contatto collegati all'utente root per ripristinare correttamente l'account. Per ulteriori informazioni, consulta [Aggiornare il contatto principale per Account AWS](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-contact-primary.html) nella *Guida di riferimento Gestione dell'account AWS *.

**Per accedere utilizzando fattori di autenticazione alternativi come Utente root dell'account AWS**

1.  Accedi [Console di gestione AWS](https://console.aws.amazon.com/)come proprietario dell'account scegliendo **Utente root** e inserendo il tuo indirizzo Account AWS email. Nella pagina successiva, inserisci la password.

1. Nella pagina **Verifica aggiuntiva richiesta**, seleziona un metodo MFA con cui eseguire l'autenticazione e scegli **Avanti.** 
**Nota**  
È possibile che venga visualizzato un testo alternativo, ad esempio **Sign in using MFA** (Accedi utilizzando la MFA), **Troubleshoot your authentication device** (Risolvi i problemi del tuo dispositivo di autenticazione) oppure **Troubleshoot MFA** (Risolvi i problemi di MFA), ma la funzionalità è la stessa. Se non riesci a utilizzare i fattori alternativi di autenticazione per verificare l'indirizzo e-mail e il numero di telefono di contatto principale, contatta [Supporto AWS](https://support.aws.amazon.com/#/contacts/aws-mfa-support) per disattivare il dispositivo MFA.

1. A seconda del tipo di MFA in uso, verrà visualizzata una pagina diversa, ma l'opzione **Risoluzione dei problemi relativi all'autenticazione MFA** funziona comunque. Nella pagina **Verifica aggiuntiva richiesta** o nella pagina **Autenticazione a più fattori**, scegli **Risoluzione dei problemi relativi all'autenticazione MFA**.

1. Se necessario, digitare di nuovo la password e selezionare **Accedi**.

1. Nella pagina **Risoluzione dei problemi del dispositivo di autenticazione**, in **Accedi utilizzando fattori alternativi di autenticazione**, scegli **Accedi utilizzando fattori alternativi**.

1. Nella pagina **Accedi utilizzando fattori di autenticazione alternativi**, autentica il tuo account verificando l'indirizzo e-mail e scegli **Invia email di verifica.** 

1. Controlla l'e-mail associata alla tua Account AWS per un messaggio proveniente da Amazon Web Services (recover-mfa-no-reply@verify .signin.aws). Seguire le istruzioni nel messaggio.

   Se il messaggio non fosse presente nell'account e-mail, controllare la cartella spam o tornare al browser e selezionare **Resend the email (Rinvia l'e-mail)**.

1. Una volta verificato l'indirizzo e-mail, puoi continuare con l'autenticazione dell'account. Per verificare il numero di telefono di contatto principale, scegli **Call me now** (Chiamami ora).

1. Rispondi alla chiamata da AWS e, quando richiesto, inserisci il numero a 6 cifre del sito Web sulla tastiera del telefono. AWS 

   Se non ricevi una chiamata da AWS, scegli **Accedi** per accedere nuovamente alla console e ricominciare da capo. In alternativa, consulta la sezione [Dispositivo di autenticazione a più fattori (MFA) perso o inutilizzabile](https://support.aws.amazon.com/#/contacts/aws-mfa-support) per contattare il supporto e richiedere assistenza.

1. Una volta effettuata la verifica del numero di telefono, è possibile effettuare l'accesso all'account selezionando **Sign in to the console (Accedi alla console)**.

1. La prossima fase varia a seconda del tipo di MFA in uso:
   + Se si utilizza un dispositivo MFA virtuale, rimuovere l'account dal dispositivo. Quindi passa alla pagina [Credenziali di sicurezza AWS](https://console.aws.amazon.com/iam/home?#security_credential) ed elimina l'entità del vecchio dispositivo MFA virtuale prima di crearne una nuova.
   + Se utilizzi una chiave di sicurezza FIDO, visita la pagina [Credenziali di sicurezza AWS](https://console.aws.amazon.com/iam/home?#security_credential) e disattiva la chiave di sicurezza FIDO precedente prima di abilitarne una nuova.
   + Per un token TOTP hardware, contatta il provider di terze parti per assistenza con la riparazione o la sostituzione del dispositivo. L'accesso tramite fattori alternativi di autenticazione può essere utilizzato fino alla ricezione di un nuovo dispositivo. Una volta ottenuto il nuovo dispositivo MFA hardware, passa alla pagina [Credenziali di sicurezza di AWS](https://console.aws.amazon.com/iam/home?#security_credential) ed elimina il vecchio dispositivo MFA.
**Nota**  
Non è necessario sostituire il dispositivo MFA smarrito o rubato con lo stesso tipo di dispositivo. Ad esempio, se la chiave di sicurezza FIDO viene danneggiata e ne ordini una nuova, potrai utilizzare il dispositivo MFA virtuale o il token TOTP hardware finché non ricevi la nuova chiave FIDO.

**Importante**  
In caso di smarrimento o furto del dispositivo MFA, modifica la password dell'utente root dopo aver effettuato l'accesso e aver installato il dispositivo MFA sostitutivo. Un malintenzionato potrebbe aver rubato il dispositivo di autenticazione e potrebbe anche avere la tua password attuale. Per ulteriori informazioni, consulta [Cambiare la password per Utente root dell'account AWS](root-user-password.md).

## Ripristino di un dispositivo MFA dell'utente IAM
<a name="iam-user-mfa-lost-or-broken"></a>

Se sei un utente IAM che non può accedere con MFA, non puoi recuperare un dispositivo MFA da solo, ma devi contattare un amministratore per disattivare il dispositivo. Quindi puoi abilitare un nuovo dispositivo.

**Come ottenere assistenza per un dispositivo MFA in qualità di utente IAM**

1. Contatta l' AWS amministratore o l'altra persona che ti ha fornito il nome utente e la password per l'utente IAM. L'amministratore deve disattivare il dispositivo MFA, come descritto in [Disattivare un dispositivo MFA](id_credentials_mfa_disable.md), in modo da consentire l'accesso.

1. La prossima fase varia a seconda del tipo di MFA in uso:
   + Se si utilizza un dispositivo MFA virtuale, rimuovere l'account dal dispositivo. Attivare il dispositivo virtuale come descritto in [Assegna un dispositivo MFA virtuale nel Console di gestione AWS](id_credentials_mfa_enable_virtual.md).
   + Per una chiave di sicurezza FIDO, contatta il provider di terze parti per ricevere assistenza con la sostituzione del dispositivo. Quando ricevi la nuova chiave di sicurezza FIDO, devi abilitarla come descritto nella sezione [Assegna una passkey o una chiave di sicurezza nel Console di gestione AWS](id_credentials_mfa_enable_fido.md).
   + Per un token TOTP hardware, contatta il provider di terze parti per assistenza con la riparazione o la sostituzione del dispositivo. Una volta ottenuto il nuovo dispositivo MFA fisico, abilitarlo nel modo descritto in [Assegna un token TOTP hardware nel Console di gestione AWS](id_credentials_mfa_enable_physical.md).
**Nota**  
Non è necessario sostituire il dispositivo MFA smarrito o rubato con lo stesso tipo di dispositivo. Puoi avere fino a otto dispositivi MFA in una qualsiasi combinazione. Ad esempio, se la chiave di sicurezza FIDO viene danneggiata e ne ordini una nuova, potrai utilizzare il dispositivo MFA virtuale o il token TOTP hardware finché non ricevi la nuova chiave FIDO.

1. Se il dispositivo MFA è stato smarrito o rubato, modificare anche la password nel caso in cui chi si è impossessato del dispositivo di autenticazione possieda anche la password attualmente in uso. Per ulteriori informazioni, consulta [Gestione delle password per gli utenti IAM](id_credentials_passwords_admin-change-user.md)

# Accesso sicuro alle API con MFA
<a name="id_credentials_mfa_configure-api-require"></a>

Con le policy IAM, è possibile specificare le operazioni API che un utente è autorizzato a chiamare. È possibile applicare una sicurezza aggiuntiva richiedendo agli utenti di eseguire l'autenticazione a più fattori (MFA) prima di consentire l'esecuzione di operazioni particolarmente sensibili.

Potrebbe ad esempio esserci una policy che permette a un utente di eseguire le operazioni `RunInstances`, `DescribeInstances` e `StopInstances` di Amazon EC2. Ma potresti voler limitare un'azione distruttiva come `TerminateInstances` e assicurarti che gli utenti possano eseguire tale azione solo se si autenticano con un dispositivo AWS MFA.

**Topics**
+ [Panoramica di](#MFAProtectedAPI-overview)
+ [Scenario: Protezione MFA per la delega tra account](#MFAProtectedAPI-cross-account-delegation)
+ [Scenario: Protezione MFA per l'accesso alle operazioni API nell'account corrente](#MFAProtectedAPI-user-mfa)
+ [Scenario: Protezione MFA per le risorse che hanno policy basate su risorse](#MFAProtectedAPI-resource-policies)

## Panoramica di
<a name="MFAProtectedAPI-overview"></a>

L'aggiunta della protezione MFA alle operazioni API prevede le operazioni seguenti:

1. L'amministratore configura un dispositivo AWS MFA per ogni utente che deve effettuare richieste API che richiedono l'autenticazione MFA. Per ulteriori informazioni, consulta [AWS Autenticazione a più fattori in IAM](id_credentials_mfa.md). 

1. L'amministratore crea politiche per gli utenti che includono un `Condition` elemento che verifica se l'utente si è autenticato con un dispositivo AWS MFA.

1. L'utente chiama una delle operazioni AWS STS API che supportano i parametri MFA: [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)o. [GetSessionToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) Durante la chiamata, l'utente include l'ID dispositivo per il dispositivo associato all'utente. L'utente include anche la password una tantum a tempo (TOTP) generata dal dispositivo. In entrambi i casi, l'utente ottiene le credenziali di sicurezza temporanee che può quindi usare per effettuare richieste aggiuntive in AWS.
**Nota**  
La protezione MFA per le operazioni API di un servizio è disponibile solo se il servizio supporta le credenziali di sicurezza temporanee. Per un elenco di questi servizi, consulta [Utilizzo di credenziali di sicurezza temporanee per accedere ad AWS](https://docs.aws.amazon.com/STS/latest/UsingSTS/UsingTokens.html).

Se l'autorizzazione AWS fallisce, restituisce un messaggio di errore di accesso negato (come accade per qualsiasi accesso non autorizzato). Con le politiche API protette da MFA, AWS nega l'accesso alle operazioni API specificate nelle politiche se l'utente tenta di richiamare un'operazione API senza un'autenticazione MFA valida. L'operazione viene rifiutata anche se il timestamp della richiesta di operazione API è al di fuori dell'intervallo consentito specificato nella policy. L'utente deve essere autenticato di nuovo con MFA richiedendo nuove credenziali di sicurezza temporanee con un codice MFA e il numero di serie del dispositivo.

### Policy IAM con condizioni MFA
<a name="MFAProtectedAPI-policies"></a>

Le policy con condizioni MFA possono essere collegate a:
+ Un utente o un gruppo IAM
+ Una risorsa, ad esempio un bucket Amazon S3, una coda Amazon SQS o un argomento Amazon SNS
+ La policy di attendibilità di un ruolo IAM che può essere assunto da un utente

Puoi usare una condizione MFA in una policy per controllare le proprietà seguenti:
+ Esistenza: per verificare semplicemente che l'utente abbia eseguito l'autenticazione con MFA, controlla che la chiave `aws:MultiFactorAuthPresent` sia `True` in una condizione `Bool`. La chiave è presente solo quando l'utente esegue l'autenticazione con credenziali a breve termine. Le credenziali a lungo termine, ad esempio le chiavi di accesso, non includono questa chiave.
+ Durata: se desideri concedere l'accesso solo per un periodo di tempo specificato dopo l'autenticazione MFA, usa una condizione di tipo numerico per confrontare la validità della chiave `aws:MultiFactorAuthAge` con un valore (ad esempio 3.600 secondi). Ricordati che la chiave `aws:MultiFactorAuthAge` non è presente se non è stata usata l'autenticazione MFA.

L'esempio seguente mostra la policy di attendibilità di un ruolo IAM che include una condizione MFA da testare per verificare l'esistenza dell'autenticazione MFA. Con questa politica, gli utenti Account AWS specificati nell'`Principal`elemento (sostituendo `ACCOUNT-B-ID` con un Account AWS ID valido) possono assumere il ruolo a cui è associata questa politica. ma solo se si sono autenticati tramite MFA.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Principal": {"AWS": "ACCOUNT-B-ID"},
    "Action": "sts:AssumeRole",
    "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
  }
}
```

------

Per ulteriori informazioni sui tipi di condizioni per MFA, consulta [AWS chiavi di contesto della condizione globale](reference_policies_condition-keys.md), [Operatori di condizione numerici](reference_policies_elements_condition_operators.md#Conditions_Numeric) e [Operatore di condizione per verificare la presenza di chiavi di condizione](reference_policies_elements_condition_operators.md#Conditions_Null). 

### Scegliendo tra GetSessionToken e AssumeRole
<a name="scenarios"></a>

AWS STS fornisce due operazioni API che consentono agli utenti di trasmettere informazioni MFA: `GetSessionToken` e. `AssumeRole` L'operazione API che l'utente chiama per ottenere le credenziali di sicurezza temporanee dipende dallo scenario applicabile tra quelli descritti di seguito. 

**Usa `GetSessionToken` per gli scenari seguenti:**
+ Chiama le operazioni API che accedono alle risorse nello Account AWS stesso modo in cui l'utente IAM effettua la richiesta. Tieni presente che le credenziali temporanee di una `GetSessionToken` richiesta possono accedere alle operazioni IAM e AWS STS API *solo* se includi informazioni MFA nella richiesta di credenziali. Poiché le credenziali temporanee restituite da `GetSessionToken` includono le informazioni MFA, puoi verificare l'MFA nelle singole operazioni API effettuate tramite le credenziali. 
+ Accesso alle risorse protette con policy basate su risorse che includono una condizione MFA.

Lo scopo dell'operazione `GetSessionToken` è autenticare l'utente tramite MFA. Non è possibile utilizzare le policy per controllare le operazioni di autenticazione.

**Usa `AssumeRole` per gli scenari seguenti:**
+ Chiamata alle operazioni API che accedono alle risorse nello stesso Account AWS o in un account diverso. Le chiamate API possono includere qualsiasi IAM o API. AWS STS Per proteggere l'accesso, l'autenticazione MFA viene applicata quando l'utente assume il ruolo. Le credenziali temporanee restituite da `AssumeRole` non includono le informazioni MFA nel contesto, quindi non puoi verificare l'MFA nelle singole operazioni API. Per questo motivo, è necessario usare `GetSessionToken` per limitare l'accesso alle risorse protette da policy basate su risorse.

**Nota**  
AWS CloudTrail i log conterranno informazioni MFA quando l'utente IAM accede con MFA. Se l'utente IAM assume un ruolo IAM, CloudTrail `mfaAuthenticated: true` accederà anche `sessionContext` agli attributi per le azioni eseguite utilizzando il ruolo assunto. Tuttavia, CloudTrail la registrazione è separata da ciò che IAM richiede quando le chiamate API vengono effettuate con le credenziali del ruolo assunto. Per ulteriori informazioni, consulta [Elemento CloudTrail userIdentity](https://docs.aws.amazon.com//awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html).

Le informazioni su come implementare questi scenari vengono fornite più avanti in questo documento.

### Considerazioni importanti sull'accesso alle API protetto da MFA
<a name="MFAProtectedAPI-important-points"></a>

È importante comprendere i seguenti aspetti della protezione MFA per le operazioni API:
+ La protezione MFA è disponibile solo con le credenziali di sicurezza temporanee, che è possibile ottenere con `AssumeRole` o `GetSessionToken`. 
+ Non è possibile utilizzare l'accesso alle API protetto da MFA con credenziali. Utente root dell'account AWS 
+ Non è possibile usare l'accesso alle API protetto da MFA con chiavi di sicurezza U2F.
+ Agli utenti federati non può essere assegnato un dispositivo MFA da utilizzare AWS con i servizi, quindi non possono AWS accedere alle risorse controllate dalla MFA. Vedi il punto successivo. 
+ Altre operazioni AWS STS API che restituiscono credenziali temporanee non supportano l'MFA. Per `AssumeRoleWithWebIdentity` e`AssumeRoleWithSAML`, l'utente è autenticato da un provider esterno e AWS non può determinare se tale provider abbia richiesto l'autenticazione MFA. Per `GetFederationToken`, l'autenticazione MFA non è necessariamente associata a un utente specifico. 
+ Analogamente, le credenziali a lungo termine (chiavi di accesso dell'utente IAM e chiavi di accesso dell'utente root) non possono essere usate con l'accesso alle API protetto da MFA perché non scadono.
+ È possibile chiamare `AssumeRole` e `GetSessionToken` anche senza informazioni MFA. In tal caso, il chiamante riceve le credenziali di sicurezza temporanee, ma le informazioni di sessione per tali credenziali temporanee non indicano che l'utente ha eseguito l'autenticazione con MFA.
+ Per stabilire la protezione MFA per le operazioni API, aggiungi condizioni MFA alle policy. Una policy deve includere la chiave di condizione `aws:MultiFactorAuthPresent` per implementare l'uso dell'MFA. Per la delega tra più account, la policy di attendibilità del ruolo deve includere la chiave di condizione.
+ Quando consenti Account AWS a un altro utente di accedere alle risorse del tuo account, la sicurezza delle tue risorse dipende dalla configurazione dell'account fidato (l'altro account, non il tuo). Questo vale anche quando è richiesta la multi-factor authentication. Qualsiasi identità nell'account attendibile che dispone dell'autorizzazione per creare dispositivi MFA virtuali può creare un'attestazione MFA per soddisfare tale parte della policy di affidabilità del ruolo. Prima di consentire ai membri di un altro account di accedere alle tue AWS risorse che richiedono l'autenticazione a più fattori, devi assicurarti che il proprietario dell'account fidato segua le migliori pratiche di sicurezza. Ad esempio, l'account attendibile deve limitare l'accesso alle operazioni API sensibili, ad esempio le operazioni API di gestione dei dispositivi MFA, a identità attendibili specifiche.
+ Se una policy include una condizione MFA, una richiesta viene negata se gli utenti non sono stati autenticati tramite MFA oppure se forniscono una password TOTP o un identificatore di dispositivo MFA non valido.

## Scenario: Protezione MFA per la delega tra account
<a name="MFAProtectedAPI-cross-account-delegation"></a>

In questo scenario, desideri delegare l'accesso agli utenti IAM in un altro account, ma solo se gli utenti sono autenticati con un dispositivo MFA AWS . Per ulteriori informazioni sulla delega tra più account, consulta [Termini e concetti dei ruoli](id_roles.md#id_roles_terms-and-concepts). 

Immagina di avere un account A (l'account che determina l'attendibilità, proprietario della risorsa a cui è necessario accedere), con l'utente IAM Anaya, che ha l'autorizzazione di amministratore. Anaya desidera concedere l'accesso all'utente Richard nell'account B (l'account attendibile), ma vuole assicurarsi che Richard sia autenticato con MFA prima di poter assumere il ruolo. 

1. Nell'account di fiducia A, Anaya crea un ruolo IAM denominato `CrossAccountRole` e imposta come principale nella politica di fiducia del ruolo l'ID dell'account B. La politica di fiducia concede l'autorizzazione all'azione. AWS STS `AssumeRole` Anaya aggiunge inoltre una condizione MFA alla policy di trust, come nell'esempio seguente. 

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Allow",
       "Principal": {"AWS": "ACCOUNT-B-ID"},
       "Action": "sts:AssumeRole",
       "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
     }
   }
   ```

------

1. Anaya aggiunge una policy di autorizzazione al ruolo che specifica le attività consentite per il ruolo. La policy di autorizzazione per un ruolo con protezione MFA è uguale a qualsiasi altra policy di autorizzazione di un ruolo. L'esempio seguente mostra la policy aggiunta al ruolo da Anaya, che consente a un utente ipotetico di eseguire qualsiasi operazione Amazon DynamoDB sulla tabella `Books` nell'account A. Questa policy consente anche l'operazione `dynamodb:ListTables`, necessaria per eseguire operazioni nella console. 
**Nota**  
La policy di autorizzazione non include una condizione MFA. È importante comprendere che l'autenticazione MFA viene usata solo per determinare se un utente può assumere tale ruolo. Una volta che l'utente ha assunto il ruolo, non vengono svolti ulteriori controlli MFA. 

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "TableActions",
               "Effect": "Allow",
               "Action": "dynamodb:*",
               "Resource": "arn:aws:dynamodb:*:111122223333:table/Books"
           },
           {
               "Sid": "ListTables",
               "Effect": "Allow",
               "Action": "dynamodb:ListTables",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Nell'account attendibile B, l'amministratore si assicura che l'utente IAM Richard sia configurato con un dispositivo AWS MFA e che conosca l'ID del dispositivo. ovvero il numero di serie se si tratta di un dispositivo MFA hardware o l'ARN del dispositivo se si tratta di un dispositivo MFA virtuale.

1. Nell'account B, l'amministratore collega all'utente Richard (o un gruppo di cui è membro) la policy seguente, che gli permette di chiamare l'operazione `AssumeRole`. La risorsa è impostata sull'ARN del ruolo creato da Anaya nella fase 1. Osserva che questa policy non contiene una condizione MFA.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sts:AssumeRole"
               ],
               "Resource": [
                   "arn:aws:iam::111122223333:role/CrossAccountRole"
               ]
           }
       ]
   }
   ```

------

1. Nell'account B, Richard (o un'applicazione che Richard sta eseguendo) chiama `AssumeRole`. La chiamata dell'API include l'ARN del ruolo da assumere (`arn:aws:iam::ACCOUNT-A-ID:role/CrossAccountRole`), l'ID del dispositivo MFA e la password TOTP corrente che Richard ottiene dal suo dispositivo. 

   Quando Richard chiama`AssumeRole`, AWS determina se dispone di credenziali valide, incluso il requisito per l'MFA. In caso affermativo, Richard assume correttamente il ruolo e può eseguire qualsiasi operazione DynamoDB sulla tabella denominata `Books` nell'account A usando le credenziali temporanee del ruolo. 

   Per un esempio di programma che chiama `AssumeRole`, consulta [AssumeRole Chiamate con autenticazione MFA](id_credentials_mfa_sample-code.md#MFAProtectedAPI-example-assumerole).

## Scenario: Protezione MFA per l'accesso alle operazioni API nell'account corrente
<a name="MFAProtectedAPI-user-mfa"></a>

In questo scenario, dovresti assicurarti che un tuo utente Account AWS possa accedere alle operazioni API sensibili solo quando l'utente è autenticato utilizzando un dispositivo AWS MFA.

Immagina di avere un account A che contiene un gruppo di sviluppatori che devono usare le istanze EC2. In genere, gli sviluppatori possono usare le istanze, ma non hanno le autorizzazioni per le operazioni `ec2:StopInstances` e `ec2:TerminateInstances`. È opportuno limitare queste operazioni privilegiate "distruttive" a pochi utenti attendibili, quindi aggiungi la protezione MFA alla policy che permette queste operazioni Amazon EC2 sensibili. 

In questo scenario, uno degli utenti attendibili è Sofía. L'utente Anaya è un amministratore nell'account A. 

1. Anaya si assicura che Sofía sia configurata con un dispositivo AWS MFA e che Sofía conosca l'ID del dispositivo. ovvero il numero di serie se si tratta di un dispositivo MFA hardware o l'ARN del dispositivo se si tratta di un dispositivo MFA virtuale. 

1. Anaya crea un gruppo denominato `EC2-Admins` e aggiunge l'utente Sofía al gruppo.

1. Anaya collega la policy seguente al gruppo `EC2-Admins`. Questa policy concede agli utenti l'autorizzazione per chiamare le operazioni `StopInstances` e `TerminateInstances` di Amazon EC2 solo se l'utente ha eseguito l'autenticazione tramite MFA. 

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Action": [
         "ec2:StopInstances",
         "ec2:TerminateInstances"
       ],
       "Resource": ["*"],
       "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
     }]
   }
   ```

------

1. 
**Nota**  
Per rendere effettiva questa policy, gli utenti devono prima disconnettersi e quindi accedere nuovamente.

   Se l'utente Sofía deve arrestare o terminare un'istanza Amazon EC2, l'utente o un'applicazione da lei eseguita, chiama `GetSessionToken`. Questa operazione API passa l'ID o del dispositivo MFA e la password TOTP corrente che Sofía ottiene dal suo dispositivo.

1. L'utente Sofía (o un'applicazione che Sofía sta usando) usa le credenziali temporanee fornite da `GetSessionToken` per chiamare l'operazione `StopInstances` o `TerminateInstances` di Amazon EC2. 

   Per un esempio di programma che chiama `GetSessionToken`, consulta [GetSessionToken Chiamate con autenticazione MFA](id_credentials_mfa_sample-code.md#MFAProtectedAPI-example-getsessiontoken) più avanti in questo documento.

## Scenario: Protezione MFA per le risorse che hanno policy basate su risorse
<a name="MFAProtectedAPI-resource-policies"></a>

In questo scenario, sei il proprietario di un bucket S3, una coda SQS o un argomento SNS. Vuoi assicurarti che tutti gli utenti Account AWS che accedono alla risorsa siano autenticati da un dispositivo MFA AWS . 

Questo scenario illustra un modo per fornire la protezione MFA per più account senza richiedere agli utenti di assumere prima un ruolo. In tal caso, l'utente può accedere alla risorsa se vengono soddisfatte tre condizioni: l'utente deve essere autenticato mediante MFA, essere in grado di ottenere credenziali di sicurezza temporanee da `GetSessionToken` ed essere in un account ritenuto attendibile dalla policy della risorsa. 

Immagina di avere l'account A e di creare un bucket S3. Desideri concedere l'accesso a questo bucket agli utenti che si trovano in diversi ambienti Account AWS, ma solo se tali utenti sono autenticati con MFA.

In questo scenario, l'utente Anaya è un amministratore nell'account A. L'utente Nikhil è un utente IAM nell'account C.

1. Nell'account A, Anaya crea un bucket denominato `Account-A-bucket`.

1. Anaya aggiunge la policy del bucket al bucket. La policy permette a qualsiasi utente in un account A, un account B o un account C di eseguire le operazioni `PutObject` e `DeleteObject` di Amazon S3 nel bucket. La policy include una condizione MFA. 

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Principal": {"AWS": [
         "ACCOUNT-A-ID",
         "ACCOUNT-B-ID",
         "ACCOUNT-C-ID"
       ]},
       "Action": [
         "s3:PutObject",
         "s3:DeleteObject"
       ],
       "Resource": ["arn:aws:s3:::ACCOUNT-A-BUCKET-NAME/*"],
       "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
     }]
   }
   ```

------
**Nota**  
Amazon S3 offre la funzionalità Cancellazione MFA solo per l'accesso all'account *root*. Puoi abilitare la funzionalità Cancellazione MFA di Amazon S3 quando imposti lo stato del controllo delle versioni del bucket. La funzionalità Cancellazione MFA di Amazon S3 non può essere applicata a un utente IAM e viene gestita indipendentemente dall'accesso alle API protetto da MFA. Un utente IAM con l'autorizzazione per eliminare un bucket non può eliminare un bucket quando la funzionalità Cancellazione MFA di Amazon S3 è abilitata. Per ulteriori informazioni sulla funzionalità Cancellazione MFA di Amazon S3, consulta [Cancellazione MFA](https://docs.aws.amazon.com/AmazonS3/latest/dev/MultiFactorAuthenticationDelete.html).

1. Nell'account C, un amministratore verifica che l'utente Nikhil sia configurato con un dispositivo MFA AWS e che conosca l'ID del dispositivo. ovvero il numero di serie se si tratta di un dispositivo MFA hardware o l'ARN del dispositivo se si tratta di un dispositivo MFA virtuale. 

1. Nell'account C, Nikhil (o un'applicazione che lui sta eseguendo) chiama `GetSessionToken`. La chiamata include l'ID o l'ARN del dispositivo MFA e la password TOTP corrente che Nikhil ottiene dal suo dispositivo. 

1. Nikhil (o un'applicazione che lui sta usando) usa le credenziali temporanee restituite da `GetSessionToken` per chiamare l'operazione `PutObject` di Amazon S3 per caricare un file in `Account-A-bucket`. 

   Per un esempio di programma che chiama `GetSessionToken`, consulta [GetSessionToken Chiamate con autenticazione MFA](id_credentials_mfa_sample-code.md#MFAProtectedAPI-example-getsessiontoken) più avanti in questo documento.
**Nota**  
Le credenziali temporanee che `AssumeRole` restituisce non funzionano in questo caso. Anche se l'utente è in grado di fornire informazioni MFA per assumere un ruolo, le credenziali temporanee restituite da `AssumeRole` non includono le informazioni MFA. Queste informazione sono necessarie per soddisfare la condizione MFA nella policy. 

# Codice di esempio: richiesta di credenziali con l'autenticazione a più fattori (MFA)
<a name="id_credentials_mfa_sample-code"></a>

I seguenti esempi mostrano come chiamare le operazioni `GetSessionToken` e `AssumeRole` e passare i parametri di autenticazione MFA. Non è richiesta alcuna autorizzazione per chiamare `GetSessionToken`, ma è necessario disporre di una policy che permetta di chiamare `AssumeRole`. Le credenziali restituite vengono quindi utilizzate per elencare tutti i bucket S3 nell'account.

## GetSessionToken Chiamate con autenticazione MFA
<a name="MFAProtectedAPI-example-getsessiontoken"></a>

I seguenti esempi mostrano come chiamare `GetSessionToken` e passare le informazioni sull'autenticazione MFA. Le credenziali di sicurezza temporanee restituite dall'operazione `GetSessionToken` vengono quindi utilizzate per elencare tutti i bucket S3 nell'account.

La policy collegata all'utente che esegue questo codice (o a un gruppo in cui si trova utente) fornisce le autorizzazioni per le credenziali temporanee restituite. Per questo codice di esempio, la policy deve concedere all'utente l'autorizzazione per richiedere l'operazione `ListBuckets` di Amazon S3. 

Gli esempi di codice seguenti mostrano come utilizzare `GetSessionToken`.

------
#### [ CLI ]

**AWS CLI**  
**Come ottenere un set di credenziali a breve termine per un’identità IAM**  
il comando `get-session-token` seguente recupera un set di credenziali a breve termine per l’identità IAM che esegue la chiamata. Le credenziali risultanti possono essere utilizzate per richieste in cui l’autenticazione a più fattori (MFA) è richiesta dalla policy. Le credenziali scadono 15 minuti dopo la loro generazione.  

```
aws sts get-session-token \
    --duration-seconds 900 \
    --serial-number "YourMFADeviceSerialNumber" \
    --token-code 123456
```
Output:  

```
{
    "Credentials": {
        "AccessKeyId": "ASIAIOSFODNN7EXAMPLE",
        "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY",
        "SessionToken": "AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtpZ3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE",
        "Expiration": "2020-05-19T18:06:10+00:00"
    }
}
```
Per ulteriori informazioni, consulta [Richiesta di credenziali di sicurezza temporanee](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_getsessiontoken) nella *AWS Guida per l’utente di IAM*.  
+  Per i dettagli sull'API, consulta [GetSessionToken AWS CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/get-session-token.html)*Command Reference.* 

------
#### [ PowerShell ]

**Strumenti per PowerShell V4**  
**Esempio 1: restituisce un’istanza `Amazon.RuntimeAWSCredentials` contenente credenziali temporanee valide per un determinato periodo di tempo. Le credenziali utilizzate per richiedere credenziali temporanee vengono dedotte dalle impostazioni predefinite correnti della shell. Per specificare altre credenziali, utilizzare i parametri - ProfileName o - AccessKey SecretKey /.**  

```
Get-STSSessionToken
```
**Output:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
**Esempio 2: restituisce un’istanza `Amazon.RuntimeAWSCredentials` contenente credenziali temporanee valide per un’ora. Le credenziali utilizzate per effettuare la richiesta vengono ottenute dal profilo specificato.**  

```
Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile
```
**Output:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
**Esempio 3: restituisce un’istanza `Amazon.RuntimeAWSCredentials` contenente credenziali temporanee valide per un’ora utilizzando il numero di identificazione del dispositivo MFA associato all’account le cui credenziali sono specificate nel profilo ’myprofilename’ e il valore fornito dal dispositivo.**  

```
Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile -SerialNumber YourMFADeviceSerialNumber -TokenCode 123456
```
**Output:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
+  Per i dettagli sull'API, vedere [GetSessionToken](https://docs.aws.amazon.com/powershell/v4/reference)in *AWS Strumenti per PowerShell Cmdlet Reference* (V4). 

**Strumenti per V5 PowerShell **  
**Esempio 1: restituisce un’istanza `Amazon.RuntimeAWSCredentials` contenente credenziali temporanee valide per un determinato periodo di tempo. Le credenziali utilizzate per richiedere credenziali temporanee vengono dedotte dalle impostazioni predefinite correnti della shell. Per specificare altre credenziali, utilizzare i parametri - ProfileName o - AccessKey SecretKey /.**  

```
Get-STSSessionToken
```
**Output:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
**Esempio 2: restituisce un’istanza `Amazon.RuntimeAWSCredentials` contenente credenziali temporanee valide per un’ora. Le credenziali utilizzate per effettuare la richiesta vengono ottenute dal profilo specificato.**  

```
Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile
```
**Output:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
**Esempio 3: restituisce un’istanza `Amazon.RuntimeAWSCredentials` contenente credenziali temporanee valide per un’ora utilizzando il numero di identificazione del dispositivo MFA associato all’account le cui credenziali sono specificate nel profilo ’myprofilename’ e il valore fornito dal dispositivo.**  

```
Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile -SerialNumber YourMFADeviceSerialNumber -TokenCode 123456
```
**Output:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
+  Per i dettagli sull'API, vedere [GetSessionToken](https://docs.aws.amazon.com/powershell/v5/reference)in *AWS Strumenti per PowerShell Cmdlet Reference* (V5). 

------
#### [ Python ]

**SDK per Python (Boto3)**  
 C'è di più su. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel [Repository di esempi di codice AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python/example_code/sts#code-examples). 
Recupera un token di sessione passando un token MFA e utilizzalo per elencare i bucket Amazon S3 per l’account.  

```
def list_buckets_with_session_token_with_mfa(mfa_serial_number, mfa_totp, sts_client):
    """
    Gets a session token with MFA credentials and uses the temporary session
    credentials to list Amazon S3 buckets.

    Requires an MFA device serial number and token.

    :param mfa_serial_number: The serial number of the MFA device. For a virtual MFA
                              device, this is an Amazon Resource Name (ARN).
    :param mfa_totp: A time-based, one-time password issued by the MFA device.
    :param sts_client: A Boto3 STS instance that has permission to assume the role.
    """
    if mfa_serial_number is not None:
        response = sts_client.get_session_token(
            SerialNumber=mfa_serial_number, TokenCode=mfa_totp
        )
    else:
        response = sts_client.get_session_token()
    temp_credentials = response["Credentials"]

    s3_resource = boto3.resource(
        "s3",
        aws_access_key_id=temp_credentials["AccessKeyId"],
        aws_secret_access_key=temp_credentials["SecretAccessKey"],
        aws_session_token=temp_credentials["SessionToken"],
    )

    print(f"Buckets for the account:")
    for bucket in s3_resource.buckets.all():
        print(bucket.name)
```
+  Per i dettagli sull'API, consulta [GetSessionToken AWS](https://docs.aws.amazon.com/goto/boto3/sts-2011-06-15/GetSessionToken)*SDK for Python (Boto3) API Reference*. 

------

## AssumeRole Chiamate con autenticazione MFA
<a name="MFAProtectedAPI-example-assumerole"></a>

I seguenti esempi mostrano come chiamare `AssumeRole` e passare le informazioni sull'autenticazione MFA. Le credenziali di sicurezza temporanee restituite da `AssumeRole` vengono quindi utilizzate per elencare tutti i bucket Amazon S3 nell'account.

Per ulteriori informazioni su questo scenario, consulta [Scenario: Protezione MFA per la delega tra account](id_credentials_mfa_configure-api-require.md#MFAProtectedAPI-cross-account-delegation). 

Gli esempi di codice seguenti mostrano come utilizzare `AssumeRole`.

------
#### [ .NET ]

**SDK per .NET**  
 C'è altro da fare. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel [Repository di esempi di codice AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3/STS#code-examples). 

```
using System;
using System.Threading.Tasks;
using Amazon;
using Amazon.SecurityToken;
using Amazon.SecurityToken.Model;

namespace AssumeRoleExample
{
    class AssumeRole
    {
        /// <summary>
        /// This example shows how to use the AWS Security Token
        /// Service (AWS STS) to assume an IAM role.
        ///
        /// NOTE: It is important that the role that will be assumed has a
        /// trust relationship with the account that will assume the role.
        ///
        /// Before you run the example, you need to create the role you want to
        /// assume and have it trust the IAM account that will assume that role.
        ///
        /// See https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html
        /// for help in working with roles.
        /// </summary>

        // A region property may be used if the profile or credentials loaded do not specify a region,
        // or to use a specific region.
        private static readonly RegionEndpoint REGION = RegionEndpoint.USWest2;

        static async Task Main()
        {
            // Create the SecurityToken client and then display the identity of the
            // default user.
            var roleArnToAssume = "arn:aws:iam::123456789012:role/testAssumeRole";

            var client = new Amazon.SecurityToken.AmazonSecurityTokenServiceClient(REGION);

            // Get and display the information about the identity of the default user.
            var callerIdRequest = new GetCallerIdentityRequest();
            var caller = await client.GetCallerIdentityAsync(callerIdRequest);
            Console.WriteLine($"Original Caller: {caller.Arn}");

            // Create the request to use with the AssumeRoleAsync call.
            var assumeRoleReq = new AssumeRoleRequest()
            {
                DurationSeconds = 1600,
                RoleSessionName = "Session1",
                RoleArn = roleArnToAssume
            };

            var assumeRoleRes = await client.AssumeRoleAsync(assumeRoleReq);

            // Now create a new client based on the credentials of the caller assuming the role.
            var client2 = new AmazonSecurityTokenServiceClient(credentials: assumeRoleRes.Credentials, REGION);

            // Get and display information about the caller that has assumed the defined role.
            var caller2 = await client2.GetCallerIdentityAsync(callerIdRequest);
            Console.WriteLine($"AssumedRole Caller: {caller2.Arn}");
        }
    }
}
```
+  Per i dettagli sull'API, consulta la [AssumeRole](https://docs.aws.amazon.com/goto/DotNetSDKV3/sts-2011-06-15/AssumeRole)sezione *AWS SDK per .NET API Reference*. 

------
#### [ Bash ]

**AWS CLI con lo script Bash**  
 C'è altro da fare. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel [Repository di esempi di codice AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/aws-cli/bash-linux/iam#code-examples). 

```
###############################################################################
# function iecho
#
# This function enables the script to display the specified text only if
# the global variable $VERBOSE is set to true.
###############################################################################
function iecho() {
  if [[ $VERBOSE == true ]]; then
    echo "$@"
  fi
}

###############################################################################
# function errecho
#
# This function outputs everything sent to it to STDERR (standard error output).
###############################################################################
function errecho() {
  printf "%s\n" "$*" 1>&2
}

###############################################################################
# function sts_assume_role
#
# This function assumes a role in the AWS account and returns the temporary
#  credentials.
#
# Parameters:
#       -n role_session_name -- The name of the session.
#       -r role_arn -- The ARN of the role to assume.
#
# Returns:
#       [access_key_id, secret_access_key, session_token]
#     And:
#       0 - If successful.
#       1 - If an error occurred.
###############################################################################
function sts_assume_role() {
  local role_session_name role_arn response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function sts_assume_role"
    echo "Assumes a role in the AWS account and returns the temporary credentials:"
    echo "  -n role_session_name -- The name of the session."
    echo "  -r role_arn -- The ARN of the role to assume."
    echo ""
  }

  while getopts n:r:h option; do
    case "${option}" in
      n) role_session_name=${OPTARG} ;;
      r) role_arn=${OPTARG} ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done

  response=$(aws sts assume-role \
    --role-session-name "$role_session_name" \
    --role-arn "$role_arn" \
    --output text \
    --query "Credentials.[AccessKeyId, SecretAccessKey, SessionToken]")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports create-role operation failed.\n$response"
    return 1
  fi

  echo "$response"

  return 0
}
```
+  Per i dettagli sull'API, consulta [AssumeRole AWS CLI](https://docs.aws.amazon.com/goto/aws-cli/sts-2011-06-15/AssumeRole)*Command Reference*. 

------
#### [ C\$1\$1 ]

**SDK per C\$1\$1**  
 C'è altro su GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel [Repository di esempi di codice AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sts#code-examples). 

```
bool AwsDoc::STS::assumeRole(const Aws::String &roleArn,
                             const Aws::String &roleSessionName,
                             const Aws::String &externalId,
                             Aws::Auth::AWSCredentials &credentials,
                             const Aws::Client::ClientConfiguration &clientConfig) {
    Aws::STS::STSClient sts(clientConfig);
    Aws::STS::Model::AssumeRoleRequest sts_req;

    sts_req.SetRoleArn(roleArn);
    sts_req.SetRoleSessionName(roleSessionName);
    sts_req.SetExternalId(externalId);

    const Aws::STS::Model::AssumeRoleOutcome outcome = sts.AssumeRole(sts_req);

    if (!outcome.IsSuccess()) {
        std::cerr << "Error assuming IAM role. " <<
                  outcome.GetError().GetMessage() << std::endl;
    }
    else {
        std::cout << "Credentials successfully retrieved." << std::endl;
        const Aws::STS::Model::AssumeRoleResult result = outcome.GetResult();
        const Aws::STS::Model::Credentials &temp_credentials = result.GetCredentials();

        // Store temporary credentials in return argument.
        // Note: The credentials object returned by assumeRole differs
        // from the AWSCredentials object used in most situations.
        credentials.SetAWSAccessKeyId(temp_credentials.GetAccessKeyId());
        credentials.SetAWSSecretKey(temp_credentials.GetSecretAccessKey());
        credentials.SetSessionToken(temp_credentials.GetSessionToken());
    }

    return outcome.IsSuccess();
}
```
+  Per i dettagli sull'API, consulta la [AssumeRole](https://docs.aws.amazon.com/goto/SdkForCpp/sts-2011-06-15/AssumeRole)sezione *AWS SDK per C\$1\$1 API Reference*. 

------
#### [ CLI ]

**AWS CLI**  
**Come assumere un ruolo**  
Il comando `assume-role` seguente recupera un set di credenziali a breve termine per il ruolo IAM `s3-access-example`.  

```
aws sts assume-role \
    --role-arn arn:aws:iam::123456789012:role/xaccounts3access \
    --role-session-name s3-access-example
```
Output:  

```
{
    "AssumedRoleUser": {
        "AssumedRoleId": "AROA3XFRBF535PLBIFPI4:s3-access-example",
        "Arn": "arn:aws:sts::123456789012:assumed-role/xaccounts3access/s3-access-example"
    },
    "Credentials": {
        "SecretAccessKey": "9drTJvcXLB89EXAMPLELB8923FB892xMFI",
        "SessionToken": "AQoXdzELDDY//////////wEaoAK1wvxJY12r2IrDFT2IvAzTCn3zHoZ7YNtpiQLF0MqZye/qwjzP2iEXAMPLEbw/m3hsj8VBTkPORGvr9jM5sgP+w9IZWZnU+LWhmg+a5fDi2oTGUYcdg9uexQ4mtCHIHfi4citgqZTgco40Yqr4lIlo4V2b2Dyauk0eYFNebHtYlFVgAUj+7Indz3LU0aTWk1WKIjHmmMCIoTkyYp/k7kUG7moeEYKSitwQIi6Gjn+nyzM+PtoA3685ixzv0R7i5rjQi0YE0lf1oeie3bDiNHncmzosRM6SFiPzSvp6h/32xQuZsjcypmwsPSDtTPYcs0+YN/8BRi2/IcrxSpnWEXAMPLEXSDFTAQAM6Dl9zR0tXoybnlrZIwMLlMi1Kcgo5OytwU=",
        "Expiration": "2016-03-15T00:05:07Z",
        "AccessKeyId": "ASIAJEXAMPLEXEG2JICEA"
    }
}
```
L’output del comando contiene una chiave di accesso, una chiave segreta e un token di sessione che puoi utilizzare per l’autenticazione in AWS.  
Per l'utilizzo della AWS CLI, è possibile impostare un profilo denominato associato a un ruolo. Quando utilizzi il profilo, la AWS CLI chiamerà assume-role e gestirà le credenziali per te. *Per ulteriori informazioni, consulta [Utilizzare un ruolo IAM nella CLI nella AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html) User Guide AWS .*  
+  Per i dettagli sull'API, consulta *AWS CLI Command [AssumeRole](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/assume-role.html)Reference*. 

------
#### [ Java ]

**SDK per Java 2.x**  
 C'è altro su GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel [Repository di esempi di codice AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/sts#code-examples). 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sts.StsClient;
import software.amazon.awssdk.services.sts.model.AssumeRoleRequest;
import software.amazon.awssdk.services.sts.model.StsException;
import software.amazon.awssdk.services.sts.model.AssumeRoleResponse;
import software.amazon.awssdk.services.sts.model.Credentials;
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.util.Locale;

/**
 * To make this code example work, create a Role that you want to assume.
 * Then define a Trust Relationship in the AWS Console. You can use this as an
 * example:
 *
 * {
 * "Version":"2012-10-17",		 	 	 
 * "Statement": [
 * {
 * "Effect": "Allow",
 * "Principal": {
 * "AWS": "<Specify the ARN of your IAM user you are using in this code example>"
 * },
 * "Action": "sts:AssumeRole"
 * }
 * ]
 * }
 *
 * For more information, see "Editing the Trust Relationship for an Existing
 * Role" in the AWS Directory Service guide.
 *
 * Also, set up your development environment, including your credentials.
 *
 * For information, see this documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class AssumeRole {
    public static void main(String[] args) {
        final String usage = """

                Usage:
                    <roleArn> <roleSessionName>\s

                Where:
                    roleArn - The Amazon Resource Name (ARN) of the role to assume (for example, arn:aws:iam::000008047983:role/s3role).\s
                    roleSessionName - An identifier for the assumed role session (for example, mysession).\s
                """;

        if (args.length != 2) {
            System.out.println(usage);
            System.exit(1);
        }

        String roleArn = args[0];
        String roleSessionName = args[1];
        Region region = Region.US_EAST_1;
        StsClient stsClient = StsClient.builder()
                .region(region)
                .build();

        assumeGivenRole(stsClient, roleArn, roleSessionName);
        stsClient.close();
    }

    public static void assumeGivenRole(StsClient stsClient, String roleArn, String roleSessionName) {
        try {
            AssumeRoleRequest roleRequest = AssumeRoleRequest.builder()
                    .roleArn(roleArn)
                    .roleSessionName(roleSessionName)
                    .build();

            AssumeRoleResponse roleResponse = stsClient.assumeRole(roleRequest);
            Credentials myCreds = roleResponse.credentials();

            // Display the time when the temp creds expire.
            Instant exTime = myCreds.expiration();
            String tokenInfo = myCreds.sessionToken();

            // Convert the Instant to readable date.
            DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT)
                    .withLocale(Locale.US)
                    .withZone(ZoneId.systemDefault());

            formatter.format(exTime);
            System.out.println("The token " + tokenInfo + "  expires on " + exTime);

        } catch (StsException e) {
            System.err.println(e.getMessage());
            System.exit(1);
        }
    }
}
```
+  Per i dettagli sull'API, consulta la [AssumeRole](https://docs.aws.amazon.com/goto/SdkForJavaV2/sts-2011-06-15/AssumeRole)sezione *AWS SDK for Java 2.x API Reference*. 

------
#### [ JavaScript ]

**SDK per JavaScript (v3)**  
 C'è altro da fare. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel [Repository di esempi di codice AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/sts#code-examples). 
Crea il client.  

```
import { STSClient } from "@aws-sdk/client-sts";
// Set the AWS Region.
const REGION = "us-east-1";
// Create an AWS STS service client object.
export const client = new STSClient({ region: REGION });
```
Assumi il ruolo IAM.  

```
import { AssumeRoleCommand } from "@aws-sdk/client-sts";

import { client } from "../libs/client.js";

export const main = async () => {
  try {
    // Returns a set of temporary security credentials that you can use to
    // access Amazon Web Services resources that you might not normally
    // have access to.
    const command = new AssumeRoleCommand({
      // The Amazon Resource Name (ARN) of the role to assume.
      RoleArn: "ROLE_ARN",
      // An identifier for the assumed role session.
      RoleSessionName: "session1",
      // The duration, in seconds, of the role session. The value specified
      // can range from 900 seconds (15 minutes) up to the maximum session
      // duration set for the role.
      DurationSeconds: 900,
    });
    const response = await client.send(command);
    console.log(response);
  } catch (err) {
    console.error(err);
  }
};
```
+  Per i dettagli sull'API, consulta la [AssumeRole](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sts/command/AssumeRoleCommand)sezione *AWS SDK per JavaScript API Reference*. 

**SDK per JavaScript (v2)**  
 C'è altro da fare. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel [Repository di esempi di codice AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascript/example_code/sts#code-examples). 

```
// Load the AWS SDK for Node.js
const AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

var roleToAssume = {
  RoleArn: "arn:aws:iam::123456789012:role/RoleName",
  RoleSessionName: "session1",
  DurationSeconds: 900,
};
var roleCreds;

// Create the STS service object
var sts = new AWS.STS({ apiVersion: "2011-06-15" });

//Assume Role
sts.assumeRole(roleToAssume, function (err, data) {
  if (err) console.log(err, err.stack);
  else {
    roleCreds = {
      accessKeyId: data.Credentials.AccessKeyId,
      secretAccessKey: data.Credentials.SecretAccessKey,
      sessionToken: data.Credentials.SessionToken,
    };
    stsGetCallerIdentity(roleCreds);
  }
});

//Get Arn of current identity
function stsGetCallerIdentity(creds) {
  var stsParams = { credentials: creds };
  // Create STS service object
  var sts = new AWS.STS(stsParams);

  sts.getCallerIdentity({}, function (err, data) {
    if (err) {
      console.log(err, err.stack);
    } else {
      console.log(data.Arn);
    }
  });
}
```
+  Per i dettagli sull'API, consulta la [AssumeRole](https://docs.aws.amazon.com/goto/AWSJavaScriptSDK/sts-2011-06-15/AssumeRole)sezione *AWS SDK per JavaScript API Reference*. 

------
#### [ PowerShell ]

**Strumenti per PowerShell V4**  
**Esempio 1: restituisce un set di credenziali temporanee (chiave di accesso, chiave segreta e token di sessione) che possono essere utilizzate per un'ora per accedere a AWS risorse a cui l'utente richiedente potrebbe normalmente non avere accesso. Le credenziali restituite hanno le autorizzazioni consentite dalla policy di accesso del ruolo assunto e dalla policy fornita (non è possibile utilizzare la policy fornita per concedere autorizzazioni superiori a quelle definite dalla policy di accesso del ruolo assunto).**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -Policy "...JSON policy..." -DurationInSeconds 3600
```
**Esempio 2: restituisce un set di credenziali temporanee, valide per un’ora, con le stesse autorizzazioni definite nella policy di accesso del ruolo assunto.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600
```
**Esempio 3: restituisce un set di credenziali temporanee che forniscono il numero di serie e il token generato da un MFA associato alle credenziali utente utilizzate per eseguire il cmdlet.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600 -SerialNumber "GAHT12345678" -TokenCode "123456"
```
**Esempio 4: restituisce un set di credenziali temporanee che hanno assunto un ruolo definito in un account cliente. Per ogni ruolo che la terza parte può assumere, l'account cliente deve creare un ruolo utilizzando un identificatore che deve essere passato nel ExternalId parametro - ogni volta che viene assunto il ruolo.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600 -ExternalId "ABC123"
```
+  Per i dettagli sull'API, vedere [AssumeRole](https://docs.aws.amazon.com/powershell/v4/reference)in *AWS Strumenti per PowerShell Cmdlet Reference (*V4). 

**Strumenti per V5 PowerShell **  
**Esempio 1: restituisce un set di credenziali temporanee (chiave di accesso, chiave segreta e token di sessione) che possono essere utilizzate per un'ora per accedere a AWS risorse a cui l'utente richiedente potrebbe normalmente non avere accesso. Le credenziali restituite hanno le autorizzazioni consentite dalla policy di accesso del ruolo assunto e dalla policy fornita (non è possibile utilizzare la policy fornita per concedere autorizzazioni superiori a quelle definite dalla policy di accesso del ruolo assunto).**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -Policy "...JSON policy..." -DurationInSeconds 3600
```
**Esempio 2: restituisce un set di credenziali temporanee, valide per un’ora, con le stesse autorizzazioni definite nella policy di accesso del ruolo assunto.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600
```
**Esempio 3: restituisce un set di credenziali temporanee che forniscono il numero di serie e il token generato da un MFA associato alle credenziali utente utilizzate per eseguire il cmdlet.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600 -SerialNumber "GAHT12345678" -TokenCode "123456"
```
**Esempio 4: restituisce un set di credenziali temporanee che hanno assunto un ruolo definito in un account cliente. Per ogni ruolo che la terza parte può assumere, l'account cliente deve creare un ruolo utilizzando un identificatore che deve essere passato nel ExternalId parametro - ogni volta che viene assunto il ruolo.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600 -ExternalId "ABC123"
```
+  Per i dettagli sull'API, vedere [AssumeRole](https://docs.aws.amazon.com/powershell/v5/reference)in *AWS Strumenti per PowerShell Cmdlet Reference (*V5). 

------
#### [ Python ]

**SDK per Python (Boto3)**  
 C'è di più su. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel [Repository di esempi di codice AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python/example_code/sts#code-examples). 
Assumi un ruolo IAM che richiede un token MFA e utilizza le credenziali temporanee per elencare i bucket Amazon S3 per l’account.  

```
def list_buckets_from_assumed_role_with_mfa(
    assume_role_arn, session_name, mfa_serial_number, mfa_totp, sts_client
):
    """
    Assumes a role from another account and uses the temporary credentials from
    that role to list the Amazon S3 buckets that are owned by the other account.
    Requires an MFA device serial number and token.

    The assumed role must grant permission to list the buckets in the other account.

    :param assume_role_arn: The Amazon Resource Name (ARN) of the role that
                            grants access to list the other account's buckets.
    :param session_name: The name of the STS session.
    :param mfa_serial_number: The serial number of the MFA device. For a virtual MFA
                              device, this is an ARN.
    :param mfa_totp: A time-based, one-time password issued by the MFA device.
    :param sts_client: A Boto3 STS instance that has permission to assume the role.
    """
    response = sts_client.assume_role(
        RoleArn=assume_role_arn,
        RoleSessionName=session_name,
        SerialNumber=mfa_serial_number,
        TokenCode=mfa_totp,
    )
    temp_credentials = response["Credentials"]
    print(f"Assumed role {assume_role_arn} and got temporary credentials.")

    s3_resource = boto3.resource(
        "s3",
        aws_access_key_id=temp_credentials["AccessKeyId"],
        aws_secret_access_key=temp_credentials["SecretAccessKey"],
        aws_session_token=temp_credentials["SessionToken"],
    )

    print(f"Listing buckets for the assumed role's account:")
    for bucket in s3_resource.buckets.all():
        print(bucket.name)
```
+  Per i dettagli sull'API, consulta [AssumeRole AWS](https://docs.aws.amazon.com/goto/boto3/sts-2011-06-15/AssumeRole)*SDK for Python (Boto3) API Reference*. 

------
#### [ Ruby ]

**SDK per Ruby**  
 C'è di più su. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel [Repository di esempi di codice AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/ruby/example_code/iam#code-examples). 

```
  # Creates an AWS Security Token Service (AWS STS) client with specified credentials.
  # This is separated into a factory function so that it can be mocked for unit testing.
  #
  # @param key_id [String] The ID of the access key used by the STS client.
  # @param key_secret [String] The secret part of the access key used by the STS client.
  def create_sts_client(key_id, key_secret)
    Aws::STS::Client.new(access_key_id: key_id, secret_access_key: key_secret)
  end

  # Gets temporary credentials that can be used to assume a role.
  #
  # @param role_arn [String] The ARN of the role that is assumed when these credentials
  #                          are used.
  # @param sts_client [AWS::STS::Client] An AWS STS client.
  # @return [Aws::AssumeRoleCredentials] The credentials that can be used to assume the role.
  def assume_role(role_arn, sts_client)
    credentials = Aws::AssumeRoleCredentials.new(
      client: sts_client,
      role_arn: role_arn,
      role_session_name: 'create-use-assume-role-scenario'
    )
    @logger.info("Assumed role '#{role_arn}', got temporary credentials.")
    credentials
  end
```
+  Per i dettagli sull'API, consulta la [AssumeRole](https://docs.aws.amazon.com/goto/SdkForRubyV3/sts-2011-06-15/AssumeRole)sezione *AWS SDK per Ruby API Reference*. 

------
#### [ Rust ]

**SDK per Rust**  
 C'è altro da fare. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel [Repository di esempi di codice AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rustv1/examples/sts/#code-examples). 

```
async fn assume_role(config: &SdkConfig, role_name: String, session_name: Option<String>) {
    let provider = aws_config::sts::AssumeRoleProvider::builder(role_name)
        .session_name(session_name.unwrap_or("rust_sdk_example_session".into()))
        .configure(config)
        .build()
        .await;

    let local_config = aws_config::from_env()
        .credentials_provider(provider)
        .load()
        .await;
    let client = Client::new(&local_config);
    let req = client.get_caller_identity();
    let resp = req.send().await;
    match resp {
        Ok(e) => {
            println!("UserID :               {}", e.user_id().unwrap_or_default());
            println!("Account:               {}", e.account().unwrap_or_default());
            println!("Arn    :               {}", e.arn().unwrap_or_default());
        }
        Err(e) => println!("{:?}", e),
    }
}
```
+  Per i dettagli sulle API, consulta la [AssumeRole](https://docs.rs/aws-sdk-sts/latest/aws_sdk_sts/client/struct.Client.html#method.assume_role)guida di *riferimento all'API AWS SDK for Rust*. 

------
#### [ Swift ]

**SDK per Swift**  
 C'è altro da fare. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel [Repository di esempi di codice AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/swift/example_code/iam#code-examples). 

```
import AWSSTS

    public func assumeRole(role: IAMClientTypes.Role, sessionName: String)
        async throws -> STSClientTypes.Credentials
    {
        let input = AssumeRoleInput(
            roleArn: role.arn,
            roleSessionName: sessionName
        )
        do {
            let output = try await stsClient.assumeRole(input: input)

            guard let credentials = output.credentials else {
                throw ServiceHandlerError.authError
            }

            return credentials
        } catch {
            print("Error assuming role: ", dump(error))
            throw error
        }
    }
```
+  Per i dettagli sull'API, consulta la [AssumeRole](https://sdk.amazonaws.com/swift/api/awssts/latest/documentation/awssts/stsclient/assumerole(input:))guida di riferimento all'*API AWS SDK for Swift*. 

------

# Credenziali specifiche del servizio per gli utenti IAM
<a name="id_credentials_service-specific-creds"></a>

Le credenziali specifiche del servizio sono meccanismi di autenticazione specializzati progettati per servizi specifici. AWS Queste credenziali forniscono un'autenticazione semplificata rispetto alle AWS credenziali standard e sono personalizzate in base ai requisiti di autenticazione dei singoli servizi. AWS A differenza delle chiavi di accesso, che possono essere utilizzate su più AWS servizi, le credenziali specifiche del servizio sono progettate per essere utilizzate solo con il servizio per il quale sono state create. Questo approccio mirato migliora la sicurezza limitando l’ambito delle credenziali.

Generalmente, le credenziali specifiche del servizio sono costituite da una coppia di nome utente e password o da chiavi API specializzate formattate in base ai requisiti del servizio specifico. Quando si creano credenziali specifiche per un servizio, queste sono attive per impostazione predefinita e possono essere utilizzate immediatamente. Puoi avere un massimo di due set di credenziali specifiche del servizio per ogni servizio supportato per utente IAM. Questo limite consente di mantenere un set attivo mentre si passa a un nuovo set quando necessario. AWS attualmente supporta credenziali specifiche del servizio per i seguenti servizi:

## Quando utilizzare le credenziali specifiche del servizio
<a name="id_credentials_service-specific-creds-usecase"></a>

Le credenziali specifiche del servizio sono destinate alla compatibilità con librerie SDKs, strumenti o applicazioni di terze parti che non sono nativamente compatibili con le credenziali, oppure. AWS AWS SDKs AWS APIs Tali casi d'uso includono la migrazione a AWS servizi da infrastrutture ospitate autonomamente o da servizi ospitati da altri provider.

Quando si parte da zero, e laddove possibile, si consiglia di utilizzare credenziali AWS temporanee, come quelle fornite da un ruolo IAM, per l'autenticazione con un AWS servizio utilizzando un AWS SDK o una libreria che supporta credenziali temporanee. AWS 

## Rotazione delle credenziali specifiche del servizio
<a name="id_credentials_service-specific-creds-rotation"></a>

Come best practice di sicurezza, si consiglia di ruotare regolarmente le credenziali specifiche del servizio. Per ruotare le credenziali senza interrompere le applicazioni:

1. Creare un secondo set di credenziali specifiche del servizio per lo stesso servizio e lo stesso utente IAM

1. Aggiornare tutte le applicazioni per fare in modo che utilizzino le nuove credenziali e verificare che funzionino correttamente

1. Cambiare lo stato delle credenziali originali in “Inattiva”

1. Verificare che tutte le applicazioni funzionino ancora correttamente

1. Eliminare le credenziali specifiche del servizio inattive quando si ha la certezza che non siano più necessarie

## Monitoraggio delle credenziali specifiche del servizio
<a name="id_credentials_service-specific-creds-monitoring"></a>

Puoi utilizzarlo AWS CloudTrail per monitorare l'uso di credenziali specifiche del servizio nel tuo account. AWS Per visualizzare CloudTrail gli eventi relativi all'utilizzo delle credenziali specifiche del servizio, esamina CloudTrail i registri per verificare la presenza di eventi del servizio in cui vengono utilizzate le credenziali. Per ulteriori informazioni, consulta [Registrazione delle chiamate IAM e AWS STS API con AWS CloudTrail](cloudtrail-integration.md).

Per una maggiore sicurezza, prendi in considerazione la possibilità di impostare CloudWatch allarmi per informarti di specifici modelli di utilizzo delle credenziali che potrebbero indicare accessi non autorizzati o altri problemi di sicurezza. Per ulteriori informazioni, consulta [Monitoring CloudTrail Log Files with Amazon CloudWatch Logs](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/monitor-cloudtrail-log-files-with-cloudwatch-logs.html) nella *Guida per l'AWS CloudTrail utente*.

I seguenti argomenti forniscono informazioni sulle credenziali specifiche del servizio.

**Topics**
+ [Quando utilizzare le credenziali specifiche del servizio](#id_credentials_service-specific-creds-usecase)
+ [Rotazione delle credenziali specifiche del servizio](#id_credentials_service-specific-creds-rotation)
+ [Monitoraggio delle credenziali specifiche del servizio](#id_credentials_service-specific-creds-monitoring)
+ [Chiavi API per Amazon Bedrock e Amazon Logs CloudWatch](id_credentials_bedrock_cloudwatchlogs.md)
+ [Utilizzare IAM con Amazon Keyspaces (per Apache Cassandra)](id_credentials_keyspaces.md)

# Chiavi API per Amazon Bedrock e Amazon Logs CloudWatch
<a name="id_credentials_bedrock_cloudwatchlogs"></a>

**Nota**  
Le chiavi API di Amazon CloudWatch Logs sono attualmente disponibili in anteprima e lo saranno a livello generale nelle prossime settimane. Le chiavi API di Amazon CloudWatch Logs sono molto simili alle chiavi API a lungo termine di Amazon Bedrock descritte in questa pagina. Per ulteriori informazioni sulle chiavi API a lungo termine di Amazon CloudWatch Logs, consulta [Invio di log ad Amazon CloudWatch Logs utilizzando](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_HLC_Endpoint.html) l'endpoint HLC.

Amazon Bedrock è un servizio completamente gestito che offre i modelli di fondazione delle aziende leader nel settore dell’IA e di Amazon. Puoi accedere ad Amazon Bedrock tramite Console di gestione AWS e a livello di codice utilizzando l'API AWS CLI, o. AWS Quando effettui richieste programmatiche ad Amazon Bedrock, puoi autenticarti utilizzando [credenziali di sicurezza temporanee](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) o chiavi API di Amazon Bedrock. Amazon Bedrock supporta due tipi di chiavi API:
+ **Chiavi API a breve termine**: una chiave API a breve termine è un URL prefirmato che utilizza AWS la versione 4 di Signature. Le chiavi API a breve termine condividono le stesse autorizzazioni e la stessa scadenza delle credenziali dell’identità che genera la chiave API e sono valide per un massimo di 12 ore o per il tempo rimanente della sessione della console, a seconda di quale tra i due sia più breve. Per generare chiavi API a breve termine puoi utilizzare la console Amazon Bedrock, il pacchetto Python `aws-bedrock-token-generator` e i pacchetti per altri linguaggi di programmazione. Per ulteriori informazioni, consulta [Generate Amazon Bedrock API keys for easy access to the Amazon Bedrock API](https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys.html) nella *Guida per l’utente di Amazon Bedrock*.
+ **Chiavi API a lungo termine**: le chiavi API a lungo termine sono associate a un utente IAM e vengono generate utilizzando [credenziali specifiche del servizio](id_credentials_service-specific-creds.md) IAM. Queste credenziali sono progettate per essere utilizzate solo con Amazon Bedrock e migliorano la sicurezza limitando l’ambito delle credenziali. Per le chiavi API a lungo termine puoi impostare una scadenza. Puoi utilizzare la console IAM o Amazon Bedrock, la AWS CLI o AWS l'API per generare chiavi API a lungo termine.

Un utente IAM può avere fino a due chiavi API a lungo termine per Amazon Bedrock, che ti aiutano a implementare pratiche sicure di rotazione delle chiavi. 

Quando generi una chiave API a lungo termine, la policy AWS gestita [AmazonBedrockLimitedAccess](https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonBedrockLimitedAccess)viene automaticamente allegata all'utente IAM. Questa policy concede l’accesso alle operazioni di base dell’API di Amazon Bedrock. Se hai bisogno di un accesso aggiuntivo ad Amazon Bedrock, puoi modificare le autorizzazioni per l’utente IAM. Per informazioni sulla modifica delle autorizzazioni, consulta [Aggiunta e rimozione di autorizzazioni per identità IAM](access_policies_manage-attach-detach.md). Per ulteriori informazioni su come usare una chiave Amazon Bedrock, consulta [Use an Amazon Bedrock API key](https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys-use.html) nella *Guida per l’utente di Amazon Bedrock*.

**Nota**  
Le chiavi API a lungo termine presentano un rischio di sicurezza maggiore rispetto alle chiavi API a breve termine. Quando possibile, consigliamo di utilizzare chiavi API a breve termine o credenziali di sicurezza temporanee. Se utilizzi chiavi API a lungo termine, ti consigliamo di implementare pratiche di rotazione delle chiavi a intervalli regolari.

## Prerequisiti
<a name="id_credentials_bedrock_prerequisites"></a>

Prima di poter generare una chiave API a lungo termine di Amazon Bedrock dalla console IAM, devi soddisfare i seguenti prerequisiti:
+ Un utente IAM da associare alla chiave API a lungo termine. Per istruzioni su come creare un utente IAM, consulta [Crea un utente IAM nel tuo Account AWS](id_users_create.md).
+ Assicurati di disporre delle seguenti autorizzazioni relative alla policy IAM per gestire le credenziali specifiche del servizio per un utente IAM. La policy di esempio concede l’autorizzazione a creare, elencare, aggiornare, eliminare e reimpostare le credenziali specifiche del servizio. Sostituisci il valore `username` nell’elemento Resource con il nome dell’utente IAM per cui genererai le chiavi API Amazon Bedrock per:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "ManageBedrockServiceSpecificCredentials",
              "Effect": "Allow",
              "Action": [
                  "iam:CreateServiceSpecificCredential",
                  "iam:ListServiceSpecificCredentials",
                  "iam:UpdateServiceSpecificCredential",
                  "iam:DeleteServiceSpecificCredential",
                  "iam:ResetServiceSpecificCredential"
              ],
              "Resource": "arn:aws:iam::*:user/username"
          }
      ]
  }
  ```

------

## Generazione di una chiave API a lungo termine per Amazon Bedrock (console)
<a name="id_credentials_bedrock_console_create"></a>

**Per generare una chiave API a lungo termine Amazon Bedrock (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione della console IAM, scegli **Utenti**.

1. Seleziona l’utente IAM per cui desideri generare le chiavi API a lungo termine di Amazon Bedrock.

1. Scegli la scheda **Credenziali di sicurezza**.

1. Nella sezione **Chiavi API per Amazon Bedrock**, scegli **Genera chiave API**.

1. Per **Scadenza della chiave API**, esegui una delle seguenti operazioni:
   + Seleziona una durata di scadenza della chiave API di **1**, **5**, **30**, **90** o **365** giorni.
   + Scegli **Durata personalizzata** per specificare una data di scadenza della chiave API personalizzata.
   + Seleziona **Non scade mai** (scelta non consigliata)

1. Scegli **Genera chiave API**.

1. Copia o scarica la tua chiave API. Questo è l’unico momento in cui è possibile visualizzare il valore della chiave API.
**Importante**  
Archivia la chiave API in modo sicuro. Dopo aver chiuso la finestra di dialogo, non sarà possibile recuperare di nuovo la chiave API. Se perdi o dimentichi la chiave di accesso segreta, non potrai recuperarla. Dovrai invece creare una nuova chiave di accesso e rendere inattiva quella vecchia.

## Generazione di una chiave API a lungo termine per Amazon Bedrock (AWS CLI)
<a name="id_credentials_bedrock_cli_create"></a>

Per generare una chiave API a lungo termine di Amazon Bedrock utilizzando il AWS CLI, utilizza i seguenti passaggi:

1. Crea un utente IAM che verrà utilizzato con Amazon Bedrock utilizzando il comando [ create-user](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-user.html):

   ```
   aws iam create-user \
       --user-name BedrockAPIKey_1
   ```

1. Allega la policy AWS gestita `AmazonBedrockLimitedAccess` all'utente Amazon Bedrock IAM utilizzando il [ attach-user-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/attach-user-policy.html)comando:

   ```
   aws iam attach-user-policy --user-name BedrockAPIKey_1 \
       --policy-arn arn:aws:iam::aws:policy/AmazonBedrockLimitedAccess
   ```

1. Genera la chiave API a lungo termine di Amazon Bedrock utilizzando il [ create-service-specific-credential](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-service-specific-credential.html)comando. Per l’età delle credenziali, puoi specificare un valore compreso tra 1 e 36.600 giorni. Se non specifici l’età delle credenziali, la chiave API non scadrà.

   Per generare una chiave API a lungo termine con una scadenza di 30 giorni:

   ```
   aws iam create-service-specific-credential \
       --user-name BedrockAPIKey_1 \
       --service-name bedrock.amazonaws.com \
       --credential-age-days 30
   ```

Il valore `ServiceApiKeyValue` restituito nella risposta è la chiave API Amazon Bedrock a lungo termine. Archivia il valore `ServiceApiKeyValue` in modo sicuro, poiché non potrai recuperarlo in un secondo momento.

### Elencare le chiavi API a lungo termine (AWS CLI)
<a name="id_credentials_bedrock_cli_list"></a>

Per elencare i metadati delle chiavi API a lungo termine di Amazon Bedrock per un utente specifico, usa il [ list-service-specific-credentials](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-service-specific-credentials.html)comando con il `--user-name` parametro:

```
aws iam list-service-specific-credentials \
    --service-name bedrock.amazonaws.com \
    --user-name BedrockAPIKey_1
```

Per elencare tutti i metadati delle chiavi API a lungo termine di Amazon Bedrock nell'account, usa il [ list-service-specific-credentials](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-service-specific-credentials.html)comando con il `--all-users` parametro:

```
aws iam list-service-specific-credentials \
    --service-name bedrock.amazonaws.com \
    --all-users
```

### Aggiornamento dello stato della chiave API a lungo termine (AWS CLI)
<a name="id_credentials_bedrock_cli_update"></a>

Per aggiornare lo stato di una chiave API a lungo termine per Amazon Bedrock, usa il [ update-service-specific-credential](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/update-service-specific-credential.html)comando:

```
aws iam update-service-specific-credential \
    --user-name "BedrockAPIKey_1" \
    --service-specific-credential-id "ACCA1234EXAMPLE1234" \
    --status Inactive|Active
```

## Generazione di una chiave API a lungo termine per Amazon Bedrock (AWS API)
<a name="id_credentials_bedrock_api"></a>

Puoi utilizzare le operazioni API seguenti per generare e gestire chiavi API a lungo termine per Amazon Bedrock:
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServiceSpecificCredentials.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServiceSpecificCredentials.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServiceSpecificCredential.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceSpecificCredential.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResetServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResetServiceSpecificCredential.html) 

# Utilizzare IAM con Amazon Keyspaces (per Apache Cassandra)
<a name="id_credentials_keyspaces"></a>

Amazon Keyspaces (per Apache Cassandra) è un servizio di database gestito, scalabile, ad alta disponibilità e compatibile con Apache Cassandra. Puoi accedere ad Amazon Keyspaces tramite o Console di gestione AWS programmaticamente. Per accedere ad Amazon Keyspaces a livello di programmazione con credenziali specifiche del servizio, puoi utilizzare `cqlsh` o i driver Cassandra open source. Le *credenziali specifiche del servizio* includono un nome utente e una password come quelli che Cassandra utilizza per l'autenticazione e la gestione degli accessi. Puoi avere un massimo di due set di credenziali specifiche del servizio per ogni servizio supportato per utente.

Per accedere ad Amazon Keyspaces in modo programmatico con le chiavi di AWS accesso, puoi utilizzare l' AWS SDK, il AWS Command Line Interface (AWS CLI) o i driver Cassandra open source con il plug-in SigV4. Per ulteriori informazioni, consulta [Creare e configurare AWS credenziali per Amazon Keyspaces nella Amazon](https://docs.aws.amazon.com//keyspaces/latest/devguide/access.credentials.html) *Keyspaces (for Apache* Cassandra) Developer Guide.

**Nota**  
Se prevedi di interagire con Amazon Keyspaces solo tramite la console, non è necessario generare credenziali specifiche del servizio. Per ulteriori informazioni, consulta la sezione [Accesso ad Amazon Keyspaces (per Apache Cassandra)](https://docs.aws.amazon.com/keyspaces/latest/devguide/console_keyspaces.html) nella *Guida per gli sviluppatori di Amazon Keyspaces (per Apache Cassandra)*.

Per ulteriori informazioni sulle autorizzazioni richieste per accedere ad Amazon Keyspaces, consulta [Esempi di policy basate su identità per Amazon Keyspaces (per Apache Cassandra)](https://docs.aws.amazon.com/keyspaces/latest/devguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-console) nella *Guida per gli sviluppatori di Amazon Keyspaces (per Apache Cassandra)*.

## Generazione delle credenziali Amazon Keyspaces (console)
<a name="keyspaces_credentials_console"></a>

Puoi utilizzare Console di gestione AWS per generare credenziali Amazon Keyspaces (per Apache Cassandra) per i tuoi utenti IAM.

**Come generare credenziali specifiche del servizio Amazon Keyspaces (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

1. Nel riquadro di navigazione, scegliere **Users (Utenti)** quindi selezionare il nome dell'utente che richiede le credenziali.

1. Nella scheda **Credenziali di sicurezza** in **Credenziali per Amazon Keyspaces (per Apache Cassandra)**, scegli **Genera credenziali**.

1. Le credenziali specifiche del servizio sono ora disponibili. Questa è l'unica volta in cui è possibile visualizzare o scaricare la password. Non puoi recuperarla successivamente. Tuttavia, è possibile reimpostare la password in qualsiasi momento. Salva l'utente e la password in una posizione sicura, perché ne avrai bisogno in un secondo momento.

## Generazione delle credenziali di Amazon Keyspaces (AWS CLI)
<a name="keyspaces_credentials_cli"></a>

Puoi utilizzare AWS CLI per generare credenziali Amazon Keyspaces (per Apache Cassandra) per i tuoi utenti IAM.

**Come generare credenziali specifiche del servizio Amazon Keyspaces (AWS CLI)**
+ Utilizza il seguente comando:
  + [era iam create-service-specific-credential](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-specific-credential.html)

## Generazione di credenziali Amazon Keyspaces (API)AWS
<a name="keyspaces_credentials_api"></a>

Puoi utilizzare l' AWS API per generare credenziali Amazon Keyspaces (per Apache Cassandra) per i tuoi utenti IAM.

**Per generare credenziali specifiche del servizio Amazon Keyspaces (API)AWS**
+ Completare la seguente operazione:
  + [CreateServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html) 

# Trova credenziali inutilizzate AWS
<a name="id_credentials_finding-unused"></a>

Per aumentare la sicurezza del tuo account Account AWS, rimuovi le credenziali utente IAM (ovvero password e chiavi di accesso) che non sono necessarie. Ad esempio, quando gli utenti lasciano l'organizzazione o non hanno più bisogno di AWS accedervi, trovate le credenziali che stavano utilizzando e assicuratevi che non siano più operative. La soluzione ideale consiste nell'eliminare tutte le credenziali inutilizzate. Se l'utente dovesse averne bisogno in un secondo momento, potrai sempre ricrearle. Come minimo, dovresti modificare la password o disattivare le chiavi di accesso, per impedire l'accesso agli ex utenti.

Ovviamente, la definizione di *inutilizzata* è abbastanza ambigua, ma in genere si intende che una credenziale non è stata utilizzata per un determinato periodo di tempo.

## Ricerca di password inutilizzate
<a name="finding-unused-passwords"></a>

Puoi utilizzarli Console di gestione AWS per visualizzare le informazioni sull'utilizzo delle password per i tuoi utenti. Se il numero di utenti è elevato, puoi utilizzare la console per scaricare un report delle credenziali, con informazioni sui tempi di utilizzo delle password della console. Puoi anche accedere alle informazioni dall'API AWS CLI o dall'API IAM.

**Per individuare le password inutilizzate (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Se necessario, aggiungere la colonna **Console last sign-in (Ultimo accesso alla console)** nella tabella degli utenti:

   1. Sopra la tabella all'estrema destra, selezionare l'icona delle impostazioni (![\[Settings icon\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/console-settings-icon.console.png)).

   1. In **Select visible columns** (Seleziona colonne visibili), seleziona **Console last sign-in** (Ultimo accesso alla console).

   1. Seleziona **Confirm** (Conferma) per tornare all'elenco degli utenti.

1. La colonna **Ultimo accesso alla console** mostra la data dell'ultimo accesso dell'utente AWS tramite la console. Mediante queste informazioni puoi trovare gli utenti le cui password non sono state utilizzate per un determinato periodo di tempo. La colonna mostra **Never (Mai)** per gli utenti che non hanno mai usato le password per accedere. **None (Nessuna)** indica gli utenti senza password. Le password non utilizzate di recente potrebbero essere candidate ideali per la rimozione.
**Importante**  
A causa di un problema di servizio, i dati sull'ultimo utilizzo della password non includono il periodo compreso fra le 22.50 (PDT) del 3 maggio 2018 e le 14.08 (PDT) del 23 maggio 2018. [Ciò influisce sulle date dell'[ultimo accesso](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_finding-unused.html) mostrate nella console IAM e sulle date dell'ultimo utilizzo della password nel [rapporto sulle credenziali IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/SupportedTypes.xmlid_credentials_getting-report.html) e restituite dall'GetUser operazione API.](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html) Se un utente ha effettuato l'accesso durante il periodo interessato, l'ultima data di utilizzo di password visualizzata sarà quella relativa all'ultimo utilizzo prima del 3 maggio 2018. Per gli utenti che hanno effettuato l'accesso dopo le 14.08 PDT del 23 maggio 2018, la data indicata sarà accurata.  
Se utilizzi le informazioni relative all'ultima password utilizzata per identificare le credenziali non utilizzate da eliminare, ad esempio per eliminare gli utenti che non hanno effettuato l'accesso AWS negli ultimi 90 giorni, ti consigliamo di modificare la finestra di valutazione per includere date successive al 23 maggio 2018. In alternativa, se gli utenti utilizzano le chiavi di accesso per accedere a AWS livello di codice, è possibile fare riferimento alle ultime informazioni utilizzate sulla chiave di accesso, poiché sono accurate per tutte le date. 

**Per trovare le password inutilizzate scaricando il report delle credenziali (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

1. Nel riquadro di navigazione, selezionare **Credential report (Rapporto credenziali)**.

1. Selezionare **Download Report (Scarica report)** per scaricare un file CSV denominato `status_reports_<date>T<time>.csv`. La quinta colonna contiene la colonna `password_last_used` con le date o uno dei seguenti messaggi:
   + **N/D**: utenti a cui non è stata assegnata una password.
   + **no\$1information**: gli utenti che non hanno utilizzato la propria password da quando IAM ha iniziato a monitorarne l'utilizzo (20 ottobre 2014).

**Per trovare le password inutilizzate (AWS CLI)**  
Per individuare le password non utilizzate, seguire il comando seguente:
+ `[aws iam list-users](https://docs.aws.amazon.com/cli/latest/reference/iam/list-users.html)` restituisce un elenco di utenti, ciascuno con un valore `PasswordLastUsed`. Se il valore è mancante, l'utente non ha una password oppure la password non è stata utilizzata da quando IAM ha iniziato a monitorarne l'utilizzo (20 ottobre 2014).

**Per trovare password inutilizzate (API)AWS**  
Per individuare le password non utilizzate, richiamare la seguente operazione:
+  ` [ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html)` restituisce una raccolta di utenti, ciascuno delle quali ha un valore `<PasswordLastUsed>`. Se il valore è mancante, l'utente non ha una password oppure la password non è stata utilizzata da quando IAM ha iniziato a monitorarne l'utilizzo (20 ottobre 2014).

Per informazioni sui comandi per scaricare il report delle credenziali, consultare [Recupero dei report delle credenziali (AWS CLI)](id_credentials_getting-report.md#getting-credential-reports-cliapi).

## Ricerca di chiavi di accesso inutilizzate
<a name="finding-unused-access-keys"></a>

Puoi utilizzare il Console di gestione AWS per visualizzare le informazioni sull'utilizzo delle chiavi di accesso per i tuoi utenti. Se il numero di utenti è elevato, puoi utilizzare la console per scaricare un report delle credenziali per sapere quando gli utenti hanno utilizzato le loro chiavi di accesso. Puoi anche accedere alle informazioni dall'API AWS CLI o dall'API IAM.

**Per trovare le chiavi di accesso inutilizzate (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Se necessario, aggiungere la colonna **Access key last used (Ultimo utilizzo chiave di accesso)** nella tabella degli utenti:

   1. Sopra la tabella all'estrema destra, selezionare l'icona delle impostazioni (![\[Settings icon\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/console-settings-icon.console.png)).

   1. In **Select visible columns** (Seleziona colonne visibili), seleziona **Access key last used** (Ultima chiave d'accesso utilizzata).

   1. Seleziona **Confirm** (Conferma) per tornare all'elenco degli utenti.

1. La colonna **Ultima chiave di accesso utilizzata** mostra il numero di giorni trascorsi dall'ultimo accesso dell'utente a livello di AWS programmazione. Mediante queste informazioni puoi trovare le chiavi di accesso che non sono state utilizzate per un determinato periodo di tempo. Per gli utenti senza chiavi di accesso nella colonna è riportato **–**. Le chiavi di accesso non utilizzate di recente potrebbero essere candidate ideali per la rimozione.

**Per trovare le chiavi di accesso inutilizzate scaricando il report delle credenziali (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

1. Nel riquadro di navigazione, selezionare **Credential Report (Rapporto credenziali)**.

1. Selezionare **Download Report (Scarica report)** per scaricare un file CSV denominato `status_reports_<date>T<time>.csv`. Le colonne da 11 a 13 contengono la data di ultimo utilizzo, la regione e le informazioni di servizio per la chiave di accesso 1. Le colonne da 16 a 18 contengono le stesse informazioni per la chiave di accesso 2. Il valore è **N/D** se l'utente non dispone di una chiave di accesso o se non l'ha utilizzata da quando IAM ha iniziato a monitorarne l'utilizzo (22 aprile 2015).

**Per trovare le chiavi di accesso inutilizzate (AWS CLI)**  
Per individuare le chiavi di accesso non utilizzate, eseguire i comandi seguenti:
+ `[aws iam list-access-keys](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html)` restituisce informazioni sulle chiavi di accesso di un utente, tra cui `AccessKeyID`.
+ `[aws iam get-access-key-last-used](https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html)` prende un ID chiave di accesso e restituisce informazioni, tra cui `LastUsedDate`, `Region` in cui la chiave di accesso è stata utilizzata e il `ServiceName` dell'ultimo servizio richiesto. Se `LastUsedDate` è mancante, la chiave di accesso non è stata utilizzata da quando IAM ha iniziato a monitorarne l'utilizzo (22 aprile 2015).

**Per trovare chiavi di accesso (AWS API) non utilizzate**  
Per individuare le chiavi di accesso non utilizzate, richiamare le seguenti operazioni:
+ `[ListAccessKeys](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html)` restituisce un elenco di `AccessKeyID` valori per le chiavi di accesso associati all'utente specificato. 
+ `[GetAccessKeyLastUsed](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html)` prende un ID chiave di accesso e restituisce una raccolta di valori. Sono incluse `LastUsedDate`, `Region` in cui la chiave di accesso è stato utilizzato e `ServiceName` dell'ultimo servizio richiesto. Se il valore è mancante, l'utente non dispone di una chiave di accesso oppure non l'ha utilizzata da quando IAM ha iniziato a monitorarne l'utilizzo (22 aprile 2015).

Per informazioni sui comandi per scaricare il report delle credenziali, consultare [Recupero dei report delle credenziali (AWS CLI)](id_credentials_getting-report.md#getting-credential-reports-cliapi).

# Genera report sulle credenziali per il tuo Account AWS
<a name="id_credentials_getting-report"></a>

Puoi generare e scaricare un *report delle credenziali* che elenca tutti gli utenti presenti nel tuo account e lo stato delle loro diverse credenziali, tra cui le password, le chiavi di accesso e i dispositivi MFA. Puoi ottenere un rapporto sulle credenziali da Console di gestione AWS, dagli [strumenti della [AWS SDKs](https://aws.amazon.com/tools)riga di comando](https://aws.amazon.com/tools/#Command_Line_Tools) o dall'API IAM. 

**Nota**  
Il report sulle credenziali IAM include solo le seguenti credenziali gestite da IAM: password, le prime due chiavi di accesso per utente, dispositivi MFA e certificati di firma X.509. Il rapporto non include credenziali specifiche del servizio (come CodeCommit password, chiavi API a lungo termine di Amazon Bedrock o chiavi API a lungo termine di CloudWatch Amazon Logs) o altre chiavi di accesso utente oltre alle prime due. Per una visibilità completa delle credenziali, usa and. [ListServiceSpecificCredentials[ListAccessKeys](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html)](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServiceSpecificCredentials.html) APIs

Puoi utilizzare i report delle credenziali nei tuoi controlli e strategie di conformità. È possibile utilizzare il report per controllare gli effetti dei requisiti del ciclo di vita delle credenziali, come ad esempio la password e gli aggiornamenti della chiave di accesso. Puoi fornire il report a un revisore esterno o concedere le autorizzazioni a un'entità di controllo in modo che possa scaricare il report direttamente.

Puoi generare un report delle credenziali con una frequenza di una volta ogni quattro ore. Quando richiedi un report, IAM verifica innanzitutto se Account AWS è stato generato un report per il nelle ultime quattro ore. In questo caso, viene scaricato il report più recente. Se il report più recente per l'account è più vecchio di quattro ore oppure se non ci sono report precedenti per l'account, IAM genera e scarica un nuovo report. 

**Topics**
+ [Autorizzazioni richieste](#id_credentials_required_permissions)
+ [Comprendere il formato del report](#id_credentials_understanding_the_report_format)
+ [Recupero dei report delle credenziali (Console)](#getting-credential-reports-console)
+ [Recupero dei report delle credenziali (AWS CLI)](#getting-credential-reports-cliapi)
+ [Ottenere report sulle credenziali (AWS API)](#getting-credential-reports-api)

## Autorizzazioni richieste
<a name="id_credentials_required_permissions"></a>

Per creare e scaricare i report sono necessarie le seguenti autorizzazioni:
+ Per creare un report delle credenziali: `iam:GenerateCredentialReport` 
+ Per scaricare il report: `iam:GetCredentialReport`

## Comprendere il formato del report
<a name="id_credentials_understanding_the_report_format"></a>

I file dei report delle credenziali sono formattati con una virgola come separatore (CSV). Puoi aprire i file CSV con i comuni software per fogli di calcolo per eseguire l'analisi, oppure è possibile creare un'applicazione che riceva il file CSV in modo programmatico ed esegua un'analisi personalizzata. 

Il file CSV contiene le seguenti colonne:

**user**  
Il nome semplice dell'utente. 

**arn**  
L'Amazon Resource Name (ARN) dell'utente. Per ulteriori informazioni su ARNs, consulta[IAM ARNs](reference_identifiers.md#identifiers-arns). 

**user\$1creation\$1time**  
La data e l'ora in cui l'utente è stato creato, nel [formato data/ora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).

**password\$1enabled**  
Quando l'utente ha una password, questo valore è `TRUE`. In caso contrario è `FALSE`. Questo valore è `FALSE` per i nuovi account membri creati come parte dell’organizzazione, poiché per impostazione predefinita non dispongono delle credenziali dell’utente root.

**password\$1last\$1used**  
La data e l'ora in cui la password dell'utente Utente root dell'account AWS o dell'utente è stata utilizzata l'ultima volta per accedere a un AWS sito Web, nel formato [data-ora ISO 8601](http://www.iso.org/iso/iso8601). AWS i siti Web che registrano l'ora dell'ultimo accesso di un utente sono i Console di gestione AWS, i Forum di AWS discussione e il AWS Marketplace. Quando una password è utilizzata più volte in un intervallo di 5 minuti, viene registrato in questo campo solo il primo utilizzo.   
+ Il valore in questo campo è `no_information` in questi casi:
  + La password dell'utente non è mai stata utilizzata.
  + Non sono previsti dati di accesso associati alla password, come ad esempio quando la password dell'utente non è stata utilizzata dopo che IAM ha iniziato a monitorare queste informazioni il 20 ottobre 2014.
+ Il valore di questo campo è `N/A` (non applicabile) quando l'utente non ha una password.

**Importante**  
A causa di un problema di servizio, i dati sull'ultimo utilizzo della password non includono il periodo compreso fra le 22.50 (PDT) del 3 maggio 2018 e le 14.08 (PDT) del 23 maggio 2018. [Ciò influisce sulle date dell'[ultimo accesso](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_finding-unused.html) mostrate nella console IAM e sulle date dell'ultimo utilizzo della password nel [rapporto sulle credenziali IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/SupportedTypes.xmlid_credentials_getting-report.html) e restituite dall'GetUser operazione API.](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html) Se un utente ha effettuato l'accesso durante il periodo interessato, l'ultima data di utilizzo di password visualizzata sarà quella relativa all'ultimo utilizzo prima del 3 maggio 2018. Per gli utenti che hanno effettuato l'accesso dopo le 14.08 PDT del 23 maggio 2018, la data indicata sarà accurata.  
Se utilizzi le informazioni relative all'ultima password utilizzata per identificare le credenziali non utilizzate da eliminare, ad esempio per eliminare gli utenti che non hanno effettuato l'accesso AWS negli ultimi 90 giorni, ti consigliamo di modificare la finestra di valutazione per includere date successive al 23 maggio 2018. In alternativa, se gli utenti utilizzano le chiavi di accesso per accedere a AWS livello di codice, è possibile fare riferimento alle ultime informazioni utilizzate sulla chiave di accesso, poiché sono accurate per tutte le date. 

**password\$1last\$1changed**  
La data e ora in cui la password dell'utente è stata impostata per l'ultima volta nel [formato data/ora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601). Se l'utente non ha una password, il valore di questo campo è `N/A` (non applicabile).

**password\$1next\$1rotation**  
Quando l'account ha una [policy della password](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingPasswordPolicies.html) che richiede la rotazione della password, questo campo contiene la data e l'ora, nel [formato data/ora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), quando all'utente è richiesto di impostare una nuova password. Il valore per Account AWS (root) è sempre. `not_supported`

**mfa\$1active**  
Quando un dispositivo [Multi-Factor Authentication](id_credentials_mfa.md) (MFA) è stato abilitato per l'utente, il valore è `TRUE`. In caso contrario è `FALSE`.

**access\$1key\$11\$1active**  
Quando l'utente ha una chiave di accesso e lo stato della chiave di accesso è `Active`, questo valore è `TRUE`. In caso contrario è `FALSE`. Si applica sia all'utente root dell'account che agli utenti IAM.

**access\$1key\$11\$1last\$1rotated**  
La data e l'ora nel [formato data/ora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), della creazione della chiave di accesso dell'utente o dell'ultima modifica. Se l'utente non ha una chiave di accesso attiva, il valore in questo campo è `N/A` (non applicabile). Si applica sia all'utente root dell'account che agli utenti IAM.

**access\$1key\$11\$1last\$1used\$1date**  
La data e l'ora, nel [formato data/ora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), in cui la chiave di accesso dell'utente è stata recentemente utilizzata per firmare una richiesta API AWS . Quando una chiave di accesso è utilizzata più volte in un intervallo di 15 minuti, viene registrato in questo campo solo il primo utilizzo. Si applica sia all'utente root dell'account che agli utenti IAM.  
Il valore in questo campo è `N/A` (non applicabile) in questi casi:  
+ L'utente non ha una chiave di accesso.
+ La chiave di accesso non è mai stata utilizzata.
+ La chiave di accesso non è stata utilizzata dopo che IAM ha iniziato a monitorarne le informazioni (22 aprile 2015).

**access\$1key\$11\$1last\$1used\$1region**  
La [regione AWS](https://docs.aws.amazon.com/general/latest/gr/rande.html) in cui la chiave di accesso è stata utilizzata più recentemente. Quando una chiave di accesso è utilizzata più volte in un intervallo di 15 minuti, viene registrato in questo campo solo il primo utilizzo. Si applica sia all'utente root dell'account che agli utenti IAM.  
Il valore in questo campo è `N/A` (non applicabile) in questi casi:  
+ L'utente non ha una chiave di accesso.
+ La chiave di accesso non è mai stata utilizzata.
+ La chiave di accesso è stata utilizzata l'ultima volta prima che IAM iniziasse a monitorarne le informazioni (22 aprile 2015).
+ L'ultimo servizio utilizzato non è specifico della regione, come ad esempio Amazon S3.

**access\$1key\$11\$1last\$1used\$1service**  
Il AWS servizio a cui è stato effettuato l'ultimo accesso con la chiave di accesso. Il valore in questo campo utilizza lo spazio dei nomi del servizio, ad esempio `s3` per Amazon S3 e `ec2` per Amazon EC2. Quando una chiave di accesso è utilizzata più volte in un intervallo di 15 minuti, viene registrato in questo campo solo il primo utilizzo. Si applica sia all'utente root dell'account che agli utenti IAM.  
Il valore in questo campo è `N/A` (non applicabile) in questi casi:  
+ L'utente non ha una chiave di accesso.
+ La chiave di accesso non è mai stata utilizzata.
+ La chiave di accesso è stata utilizzata l'ultima volta prima che IAM iniziasse a monitorarne le informazioni (22 aprile 2015).

**access\$1key\$12\$1active**  
Quando l'utente ha una chiave di accesso secondaria e lo stato della chiave di accesso secondaria è `Active`, questo valore è `TRUE`. In caso contrario è `FALSE`. Si applica sia all'utente root dell'account che agli utenti IAM.  
Gli utenti possono avere fino a due chiavi di accesso: ciò semplifica la rotazione, consentendo di aggiornare prima la chiave e successivamente di eliminare la chiave precedente. Per ulteriori informazioni sull'aggiornamento delle chiavi di accesso, consulta la pagina [Aggiornare le chiavi di accesso](id-credentials-access-keys-update.md).

**access\$1key\$12\$1last\$1rotated**  
La data e l'ora, espresse in [formato data/ora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), di creazione o ultima modifica della seconda chiave di accesso dell'utente. Se l'utente non ha una chiave di accesso secondaria attiva, il valore in questo campo è `N/A` (non applicabile). Si applica sia all'utente root dell'account che agli utenti IAM.

**access\$1key\$12\$1last\$1used\$1date**  
La data e l'ora, in [formato data-ora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), in cui la seconda chiave di accesso dell'utente è stata utilizzata l'ultima volta per firmare una AWS richiesta API. Quando una chiave di accesso è utilizzata più volte in un intervallo di 15 minuti, viene registrato in questo campo solo il primo utilizzo. Si applica sia all'utente root dell'account che agli utenti IAM.  
Il valore in questo campo è `N/A` (non applicabile) in questi casi:  
+ L'utente non ha una chiave di accesso secondaria.
+ La chiave di accesso secondaria dell'utente non è mai stata utilizzata.
+ La chiave di accesso secondaria dell'utente è stata utilizzata l'ultima volta prima che IAM iniziasse a monitorarne le informazioni (22 aprile 2015).

**access\$1key\$12\$1last\$1used\$1region**  
La [regione AWS](https://docs.aws.amazon.com/general/latest/gr/rande.html) in cui la chiave di accesso secondaria è stata utilizzata più recentemente. Quando una chiave di accesso è utilizzata più volte in un intervallo di 15 minuti, viene registrato in questo campo solo il primo utilizzo. Si applica sia all'utente root dell'account che agli utenti IAM. Il valore in questo campo è `N/A` (non applicabile) in questi casi:  
+ L'utente non ha una chiave di accesso secondaria.
+ La chiave di accesso secondaria dell'utente non è mai stata utilizzata.
+ La chiave di accesso secondaria dell'utente è stata utilizzata l'ultima volta prima che IAM iniziasse a monitorarne le informazioni (22 aprile 2015).
+ L'ultimo servizio utilizzato non è specifico della regione, come ad esempio Amazon S3.

**access\$1key\$12\$1last\$1used\$1service**  
Il AWS servizio a cui è stato effettuato l'ultimo accesso con la seconda chiave di accesso dell'utente. Il valore in questo campo utilizza lo spazio dei nomi del servizio, ad esempio `s3` per Amazon S3 e `ec2` per Amazon EC2. Quando una chiave di accesso è utilizzata più volte in un intervallo di 15 minuti, viene registrato in questo campo solo il primo utilizzo. Si applica sia all'utente root dell'account che agli utenti IAM. Il valore in questo campo è `N/A` (non applicabile) in questi casi:  
+ L'utente non ha una chiave di accesso secondaria.
+ La chiave di accesso secondaria dell'utente non è mai stata utilizzata.
+ La chiave di accesso secondaria dell'utente è stata utilizzata l'ultima volta prima che IAM iniziasse a monitorarne le informazioni (22 aprile 2015).

**cert\$11\$1active**  
Quando l'utente ha un certificato di firma X.509 e lo stato del certificato è `Active`, questo valore è `TRUE`. In caso contrario è `FALSE`.

**cert\$11\$1last\$1rotated**  
La data e l'ora nel [formato data/ora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) della creazione del certificato di firma dell'utente o dell'ultima modifica. Se l'utente non ha un certificato di firma attivo, il valore in questo campo è `N/A` (non applicabile).

**cert\$12\$1active**  
Quando l'utente ha un certificato di firma X.509 secondario e lo stato del certificato è `Active`, questo valore è `TRUE`. In caso contrario è `FALSE`.  
Gli utenti possono avere fino a due certificati di firma X.509, per rendere più semplice la rotazione del certificato.

**cert\$12\$1last\$1rotated**  
La data e l'ora nel [formato data/ora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) della creazione del certificato di firma secondario dell'utente o dell'ultima modifica. Se l'utente non ha un certificato di firma secondario attivo, il valore in questo campo è `N/A` (non applicabile).

**informazioni\$1credentiali\$1aggiuntive**  
Quando l'utente dispone di più di due chiavi di accesso o certificati, questo valore indica il numero di chiavi di accesso o certificati aggiuntivi e le azioni che è possibile utilizzare per elencare le chiavi di accesso o i certificati associati all'utente.

## Recupero dei report delle credenziali (Console)
<a name="getting-credential-reports-console"></a>

È possibile utilizzare il Console di gestione AWS per scaricare un rapporto sulle credenziali come file con valori separati da virgole (CSV).

**Per scaricare un report delle credenziali (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

1. Nel riquadro di navigazione, selezionare **Credential report (Rapporto credenziali)**.

1. Scegliere **Download Report (Scarica report)**.

## Recupero dei report delle credenziali (AWS CLI)
<a name="getting-credential-reports-cliapi"></a>

**Per scaricare un report sulle credenziali (AWS CLI)**

1. Genera un rapporto sulle credenziali. AWS memorizza un singolo report. Se esiste già un report, la generazione di un report sulle credenziali sovrascrive il report precedente. [https://docs.aws.amazon.com/cli/latest/reference/iam/generate-credential-report.html](https://docs.aws.amazon.com/cli/latest/reference/iam/generate-credential-report.html)

1. Visualizza l'ultimo report generato: [https://docs.aws.amazon.com/cli/latest/reference/iam/get-credential-report.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-credential-report.html)

## Ottenere report sulle credenziali (AWS API)
<a name="getting-credential-reports-api"></a>

**Per scaricare un rapporto sulle credenziali (API)AWS**

1. Genera un rapporto sulle credenziali. AWS memorizza un singolo report. Se esiste già un report, la generazione di un report sulle credenziali sovrascrive il report precedente. [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GenerateCredentialReport.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GenerateCredentialReport.html)

1. Visualizza l'ultimo report generato: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetCredentialReport.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetCredentialReport.html)

# Credenziali IAM per CodeCommit: credenziali Git, chiavi SSH e chiavi di accesso AWS
<a name="id_credentials_ssh-keys"></a>

CodeCommit è un servizio di controllo delle versioni gestito che ospita repository Git privati nel AWS cloud. Per utilizzarlo CodeCommit, configuri il tuo client Git per comunicare con i CodeCommit repository. Come parte di questa configurazione, fornisci credenziali IAM che CodeCommit possono essere utilizzate per autenticarti. IAM supporta tre tipi CodeCommit di credenziali:
+ Credenziali Git, una coppia di nome utente e password generata da IAM che puoi usare per comunicare con i CodeCommit repository tramite HTTPS.
+ Chiavi SSH, una coppia di chiavi pubblica-privata generata localmente che puoi associare al tuo utente IAM per comunicare con i CodeCommit repository tramite SSH.
+  [AWS chiavi di accesso](id_credentials_access-keys.md), che puoi utilizzare con l'helper per le credenziali incluso nella confezione per comunicare con i AWS CLI repository tramite HTTPS. CodeCommit 

**Nota**  
Non è possibile utilizzare le chiavi SSH o le credenziali Git per accedere ai repository in un altro account AWS . *Per informazioni su come configurare l'accesso ai CodeCommit repository per utenti e gruppi IAM in un altro archivio Account AWS, consulta [Configurare l'accesso tra account a un AWS CodeCommit repository utilizzando](https://docs.aws.amazon.com/codecommit/latest/userguide/cross-account.html) i ruoli nella Guida per l'utente.AWS CodeCommit *

Per ulteriori informazioni su ciascuna opzione, consultare le sezioni seguenti. 

## Usa credenziali Git e HTTPS con CodeCommit (consigliato)
<a name="git-credentials-code-commit"></a>

Con le credenziali Git, generi una coppia statica di nome utente e password per il tuo utente IAM e utilizzi tali credenziali per le connessioni HTTPS. Puoi utilizzare queste credenziali anche con qualsiasi strumento di terza parte o ambiente di sviluppo integrato (IDE) che supporta le credenziali Git statiche.

Poiché queste credenziali sono universali per tutti i sistemi operativi supportati e compatibili con la maggior parte dei sistemi di gestione delle credenziali, ambienti di sviluppo e altri strumenti di sviluppo software, questo è il metodo consigliato. Puoi reimpostare la password per le credenziali Git in qualsiasi momento. Puoi anche rendere le credenziali inattive o eliminarle se non ne hai più bisogno.

**Nota**  
Non è possibile selezionare il nome utente e la password per le credenziali Git. IAM genera queste credenziali per aiutarti a garantire che soddisfino gli standard di sicurezza AWS e proteggano gli archivi in. CodeCommit Puoi scaricare le credenziali una sola volta, nel momento in cui vengono generate. Assicurati di salvare le credenziali in una posizione sicura. Se necessario, puoi reimpostare la password in qualsiasi momento, ma questa operazione invalida le connessioni configurate con la password precedente. Devi riconfigurare le connessioni in modo che utilizzino la nuova password per poterti connettere nuovamente.

Per ulteriori informazioni, consultare i seguenti argomenti: 
+ Per creare un utente IAM, consulta [Crea un utente IAM nel tuo Account AWS](id_users_create.md). 
+ Per generare e utilizzare credenziali Git con CodeCommit, consulta [Per gli utenti HTTPS che utilizzano le credenziali Git nella Guida](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-gc.html) per l'*AWS CodeCommit utente*. 

**Nota**  
La modifica del nome di un utente IAM dopo la generazione delle credenziali Git non comporta la modifica del nome utente delle credenziali. Il nome utente e la password rimangono invariati e validi. 

**Per aggiornare le credenziali specifiche del servizio**

1. Creare un secondo set di credenziali specifico del servizio in aggiunta al set attualmente in uso.

1. Aggiornare tutte le applicazioni in modo da utilizzare il nuovo set di credenziali e confermare che le applicazioni funzionino.

1. Cambiare lo stato delle credenziali originali in "Inactive" (Non attivo).

1. Verificare che tutte le applicazioni funzionino ancora.

1. Eliminare le credenziali specifiche del servizio non attive.

## Usa chiavi SSH e SSH con CodeCommit
<a name="ssh-keys-code-commit"></a>

Con le connessioni SSH, crei file di chiave pubblici e privati sulla tua macchina locale che Git e Git CodeCommit utilizzano per l'autenticazione SSH. La chiave pubblica va associata all'utente IAM e la chiave privata va archiviata nel computer locale. Per ulteriori informazioni, consultare i seguenti argomenti: 
+ Per creare un utente IAM, consulta [Crea un utente IAM nel tuo Account AWS](id_users_create.md). 
+ Per creare una chiave pubblica SSH e associarla a un utente IAM consulta [Per le connessioni SSH su Linux, macOS o Unix](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-unixes.html) oppure [Per le connessioni SSH su Windows](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-windows.html) nella *Guida per l'utente di AWS CodeCommit *. 

**Nota**  
La chiave pubblica deve essere codificata in formato ssh-rsa o formato PEM. La lunghezza in bit minima della chiave pubblica è di 2.048 bit e la lunghezza massima è di 16.384 bit. Questo valore è separato dalla dimensione del file da caricare. Ad esempio, è possibile generare una chiave a 2.048 bit e il file PEM risultante è lungo 1.679 byte. Se fornisci la chiave pubblica in un altro formato o dimensione, verrà visualizzato un messaggio di errore indicante che il formato non è valido.

## Usa HTTPS con l'helper per le AWS CLI credenziali e CodeCommit
<a name="access-keys-code-commit"></a>

In alternativa alle connessioni HTTPS con credenziali Git, puoi consentire a Git di utilizzare una versione con firma crittografica delle tue credenziali utente IAM o del ruolo dell'istanza Amazon EC2 ogni volta che Git deve AWS autenticarsi per interagire con i repository. CodeCommit Questo è l'unico metodo di connessione per i CodeCommit repository che non richiede un utente IAM. Inoltre, questo è il solo metodo che funziona con l'accesso federato e le credenziali temporanee. Per ulteriori informazioni, consultare i seguenti argomenti:
+ Per ulteriori informazioni sull'accesso federato, consultare [Provider di identità e federazione in AWS](id_roles_providers.md) e [Accesso a utenti autenticati esternamente (federazione delle identità)](id_roles_common-scenarios_federated-users.md). 
+ Per ulteriori informazioni sulle credenziali provvisorie, consulta [Credenziali di sicurezza temporanee in IAM](id_credentials_temp.md) e la pagina relativa all'[accesso provvisorio ai repository CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/temporary-access.html). 

L'helper per AWS CLI le credenziali non è compatibile con altri sistemi di supporto per le credenziali, come Keychain Access o Windows Credential Management. Quando configuri le connessioni HTTPS con l'assistente credenziali, devi tenere presenti ulteriori considerazioni. *Per ulteriori informazioni, consulta [Per le connessioni HTTPS su Linux, macOS o Unix con il AWS CLI Credential Helper o Connessioni HTTPS su Windows con il Credential Helper](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-https-unixes.html) [nella Guida per l' AWS CLI utente](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-https-windows.html).AWS CodeCommit *

# Gestire i certificati server in IAM
<a name="id_credentials_server-certs"></a>

*Per abilitare le connessioni HTTPS al tuo sito Web o alla tua applicazione in AWS, devi disporre di un certificato server SSL/TLS.* Per i certificati in una regione supportata da AWS Certificate Manager (ACM), consigliamo di utilizzare ACM per effettuare il provisioning, la gestione e la distribuzione dei certificati server. Nelle regioni non supportate, è necessario utilizzare IAM come gestore di certificati. Per informazioni sulle regioni supportate da ACM, consulta [Endpoint e quote di AWS Certificate Manager](https://docs.aws.amazon.com/general/latest/gr/acm.html) nella *Riferimenti generali di AWS*.

**Importante**  
ACM è lo strumento preferito per il provisioning, la gestione e la distribuzione dei certificati del server. Con ACM puoi richiedere un certificato o distribuire un certificato ACM o esterno esistente alle risorse. AWS I certificati forniti da ACM sono gratuiti e vengono automaticamente rinnovati. In una [regione supportata](https://docs.aws.amazon.com/general/latest/gr/acm.html) è possibile utilizzare ACM per gestire i certificati server dalla console o a livello di programmazione. Per ulteriori informazioni sull'utilizzo di ACM, consulta la [https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html). Per ulteriori informazioni su come richiedere un certificato ACM, consulta [Richiesta di un certificato pubblico](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html) o [Richiesta di un certificato privato](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-private.html) nella *Guida per l'utente di AWS Certificate Manager *. Per ulteriori informazioni sull'importazione di certificati di terza parte in ACM, consulta [Importazione di certificati](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html) nella *Guida per l'utente di AWS Certificate Manager *.

Utilizza IAM come gestore di certificati solo quando è necessario il supporto alle connessioni HTTPS in una regione che [non è supportata da ACM](https://docs.aws.amazon.com/general/latest/gr/acm.html). IAM crittografa in modo sicuro le chiavi private e archivia la versione crittografata nella memoria dei certificati SSL di IAM. IAM supporta la distribuzione di certificati server in tutte le regioni, ma è necessario ottenere il certificato da un provider esterno per utilizzarlo con. AWS Non è possibile caricare un certificato ACM in IAM. Inoltre, non è possibile gestire i certificati dalla console IAM.

Per ulteriori informazioni sul caricamento di certificati di terze parti in IAM, consulta i seguenti argomenti.

**Topics**
+ [Carica un certificato server (AWS API)](#upload-server-certificate)
+ [AWS Operazioni API per i certificati del server](#id_credentials_server-certs-api)
+ [Risolvere i problemi relativi ai certificati server](#server-certificate-troubleshooting)

## Carica un certificato server (AWS API)
<a name="upload-server-certificate"></a>

Per caricare un certificato del server in IAM, è necessario fornire il certificato e la chiave privata corrispondente. Quando il certificato non è autofirmato, è necessario fornire anche una catena di certificati. (La catena di certificati non necessaria se si carica un certificato autofirmato). Prima di caricare un certificato, assicurarsi di disporre di tutti questi elementi e di soddisfare i seguenti criteri:
+ Il certificato deve essere valido al momento del caricamento. Non è possibile caricare un certificato prima dell'inizio del periodo di validità `NotBefore` o dopo la data di scadenza (la data `NotAfter` del certificato).
+ La chiave di accesso non deve essere crittografata. Non è possibile caricare una chiave di accesso privata protetta da password o da passphrase. Per informazioni sulla decodifica di una chiave privata crittografata, consultare [Risolvere i problemi relativi ai certificati server](#server-certificate-troubleshooting).
+ Il certificato, la chiave privata e la catena di certificati devono tutti essere codificati con PEM. Per informazioni sulla conversione di tali elementi in formato PEM, consultare [Risolvere i problemi relativi ai certificati server](#server-certificate-troubleshooting).

Per utilizzare l'[API IAM](https://docs.aws.amazon.com/IAM/latest/APIReference/) per caricare un certificato, invia una [UploadServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UploadServerCertificate.html)richiesta. L'esempio seguente mostra come eseguire questa operazione con l'[AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/). L'esempio presuppone quanto segue:
+ Il certificato con codifica PEM è archiviato in un file denominato `Certificate.pem`.
+ La catena di certificati con codifica PEM è archiviata in un file denominato `CertificateChain.pem`.
+ La chiave privata non crittografata con codifica PEM è archiviata in un file denominato `PrivateKey.pem`.
+ (Facoltativo) Desideri applicare un tag al certificato del server con una coppia chiave-valore. Ad esempio, è possibile aggiungere la chiave tag `Department` e il valore tag `Engineering` per facilitare l'identificazione e l'organizzazione dei certificati.

Per utilizzare il seguente comando esemplificativo, sostituisci questi nomi di file con il tuo. Sostituiscilo *ExampleCertificate* con un nome per il certificato caricato. Se desideri etichettare il certificato, sostituisci la coppia chiave-valore *ExampleKey* e *ExampleValue* tag con i tuoi valori. Digitare il comando su una linea continua. L'esempio seguente include interruzioni di linea e spazi aggiuntivi per agevolare la lettura.

```
aws iam upload-server-certificate --server-certificate-name ExampleCertificate
                                    --certificate-body file://Certificate.pem
                                    --certificate-chain file://CertificateChain.pem
                                    --private-key file://PrivateKey.pem
                                    --tags '{"Key": "ExampleKey", "Value": "ExampleValue"}'
```

Quando il comando precedente viene completato, restituisce i metadati relativi al certificato caricati, tra cui il relativo [Amazon Resource Name (ARN)](reference_identifiers.md#identifiers-arns), il nome descrittivo, l'identificatore (ID), la data di scadenza, i tag e molte altre informazioni.

**Nota**  
Se stai caricando un certificato server da utilizzare con Amazon CloudFront, devi specificare un percorso utilizzando l'`--path`opzione. Il percorso deve iniziare con `/cloudfront` e devono includere una barra finale (ad esempio, `/cloudfront/test/`).

Per utilizzare l'opzione AWS Tools for Windows PowerShell per caricare un certificato, usa [Publish- IAMServer Certificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Publish-IAMServerCertificate.html&tocid=Publish-IAMServerCertificate).

## AWS Operazioni API per i certificati del server
<a name="id_credentials_server-certs-api"></a>

Utilizza i seguenti comandi per visualizzare, aggiungere tag, rinominare ed eliminare i certificati server.
+ Utilizzare [GetServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServerCertificate.html)per recuperare un certificato. Questa richiesta restituisce il certificato, la la catena di certificati (se ne è stata caricata una) e i metadati sul certificato.
**Nota**  
Non è possibile scaricare o recuperare una chiave privata da IAM dopo averla caricata.
+ Usa [Get- IAMServer Certificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Get-IAMServerCertificate.html&tocid=Get-IAMServerCertificate) per recuperare un certificato.
+ Utilizzalo [ListServerCertificates](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServerCertificates.html)per elencare i certificati del server caricati. La richiesta restituisce un elenco che contiene metadati relativi a ciascun certificato.
+ Usa [Get- IAMServer Certificates](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Get-IAMServerCertificates.html&tocid=Get-IAMServerCertificates) per elencare i certificati del server caricati.
+ [TagServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagServerCertificate.html)Da utilizzare per etichettare un certificato server esistente. 
+ Utilizzato [UntagServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagServerCertificate.html)per rimuovere i tag da un certificato server.
+ Utilizzato [UpdateServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServerCertificate.html)per rinominare un certificato del server o aggiornarne il percorso.

   L'esempio seguente mostra come eseguire questa operazione con l' AWS CLI.

  Per utilizzare il seguente comando di esempio, sostituire i nomi dei certificati precedenti e nuovi e il percorso del certificato e digitare il comando su una riga continua. L'esempio seguente include interruzioni di linea e spazi aggiuntivi per agevolare la lettura.

  ```
  aws iam update-server-certificate --server-certificate-name ExampleCertificate
                                      --new-server-certificate-name CloudFrontCertificate
                                      --new-path /cloudfront/
  ```

  Per utilizzare il AWS Tools for Windows PowerShell per rinominare un certificato del server o aggiornarne il percorso, usa [Update- IAMServer](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Update-IAMServerCertificate.html&tocid=Update-IAMServerCertificate) Certificate.
+ Utilizzare [DeleteServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServerCertificate.html)per eliminare un certificato del server. 

  Per utilizzare il AWS Tools for Windows PowerShell per eliminare un certificato del server, utilizzare [Remove- IAMServer Certificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Remove-IAMServerCertificate.html&tocid=Remove-IAMServerCertificate).

## Risolvere i problemi relativi ai certificati server
<a name="server-certificate-troubleshooting"></a>

Prima di poter caricare un certificato in IAM, è necessario assicurarsi che il certificato, la chiave privata e la catena di certificati dispongano tutti della codifica PEM. È inoltre necessario assicurarsi che la chiave privata non sia crittografata. Fare riferimento agli esempi riportati di seguito.

**Example Esempio di certificato con codifica PEM**  

```
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
```

**Example Esempio di chiave privata con codifica PEM, non crittografata**  

```
-----BEGIN RSA PRIVATE KEY-----
Base64-encoded private key
-----END RSA PRIVATE KEY-----
```

**Example Esempio di catena di certificati con codifica PEM**  
Una catena di certificati contiene uno o più certificati. Puoi utilizzare un editor di testo, il comando di copia in Windows, oppure il comando Linux cat per concatenare i tuoi file del certificato in una catena. Quando includi più certificati, ogni certificato deve certificare il certificato precedente. Puoi farlo concatenando i certificati, incluso il certificato CA radice per ultimo.  
L'esempio seguente contiene tre certificati, ma la catena di certificati può contenerne un numero maggiore o minore di certificati.  

```
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
```

Se questi elementi non sono nel formato corretto per il caricamento in IAM, puoi utilizzare [OpenSSL](https://openssl.org/) per convertirli nel formato corretto.

**Per convertire un certificato o una catena di certificati da DER a PEM**  
Utilizzare il [comando OpenSSL **x509**](https://openssl.org/docs/manmaster/man1/x509.html), come nell'esempio seguente. Nel seguente comando di esempio, sostituire `Certificate.der` con il nome del file che contiene il certificato con codifica DER. Sostituire `Certificate.pem` con il nome preferito del file di output per contenere il certificato con codifica PEM.  

```
openssl x509 -inform DER -in Certificate.der -outform PEM -out Certificate.pem
```
 

**Per convertire una chiave privata da DER a PEM**  
Utilizzare il [comando OpenSSL **rsa**](https://openssl.org/docs/manmaster/man1/rsa.html), come nell'esempio seguente. Nel seguente comando di esempio, sostituire `PrivateKey.der` con il nome del file che contiene la chiave privata con codifica DER. Sostituire `PrivateKey.pem` con il nome preferito del file di output per contenere la chiave privata con codifica PEM.  

```
openssl rsa -inform DER -in PrivateKey.der -outform PEM -out PrivateKey.pem
```
 

**Per decrittografare una chiave privata crittografata (rimuovere la password o la passphrase)**  
Utilizzare il [comando OpenSSL **rsa**](https://openssl.org/docs/manmaster/man1/rsa.html), come nell'esempio seguente. Per utilizzare il seguente comando di esempio, sostituire `EncryptedPrivateKey.pem` con il nome del file che contiene la chiave privata crittografata. Sostituire `PrivateKey.pem` con il nome preferito del file di output per contenere la chiave privata con codifica PEM non crittografata.  

```
openssl rsa -in EncryptedPrivateKey.pem -out PrivateKey.pem
```
 

**Per convertire un bundle di certificati da PKCS \$1 12 (PFX) a PEM**  
Utilizzare il [comando OpenSSL **pkcs12**](https://openssl.org/docs/manmaster/man1/pkcs12.html), come nell'esempio seguente. Nel seguente comando di esempio, sostituire `CertificateBundle.p12` con il nome del file che contiene il bundle di certificati con codifica PKCS\$112. Sostituire `CertificateBundle.pem` con il nome preferito del file di output per contenere il bundle di certificati con codifica PEM.  

```
openssl pkcs12 -in CertificateBundle.p12 -out CertificateBundle.pem -nodes
```
 

**Per convertire un bundle di certificati da PKCS\$17 a PEM**  
Utilizzare il [comando OpenSSL **pkcs7**](https://openssl.org/docs/manmaster/man1/pkcs7.html), come nell'esempio seguente. Nel seguente comando di esempio, sostituire `CertificateBundle.p7b` con il nome del file che contiene il bundle di certificati con codifica PKCS\$17. Sostituire `CertificateBundle.pem` con il nome preferito del file di output per contenere il bundle di certificati con codifica PEM.  

```
openssl pkcs7 -in CertificateBundle.p7b -print_certs -out CertificateBundle.pem
```

# Gruppi di utenti IAM
<a name="id_groups"></a>

Un [*gruppo di utenti*](#id_groups) IAM è una raccolta di utenti IAM. I gruppi di utenti consentono di specificare le autorizzazioni per più utenti e quindi la gestione delle autorizzazioni per quegli utenti può essere più facile. Ad esempio, potresti avere un gruppo di utenti chiamato *Amministratori* e concedere a tale gruppo di utenti le autorizzazioni tipiche degli amministratori. Qualsiasi utente all'interno di tale gruppo dispone automaticamente delle autorizzazioni del gruppo *Amministratori*. Se un nuovo utente entra a far parte dell'organizzazione e necessita dei privilegi di amministratore, puoi concedere le autorizzazioni appropriate aggiungendo l'utente al gruppo di utenti *Amministratori*. Se una persona cambia mansione all'interno dell'organizzazione, invece di modificare le autorizzazioni dell'utente puoi rimuoverlo dai vecchi gruppi IAM e aggiungerlo a nuovi gruppi IAM appropriati. 

Puoi collegare una policy basata sull'identità a un gruppo di utenti in modo che tutti gli utenti del gruppo ricevano le autorizzazioni della policy. Non è possibile identificare un gruppo di utenti come `Principal` in una policy (ad esempio una policy basata sulle risorse) perché i gruppi si riferiscono alle autorizzazioni, non all'autenticazione, e i principali sono entità IAM autenticate. Per ulteriori informazioni sui tipi di policy, consulta [Policy basate sulle identità e policy basate su risorse](access_policies_identity-vs-resource.md).

Queste sono alcune delle funzionalità importanti dei gruppi IAM:
+ Un gruppo di utenti può contenere molti utenti e un utente può appartenere a più gruppi di utenti.
+ I gruppi di utenti non possono essere nidificati; possono contenere solo utenti, non altri gruppi IAM.
+ Non esiste alcun gruppo di utenti predefinito che include automaticamente tutti gli utenti nell' Account AWS. Se desideri disporre di un gruppo di utenti di questo tipo, è necessario crearlo e assegnarvi ogni nuovo utente.
+ Il numero e la dimensione delle risorse IAM in un Account AWS, ad esempio il numero di gruppi e il numero di gruppi di cui un utente può essere membro, sono limitati. Per ulteriori informazioni, consulta [IAM e AWS STS quote](reference_iam-quotas.md).

Il diagramma seguente mostra un semplice esempio di una piccola azienda. Il proprietario dell'azienda crea un gruppo di utenti `Admins` perché gli utenti possano creare e gestire altri utenti mentre l'azienda cresce. Il gruppo di utenti `Admins` crea un gruppo di utenti `Developers`e un gruppo di utenti `Test`. Ciascuno di questi gruppi IAM è composto da utenti (umani e applicazioni) che interagiscono con AWS (Jim, Brad, DevApp 1 e così via). Ogni utente dispone di un singolo set di credenziali di sicurezza. In questo esempio, ogni utente appartiene a un singolo gruppo. Tuttavia, gli utenti possono appartenere a più gruppi IAM.

![\[Esempio di relazione tra Account AWS utenti e gruppi IAM\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/Relationship_Between_Entities_Example.diagram.png)


# Creare gruppi IAM
<a name="id_groups_create"></a>

**Nota**  
Come [procedura consigliata](best-practices.md), consigliamo di richiedere agli utenti umani di utilizzare la federazione con un provider di identità per accedere AWS utilizzando credenziali temporanee. Se segui le best practice, non gestisci utenti e gruppi IAM. Gli utenti e i gruppi sono invece gestiti all'esterno AWS e possono accedere alle AWS risorse come identità *federata*. Un'identità federata è un utente dell'elenco utenti aziendale, un provider di identità Web, il AWS Directory Service, la directory Identity Center o qualsiasi utente che accede AWS ai servizi utilizzando le credenziali fornite tramite un'origine di identità. Le identità federate utilizzano i gruppi definiti dal rispettivo gestore di identità. Se lo utilizzi AWS IAM Identity Center, consulta [Gestisci le identità in IAM Identity Center nella](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-sso.html) *Guida per l'AWS IAM Identity Center utente* per informazioni sulla creazione di utenti e gruppi in IAM Identity Center.

Crei gruppi IAM per gestire le autorizzazioni di accesso per più utenti con ruoli o responsabilità simili. Collegando le policy a questi gruppi, puoi concedere o revocare le autorizzazioni per interi insiemi di utenti. Ciò semplifica la manutenzione delle policy di sicurezza, poiché le modifiche apportate alle autorizzazioni di un gruppo vengono applicate automaticamente a tutti i membri di quel gruppo, garantendo un controllo uniforme degli accessi. Dopo aver creato il gruppo, assegna le autorizzazioni in base alle attività previste per gli utenti IAM che ne faranno parte, quindi aggiungi gli utenti IAM al gruppo.

Per informazioni sulle autorizzazioni richieste per la creazione di un gruppo IAM, consulta [Autorizzazioni necessarie per accedere alle risorse IAM](access_permissions-required.md). 

## Per creare un gruppo IAM e collegare policy
<a name="id_groups_create-section-1"></a>

------
#### [ Console ]

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione seleziona **Gruppi di utenti**, quindi **Crea gruppo**.

1. In **Nome gruppo di utenti**, digita il nome del gruppo.
**Nota**  
Il numero e la dimensione delle risorse IAM in un AWS account sono limitati. Per ulteriori informazioni, consulta [IAM e AWS STS quote](reference_iam-quotas.md). I nomi dei gruppi possono essere una combinazione di un massimo di 128 lettere, cifre e i seguenti caratteri: più (\$1), uguale (=), virgola (,), punto (.), chiocciola (@), trattino basso (\$1) e trattino (-). I nomi devono essere univoci all'interno di un account. Non viene fatta distinzione tra maiuscole e minuscole. Ad esempio, non è possibile creare gruppi denominati sia **ADMINS** che **admins**.

1. Nell'elenco degli utenti, seleziona la casella di controllo per ogni utente che desideri aggiungere al gruppo.

1. Nell'elenco di tutte le policy, selezionare la casella di controllo per ogni policy che si desidera applicare a tutti i membri del gruppo.

1. Seleziona **Crea gruppo**.

------
#### [ AWS CLI ]

Esegui il comando seguente:
+ [aws iam create-group](https://docs.aws.amazon.com/cli/latest/reference/iam/create-group.html)

------
#### [ API ]

Chiamare l'operazione seguente:
+ [CreateGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateGroup.html)

------

# Visualizzare i gruppi IAM
<a name="id_groups_manage_list"></a>

Puoi elencare tutti i gruppi IAM nel tuo account, elencare gli utenti in un gruppo di utenti ed elencare i gruppi IAM a cui un utente appartiene. Se utilizzi la CLI o l’API, puoi elencare tutti i gruppi IAM con un determinato prefisso di percorso.

------
#### [ Console ]

Per elencare tutti i gruppi IAM nell’account:
+ Nel pannello di navigazione, scegli **Gruppi di utenti**.

Per elencare gli utenti IAM in un determinato gruppo IAM:
+ Nel pannello di navigazione, seleziona **Gruppi di utenti**. Quindi, scegli il nome del gruppo per aprire la pagina dei dettagli del gruppo. Consulta la scheda **Utenti** per vedere l’appartenenza al gruppo.

Per elencare tutti i gruppi IAM in cui si trova un utente:
+ Nel pannello di navigazione, seleziona **Utenti**. Quindi seleziona il nome utente per aprire la pagina dei dettagli dell’utente. Scegli la scheda **Gruppi** per visualizzare un elenco dei gruppi a cui appartiene l’utente.

------
#### [ AWS CLI ]

Per elencare tutti i gruppi IAM nell’account:
+ [aws iam list-groups](https://docs.aws.amazon.com/cli/latest/reference/iam/list-groups.html)

Per elencare gli utenti in un determinato gruppo IAM:
+ [aws iam get-group](https://docs.aws.amazon.com/cli/latest/reference/iam/get-group.html)

Per elencare tutti i gruppi IAM in cui si trova un utente:
+ [era aim list-groups-for-user](https://docs.aws.amazon.com/cli/latest/reference/iam/list-groups-for-user.html)

------
#### [ API ]

Per elencare tutti i gruppi IAM nell’account:
+ [ListGroups](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroups.html)

Per elencare gli utenti in un determinato gruppo IAM:
+ [GetGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetGroup.html)

Per elencare tutti i gruppi IAM in cui si trova un utente:
+ [ListGroupsForUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroupsForUser.html)

------

# Modificare gli utenti nei gruppi IAM
<a name="id_groups_manage_add-remove-users"></a>

Usa i gruppi IAM per applicare le stesse policy di autorizzazione a più utenti contemporaneamente. Potrai quindi aggiungere o rimuovere utenti da un gruppo IAM. Questa funzione è utile quando le persone arrivano e lasciano l'organizzazione.

## Revisione delle policy di accesso
<a name="groups-remove_prerequisites"></a>

Prima di rimuovere un gruppo, utilizza la pagina dei dettagli del gruppo per esaminarne i membri (utenti IAM), la scheda **Autorizzazioni** per vedere le policy collegate e la scheda **Ultimo accesso** per esaminare le attività recenti a livello di servizio. Questo aiuta a evitare di revocare involontariamente l’accesso a un principale (persona o applicazione) che lo utilizza. Per ulteriori informazioni sulla visualizzazione delle ultime informazioni di accesso, vedere [Perfeziona le autorizzazioni AWS utilizzando le informazioni dell'ultimo accesso](access_policies_last-accessed.md).

## Aggiunta di un utente IAM a un gruppo IAM
<a name="groups-add-remove-console"></a>

------
#### [ Console ]

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, scegli **Gruppi di utenti**, quindi scegli il nome del gruppo.

1. Seleziona la scheda **Utenti**, quindi scegli **Aggiungi utenti**. Selezionare la casella di controllo accanto agli utenti che si desidera aggiungere.

1. Scegli **Aggiungi utenti**.

------
#### [ AWS CLI ]

Esegui il comando seguente:
+ `[aws iam add-user-to-group](https://docs.aws.amazon.com/cli/latest/reference/iam/add-user-to-group.html)`

------
#### [ API ]

Chiamare l'operazione seguente:
+ `[AddUserToGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddUserToGroup.html)`

------

## Rimozione di un utente IAM da un gruppo IAM
<a name="id_groups_manage_add-remove-users-section-1"></a>

------
#### [ Console ]

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, scegli **Gruppi di utenti**, quindi scegli il nome del gruppo.

1. Scegli la scheda **Users** (Utenti); Seleziona la casella di controllo accanto agli utenti che desideri rimuovere e quindi scegli **Rimuovi utenti**.

------
#### [ AWS CLI ]

Esegui il comando seguente:
+ `[aws iam remove-user-from-group](https://docs.aws.amazon.com/cli/latest/reference/iam/remove-user-from-group.html)`

------
#### [ API ]

Chiamare l'operazione seguente:
+ `[RemoveUserFromGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveUserFromGroup.html)`

------

# Collegare una policy a un gruppo di utenti IAM
<a name="id_groups_manage_attach-policy"></a>

È possibile allegare una [politica AWS gestita](access_policies_managed-vs-inline.md#aws-managed-policies), ovvero una politica prescritta fornita da, AWS a un gruppo di utenti, come spiegato nei passaggi seguenti. Per collegare una policy gestita dal cliente, ovvero una policy con autorizzazioni personalizzate da te creata, è prima necessario creare la policy. Per ulteriori informazioni sulla creazione di policy gestite dal cliente, consulta [Definire le autorizzazioni IAM personalizzate con policy gestite dal cliente](access_policies_create.md). 

Per ulteriori informazioni sulle autorizzazioni e sulle policy, consulta [Gestione degli accessi AWS alle risorse](access.md). 

## Per collegare una policy a un gruppo IAM
<a name="id_groups_manage_attach-policy-section-1"></a>

------
#### [ Console ]

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, scegli **Gruppi di utenti**, quindi scegli il nome del gruppo.

1. Scegli la scheda **Autorizzazioni**.

1. Seleziona **Aggiungi autorizzazioni**, quindi seleziona **Collega policy**.

1. Le policy correnti collegate al gruppo di utenti vengono visualizzate nell'elenco **Policy di autorizzazione correnti**. Nell'elenco **Altre policy di autorizzazioni**, seleziona la casella di controllo accanto al nome delle policy da collegare. Puoi utilizzare la casella di ricerca per filtrare l'elenco di policy in base al tipo e al nome della policy.

1. Seleziona la policy che desideri collegare al tuo gruppo IAM e scegli **Collega policy**.

------
#### [ AWS CLI ]

Esegui il comando seguente:
+ `[aws iam attach-group-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-group-policy.html)`

------
#### [ API ]

Chiamare l'operazione seguente:
+ `[AttachGroupPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachGroupPolicy.html)`

------

# Ridenominare un gruppo di utenti IAM
<a name="id_groups_manage_rename"></a>

Quando modifichi il nome o il percorso di un gruppo di utenti, si verificano i seguenti eventi: 
+ Qualsiasi policy associata al gruppo di utenti resta con il gruppo con il nuovo nome.
+ Il gruppo di utenti mantiene tutti i suoi utenti con il nuovo nome.
+ L'ID univoco del gruppo di utenti rimane invariato. Per ulteriori informazioni su unique IDs, consulta[Identificatori univoci](reference_identifiers.md#identifiers-unique-ids). 

IAM non aggiorna automaticamente le policy che fanno riferimento al gruppo di utenti come risorsa per l'utilizzo del nuovo nome. Pertanto, è necessario prestare attenzione quando si rinomina un gruppo di utenti. Prima di rinominare il gruppo di utenti, è necessario verificare manualmente tutte le policy per individuare quelle in cui tale gruppo viene menzionato in base al nome. Supponiamo ad esempio che Bob sia il responsabile dell'area test dell'organizzazione. Bob dispone di una policy associata alla sua entità utente IAM che gli permette di aggiungere e rimuovere utenti dal gruppo di utenti Test. Se un amministratore cambia il nome del gruppo di utenti (o modifica il percorso del gruppo), deve anche aggiornare la policy associata a Bob per l'utilizzo del nuovo nome o percorso. In caso contrario Bob non potrà aggiungere o rimuovere gli utenti dal gruppo di utenti. 

**Per trovare le policy che fanno riferimento a un gruppo IAM come risorsa:**

1. Nel pannello di navigazione della console IAM, scegli **Policy**.

1. Ordina in base alla colonna **Tipo** per individuare le tue policy personalizzate **gestite dal cliente**.

1. Scegli il nome della policy da modificare.

1. Scegli la scheda **Autorizzazioni** e quindi **Riepilogo**.

1. Seleziona **IAM** dall'elenco di servizi, se disponibile.

1. Cerca il nome del gruppo di utenti nella colonna **Risorsa**.

1. Seleziona **Modifica** per modificare il nome del gruppo di utenti nella policy.

## Come modificare il nome di un gruppo di utenti IAM
<a name="id_groups_manage_rename-section-1"></a>

------
#### [ Console ]

1. Nel pannello di navigazione, scegli **Gruppi utenti** e poi scegli il nome del gruppo.

1. Scegli **Modifica**. Digita il nuovo nome del gruppo di utenti e scegli **Salva modifiche**.

------
#### [ AWS CLI ]

Esegui il comando seguente:
+ [aws iam update-group](https://docs.aws.amazon.com/cli/latest/reference/iam/update-group.html)

------
#### [ API ]

Chiamare l'operazione seguente:
+ [UpdateGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateGroup.html)

------

# Eliminazione di un gruppo IAM
<a name="id_groups_manage_delete"></a>

Quando elimini un gruppo IAM nella console, questa rimuove automaticamente tutti i membri del gruppo, scollega tutte le policy gestite collegate ed elimina tutte le policy inline. Tuttavia, poiché IAM non elimina automaticamente le policy che fanno riferimento al gruppo IAM come risorsa, è necessario prestare attenzione quando si elimina un gruppo IAM. Prima di poter eliminare il gruppo IAM, è necessario verificare manualmente le policy per individuare quelle in cui tale gruppo viene menzionato per nome. Ad esempio, John, il responsabile del team di test, dispone di una policy collegata alla sua entità utente IAM che gli consente di aggiungere e rimuovere utenti dal gruppo Test. Se un amministratore elimina il gruppo, deve eliminare anche la policy collegata a John. Altrimenti, se l'amministratore ricrea il gruppo eliminato e gli assegna lo stesso nome, le autorizzazioni di John rimangono valide, anche se ha lasciato il team di test.

Al contrario, quando si utilizza la CLI, l’SDK o l’API per eliminare un gruppo di utenti, è necessario prima rimuovere gli utenti del gruppo. Quindi, si eliminano le policy inline eventualmente incorporate nel gruppo IAM. A questo punto è necessario scollegare le policy gestite collegate al gruppo. Una volta fatto questo è possibile eliminare il gruppo IAM.

------
#### [ Console ]

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, seleziona **Gruppi di utenti**.

1. Nell’elenco dei gruppi IAM, seleziona la casella di controllo accanto ai nomi dei gruppi IAM da eliminare. Puoi utilizzare la casella di ricerca per filtrare l’elenco dei gruppi IAM in base al tipo, alle autorizzazioni e al nome del gruppo.

1. Scegli **Elimina**.

1. Nella casella di conferma, se desideri eliminare un singolo gruppo, digita il nome del gruppo e scegli **Elimina**. Se desideri eliminare più gruppi, digita il numero di gruppi IAM da eliminare seguito da **user groups** e scegli **Elimina**. Ad esempio, se desideri eliminare tre gruppi, digita **3 **user groups****.

------
#### [ AWS CLI ]

1. Rimuovi tutti gli utenti dal gruppo IAM.
   + [aws iam get-group](https://docs.aws.amazon.com/cli/latest/reference/iam/get-group.html) (per ottenere l'elenco degli utenti nel gruppo IAM) e [aws iam remove-user-from-group](https://docs.aws.amazon.com/cli/latest/reference/iam/remove-user-from-group.html) (per rimuovere un utente dal gruppo IAM)

1. Elimina tutte le policy inline incorporate nel gruppo IAM.
   + [aws iam list-group-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-group-policies.html) (per ottenere un elenco delle politiche in linea del gruppo IAM) e [aws iam delete-group-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-group-policy.html) (per eliminare le politiche in linea del gruppo IAM)

1. Scollega tutte le policy gestite collegate al gruppo IAM.
   + [aws iam list-attached-group-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-attached-group-policies.html) (per ottenere un elenco delle politiche gestite allegate al gruppo IAM) e [aws iam detach-group-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/detach-group-policy.html) (per scollegare una politica gestita dal gruppo IAM)

1. Elimina il gruppo IAM.
   + [aws iam delete-group](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-group.html)

------
#### [ API ]

1. Rimuovi tutti gli utenti dal gruppo IAM.
   + [GetGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetGroup.html)(per ottenere l'elenco degli utenti nel gruppo IAM) e [RemoveUserFromGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveUserFromGroup.html)(per rimuovere un utente dal gruppo IAM)

1. Elimina tutte le policy inline incorporate nel gruppo IAM.
   + [ListGroupPolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroupPolicies.html)(per ottenere un elenco delle politiche in linea del gruppo IAM) e [DeleteGroupPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteGroupPolicy.html)(per eliminare le politiche in linea del gruppo IAM)

1. Scollega tutte le policy gestite collegate al gruppo IAM.
   + [ListAttachedGroupPolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedGroupPolicies.html)(per ottenere un elenco delle politiche gestite allegate al gruppo IAM) e [DetachGroupPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DetachGroupPolicy.html)(per scollegare una politica gestita dal gruppo IAM)

1. Elimina il gruppo IAM.
   + [DeleteGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteGroup.html)

------

# Ruoli IAM
<a name="id_roles"></a>

Un *ruolo* IAM è un'identità IAM che puoi creare nel tuo account e che dispone di autorizzazioni specifiche. Un ruolo IAM è simile a un utente IAM, in quanto è un'identità AWS con policy di autorizzazioni che determinano ciò che l'identità può e non può fare in AWS. Tuttavia, invece di essere associato in modo univoco a una persona, un ruolo è destinato a essere assunto da chiunque. Inoltre, un ruolo non ha credenziali a lungo termine standard associate (password o chiavi di accesso). Invece, quando assumi un ruolo, ti fornisce credenziali di sicurezza temporanee per la tua sessione di ruolo.

Puoi utilizzare i ruoli per delegare l'accesso a utenti, applicazioni o servizi che normalmente non hanno accesso alle tue AWS risorse. Ad esempio, potresti voler concedere agli utenti del tuo AWS account l'accesso a risorse che di solito non dispongono o concedere agli utenti di un account Account AWS l'accesso alle risorse di un altro account. Oppure potresti voler consentire a un'app mobile di utilizzare AWS le risorse, ma non incorporare AWS le chiavi all'interno dell'app (dove possono essere difficili da aggiornare e dove gli utenti possono potenzialmente estrarle). A volte si desidera AWS consentire l'accesso a utenti che hanno già identità definite all'esterno AWS, ad esempio nella directory aziendale. In alternativa, è possibile concedere l'accesso all'account a terze parti in modo che possano eseguire un controllo sulle proprie risorse.

Per questi scenari, puoi delegare l'accesso alle AWS risorse utilizzando un ruolo *IAM*. Questa sezione introduce i ruoli e i diversi modi in cui è possibile utilizzarli, quando e come selezionare gli approcci, come creare, gestire, cambiare (o assumere) ed eliminare i ruoli.

**Nota**  
Quando crei il tuo per la prima volta Account AWS, per impostazione predefinita non viene creato alcun ruolo. Man mano che aggiungi servizi al tuo account, questi possono aggiungere ruoli collegati ai servizi per supportarne i casi d'uso.  
 Un ruolo collegato al servizio è un tipo di ruolo di servizio collegato a un. Servizio AWS Il servizio può assumere il ruolo per eseguire un’operazione per tuo conto. I ruoli collegati al servizio vengono visualizzati nel tuo account Account AWS e sono di proprietà del servizio. Un amministratore IAM può visualizzare le autorizzazioni per i ruoli collegati al servizio, ma non modificarle.   
Prima di poter eliminare i ruoli collegati ai servizi, devi eliminare le risorse associate. Questa procedura protegge le risorse poiché impedisce la rimozione involontaria dell’autorizzazione ad accedere alle risorse.  
Per informazioni su quali servizi supportano i ruoli collegati ai servizi, consulta la pagina [AWS servizi che funzionano con IAM](reference_aws-services-that-work-with-iam.md) e cerca i servizi per cui è indicato **Sì **nella colonna **Ruolo collegato ai servizi**. Scegliere **Sì** in corrispondenza di un link per visualizzare la documentazione relativa al ruolo collegato al servizio per tale servizio.

**Topics**
+ [Quando creare un utente IAM invece di un ruolo](#id_which-to-choose)
+ [Termini e concetti dei ruoli](#id_roles_terms-and-concepts)
+ [Risorse aggiuntive](#id_roles_additional-resources)
+ [Problema del "confused deputy"](confused-deputy.md)
+ [Scenari comuni per i ruoli IAM](id_roles_common-scenarios.md)
+ [Creazione di ruoli IAM](id_roles_create.md)
+ [Gestione del ruolo IAM](id_roles_manage.md)
+ [Metodi per assumere un ruolo](id_roles_manage-assume.md)

## Quando creare un utente IAM invece di un ruolo
<a name="id_which-to-choose"></a>

Ti consigliamo di utilizzare gli utenti IAM solo per casi d’uso non supportati dalla federazione delle identità. Alcuni dei casi d'uso sono i seguenti:
+ **Carichi di lavoro che non possono utilizzare ruoli IAM**: è possibile eseguire un carico di lavoro da una posizione che deve accedere a AWS. In alcune situazioni, non puoi utilizzare i ruoli IAM per fornire credenziali temporanee, ad esempio per i plugin. WordPress In queste situazioni, per autenticarti a AWS usa le chiavi di accesso a lungo termine dell'utente IAM per quel carico di lavoro.
+ ** AWS Client di terze parti**: se utilizzi strumenti che non supportano l'accesso con IAM Identity Center, come AWS client o fornitori di terze parti che non sono ospitati su AWS, utilizza le chiavi di accesso a lungo termine degli utenti IAM.
+ **AWS CodeCommit accesso**: se utilizzi CodeCommit per archiviare il codice, puoi utilizzare un utente IAM con chiavi SSH o credenziali specifiche del servizio CodeCommit per l'autenticazione nei tuoi repository. Si consiglia di eseguire questa operazione oltre a utilizzare un utente di IAM Identity Center per l'autenticazione normale. Gli utenti di IAM Identity Center sono le persone della tua forza lavoro che hanno bisogno di accedere alle tue o alle tue applicazioni cloud. Account AWS Per consentire agli utenti di accedere ai tuoi CodeCommit repository senza configurare gli utenti IAM, puoi configurare l'utilità. **git-remote-codecommit** Per ulteriori informazioni su IAM e CodeCommit, consulta. [Credenziali IAM per CodeCommit: credenziali Git, chiavi SSH e chiavi di accesso AWS](id_credentials_ssh-keys.md) *Per ulteriori informazioni sulla configurazione dell'**git-remote-codecommit**utilità, consulta [Connessione ai AWS CodeCommit repository con credenziali rotanti](https://docs.aws.amazon.com/codecommit/latest/userguide/temporary-access.html#temporary-access-configure-credentials) nella Guida per l'utente.AWS CodeCommit *
+ **Accesso ad Amazon Keyspaces (per Apache Cassandra)**: in una situazione in cui non è possibile utilizzare gli utenti in IAM Identity Center, ad esempio per scopi di test per la compatibilità con Cassandra, puoi utilizzare un utente IAM con credenziali specifiche del servizio per l'autenticazione con Amazon Keyspaces. Gli utenti di IAM Identity Center sono le persone della tua forza lavoro che hanno bisogno di accedere alle tue applicazioni Account AWS o alle tue applicazioni cloud. Puoi anche connetterti ad Amazon Keyspaces utilizzando credenziali temporanee. Per ulteriori informazioni, consulta [Utilizzo di credenziali temporanee per connettersi ad Amazon Keyspaces utilizzando un ruolo IAM e il plugin SIGv4](https://docs.aws.amazon.com/keyspaces/latest/devguide/access.credentials.html#temporary.credentials.IAM) nella *Guida per gli sviluppatori di Amazon Keyspaces (per Apache Cassandra)*.
+ **Accesso di emergenza**: in una situazione in cui non puoi accedere al tuo provider di identità e devi intervenire nel tuo Account AWS. Stabilire l'accesso di emergenza per gli utenti IAM può far parte del tuo piano di resilienza. Si consiglia di controllare e proteggere le credenziali degli utenti di emergenza con l'autenticazione a più fattori (MFA).

## Termini e concetti dei ruoli
<a name="id_roles_terms-and-concepts"></a>

Di seguito sono elencati alcuni termini di base per aiutarti a iniziare a utilizzare i ruoli.

****Ruolo****  
UN'identità IAM che puoi creare nell'account che ha le autorizzazioni specifiche. Un ruolo IAM presenta alcune analogie con un utente IAM. Ruoli e utenti sono entrambi identità AWS con policy di autorizzazioni che determinano ciò che l'identità può o non può fare in AWS. Tuttavia, invece di essere associato in modo univoco a una persona, un ruolo è destinato a essere assunto da chiunque. Inoltre, un ruolo non ha credenziali a lungo termine standard associate (password o chiavi di accesso). Invece, quando assumi un ruolo, ti fornisce credenziali di sicurezza temporanee per la tua sessione di ruolo.  
I ruoli possono essere assunti da:  
+ Un utente IAM nello stesso Account AWS o in un altro Account AWS
+ Ruoli IAM nello stesso account
+ Service Principal, da utilizzare con AWS servizi e funzionalità come:
  + Servizi che consentono di eseguire codice su servizi di elaborazione, come Amazon EC2 o AWS Lambda
  + Funzionalità che eseguono azioni sulle tue risorse per tuo conto, come la replica di oggetti Amazon S3
  + Servizi che forniscono credenziali di sicurezza temporanee alle applicazioni eseguite all'esterno AWS, come IAM Roles Anywhere o Amazon ECS Anywhere
+ Un utente esterno autenticato da un gestore dell'identità digitale (IdP) compatibile con SAML 2.0 o OpenID Connect

****AWS ruolo del servizio****  
 Un ruolo di servizio è un [ruolo IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) che un servizio assume per eseguire operazioni per tuo conto. Un amministratore IAM può creare, modificare ed eliminare un ruolo di servizio dall’interno di IAM. Per ulteriori informazioni, consulta [Create a role to delegate permissions to an Servizio AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) nella *Guida per l’utente IAM*. 

****AWS ruolo collegato al servizio****  
 Un ruolo collegato al servizio è un tipo di ruolo di servizio collegato a un. Servizio AWS Il servizio può assumere il ruolo per eseguire un’operazione per tuo conto. I ruoli collegati al servizio vengono visualizzati nel tuo account Account AWS e sono di proprietà del servizio. Un amministratore IAM può visualizzare le autorizzazioni per i ruoli collegati al servizio, ma non modificarle.   
Se stai già utilizzando un servizio quando inizia a supportare i ruoli collegati al servizio, potresti ricevere un'e-mail che annuncia un nuovo ruolo nel tuo account. In questo caso, il servizio ha creato automaticamente il ruolo collegato al servizio nel tuo account. Non è necessario compiere alcuna operazione per supportare questo ruolo e non è necessario eliminarlo manualmente. Per ulteriori informazioni, consulta [Nel mio account è apparso un nuovo ruolo AWS](troubleshoot_roles.md#troubleshoot_roles_new-role-appeared).
Per informazioni su quali servizi supportano i ruoli collegati ai servizi, consulta la pagina [AWS servizi che funzionano con IAM](reference_aws-services-that-work-with-iam.md) e cerca i servizi per cui è indicato **Sì **nella colonna **Ruolo collegato ai servizi**. Scegliere **Sì** in corrispondenza di un link per visualizzare la documentazione relativa al ruolo collegato al servizio per tale servizio. Per ulteriori informazioni, consulta [Creare un ruolo collegato ai servizi](id_roles_create-service-linked-role.md).

****Concatenazione del ruolo****  
La concatenazione dei ruoli si verifica quando si utilizza un ruolo per assumere un secondo ruolo. È possibile eseguire il concatenamento dei ruoli tramite Console di gestione AWS cambiando ruolo AWS CLI, l'o l'API. Ad esempio, `RoleA` dispone dell'autorizzazione per assumere il ruolo `RoleB`. È possibile consentire a User1 di assumere `RoleA` utilizzando le proprie credenziali utente a lungo termine nell' AssumeRoleoperazione API. Questa restituisce le credenziali a breve termine del ruolo `RoleA`. Con la concatenazione del ruolo, puoi utilizzare le credenziali a breve termine del ruolo `RoleA` per abilitare l'Utente1 ad assumere il ruolo `RoleB`.  
Quando assumi un ruolo, puoi passare un tag di sessione e impostare il tag come transitivo. I tag di sessione transitivi vengono passati a tutte le sessioni successive in una concatenazione del ruolo. Per ulteriori informazioni sui tag di sessione, consulta [Passa i tag di sessione AWS STS](id_session-tags.md).  
Il concatenamento dei ruoli limita la Console di gestione AWS sessione di ruolo AWS dell'utente AWS CLI o dell'API a un massimo di un'ora. Si applica indipendentemente dalla durata massima della sessione configurata per i singoli ruoli. Quando si utilizza l'operazione [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API per assumere un ruolo, è possibile specificare la durata della sessione di ruolo con il `DurationSeconds` parametro. Puoi specificare un valore di parametro fino a 43200 secondi (12 ore), che dipende dall'[impostazione della durata massima della sessione](id_roles_update-role-settings.md#id_roles_update-session-duration) per il tuo ruolo. Tuttavia, se assumi un ruolo utilizzando la concatenazione dei ruoli e fornisci un valore del parametro `DurationSeconds` maggiore di un'ora, l'operazione ha esito negativo.  
Per informazioni sul passaggio a un ruolo in Console di gestione AWS, vedere[Passare da un utente a un ruolo IAM (console)](id_roles_use_switch-role-console.md).

****Delega****  
La concessione delle autorizzazioni a un altro utente per permettere l'accesso alle risorse di controllo. La delega comporta la configurazione di un trust tra due account. Il primo è l'account proprietario della risorsa (l'account che concede fiducia). Il secondo è l'account che contiene gli utenti che devono accedere alla risorsa (l'account attendibile). L'account a cui viene concessa fiducia e l'account che concede fiducia possono essere uno dei seguenti:  
+ Lo stesso account.
+ Account diversi che sono comunque sotto il controllo della tua organizzazione.
+ Due account di proprietà di organizzazioni diverse.
Per delegare l'autorizzazione per accedere a una risorsa,[ crea un ruolo IAM](id_roles_create_for-user.md) nell'account che concede fiducia che ha due policy collegate. Le *policy di autorizzazioni* concedono all'utente del ruolo le autorizzazioni necessarie per eseguire le attività previste sulla risorsa. La *policy di attendibilità* specifica quali membri degli account a cui viene concessa fiducia sono autorizzati ad assumere il ruolo.  
Quando si crea una politica di affidabilità, non è possibile specificare un carattere jolly (\$1) come parte di un ARN come elemento principale. La policy di affidabilità è associata al ruolo nell'account che concede fiducia e rappresenta una metà delle autorizzazioni. L'altra metà è una policy delle autorizzazioni collegata all'utente nell'account a cui viene concessa fiducia che [consente a quell'utente di passare al ruolo o di assumerlo](id_roles_use_permissions-to-switch.md). Un utente che assume un ruolo temporaneamente cede le proprie autorizzazioni e ottiene le autorizzazioni del ruolo. Quando l'utente esce o termina l'utilizzo del ruolo, le autorizzazioni originali dell'utente vengono ripristinate. Un parametro aggiuntivo chiamato [external ID](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id) contribuisce a garantire sicuro l'uso dei ruoli tra gli account che non vengono controllati dalla stessa organizzazione.

****Policy di trust****  
[Documento di policy JSON](reference_policies_grammar.md) in cui si definiscono i principali considerati *attendibili* per assumere il ruolo. Una policy di attendibilità del ruolo è una [policy basata sulle risorse](access_policies.md#policies_resource-based) collegata a un ruolo in IAM. I [principali](reference_policies_elements_principal.md) che è possibile specificare nella policy di attendibilità includono utenti, ruoli, account e servizi. Per ulteriori informazioni, consulta [How to use trust policies in IAM roles](https://aws.amazon.com/blogs//security/how-to-use-trust-policies-with-iam-roles/) nel *Blog sulla sicurezza di AWS *.

****Ruolo per l'accesso tra account****  
Un ruolo che concede l'accesso alle risorse in un account a un principale affidabile in un diverso account. I ruoli sono lo strumento principale per concedere l’accesso multi-account. Tuttavia, alcuni AWS servizi consentono di associare una policy direttamente a una risorsa (anziché utilizzare un ruolo come proxy). Queste sono chiamate politiche basate sulle risorse ed è possibile utilizzarle per concedere ai responsabili di un'altra persona l' Account AWS accesso alla risorsa. Alcune di queste risorse includono bucket Amazon Simple Storage Service (S3), vault Amazon Glacier, argomenti Amazon Simple Notification Service (SNS) e code Amazon Simple Queue Service (SQS). Per informazioni su quali servizi supportano le policy basate su risorse, consulta [AWS servizi che funzionano con IAM](reference_aws-services-that-work-with-iam.md). Per ulteriori informazioni sulle policy basate sulle risorse, consulta [Accesso alle risorse multi-account in IAM](access_policies-cross-account-resource-access.md).

## Risorse aggiuntive
<a name="id_roles_additional-resources"></a>

Le seguenti risorse possono rivelarsi utili per saperne di più sulla terminologia di IAM relativa ai ruoli IAM.
+ **I principali** sono entità in grado di eseguire azioni e AWS accedere alle risorse. Un principale può essere un Utente root dell'account AWS utente IAM o un ruolo. Un principio che rappresenta l'identità di un AWS servizio è un [principale di servizio](reference_policies_elements_principal.md#principal-services). Utilizza l'elemento Principal nelle policy di attendibilità per il ruolo per definire i principali attendibili per assumere il ruolo.

   Per ulteriori informazioni ed esempi di principali a cui è possibile consentire l'assunzione di un ruolo, consulta [AWS Elementi della policy JSON: Principal](reference_policies_elements_principal.md). 
+ La **federazione delle identità** crea una relazione di fiducia tra un provider di identità esterno e AWS. Puoi utilizzare il tuo provider OpenID Connect (OIDC) o Security Assertion Markup Language (SAML) 2.0 esistente per gestire chi può accedere alle risorse AWS . Quando utilizzi OIDC e SAML 2.0 per configurare una relazione di fiducia tra questi provider di identità esterni e AWS , all'utente viene assegnato un ruolo IAM. e riceve credenziali provvisorie che gli consentono di accedere alle tue risorse AWS .

  Per ulteriori informazioni sui principali federati, consulta [Provider di identità e federazione in AWS](id_roles_providers.md).
+ I **federated principal** sono identità esistenti provenienti dall'elenco degli utenti aziendali o da Directory Service un provider OIDC. AWS [assegna un ruolo a un principale federato quando l'accesso viene richiesto tramite un provider di identità.](id_roles_providers.md)

  Per ulteriori informazioni sui principali federati SAML e OIDC, consulta [Sessioni e ruoli dell’utente federato](introduction_access-management.md#intro-access-roles).
+ Le **policy di autorizzazione** sono policy basate sull'identità che definiscono le azioni e le risorse che il ruolo può utilizzare. Il documento è scritto in base alle regole del linguaggio della policy IAM. 

  Per ulteriori informazioni, consulta [Riferimento alla policy JSON IAM](reference_policies.md).
+ Il **limite delle autorizzazioni** è una funzione avanzata in cui le policy vengono utilizzate per limitare il numero massimo di autorizzazioni che una policy basata su identità può concedere a un ruolo. Non è possibile applicare un limite delle autorizzazioni a un ruolo collegato al servizio.

  Per ulteriori informazioni, consulta [Limiti delle autorizzazioni per le entità IAM](access_policies_boundaries.md).

# Problema del "confused deputy"
<a name="confused-deputy"></a>

Con "confused deputy" si intende un problema di sicurezza in cui un'entità che non dispone dell'autorizzazione per eseguire una certa operazione può costringere un'entità con più privilegi a eseguire tale operazione. Per evitare che ciò accada, AWS fornisce strumenti che ti aiutano a proteggere il tuo account se fornisci a terzi (i cosiddetti *cross-account*) o ad altri AWS servizi (noti come *cross-service*) l'accesso alle risorse del tuo account.

A volte, potresti dover concedere a terzi l'accesso alle tue AWS risorse (accesso delegato). Ad esempio, decidete di assumere una società terza chiamata Example Corp per monitorare Account AWS e ottimizzare i costi. Per tenere traccia delle vostre spese giornaliere, Example Corp deve accedere alle vostre AWS risorse. Example Corp controlla anche molti altri Account AWS per altri clienti. Puoi utilizzare un ruolo IAM per stabilire una relazione di fiducia tra il tuo account Account AWS e quello di Example Corp. Un aspetto importante di questo scenario è l’*ID esterno*, un identificativo facoltativo che è possibile utilizzare in una policy di attendibilità del ruolo IAM per indicare chi può assumere il ruolo. La funzione principale dell'ID esterno è quella di risolvere e prevenire il problema del "confused deputy" (delegato confuso).

Alcuni AWS servizi (servizi di chiamata) utilizzano il proprio AWS service principal per accedere alle AWS risorse di altri AWS servizi (chiamati servizi). In alcune di queste interazioni di servizio è possibile configurare i servizi di chiamata in modo che comunichino con le risorse di un servizio chiamato in un altro modo Account AWS. Un esempio di ciò è la configurazione AWS CloudTrail per la scrittura su un bucket Amazon S3 centrale che si trova in un altro. Account AWS Al servizio di chiamata CloudTrail viene concesso l'accesso al bucket S3 utilizzando la policy del bucket S3 aggiungendo un'istruzione allow for. `cloudtrail.amazonaws.com`

Quando un responsabile di un AWS servizio chiamante accede a una risorsa da un servizio chiamato, la politica delle risorse del servizio chiamato autorizza solo il responsabile del servizio e non l'attore che ha configurato il AWS servizio chiamante. Ad esempio, un bucket S3 che si fida del responsabile del CloudTrail servizio senza condizioni potrebbe ricevere CloudTrail i log configurati da un amministratore fidato, ma anche CloudTrail i log da un attore non autorizzato Account AWS che lo utilizza Account AWS, se conosce il nome del bucket S3.

Il confuso problema del vicedirettore sorge quando un attore sfrutta la fiducia del responsabile del AWS servizio per accedere a risorse a cui non dovrebbe avere accesso.

## Prevenzione del problema "confused deputy" tra account
<a name="mitigate-confused-deputy"></a>

Il seguente diagramma illustra il problema "confused deputy" tra account.

![\[Descrizione di un problema "confused deputy".\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/confuseddeputyproblem2.png)


In questo scenario sono validi i requisiti riportati di seguito:
+ **AWS 1** è tuo Account AWS.
+ **AWS 1: ExampleRole** è un ruolo nel tuo account. La policy di affidabilità di questo ruolo considera attendibile Example Corp specificando l'account AWS di Example Corp come account che può assumere il ruolo.

Ecco che cosa succede:

1. Quando inizi a utilizzare il servizio di Example Corp, fornisci l'ARN **AWS di 1 ExampleRole**: a Example Corp.

1. Example Corp utilizza quel ruolo ARN per ottenere credenziali di sicurezza temporanee per accedere alle risorse del tuo. Account AWS In questo modo, l'Utente A considera Example Corp come "deputy" attendibile che può agire per conto dell'Utente A stesso.

1. Anche un altro AWS cliente inizia a utilizzare il servizio di Example Corp e fornisce anche l'ARN **AWS di 1 ExampleRole**: for Example Corp da utilizzare. Presumibilmente l'altro cliente ha imparato o indovinato il numero **AWS 1: ExampleRole**, che non è un segreto.

1. Quando l'altro cliente chiede a Example Corp di accedere alle AWS risorse del suo account (quello che afferma di essere), Example Corp utilizza **AWS 1: ExampleRole** per accedere alle risorse del tuo account.

Questo è il modo in cui altri clienti possono ottenere l'accesso non autorizzato alle risorse di un utente, in questo caso dell'Utente A. Poiché il cliente Utente B è stato in grado di ingannare Example Corp e lo ha indotto ad agire involontariamente sulle risorse, Example Corp è ora un "confused deputy".

Example Corp può risolvere il problema "confused deputy" chiedendo di includere la condizione di verifica `ExternalId` nella policy di affidabilità del ruolo. Example Corp genera un valore `ExternalId` univoco per ogni cliente e lo utilizza nella sua richiesta per assumere il ruolo. Il valore `ExternalId` deve essere univoco tra i clienti di Example Corp e controllato da Example Corp, non dai suoi clienti. Questo è il motivo per cui i clienti lo ricevono da Example Corp e non lo creano in autonomia. In questo modo si evita che Example Corp si comporti in modo confuso e consenta l'accesso alle risorse di un altro account. AWS 

In questo scenario, immagina che l'ID univoco di Example Corp per te sia 12345 e quello per l'altro cliente sia 67890. Questi ID sono semplificati per comodità in questo scenario. In genere, questi identificatori sono. GUIDs Supponendo che questi identificatori siano univoci tra i clienti di Example Corp, sono valori sensibili da utilizzare per l'ID esterno. 

Example Corp ti fornisce il valore ID esterno 12345. È necessario aggiungere un elemento `Condition` alla policy di attendibilità del ruolo che richieda che il valore [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#condition-keys-sts](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#condition-keys-sts) sia 12345, come segue:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Principal": {
      "AWS": "Example Corp's AWS Account ID"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
      "StringEquals": {
        "sts:ExternalId": "12345"
      }
    }
  }
}
```

------

L'elemento Condition di questa politica consente a Example Corp di assumere il ruolo solo quando la chiamata AssumeRole API include il valore ID esterno 12345. Example Corp si assicura che, ogni volta che assume un ruolo per conto di un cliente, includa sempre il valore dell'ID esterno del cliente nella chiamata. AssumeRole Anche se un altro cliente fornisce a Example Corp il tuo ARN, non può controllare l'ID esterno che Example Corp include nella sua richiesta. AWS In questo modo è possibile evitare che un cliente non autorizzato acceda alle tue risorse.

Il diagramma seguente illustra tale processo.

![\[Come mitigare un problema "confused deputy".\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/confuseddeputymitigation2.png)


1. Come in precedenza, quando si inizia a utilizzare il servizio di Example Corp, si fornisce l'ARN **AWS di 1 ExampleRole**: a Example Corp.

1.  Quando Example Corp utilizza quel ruolo ARN per assumere il **AWS ruolo 1 ExampleRole**:, Example Corp include l'ID esterno (12345) nella chiamata API. AssumeRole L'ID esterno corrisponde alla politica di fiducia del ruolo, quindi la chiamata AssumeRole API ha esito positivo e Example Corp ottiene le credenziali di sicurezza temporanee per accedere alle risorse del tuo. Account AWS

1. Anche un altro AWS cliente inizia a utilizzare il servizio di Example Corp e, come in precedenza, fornisce anche l'ARN **AWS di 1 ExampleRole**: for Example Corp da utilizzare. 

1. Ma questa volta, quando Example Corp tenta di assumere il ruolo **AWS 1: ExampleRole**, fornisce l'ID esterno associato all'altro cliente (67890). L'altro cliente non ha modo di modificare questa operazione. Example Corp opera in questo modo perché la richiesta di utilizzare il ruolo proviene dall'altro cliente, pertanto 67890 indica la circostanza in cui Example Corp sta operando. Poiché hai aggiunto una condizione con il tuo ID esterno (12345) alla politica di fiducia **AWS 1: ExampleRole**, la AssumeRole chiamata API ha esito negativo. All'altro cliente viene impedito di ottenere l'accesso non autorizzato alle risorse nel tuo account (indicato dalla "X" rossa nel diagramma).

L'ID esterno consente di impedire a qualsiasi altro cliente di ingannare Example Corp e indurre l'azienda ad accedere involontariamente alle risorse.

## Prevenzione del problema "confused deputy" tra servizi
<a name="cross-service-confused-deputy-prevention"></a>

Il diagramma seguente illustra il problema dell'assistente confuso tra servizi utilizzando l' CloudTrail esempio di interazione con Amazon S3, in cui un attore non autorizzato scrive i log su un bucket Amazon S3 CloudTrail a cui non è autorizzato ad accedere.

![\[A un attore non autorizzato viene concesso l'accesso a un bucket Amazon S3 in un altro account utilizzando CloudTrail il service principal.\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/cross-service-confused-deputy1.png)


Per evitare che un attore non autorizzato utilizzi la fiducia di un AWS responsabile per accedere alle tue risorse, i responsabili del AWS servizio includono informazioni sulla AWS risorsa e sull' AWS organizzazione per cui agiscono. Account AWS

Queste informazioni sono disponibili in valori chiave globali che possono essere utilizzati in una politica delle risorse o in una politica di controllo delle risorse per le richieste effettuate dai responsabili del AWS servizio. Ti consigliamo di utilizzare[aws:SourceArn](reference_policies_condition-keys.md#condition-keys-sourcearn), [aws:SourceAccount](reference_policies_condition-keys.md#condition-keys-sourceaccount)[aws:SourceOrgID](reference_policies_condition-keys.md#condition-keys-sourceorgid), o [aws:SourceOrgPaths](reference_policies_condition-keys.md#condition-keys-sourceorgpaths) nelle politiche relative alle risorse laddove al responsabile del AWS servizio sia concessa l'autorizzazione ad accedere a una delle tue risorse. Queste chiavi di condizione consentono di verificare, nell'ambito delle politiche relative alle risorse o alle politiche di controllo delle risorse, che i responsabili dei AWS servizi che accedono alle risorse lo facciano per conto delle AWS risorse Account AWS, o come previsto dall' AWS Organizations utente.
+ `aws:SourceArn`Da utilizzare per consentire a un responsabile del AWS servizio di accedere alle risorse per conto di una risorsa specifica, ad esempio un AWS CloudTrail percorso o una AppStream flotta specifici.
+ `aws:SourceAccount`Da utilizzare per consentire a un responsabile del AWS servizio di accedere alle risorse per conto di una determinata persona Account AWS.
+ `aws:SourceOrgID`Da utilizzare per consentire a un responsabile AWS del servizio di accedere alle risorse dell'utente per conto di una persona specifica AWS Organizations.
+ `aws:SourceOrgPaths`Da utilizzare per consentire al responsabile del AWS servizio di accedere alle risorse per conto di un AWS Organizations percorso specifico.

Il diagramma seguente illustra lo scenario sostitutivo confuso tra diversi servizi in cui una risorsa viene configurata con la chiave di contesto della condizione `aws:SourceAccount` globale e un attore non autorizzato di un altro account tenta di accedere a AWS risorse a cui non dovrebbe avere accesso.

![\[A un attore non autorizzato viene negato l'accesso a un bucket Amazon S3 in un altro account utilizzando CloudTrail il service principal.\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/cross-service-confused-deputy2.png)


L’utilizzo delle chiavi di condizione globali `aws:SourceArn`, `aws:SourceAccount`, `aws:SourceOrgID` e `aws:SourceOrgPaths` in una policy ti aiuta a garantire che i principali del servizio accedano alle tue risorse per tuo conto. Ti consigliamo di utilizzare queste chiavi di condizione ogni volta che l'accesso a una delle tue risorse viene concesso a un AWS responsabile del servizio. 

**Nota**  
Alcune Servizio AWS interazioni prevedono controlli aggiuntivi che aiutano a proteggersi da problemi amministrativi confusi tra diversi servizi che mettono alla prova l'accesso degli utenti a una risorsa. Ad esempio, quando la concessione di una chiave KMS viene concessa a un utente Servizio AWS, AWS KMS utilizza il contesto di crittografia associato alla risorsa e la concessione della chiave per contribuire alla protezione da problemi connessi alla confusione tra i vari servizi.  
Consulta la documentazione dei servizi in uso per ulteriori informazioni sui meccanismi specifici del servizio che possono aiutare a evitare rischi derivanti dal problema “confused deputy” tra servizi diversi e per scoprire se `aws:SourceArn`, `aws:SourceAccount`, `aws:SourceOrgID` e `aws:SourceOrgPaths` sono supportati.

## Protezione dal problema “confused deputy” tra servizi diversi con le policy basate su risorse
<a name="cross-service-confused-deputy-prevention-resource"></a>

La seguente politica di esempio concede l'`cloudtrail.amazonaws.com`accesso principale del servizio al bucket Amazon S3, arn:aws:s3: ::amzn-s3-demo-bucket1, solo quando il responsabile del servizio agisce per conto di 111122223333. Account AWS 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CloudTrailAclCheck",
            "Effect": "Allow",
            "Principal": {"Service": "cloudtrail.amazonaws.com"},
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                }
            }
        },
        {
            "Sid": "AWSCloudTrailWrite",
            "Effect": "Allow",
            "Principal": {"Service": "cloudtrail.amazonaws.com"},
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/[optionalPrefix]/Logs/myAccountID/*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                }
            }
        }
    ]
}
```

------

Questa policy bucket di esempio concede al servizio l'`appstream.amazonaws.com`accesso principale allo script powershell examplefile.psh all'interno di s3://amzn-s3-demo-bucket2 solo quando agisce per conto della AppStream flotta Amazon specificata, specificando la flotta con cui arn. `aws:SourceArn`

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "appstream.amazonaws.com"
                ]
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket2/examplefile.psh",
            "Condition": {
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:appstream:us-east-1:111122223333:fleet/ExampleFleetName"
                } 
            }
        }
    ]
}
```

------

## Protezione dal problema “confused deputy” tra servizi diversi con le policy di controllo delle risorse
<a name="cross-service-confused-deputy-prevention-resource-control"></a>

Puoi utilizzare le politiche di controllo delle risorse (RCP) per applicare controlli sostitutivi confusi tra diversi servizi alle risorse supportate. Servizi AWS RCPs consentono di applicare centralmente alle risorse controlli sostitutivi confusi tra diversi servizi. È possibile utilizzare chiavi di condizione AWS Organizations, `aws:SourceOrgId` analogamente a quelle `aws:SourceOrgPaths` RCPs associate alle unità organizzative (OU) o Account AWS all'interno dell'organizzazione, senza aggiungere dichiarazioni a politiche specifiche basate sulle risorse. *Per ulteriori informazioni sui RCPs servizi supportati, consulta [le politiche di controllo delle risorse (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) nella Guida per l'AWS Organizations utente.*

L'esempio seguente RCP nega ai responsabili AWS del servizio l'accesso ai bucket Amazon S3 nei tuoi account membro quando non `aws:SourceOrgID` è uguale a o-. ExampleOrg Un'autorizzazione corrispondente deve essere presente nella policy basata sulle risorse del bucket S3 per consentire i principali con un valore pari a o-. Servizio AWS `SourceOrgID` ExampleOrg

Questa policy applica il controllo solo alle richieste dei principali del servizio (`"Bool": {"aws:PrincipalIsAWSService": "true"}`) che hanno la chiave `aws:SourceAccount` (`"Null": {"aws:SourceAccount": "false"}`), in modo che le integrazioni di servizi che non richiedono l’uso di questa chiave di condizione e le chiamate da parte dei principali non vengano influenzate. Se la chiave di condizione `aws:SourceAccount` è presente nel contesto della richiesta, la condizione Null verrà valutata come true, determinando l’applicazione della chiave `aws:SourceOrgID`. Utilizziamo invece `aws:SourceAccount` al posto di `aws:SourceOrgID` nell’operatore di condizione Null in modo che il controllo si applichi ancora se la richiesta proviene da un account che non appartiene a un’organizzazione.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "RCPEnforceConfusedDeputyProtectionForS3",
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3:*"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEqualsIfExists": {
          "aws:SourceOrgID": "o-ExampleOrg"
        },
        "Null": {
          "aws:SourceAccount": "false"
        },
        "Bool": {
          "aws:PrincipalIsAWSService": "true"
        }
      }
    }
  ]
}
```

------

# Scenari comuni per i ruoli IAM
<a name="id_roles_common-scenarios"></a>

Come per la maggior parte delle AWS funzionalità, in genere hai due modi per utilizzare un ruolo: in modo interattivo nella console IAM o a livello di codice con gli AWS CLI strumenti per Windows PowerShell o l'API.
+ Gli utenti IAM nell'account che utilizza la console IAM possono *passare* a un ruolo per utilizzare temporaneamente le autorizzazioni del ruolo nella console. Gli utenti abbandonano le loro autorizzazioni originali e assumono le autorizzazioni assegnate al ruolo. Quando gli utenti escono dal ruolo, le autorizzazioni originali vengono ripristinate.
+ Un'applicazione o un servizio offerto da AWS (come Amazon EC2) può *assumere* un ruolo richiedendo credenziali di sicurezza temporanee per un ruolo a cui effettuare richieste programmatiche. AWSÈ possibile utilizzare un ruolo in questo modo per non dover condividere o gestire le credenziali di sicurezza a lungo termine (ad esempio creando un utente IAM) per ogni entità che richiede l'accesso a una risorsa.

**Nota**  
In questa guida le frasi *passare a un ruolo* e *assumere un ruolo* vengono utilizzate in modo intercambiabile.

Il modo più semplice per utilizzare i ruoli è quello di concedere agli utenti IAM le autorizzazioni per passare ai ruoli creati da te all'interno del tuo o di un altro Account AWS. È possibile passare da un ruolo all'altro facilmente utilizzando la console IAM per utilizzare le autorizzazioni che non si desidera abbiano normalmente e uscire dal ruolo per cedere a tali autorizzazioni. Ciò può aiutare a impedire l'accesso *accidentale* alle risorse sensibili o la loro modifica.

Per utilizzi più complessi di ruoli, ad esempio la concessione di accesso alle applicazioni e servizi, o gli utenti federati esterni, è possibile richiamare l'API `AssumeRole`. Questa chiamata API restituisce un set di credenziali temporanee che l'applicazione può utilizzare in successive chiamate API. Le operazioni tentate con le credenziali temporanee dispongono solo delle autorizzazioni concesse dal ruolo associato. Un'applicazione non deve "uscire" dal ruolo nello stesso modo di un utente nella console, ma l'applicazione smette semplicemente di utilizzare le credenziali temporanee e riprende le chiamate con le credenziali originali.

Gli utenti federati accedono utilizzando le credenziali di un provider di identità (IdP). AWS fornisce quindi credenziali temporanee all'IdP affidabile da trasmettere all'utente per includerle nelle AWS successive richieste di risorse. Queste credenziali forniscono le autorizzazioni concesse al ruolo assegnato.

Questa sezione fornisce una panoramica dei seguenti scenari:
+ [Fornisci l'accesso a un utente IAM in uno Account AWS di tua proprietà per accedere alle risorse di un altro account di tua proprietà](id_roles_common-scenarios_aws-accounts.md)
+ [Fornire l'accesso a carichi di lavoro non AWS](id_roles_common-scenarios_non-aws.md)
+ [Fornire l'accesso agli utenti IAM negli Account AWS di proprietà di terze parti](id_roles_common-scenarios_third-party.md)
+ [Fornisci l'accesso ai servizi offerti dalle AWSAWS risorse](id_roles_common-scenarios_services.md)
+ [Fornire l'accesso agli utenti autenticati esternamente (federazione delle identità)](id_roles_common-scenarios_federated-users.md)

# Accesso per un utente IAM in un altro Account AWS di tua proprietà
<a name="id_roles_common-scenarios_aws-accounts"></a>

Puoi concedere ai tuoi utenti IAM il permesso di passare a ruoli interni a te Account AWS o a ruoli definiti in altri ruoli Account AWS di tua proprietà. 

**Nota**  
Se desideri concedere l'accesso a un account che non possiedi né controlli, consulta [Accesso a Account AWS siti di proprietà di terzi](id_roles_common-scenarios_third-party.md) più avanti in questo argomento. 

Immaginiamo di avere delle istanze Amazon EC2 critiche per la tua organizzazione. Invece di concedere direttamente agli utenti l'autorizzazione a terminare le istanze, è possibile creare un ruolo con tali privilegi. Quindi consentire agli amministratori di passare al ruolo quando è necessario terminare un'istanza. In questo modo si aggiungono i seguenti livelli di protezione alle istanze:
+ È necessario concedere esplicitamente agli utenti il permesso di assumere quel ruolo.
+ I tuoi utenti devono passare attivamente al ruolo utilizzando Console di gestione AWS o assumere il ruolo utilizzando l' AWS API AWS CLI o.
+ È possibile aggiungere una Multi-Factor Authentication (MFA) al ruolo, in modo che solo gli utenti che accedono con un dispositivo MFA possano assumere quel ruolo. Per ulteriori informazioni su come configurare un ruolo in modo che gli utenti che assumono il ruolo debbano essere prima autenticati utilizzando l'autenticazione a più fattori (MFA), consulta [Accesso sicuro alle API con MFA](id_credentials_mfa_configure-api-require.md).

Consigliamo di utilizzare questo approccio per applicare il *principio di privilegio minimo*. Ciò significa limitare l'uso di autorizzazioni elevate unicamente a quelle volte in cui sono necessarie per operazioni specifiche. Per impedire le modifiche accidentali apportate agli ambienti sensibili, puoi utilizzare i ruoli, soprattutto se combinati con attività di [audit](cloudtrail-integration.md) per garantire che vengano utilizzati solo quando necessario.

Quando si crea un ruolo per questo scopo, è necessario specificare l'ID degli account da cui gli utenti devono accedere nell'elemento `Principal` della policy di affidabilità del ruolo. È quindi possibile concedere agli utenti specifici in tali altri account le autorizzazioni per passare al ruolo. Per capire se i principali negli account esterni alla zona di attendibilità (organizzazione o account attendibile) dispongono dell'accesso per assumere i ruoli, consulta [Cos'è IAM Access Analyzer?](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html).

Un utente in un account può passare a un ruolo dello stesso o di un altro account. Mentre si usa il ruolo, l'utente è in grado di eseguire solo le azioni e accedere solo alle risorse consentite dal ruolo; le loro autorizzazioni utente originali sono sospese. Quando l'utente esce dal ruolo, le autorizzazioni utente originali vengono ripristinate.

## Esempio di uno scenario in cui si utilizzano account di sviluppo e produzione separati
<a name="id_roles_common-scenarios_aws-accounts-example"></a>

Immaginate che la vostra organizzazione disponga Account AWS di più elementi per isolare un ambiente di sviluppo da un ambiente di produzione. Gli utenti nell'account di sviluppo potrebbero occasionalmente aver bisogno di accedere alle risorse nell'account di produzione. Ad esempio, potrebbe essere necessario l'accesso a più account quando si sta richiedendo un aggiornamento dall'ambiente di sviluppo all'ambiente di produzione. Anche se è possibile creare identità separate (e password) per gli utenti che lavorano con entrambi gli account, la gestione delle credenziali per più account complica la gestione delle identità. Nell'illustrazione seguente, tutti gli utenti vengono gestiti nell'account di sviluppo, ma per alcuni sviluppatori è necessario un accesso limitato all'account di produzione. L'account di sviluppo dispone di due gruppi: collaudatori e sviluppatori, e ciascun gruppo ha la propria policy.

![\[Utilizzare un ruolo per delegare le autorizzazioni a un utente in un account diverso\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/roles-usingroletodelegate.png)


1. Nell'account di produzione, un amministratore utilizza IAM per creare il ruolo `UpdateApp` in tale account. Nel ruolo, l'amministratore definisce una policy di affidabilità che specifica l'account di sviluppo come `Principal`; in tal modo gli utenti autorizzati dall'account di sviluppo possono utilizzare il ruolo `UpdateApp`. L'amministratore definisce inoltre una policy delle autorizzazioni per il ruolo che specifica le autorizzazioni in lettura e scrittura per il bucket Amazon S3 denominato `productionapp`.

   L'amministratore quindi condivide le informazioni appropriate con chiunque debba assumere quel ruolo. Tali informazioni sono il numero di account e il nome del ruolo (per gli utenti della AWS console) o l'Amazon Resource Name (ARN) (per AWS CLI l'accesso all' AWS API). L'ARN del ruolo può essere simile a `arn:aws:iam::123456789012:role/UpdateApp`, dove il ruolo è denominato `UpdateApp` ed è stato creato nel numero di account 123456789012.
**Nota**  
L'amministratore può eventualmente configurare il ruolo in modo che gli utenti che assumono il ruolo debbano essere prima autenticati utilizzando l'autenticazione a più fattori (MFA). Per ulteriori informazioni, consulta [Accesso sicuro alle API con MFA](id_credentials_mfa_configure-api-require.md). 

1. Nell'account di sviluppo, un amministratore concede ai membri del gruppo di sviluppatori l'autorizzazione a cambiare il ruolo. Ciò viene fatto concedendo al gruppo Developers l'autorizzazione a chiamare l'`AssumeRole`API AWS Security Token Service (AWS STS) per il `UpdateApp` ruolo. Qualsiasi utente IAM che appartiene al gruppo Sviluppatori nell'account di sviluppo può ora passare al ruolo `UpdateApp` nell'account di produzione. Gli altri utenti che non appartengono al gruppo di sviluppatori non hanno il permesso di passare al ruolo e pertanto non sono in grado di accedere al bucket S3 nell'account di produzione.

1. L'utente richiede di cambiare il ruolo:
   + AWS **console: l'utente sceglie il nome dell'account nella barra di navigazione e sceglie Switch Role.** L'utente specifica l'ID account (o alias) e il nome del ruolo. In alternativa, l'utente può fare clic su un collegamento inviato nell'e-mail dall'amministratore. Il link indirizza l'utente alla pagina **Switch Role (Cambia ruolo)** con i dettagli già compilati.
   + AWS API/AWS CLI: Un utente del gruppo Developers dell'account di sviluppo chiama la `AssumeRole` funzione per ottenere le credenziali per il ruolo. `UpdateApp` L'utente specifica l'ARN del ruolo `UpdateApp` come parte della chiamata. Se un utente nel gruppo di collaudatori inoltra la stessa richiesta, la richiesta ha esito negativo perché i collaudatori non hanno l'autorizzazione a chiamare `AssumeRole` per il `UpdateApp` ruolo ARN.

1. AWS STS restituisce credenziali temporanee:
   + AWS console: AWS STS verifica la richiesta con la politica di fiducia del ruolo per garantire che la richiesta provenga da un'entità attendibile (che è: l'account di sviluppo). Dopo la verifica, AWS STS restituisce [le credenziali di sicurezza temporanee](https://docs.aws.amazon.com/STS/latest/UsingSTS/Welcome.html) alla AWS console.
   + API/CLI: AWS STS verifica la richiesta rispetto alla politica di fiducia del ruolo per garantire che la richiesta provenga da un'entità attendibile (che è: l'account Development). Dopo la verifica, AWS STS restituisce le [credenziali di sicurezza temporanee](https://docs.aws.amazon.com/STS/latest/UsingSTS/Welcome.html) all'applicazione.

1. Le credenziali temporanee consentono l'accesso alla AWS risorsa:
   + AWS console: la AWS console utilizza le credenziali temporanee per conto dell'utente per tutte le azioni successive della console, in questo caso, per leggere e scrivere nel `productionapp` bucket. La console non è in grado di accedere ad altre risorse nell'account di produzione. Quando l'utente esce dal ruolo, le autorizzazioni dell'utente tornano a quelle originali detenute prima di cambiare il ruolo.
   + API/CLI: l'applicazione utilizza le credenziali di sicurezza provvisorie per aggiornare il bucket `productionapp`. Con le credenziali di sicurezza provvisorie, l'applicazione può solo leggere e scrivere al bucket `productionapp` e non è in grado di accedere a qualsiasi altra risorsa nell'account di produzione. L'applicazione non deve uscire dal ruolo, bensì cessa di utilizzare le credenziali provvisorie e utilizza le credenziali originali nelle successive chiamate API.

## Risorse aggiuntive
<a name="id_roles_common-scenarios_more-info"></a>

Per ulteriori informazioni, consulta gli argomenti seguenti:
+ [Tutorial IAM: delega l'accesso tra AWS account utilizzando i ruoli IAM](tutorial_cross-account-with-roles.md)

# Accesso per AWS carichi non di lavoro
<a name="id_roles_common-scenarios_non-aws"></a>

Un [ruolo IAM](id_roles.md) è un oggetto in AWS Identity and Access Management (IAM) a cui vengono assegnate le [autorizzazioni](access_policies.md). Quando [assumi quel ruolo](id_roles_manage-assume.md) utilizzando un'identità IAM o un'identità esterna a AWS, ti vengono fornite credenziali di sicurezza temporanee per la tua sessione di ruolo. Potresti avere carichi di lavoro in esecuzione nel tuo data center o in un'altra infrastruttura esterna AWS che deve accedere alle tue AWS risorse. Invece di creare, distribuire e gestire chiavi di accesso a lungo termine, puoi utilizzare AWS Identity and Access Management Roles Anywhere (IAM Roles Anywhere) per autenticare i tuoi carichi non di lavoro. AWS IAM Roles Anywhere utilizza i certificati X.509 dell'autorità di certificazione (CA) per autenticare le identità e fornire l'accesso in modo sicuro alle credenziali temporanee fornite da Servizi AWS un ruolo IAM.

**Per utilizzare IAM Roles Anywhere**

1. Configura una CA utilizzando [AWS Autorità di certificazione privata](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html) o utilizza una CA dalla propria infrastruttura PKI.

1. Dopo aver impostato una CA, viene creato un oggetto in IAM Roles Anywhere chiamato *ancoraggio di fiducia*. Questo ancoraggio stabilisce la fiducia tra IAM Roles Anywhere e la tua CA per l'autenticazione.

1. Puoi quindi configurare i ruoli IAM esistenti o creare nuovi ruoli che si fidino del servizio IAM Roles Anywhere.

1. Autentica i tuoi AWS carichi non di lavoro con IAM Roles Anywhere utilizzando il trust anchor. AWS concede le credenziali temporanee non legate al AWS carico di lavoro al ruolo IAM che ha accesso alle tue risorse. AWS 

## Risorse aggiuntive
<a name="id_roles_non-aws_additional_resources"></a>

Le risorse seguenti possono rivelarsi utili per fornire l'accesso a carichi di lavoro non AWS .
+ Per ulteriori informazioni sulla configurazione di Ruoli IAM Anywhere, consulta l'argomento [Cos'è AWS Identity and Access Management Ruoli Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html) nella *Guida dell'utente di IAM Roles Anywhere*.
+ Per scoprire come configurare un'infrastruttura a chiave pubblica (PKI) per IAM Roles Anywhere, consulta [IAM Roles Anywhere con un'autorità di certificazione esterna](https://aws.amazon.com/blogs/) nel *Blog sulla sicurezza AWS *.

# Accesso a Account AWS siti di proprietà di terzi
<a name="id_roles_common-scenarios_third-party"></a>

Quando terze parti richiedono l'accesso alle AWS risorse dell'organizzazione, puoi utilizzare i ruoli per delegare l'accesso a tali risorse. Ad esempio, una terza parte potrebbe fornire un servizio per la gestione delle risorse AWS . Con i ruoli IAM, puoi concedere a queste terze parti l'accesso alle tue AWS risorse senza condividere le tue credenziali AWS di sicurezza. Invece, la terza parte può accedere alle tue AWS risorse assumendo un ruolo da te creato all'interno delle tue. Account AWS Per capire se i principali negli account esterni alla zona di attendibilità (organizzazione o account attendibile) dispongono dell'accesso per assumere i ruoli, consulta [Cos'è IAM Access Analyzer?](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html).

Le terze parti devono fornirti le informazioni seguenti per permetterti di creare un ruolo che possa essere da loro assunto:
+ **L' Account AWS ID della terza parte**. Puoi specificare il loro ID dell' Account AWS come entità principale quando definisci la policy di affidabilità per il ruolo.
+ **Un ID esterno da associare in modo univoco con il ruolo.** L'ID esterno può essere qualsiasi identificatore noto a te e alla terza parte. Puoi ad esempio usare un ID di fattura tra te e la terza parte, ma non devi usare qualcosa che sia possibile indovinare, ad esempio il nome o il numero di telefono della terza parte. Devi specificare questo ID quando definisci la policy di affidabilità per il ruolo. La terza parte deve fornire questo ID quando assume il ruolo.
+ **Le autorizzazioni di cui la terza parte necessita per usare le risorse AWS ** Devi specificare queste autorizzazioni quando definisci la policy di autorizzazione del ruolo. Questa policy definisce le operazioni consentite e le risorse a cui è possibile accedere.

Dopo aver creato il ruolo, devi fornire l'Amazon Resource Name (ARN) del ruolo alla terza parte. L'ARN del ruolo è necessario per assumere il ruolo.

**Importante**  
Quando concedi a terze parti l'accesso alle tue AWS risorse, queste possono accedere a qualsiasi risorsa specificata nella politica. Le risorse usate dalla terza parte vengono fatturate a te. Assicurati di limitare l'uso delle risorse in modo appropriato.

## Esterno IDs per accesso da parte di terzi
<a name="id_roles_third-party_external-id"></a>

Un ID esterno consente all'utente che sta assumendo il ruolo di dichiarare le circostanze in cui sta operando. Fornisce inoltre un modo per il proprietario dell'account di consentire che il ruolo venga assunto solo in circostanze specifiche. La funzione principale dell'ID esterno è quella di risolvere e prevenire il [Problema del "confused deputy"](confused-deputy.md).

**Importante**  
AWS non considera l'ID esterno come segreto. Dopo aver creato un segreto, ad esempio una coppia di chiavi di accesso o una password AWS, non è possibile visualizzarli nuovamente. L'ID esterno di un ruolo può essere visualizzato da chiunque disponga dell'autorizzazione a visualizzarlo. 

## Quando si deve usare l'ID esterno?
<a name="external-id-use"></a>

Utilizzare un ID esterno nelle seguenti situazioni:
+ Sei un Account AWS proprietario e hai configurato un ruolo per una terza parte che accede ad altri ruoli oltre Account AWS al tuo. È opportuno chiedere alla terza parte un ID esterno da includere quando assume il ruolo fornito alla terza parte. Quindi verificare l'ID esterno tramite la policy di affidabilità del ruolo fornito alla terza parte. Ciò garantisce che la parte esterna possa assumere il tuo ruolo solo quando agisce per conto del proprietario.
+ Ci si trova in una posizione che comporta l'assunzione di ruoli per conto di diversi clienti in modo analogo a Example Corp nello scenario precedente. È opportuno assegnare un ID esterno univoco a ciascun cliente e fornire indicazioni per aggiungere l'ID esterno alla policy di affidabilità creata per il ruolo da fornire. È quindi necessario assicurarsi di includere sempre l'ID esterno corretto nelle richieste di assunzione dei ruoli.

  Probabilmente si dispone già di un identificativo univoco per ogni cliente e questo ID univoco è sufficiente per l'utilizzo come ID esterno. L'ID esterno non è un valore speciale da creare in modo esplicito o monitorare separatamente, solo per questo scopo.

  Si deve sempre specificare l'ID esterno nelle chiamate API `AssumeRole`. Inoltre, quando un cliente assegna un ARN del ruolo, verificare se è possibile assumere il ruolo con e senza l'ID esterno corretto. Se è possibile assumere il ruolo senza l'ID esterno corretto, non memorizzare l'ARN del ruolo del cliente nel sistema. Attendere fino a quando il cliente non ha aggiornato la policy di affidabilità del ruolo per richiedere l'ID esterno corretto. In questo modo è possibile aiutare i clienti a operare nel modo corretto e pertanto a garantire la sicurezza di entrambi rispetto al problema "confused deputy".

## Scenario di esempio che utilizza un ID esterno
<a name="id_roles_third-party_example"></a>

Ad esempio, supponiamo che tu decida di assumere una società terza chiamata Example Corp per monitorare Account AWS e ottimizzare i costi. Per tenere traccia delle spese giornaliere, Example Corp deve accedere alle tue AWS risorse. Example Corp controlla anche molti altri account AWS per altri clienti.

Non fornire l'accesso a Example Corp a un utente IAM e le relative credenziali a lungo termine nell'account AWS . Utilizza invece un ruolo IAM e le credenziali di sicurezza temporanee. Un ruolo IAM fornisce un meccanismo per consentire a terzi di accedere alle vostre AWS risorse senza dover condividere credenziali a lungo termine (come una chiave di accesso utente IAM).

Puoi utilizzare un ruolo IAM per stabilire una relazione di attendibilità tra il tuo Account AWS e l'account di Example Corp. Dopo aver stabilito questa relazione, un membro dell'account Example Corp può chiamare l' AWS Security Token Service [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API per ottenere credenziali di sicurezza temporanee. I membri di Example Corp possono quindi utilizzare le credenziali per accedere alle AWS risorse del tuo account. 

**Nota**  
Per ulteriori informazioni sulle AssumeRole e altre operazioni AWS API che è possibile chiamare per ottenere credenziali di sicurezza temporanee, vedere. [Confronta le AWS STS credenziali](id_credentials_sts-comparison.md)

Di seguito è illustrata un'analisi più dettagliata di questo scenario.

1. L'Utente A affida un incarico a Example Corp, che crea un identificatore univoco per l'Utente A. Ti forniscono questo ID cliente univoco e il loro Account AWS numero. Queste informazioni sono necessarie per creare un ruolo IAM nella fase successiva. 
**Nota**  
Example Corp può utilizzare qualsiasi valore di stringa desiderato per il ExternalId, purché sia unico per ogni cliente. È possibile che si tratti di un numero di account cliente o addirittura di una stringa di caratteri casuale, purché non esistano due clienti con lo stesso valore. Non si tratta di un "segreto". Example Corp deve fornire il ExternalId valore a ciascun cliente. L'aspetto cruciale è che l'ID deve essere generato da Example Corp e ***non*** dai clienti affinché ogni ID esterno sia univoco.

1. Accedi AWS e crei un ruolo IAM che consente a Example Corp di accedere alle tue risorse. Come per qualsiasi ruolo IAM, il ruolo dispone di due tipi di policy: una policy di autorizzazione e una policy di attendibilità. La policy di affidabilità del ruolo specifica chi può assumere il ruolo. Nel nostro scenario di esempio, la policy specifica il Account AWS numero di Example Corp come. `Principal` Ciò consente alle identità di tale account di assumere il ruolo. Inoltre, viene aggiunto un elemento `[Condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Condition)` alla policy di attendibilità. Questo elemento `Condition` verifica la chiave di contesto `ExternalId` per assicurarsi che corrisponda all'ID cliente univoco di Example Corp. Ad esempio:

   ```
       "Principal": {"AWS": "Example Corp's Account AWS ID"},
       "Condition": {"StringEquals": {"sts:ExternalId": "Unique ID Assigned by Example Corp"}}
   ```

1. La policy di autorizzazione per il ruolo specifica le operazioni che il ruolo consente di effettuare a un utente. Ad esempio, puoi specificare che il ruolo deve permettere agli utenti di gestire solo le risorse Amazon RDS e Amazon EC2, ma non gli utenti o i gruppi IAM. In questo scenario di esempio, si utilizza la policy di autorizzazione per fornire l'accesso in sola lettura per Example Corp a tutte le risorse nell'account dell'Utente A.

1. Dopo aver creato il ruolo, è necessario fornire l'Amazon Resource Name (ARN) del ruolo a Example Corp.

1. Quando Example Corp deve accedere alle tue AWS risorse, qualcuno dell'azienda chiama l'API. AWS `sts:AssumeRole` La chiamata include l'ARN del ruolo da assumere e il ExternalId parametro che corrisponde all'ID cliente.

Se la richiesta proviene da qualcuno che utilizza Example Corp e se l'ARN del ruolo e l'ID esterno sono corretti, la richiesta ha esito positivo. Account AWS Fornisce quindi credenziali di sicurezza temporanee che Example Corp può utilizzare per accedere alle AWS risorse consentite dal ruolo.

In altre parole, quando una policy di ruolo include un ID esterno, chiunque desideri assumere il ruolo deve essere un entità principale nel ruolo e deve includere l'ID esterno corretto.

## Punti chiave per l'esterno IDs
<a name="id_roles_third-party_key-points"></a>
+ In un ambiente multi-tenant in cui si supportano più clienti con AWS account diversi, si consiglia di utilizzare un ID esterno per utente. Account AWS Questo ID dovrebbe essere una stringa casuale generata dalla terza parte.
+ Per richiedere che la terza parte fornisca un ID esterno quando si assume un ruolo, aggiorna la policy di attendibilità del ruolo con l'ID esterno scelto.
+ Per fornire un ID esterno quando assumi un ruolo, utilizza l' AWS API AWS CLI o per assumere quel ruolo. Per ulteriori informazioni, consulta l'operazione dell'[AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API STS o l'operazione CLI STS [assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html).
+ Il valore `ExternalId` deve avere un minimo di 2 caratteri e un massimo di 1.224 caratteri. Il valore deve essere alfanumerico senza spazi. Può anche includere i seguenti simboli: più (\$1), uguale (=), virgola (,), punto (.), chiocciola (@), due punti (:), barra (/) e trattino (-).

## Risorse aggiuntive
<a name="id_roles_third-party_additional_resources"></a>

Le risorse seguenti possono rivelarsi utili per fornire l'accesso a Account AWS di proprietà di terze parti.
+ Per informazioni su come consentire ad altri di eseguire azioni sul tuo computer, consulta. Account AWS[Creare un ruolo utilizzando policy di attendibilità personalizzate](id_roles_create_for-custom.md)
+ Per informazioni su come concedere l'autorizzazione per passare a un ruolo, consulta [Concedere le autorizzazioni agli utenti per cambiare ruoli](id_roles_use_permissions-to-switch.md)
+ Per informazioni su come creare e fornire a utenti attendibili credenziali di sicurezza temporanee, [Autorizzazioni per le credenziali di sicurezza temporanee](id_credentials_temp_control-access.md).

# Accesso a un AWS servizio
<a name="id_roles_common-scenarios_services"></a>

Molti AWS servizi richiedono l'utilizzo di ruoli per controllare a cosa può accedere il servizio. Un ruolo che un servizio assume per eseguire operazioni a tuo nome viene chiamato [ruolo del servizio](id_roles.md#iam-term-service-role). Quando un ruolo fornisce uno scopo specializzato per un servizio, questo può essere categorizzato come [ruolo collegato al servizio](id_roles.md#iam-term-service-linked-role). Consulta la [documentazione AWS](https://docs.aws.amazon.com/) di ciascun servizio per verificare se utilizza ruoli e per ulteriori informazioni su come assegnare un ruolo per il servizio da utilizzare.

Per informazioni dettagliate sulla creazione di un ruolo per delegare l'accesso a un servizio offerto da AWS, consulta[Creare un ruolo per delegare le autorizzazioni a un servizio AWS](id_roles_create_for-service.md).

# Accesso a utenti autenticati esternamente (federazione delle identità)
<a name="id_roles_common-scenarios_federated-users"></a>

I tuoi utenti potrebbero già avere identità esterne AWS, ad esempio nella tua directory aziendale. Se tali utenti devono utilizzare AWS risorse (o utilizzare applicazioni che accedono a tali risorse), devono utilizzare anche credenziali AWS di sicurezza. È possibile utilizzare un ruolo IAM per specificare le autorizzazioni per gli utenti la cui identità è federata dalla propria organizzazione o da un provider di identità di terze parti (IdP).

**Nota**  
Come best practice di sicurezza, ti consigliamo di gestire l'accesso degli utenti in [Centro identità IAM](https://docs.aws.amazon.com//singlesignon/latest/userguide/what-is.html) con la federazione delle identità anziché creare utenti IAM. Per informazioni su situazioni specifiche in cui è richiesto un utente IAM, consulta la sezione [Quando creare un utente IAM invece di un ruolo](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html#id_which-to-choose).

## Federazione di utenti di una applicazione per dispositivi mobili o basata sul Web con Amazon Cognito
<a name="id_roles_common-scenarios_federated-users-cognito"></a>

Se crei un'app mobile o basata sul Web che accede alle AWS risorse, l'app necessita di credenziali di sicurezza per poter effettuare richieste programmatiche a. AWS Per la maggior parte degli scenari relativi alle applicazioni per dispositivi mobili, consigliamo di utilizzare [Amazon Cognito](https://aws.amazon.com/cognito/). Puoi utilizzare questo servizio con [AWS Mobile SDK per iOS e Mobile SDK per](https://aws.amazon.com/sdkforios/) [Android e AWS Fire OS per creare identità uniche per gli utenti e](https://aws.amazon.com/sdkforandroid/) autenticarli per un accesso sicuro alle tue risorse. AWS Amazon Cognito supporta gli stessi provider di identità come quelli elencati nella sezione successiva e supporta anche [identità autenticate dallo sviluppatore](https://aws.amazon.com/blogs/mobile/amazon-cognito-announcing-developer-authenticated-identities) e accesso non autenticato (ospite). Amazon Cognito fornisce inoltre operazioni API per la sincronizzazione dei dati utente in modo che vengano conservati quando gli utenti passano da un dispositivo all'altro. Per ulteriori informazioni, consulta [Amazon Cognito per applicazioni per dispositivi mobili](id_federation_common_scenarios.md#id_roles_providers_oidc_cognito). 

## Federazione degli utenti con provider di servizi di identità pubblica o OpenID Connect
<a name="id_roles_common-scenarios_federated-users-openId"></a>

Quando possibile, utilizza Amazon Cognito per scenari di applicazioni per dispositivi mobili o basate sul Web. Amazon Cognito si occupa della maggior parte del behind-the-scenes lavoro con i servizi di provider di identità pubblici per te. Lavora con gli stessi servizi di terze parti e supporta anche gli accessi anonimi. Tuttavia, per ulteriori scenari avanzati, è possibile lavorare direttamente con un servizio di terze parti, ad esempio Login with Amazon, Facebook, Google o qualsiasi IdP compatibile con OpenID Connect (OIDC). Per ulteriori informazioni sull'utilizzo della federazione OIDC utilizzando uno di questi servizi, consulta [Federazione OIDC](id_roles_providers_oidc.md).

## Federazione degli utenti con SAML 2.0
<a name="id_roles_common-scenarios_federated-users-saml20"></a>

Se la tua organizzazione utilizza già un pacchetto software per provider di identità che supporta SAML 2.0 (Security Assertion Markup Language 2.0), puoi creare fiducia tra la tua organizzazione come provider di identità (IdP) e AWS come fornitore di servizi. Puoi quindi utilizzare SAML per fornire ai tuoi utenti il Single Sign-On federato (SSO) o l'accesso federato alle operazioni dell' Console di gestione AWS API di chiamata. AWS Ad esempio, se la tua azienda utilizza Microsoft Active Directory e Active Directory Federation Services, puoi effettuare la federazione utilizzando SAML 2.0. Per ulteriori informazioni sulla federazione degli utenti con SAML 2.0, consulta [Federazione SAML 2.0](id_roles_providers_saml.md).

## Federazione degli utenti creando un'applicazione personalizzata per la gestione di identità
<a name="id_roles_common-scenarios_federated-users-idbroker"></a>

Se il proprio archivio identità non è compatibile con SAML 2.0, è possibile creare un'applicazione personalizzata per la gestione di identità per eseguire una funzione simile. L'applicazione broker autentica gli utenti, richiede credenziali temporanee per gli utenti e quindi le fornisce all'utente per accedere alle AWS risorse. AWS 

Ad esempio, Example Corp. ha molti dipendenti che devono eseguire applicazioni interne che accedono alle risorse dell'azienda. AWS I dipendenti hanno già identità nel sistema di identità e autenticazione dell'azienda ed Example Corp. non desidera creare un utente IAM separato per ogni dipendente dell'azienda.

Bob è uno sviluppatore presso Example Corp. Per consentire alle applicazioni interne di Example Corp. di accedere alle AWS risorse dell'azienda, Bob sviluppa un'applicazione di identity broker personalizzata. L'applicazione verifica che i dipendenti abbiano effettuato l'accesso nel sistema di identità e autenticazione esistente, che potrebbe utilizzare LDAP, Active Directory o un altro sistema. L'applicazione del gestore identità quindi ottiene le credenziali di sicurezza provvisorie per i dipendenti. Questo scenario è simile a quello precedente (un'app mobile che utilizza un sistema di autenticazione personalizzato), tranne per il fatto che le applicazioni che richiedono l'accesso alle AWS risorse vengono eseguite tutte all'interno della rete aziendale e l'azienda dispone di un sistema di autenticazione esistente.

Per ottenere le credenziali di sicurezza provvisorie, l'applicazione del gestore identità chiama `AssumeRole` o `GetFederationToken` per ottenere le credenziali di sicurezza provvisorie, a seconda di come Bob desidera gestire le policy per gli utenti e quando scadono le credenziali provvisorie. (Per ulteriori informazioni sulle differenze tra queste operazioni API, consultare [Credenziali di sicurezza temporanee in IAM](id_credentials_temp.md) e [Autorizzazioni per le credenziali di sicurezza temporanee](id_credentials_temp_control-access.md).) La chiamata restituisce credenziali di sicurezza temporanee costituite da un ID chiave di AWS accesso, una chiave di accesso segreta e un token di sessione. L'applicazione del gestore identità rende tali credenziali di sicurezza provvisorie disponibili all'applicazione aziendale interna. L'applicazione può quindi utilizzare le credenziali provvisorie per effettuare chiamate a AWS direttamente. L'app memorizza le credenziali finché non scadono e in seguito richiede un nuovo set di credenziali temporanee. L'immagine seguente illustra questo scenario.

![\[Esempio di flusso di lavoro in cui viene utilizzata un'applicazione personalizzata del gestore identità\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/enterprise-authentication-with-identity-broker-application.diagram.png)


Questo scenario ha i seguenti attributi:
+ L'applicazione del gestore identità ha le autorizzazioni per accedere all'API di servizio token IAM (STS) per creare le credenziali di sicurezza temporanee.
+ L'applicazione del gestore identità è in grado di verificare che i dipendenti siano autenticati nel sistema di autenticazione esistente.
+ Gli utenti possono ottenere un URL temporaneo che consente loro di accedere alla Console di AWS gestione (denominata Single Sign-on).

Per ulteriori informazioni sulla creazione di credenziali di sicurezza provvisorie, consultare [Confronta le AWS STS credenziali](id_credentials_sts-comparison.md). Per ulteriori informazioni sull'accesso alla Console di gestione da parte dei principali federati SAML, consulta AWS . [Consentire ai principali federati SAML 2.0 di accedere a Console di gestione AWS](id_roles_providers_enable-console-saml.md)

# Creazione di ruoli IAM
<a name="id_roles_create"></a>

Per creare un ruolo, puoi utilizzare l' Console di gestione AWS AWS CLI API Tools for Windows PowerShell o IAM.

Se utilizzi il Console di gestione AWS, una procedura guidata ti guida attraverso i passaggi per la creazione di un ruolo. La procedura guidata prevede passaggi leggermente diversi a seconda che tu stia creando un ruolo per un AWS servizio, per un o per un principale Account AWS federato SAML o OIDC.

**Ruoli per gli utenti IAM**  
Crea questo ruolo per delegare le autorizzazioni all'interno del tuo ruolo Account AWS o a ruoli definiti in altri ruoli di tua proprietà. Account AWS Un utente in un account può passare a un ruolo dello stesso o di un altro account. Mentre si usa il ruolo, l'utente è in grado di eseguire solo le azioni e accedere solo alle risorse consentite dal ruolo; le loro autorizzazioni utente originali sono sospese. Quando l'utente esce dal ruolo, le autorizzazioni utente originali vengono ripristinate.

Per ulteriori informazioni, consulta [Creazione di un ruolo per fornire le autorizzazioni a un utente IAM](id_roles_create_for-user.md).

Per ulteriori informazioni sulla creazione di ruoli per l'accesso multi-account, consulta [Creare un ruolo utilizzando policy di attendibilità personalizzate](id_roles_create_for-custom.md).

**Ruoli per i servizi AWS**  
Creare questo ruolo per delegare le autorizzazioni per un servizio che può eseguire operazioni per tuo conto Un [ruolo di servizio](id_roles.md#iam-term-service-role) che passi a un servizio deve avere una policy IAM con le autorizzazioni che consentano al servizio di eseguire azioni associate a quel servizio. Sono necessarie autorizzazioni diverse per ciascuno dei servizi AWS .

Per ulteriori informazioni sulla creazione dei ruoli di servizio, consulta [Creare un ruolo per delegare le autorizzazioni a un servizio AWS](id_roles_create_for-service.md).

Per ulteriori informazioni sulla creazione di ruoli collegati al servizio, consulta [Creare un ruolo collegato ai servizi](id_roles_create-service-linked-role.md).

**Ruoli per la federazione delle identità**  
Crea questo ruolo per delegare le autorizzazioni agli utenti che hanno già identità esterne a AWS. Quando utilizzi un provider di identità, non devi creare un codice di accesso personalizzato né gestire le tue identità utente. I tuoi utenti esterni accedono tramite un IdP e puoi concedere a tali identità esterne le autorizzazioni per utilizzare le AWS risorse del tuo account. I provider di identità aiutano a proteggere l' AWS account perché non è necessario distribuire o incorporare credenziali di sicurezza a lungo termine, come le chiavi di accesso, nell'applicazione.

Per ulteriori informazioni, consulta [Creazione di un ruolo per un provider di identità di terze parti](id_roles_create_for-idp.md).

# Creazione di un ruolo per fornire le autorizzazioni a un utente IAM
<a name="id_roles_create_for-user"></a>

Puoi utilizzare i ruoli IAM per fornire l'accesso alle tue AWS risorse. Con i ruoli IAM, puoi stabilire relazioni di fiducia tra il tuo account *fiduciario* e altri account AWS *affidabili*. L'account che concede fiducia possiede la risorsa alla quale accedere e l'account affidabile contiene gli utenti che devono accedere alla risorsa. Tuttavia, è possibile che un altro account sia proprietario di una risorsa nell'account in uso. L'account che concede fiducia potrebbe infatti consentire all'account attendibile di creare nuove risorse, ad esempio creando nuovi oggetti in un bucket Amazon S3. In tal caso, l'account che crea la risorsa ne è proprietario e controlla chi può accedervi.

Dopo aver creato la relazione di fiducia, un utente IAM o un'applicazione dell'account affidabile può utilizzare l'operazione [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API AWS Security Token Service (AWS STS). Questa operazione fornisce credenziali di sicurezza temporanee che consentono l'accesso alle AWS risorse del tuo account.

Gli account possono essere controllati da sé stessi oppure l'account con gli utenti può essere controllato da terze parti. Se l'altro account con gli utenti è un account Account AWS che non controlli, puoi utilizzare l'`externalId`attributo. L'ID esterno può essere qualsiasi parola o numero concordato tra l'utente e l'amministratore dell'account di terze parti. Questa opzione aggiunge automaticamente una condizione alla policy di affidabilità che consente all'utente di assumere il ruolo solo se la richiesta include il corretto `sts:ExternalID`. Per ulteriori informazioni, consulta [Accesso a Account AWS siti di proprietà di terzi](id_roles_common-scenarios_third-party.md).

Per informazioni su come utilizzare i ruoli per delegare le autorizzazioni, consultare [Termini e concetti dei ruoli](id_roles.md#id_roles_terms-and-concepts). Per informazioni sull'utilizzo di un ruolo di servizio per consentire l'accesso a risorse nel proprio account, consultare [Creare un ruolo per delegare le autorizzazioni a un servizio AWS](id_roles_create_for-service.md).

## Creazione di un ruolo IAM (console)
<a name="roles-creatingrole-user-console"></a>

Puoi utilizzare il Console di gestione AWS per creare un ruolo che un utente IAM può assumere. Ad esempio, supponiamo che l'organizzazione disponga di più Account AWS elementi per isolare un ambiente di sviluppo da un ambiente di produzione. Per informazioni di alto livello sulla creazione di un ruolo che consenta agli utenti nell'account di sviluppo di accedere alle risorse nell'account di produzione, consulta la sezione [Esempio di uno scenario in cui si utilizzano account di sviluppo e produzione separati](id_roles_common-scenarios_aws-accounts.md#id_roles_common-scenarios_aws-accounts-example).

**Autorizzazioni minime**  
Per eseguire le seguenti operazioni, devi disporre come minimo delle seguenti autorizzazioni IAM:  
`access-analyzer:ValidatePolicy`
`iam:AttachRolePolicy`
`iam:CreatePolicy`
`iam:CreateRole`
`iam:GetAccountSummary`
`iam:GetPolicy`
`iam:GetPolicyVersion`
`iam:GetRole`
`iam:ListAccountAliases`
`iam:ListAttachedRolePolicies`
`iam:ListOpenIDConnectProviders`
`iam:ListPolicies`
`iam:ListRolePolicies`
`iam:ListRoles`
`iam:ListRoleTags`
`iam:ListSAMLProviders`

------
#### [ Console ]

1. Accedi a Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione della console, selezionare **Ruoli** e **Crea ruolo**.

1. Scegli il tipo di ruolo **Account AWS**.

1. Per creare un ruolo per il tuo account, scegli **This account** (Questo account). Per creare un ruolo per un altro account, scegli **Altro Account AWS** e inserisci l'**ID account ID** al quale desideri concedere l'accesso alle risorse.

   L'amministratore dell'account specificato può concedere l'autorizzazione di assumere questo ruolo a qualsiasi utente IAM in tale account. Per eseguire questa operazione, l'amministratore collega una policy all'utente o al gruppo che garantisce l'autorizzazione per l'operazione `sts:AssumeRole`. Tale policy deve specificare il nome ARN del ruolo `Resource`. 

1. Per concedere le autorizzazioni agli utenti da un account di cui non hai il controllo e se tali utenti assumeranno il ruolo a livello di programmazione, seleziona **Require external ID** (Richiedi ID esterno). L'ID esterno può essere qualsiasi parola o numero concordato tra l'utente e l'amministratore dell'account di terze parti. Questa opzione aggiunge automaticamente una condizione alla policy di affidabilità che consente all'utente di assumere il ruolo solo se la richiesta include il corretto `sts:ExternalID`. Per ulteriori informazioni, consulta [Accesso a Account AWS siti di proprietà di terzi](id_roles_common-scenarios_third-party.md).
**Importante**  
La scelta di questa opzione limita l'accesso al ruolo solo tramite Tools for Windows PowerShell o l' AWS API. AWS CLI Questo perché non è possibile utilizzare la AWS console per passare a un ruolo che presenta una `externalId` condizione nella politica di attendibilità. Tuttavia, è possibile creare questo tipo di accesso a livello di codice scrivendo uno script o un'applicazione utilizzando il kit SDK rilevante. Per ulteriori informazioni e uno script di esempio, consulta [Come abilitare l'accesso tra account alla Console di gestione AWS](https://aws.amazon.com/blogs/security/how-to-enable-cross-account-access-to-the-aws-management-console) nel Blog sulla sicurezza di AWS .

1. Se si desidera limitare il ruolo agli utenti che accedono con la multi-factor authentication (MFA), selezionare **Require MFA (Richiedi MFA)**. Questa opzione aggiunge una condizione alla policy di affidabilità del ruolo che controlla un accesso MFA. Un utente che desidera assumere il ruolo deve accedere con una password monouso temporanea da un dispositivo MFA configurato. Gli utenti senza autenticazione MFA non possono assumere il ruolo. Per ulteriori informazioni sulla funzionalità MFA, consultare [AWS Autenticazione a più fattori in IAM](id_credentials_mfa.md).

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

1. IAM include un elenco delle politiche AWS gestite e gestite dai clienti nel tuo account. Selezionare la policy delle autorizzazioni da utilizzare o scegliere **Crea policy** per aprire una nuova scheda del browser e creare una nuova policy da zero. Per ulteriori informazioni, consulta [Creazione di policy IAM](access_policies_create-console.md#access_policies_create-start). Una volta creata la policy, chiudere la scheda e tornare alla scheda originale. Selezionare la casella di controllo accanto alle policy di autorizzazione da assegnare a chiunque assuma il ruolo. È anche possibile non selezionare le policy ora e collegarle al ruolo in un secondo momento. Per default, un ruolo non dispone di autorizzazioni.

1. (Facoltativo) Impostare un [limite delle autorizzazioni](access_policies_boundaries.md). Questa è una caratteristica avanzata. 

   Aprire la sezione **Set permissions boundary (Imposta limite delle autorizzazioni)** e selezionare **Use a permissions boundary to control the maximum role permissions (Usa un limite delle autorizzazioni per controllare il numero massimo di autorizzazioni del ruolo)**. Selezionare la policy da utilizzare per il limite delle autorizzazioni.

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

1. In **Nome ruolo**, immetti un nome per il ruolo. I nomi dei ruoli devono essere univoci all'interno del tuo Account AWS. Quando il nome di un ruolo viene utilizzato in una policy o come parte di un ARN, il nome del ruolo fa distinzione tra maiuscole e minuscole. Quando un nome di ruolo viene visualizzato ai clienti nella console, ad esempio durante la procedura di accesso, il nome del ruolo non fa distinzione tra maiuscole e minuscole. Poiché varie entità possono fare riferimento al ruolo, non puoi modificare il nome del ruolo dopo averlo creato.

1. (Facoltativo) In **Description** (Descrizione), inserisci una descrizione per il nuovo ruolo.

1. Scegli **Edit** (Modifica) nelle sezioni **Step 1: Select trusted entities** (Fase 1: seleziona le entità attendibili) o **Step 2: Add permissions** (Fase 2: aggiungi autorizzazioni) per modificare i casi d'uso e le autorizzazioni per il ruolo. Verrai reindirizzato alle pagine precedenti per apportare le modifiche.

1. (Facoltativo) Aggiungere metadati al ruolo collegando i tag come coppie chiave-valore. Per ulteriori informazioni sull'utilizzo dei tag in IAM, consultare [Tag per AWS Identity and Access Management le risorse](id_tags.md).

1. Rivedere il ruolo e scegliere **Crea ruolo**.
**Importante**  
Ricordare che questa è solo la prima metà della configurazione obbligatoria. È inoltre necessario fornire ai singoli utenti nell'account attendibile l'autorizzazione a passare al ruolo nella console o ad assumere il ruolo a livello di codice. Per ulteriori informazioni su questa fase, consultare [Concedere le autorizzazioni agli utenti per cambiare ruoli](id_roles_use_permissions-to-switch.md).

------

## Creazione di un ruolo IAM (AWS CLI)
<a name="roles-creatingrole-user-cli"></a>

La creazione di un ruolo da a AWS CLI comporta più passaggi. Quando si utilizza la console per creare un ruolo, molti passaggi vengono eseguiti automaticamente, ma con la console è AWS CLI necessario eseguire ogni passaggio in modo esplicito e autonomo. È necessario creare il ruolo e quindi assegnargli una policy di autorizzazione. Puoi anche scegliere di impostare il [limite delle autorizzazioni](access_policies_boundaries.md) per il ruolo.

**Per creare un ruolo per accesso tra account (AWS CLI)**

1. Creare un ruolo: [aws iam create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html)

1. [Allega una politica di autorizzazioni gestite al ruolo: aws iam attach-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html)

    or

   [Crea una politica di autorizzazioni in linea per il ruolo: aws iam put-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-policy.html)

1. (Facoltativo) Aggiungere attributi personalizzati al ruolo collegando tag: [aws iam tag-role](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-role.html)

   Per ulteriori informazioni, consulta [Gestione dei tag sui ruoli (AWS CLI o AWS API) IAM](id_tags_roles.md#id_tags_roles_procs-cli-api).

1. [(Facoltativo) Imposta il [limite delle autorizzazioni](access_policies_boundaries.md) per il ruolo: aws iam put-role-permissions-boundary](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-permissions-boundary.html)

   Il limite delle autorizzazioni controlla il numero massimo di autorizzazioni che è possibile concedere a un ruolo. I limiti delle autorizzazioni sono una funzionalità avanzata. AWS 

L'esempio seguente mostra i primi due passaggi, più comuni, per la creazione di un ruolo per più account in un ambiente semplice. Questo esempio permette agli utenti dell'account `123456789012` di assumere il ruolo e visualizzare il bucket `example_bucket` di Amazon S3. L'esempio presuppone inoltre l'uso un computer client con Windows e che l'interfaccia a riga di comando sia già configurata con le credenziali dell'account e la regione. Per ulteriori informazioni, vedere [Configurazione dell'interfaccia a AWS riga di comando](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html).

In questo esempio, è necessario includere la seguente policy di attendibilità nel primo comando al momento della creazione del ruolo. Questa policy di attendibilità consente agli utenti dell'account `123456789012` di assumere il ruolo tramite l'operazione `AssumeRole`, ma solo se l'utente fornisce l'autenticazione MFA utilizzando i parametri `SerialNumber` e `TokenCode`. Per ulteriori informazioni sulla funzionalità MFA, consultare [AWS Autenticazione a più fattori in IAM](id_credentials_mfa.md).

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
      {
          "Effect": "Allow",
          "Principal": { "AWS": "arn:aws:iam::123456789012:root" },
          "Action": "sts:AssumeRole",
          "Condition": { "Bool": { "aws:MultiFactorAuthPresent": "true" } }
      }
  ]
}
```

------

**Importante**  
Se l'elemento `Principal` contiene l'ARN per un determinato utente o ruolo IAM, quando la policy viene salvata l'ARN viene trasformato in un ID principale univoco. Ciò aiuta a mitigare il rischio che qualcuno aumenti le proprie autorizzazioni rimuovendo e ricreando il ruolo o l'utente. Questo ID non è normalmente presente nella console, perché avviene anche una trasformazione inversa nell'ARN quando la policy di affidabilità viene visualizzata. Tuttavia, se si elimina il ruolo o l'utente, l'ID principale viene visualizzato nella console perché non è più AWS possibile mapparlo su un ARN. Pertanto, se si elimina e crea nuovamente un utente o un ruolo a cui viene fatto riferimento in un elemento `Principal` della policy di attendibilità, è necessario modificare il ruolo per sostituire l'ARN.

Quando si utilizza il secondo comando, è necessario collegare una policy gestita esistente al ruolo. La policy delle autorizzazioni seguente consente agli utenti che assumono il ruolo di eseguire solo l'operazione `ListBucket` sul bucket `example_bucket` di Amazon S3.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
      {
          "Effect": "Allow",
          "Action": "s3:ListBucket",
          "Resource": "arn:aws:s3:::example_bucket"
      }
  ]
}
```

------

Per creare questo ruolo `Test-UserAccess-Role`, è prima necessario salvare la policy di attendibilità precedente con il nome `trustpolicyforacct123456789012.json` nella cartella `policies` dell'unità `C:` locale. Quindi salva la precedente politica di autorizzazione come politica gestita dai clienti nel tuo account Account AWS con il nome. `PolicyForRole` È quindi possibile utilizzare i comandi seguenti per creare il ruolo e collegare la policy gestita.

```
# Create the role and attach the trust policy file that allows users in the specified account to assume the role.
$ aws iam create-role --role-name Test-UserAccess-Role --assume-role-policy-document file://C:\policies\trustpolicyforacct123456789012.json

# Attach the permissions policy (in this example a managed policy) to the role to specify what it is allowed to do.
$ aws iam attach-role-policy --role-name Test-UserAccess-Role --policy-arn arn:aws:iam::123456789012:policy/PolicyForRole
```

**Importante**  
Ricordare che questa è solo la prima metà della configurazione obbligatoria. È inoltre necessario fornire a singoli utenti nell'account affidabile le autorizzazioni per passare al ruolo. Per ulteriori informazioni su questa fase, consultare [Concedere le autorizzazioni agli utenti per cambiare ruoli](id_roles_use_permissions-to-switch.md).

Dopo aver creato il ruolo e avergli concesso le autorizzazioni per eseguire AWS attività o accedere alle AWS risorse, qualsiasi utente dell'`123456789012`account può assumere il ruolo. Per ulteriori informazioni, consulta [Passaggio a un ruolo IAM (AWS CLI)](id_roles_use_switch-role-cli.md).

## Creazione di un ruolo IAM (AWS API)
<a name="roles-creatingrole-user-api"></a>

La creazione di un ruolo dall' AWS API prevede diversi passaggi. Quando si usa la console per creare un ruolo, molti dei passaggi vengono eseguiti automaticamente, ma con l'API ogni passaggio deve essere eseguito esplicitamente dall'utente. È necessario creare il ruolo e quindi assegnargli una policy di autorizzazione. Puoi anche scegliere di impostare il [limite delle autorizzazioni](access_policies_boundaries.md) per il ruolo.

**Creare un ruolo nel codice (AWS API)**

1. Crea un ruolo: [CreateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html)

   Per la policy di affidabilità del ruolo, è possibile specificare una posizione del file.

1. Allega una politica di autorizzazione gestita al ruolo: [AttachRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachRolePolicy.html)

   or

   Crea una politica di autorizzazione in linea per il ruolo: [PutRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePolicy.html)
**Importante**  
Ricordare che questa è solo la prima metà della configurazione obbligatoria. È inoltre necessario fornire a singoli utenti nell'account affidabile le autorizzazioni per passare al ruolo. Per ulteriori informazioni su questa fase, consultare [Concedere le autorizzazioni agli utenti per cambiare ruoli](id_roles_use_permissions-to-switch.md).

1. (Facoltativo) Aggiungi attributi personalizzati all'utente allegando tag: [TagRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagRole.html)

   Per ulteriori informazioni, consulta [Gestione dei tag sugli utenti IAM (AWS CLI o AWS API)](id_tags_users.md#id_tags_users_procs-cli-api).

1. (Facoltativo) Imposta il [limite delle autorizzazioni per il ruolo](access_policies_boundaries.md): [PutRolePermissionsBoundary](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePermissionsBoundary.html)

   Il limite delle autorizzazioni controlla il numero massimo di autorizzazioni che è possibile concedere a un ruolo. I limiti delle autorizzazioni sono una funzionalità avanzata. AWS 

Dopo aver creato il ruolo e avergli concesso le autorizzazioni per eseguire AWS attività o accedere alle AWS risorse, è necessario concedere le autorizzazioni agli utenti dell'account per consentire loro di assumere il ruolo. Per ulteriori informazioni sull'assunzione di un ruolo, consulta [Passa a un ruolo IAM (AWS API)](id_roles_use_switch-role-api.md).

## Creazione di un ruolo IAM (AWS CloudFormation)
<a name="roles_creatingrole-user-cloudformation"></a>

Per informazioni sulla creazione di un ruolo IAM in AWS CloudFormation, consulta il [riferimento alle risorse e alle proprietà e](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html) [gli esempi nella Guida](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#aws-resource-iam-role--examples) per l'*AWS CloudFormation utente*.

Per ulteriori informazioni sui modelli IAM in AWS CloudFormation, consulta gli [snippet di AWS Identity and Access Management modello nella Guida](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-iam.html) per l'*AWS CloudFormation utente*.

# Creare un ruolo per delegare le autorizzazioni a un servizio AWS
<a name="id_roles_create_for-service"></a>

Molti AWS servizi richiedono l'utilizzo di ruoli per consentire al servizio di accedere alle risorse di altri servizi per conto dell'utente. Un ruolo che un servizio assume per eseguire operazioni a tuo nome viene chiamato [ruolo del servizio](id_roles.md#iam-term-service-role). Quando un ruolo fornisce uno scopo specializzato per un servizio, questo può essere categorizzato come [ruolo collegato al servizio](id_roles.md#iam-term-service-linked-role). Per visualizzare i servizi che supportano ruoli collegati ai servizi, oppure se un servizio supporta qualsiasi forma di credenziali provvisorie, consulta [AWS servizi che funzionano con IAM](reference_aws-services-that-work-with-iam.md). Per apprendere come un singolo servizio utilizza i ruoli, scegli il nome del servizio nella tabella e visualizza la documentazione relativa a tale servizio.

Quando imposti l'autorizzazione `PassRole`, devi assicurarti che un utente non invii un ruolo dove il ruolo dispone di più autorizzazioni di quelle che desideri che l'utente abbia. Ad esempio, Alice potrebbe non essere autorizzata a eseguire alcune operazioni su Amazon S3. Se Alice potesse trasferire un ruolo a un servizio che consente le azioni di Amazon S3, il servizio potrebbe eseguire azioni Amazon S3 per conto di Alice durante l'esecuzione del processo.

Per informazioni su come i ruoli aiutano a delegare le autorizzazioni, consulta [Termini e concetti dei ruoli](id_roles.md#id_roles_terms-and-concepts).

## Autorizzazioni del ruolo del servizio
<a name="id_roles_create_service-permissions"></a>

Per consentire a una entità IAM (utente o ruolo) di creare o modificare un ruolo di servizio, occorre configurare le autorizzazioni.

**Nota**  
L'ARN per un ruolo collegato ai servizi include un principale del servizio, indicata nelle policy seguenti come `SERVICE-NAME.amazonaws.com`. Non tentare di indovinare il principale del servizio, perché fa distinzione tra maiuscole e minuscole e il formato può variare tra i servizi AWS . Per visualizzare l'entità principale di un servizio, consulta la relativa documentazione del ruolo collegato al servizio.

**Come consentire a un'entità IAM di creare un ruolo di servizio specifico**

Aggiungi la policy seguente all'entità IAM che deve creare il ruolo di servizio. Questa policy ti permette di creare un ruolo del servizio per il servizio specificato e utilizzando un nome specifico. Puoi quindi collegare le policy gestite o inline a tale ruolo. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:CreateRole",
                "iam:PutRolePolicy"
            ],
            "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME"
        }
    ]
}
```

------

**Come consentire a un'entità IAM di creare un qualsiasi ruolo di servizio**

AWS consiglia di consentire solo agli utenti amministrativi di creare qualsiasi ruolo di servizio. Una persona con autorizzazioni per creare un ruolo e allegare qualsiasi policy può eseguire l'escalation delle proprie autorizzazioni. Invece, crea una policy che consenta a questa persona di creare solo i ruoli di cui hanno bisogno o lascia che un amministratore crei il ruolo di servizio per suo conto.

Per allegare una policy che consenta a un amministratore di accedere all'intero account Account AWS, utilizza la policy [AdministratorAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AdministratorAccess) AWS gestita.

**Come consentire a un'entità IAM di modificare un ruolo di servizio**

Aggiungi la policy seguente all'entità IAM che deve modificare il ruolo di servizio.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EditSpecificServiceRole",
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:DeleteRolePolicy",
                "iam:DetachRolePolicy",
                "iam:GetRole",
                "iam:GetRolePolicy",
                "iam:ListAttachedRolePolicies",
                "iam:ListRolePolicies",
                "iam:PutRolePolicy",
                "iam:UpdateRole",
                "iam:UpdateRoleDescription"
            ],
            "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME"
        },
        {
            "Sid": "ViewRolesAndPolicies",
            "Effect": "Allow",
            "Action": [
                "iam:GetPolicy",
                "iam:ListRoles"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**Come consentire a un'entità IAM di eliminare un ruolo di servizio specifico**

Aggiungi l'istruzione seguente alla policy delle autorizzazioni per l'entità IAM che deve eliminare il ruolo di servizio specificato.

```
{
    "Effect": "Allow",
    "Action": "iam:DeleteRole",
    "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME"
}
```

**Come consentire a un'entità IAM di eliminare qualunque ruolo di servizio**

AWS consiglia di consentire solo agli utenti amministrativi di eliminare qualsiasi ruolo di servizio. Invece, crea una policy che consenta loro di eliminare solo i ruoli di cui hanno bisogno o lascia che un amministratore elimini il ruolo di servizio per suo conto.

Per allegare una politica che consenta a un amministratore di accedere all'intero account Account AWS, utilizza la politica [AdministratorAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AdministratorAccess) AWS gestita.

## Creazione di un ruolo per un AWS servizio (console)
<a name="roles-creatingrole-service-console"></a>

È possibile utilizzare il Console di gestione AWS per creare un ruolo per un servizio. Dal momento che alcuni servizi supportano più ruoli del servizio, consulta la [documentazione AWS](https://docs.aws.amazon.com/) relativa al servizio per determinare quale caso d'uso selezionare. È possibile apprendere come assegnare le necessarie policy di affidabilità e autorizzazioni al ruolo, in modo che il servizio possa assumere quel ruolo per conto dell'utente. Le operazioni che è possibile utilizzare per controllare le autorizzazioni per il tuo ruolo possono variare, a seconda del modo in cui il servizio definisce i casi d'uso e della creazione o meno di un ruolo collegato ai servizi.

------
#### [ Console ]

**Per creare un ruolo per una Servizio AWS (console IAM)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione della console IAM, scegliere **Ruoli** e quindi **Crea ruolo**.

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

1. Per **Servizio o caso d'uso**, scegli un servizio, quindi scegli il caso d'uso. I casi d'uso sono definiti dal servizio per includere la policy di fiducia richiesta dal servizio.

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

1. Per **Policy di autorizzazione**, le opzioni dipendono dal caso d'uso selezionato:
   + Se il servizio definisce le autorizzazioni per il ruolo, le policy di autorizzazioni non possono essere selezionate.
   + Seleziona una policy da un set limitato di policy di autorizzazione.
   + Seleziona una policy tra tutte le policy di autorizzazione.
   + Non selezionare policy di autorizzazioni, crea le policy dopo la creazione del ruolo e quindi collegale al ruolo.

1. (Facoltativo) Impostare un [limite delle autorizzazioni](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html). Questa è una funzionalità avanzata disponibile per i ruoli di servizio, ma non per i ruoli collegati ai servizi.

   1. Apri la sezione **Imposta limite delle autorizzazioni** e seleziona **Usa un limite delle autorizzazioni per controllare il numero massimo di autorizzazioni del ruolo**. 

      IAM include un elenco delle politiche AWS gestite e gestite dal cliente nel tuo account.

   1. Selezionare la policy da utilizzare per il limite delle autorizzazioni.

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

1. Per **Nome del ruolo**, le opzioni dipendono dal servizio:
   + Se il servizio definisce il nome del ruolo, non puoi modificarlo.
   + Se il servizio definisce un prefisso per il nome del ruolo, puoi inserire un suffisso facoltativo.
   + Se il servizio non definisce il nome del ruolo, puoi assegnare un nome al ruolo.
**Importante**  
Quando assegni un nome a un ruolo, tieni presente quanto segue:  
I nomi dei ruoli devono essere univoci all'interno del tuo Account AWS account e non possono essere resi unici per caso.  
Ad esempio, non creare ruoli denominati **PRODROLE** e **prodrole**. Quando il nome di un ruolo viene utilizzato in una policy o come parte di un ARN, il nome del ruolo fa distinzione tra maiuscole e minuscole, tuttavia quando un nome di ruolo viene visualizzato ai clienti nella console, ad esempio durante il processo di accesso, il nome del ruolo non fa distinzione tra maiuscole e minuscole.
Non è possibile modificare il nome del ruolo dopo averlo creato, in quanto altre entità possono fare riferimento al ruolo.

1. (Facoltativo) In **Descrizione**, inserisci una descrizione per il ruolo.

1. (Facoltativo) Per modificare i casi d'uso e le autorizzazioni per il ruolo, in **Fase 1: seleziona le entità attendibili** o **Fase 2: aggiungi autorizzazioni** seleziona **Modifica**.

1. (Facoltativo) Per facilitare l'identificazione, l'organizzazione o la ricerca del ruolo, aggiungi i tag come coppie chiave-valore. Per ulteriori informazioni sull'utilizzo dei tag in IAM, consulta [Tags for AWS Identity and Access Management resources](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) nella *IAM User Guide*.

1. Verificare il ruolo e quindi scegliere **Create role (Crea ruolo)**.

------

## Creazione di un ruolo per un servizio (AWS CLI)
<a name="roles-creatingrole-service-cli"></a>

La creazione di un ruolo da AWS CLI richiede diversi passaggi. Quando usi la console per creare un ruolo, molti passaggi vengono eseguiti automaticamente, ma con la AWS CLI devi eseguire esplicitamente ogni passaggio da solo. È necessario creare il ruolo e quindi assegnargli una policy di autorizzazione. Se il servizio in uso è Amazon EC2, è necessario creare anche un profilo dell'istanza e aggiungervi il ruolo. Puoi anche scegliere di impostare il [limite delle autorizzazioni](access_policies_boundaries.md) per il ruolo.

**Per creare un ruolo per un AWS servizio da AWS CLI**

1. Il seguente comando `[create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html)` crea un ruolo denominato *Ruolo di test* e gli collega una policy di attendibilità:

   `aws iam create-role --role-name Test-Role --assume-role-policy-document file://Test-Role-Trust-Policy.json`

1. Allega una politica di autorizzazioni gestite al ruolo: [aws iam attach-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html).

   Ad esempio, il seguente comando `attach-role-policy` allega la policy gestita AWS denominata `ReadOnlyAccess` al ruolo IAM denominato `ReadOnlyRole`:

   `aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess --role-name ReadOnlyRole`

    or

   [Crea una politica di autorizzazioni in linea per il ruolo: aws iam put-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-policy.html)

   Per aggiungere una policy di autorizzazioni in linea, consulta l'esempio seguente:

    `aws iam put-role-policy --role-name Test-Role --policy-name ExamplePolicy --policy-document file://AdminPolicy.json`

1. (Facoltativo) Aggiungere attributi personalizzati al ruolo collegando tag: [aws iam tag-role](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-role.html)

   Per ulteriori informazioni, consulta [Gestione dei tag sui ruoli (AWS CLI o AWS API) IAM](id_tags_roles.md#id_tags_roles_procs-cli-api).

1. [(Facoltativo) Imposta il [limite delle autorizzazioni](access_policies_boundaries.md) per il ruolo: aws iam put-role-permissions-boundary](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-permissions-boundary.html)

   Il limite delle autorizzazioni controlla il numero massimo di autorizzazioni che è possibile concedere a un ruolo. I limiti delle autorizzazioni sono una funzionalità avanzata. AWS 

Se intendi utilizzare il ruolo con Amazon EC2 o un altro AWS servizio che utilizza Amazon EC2, devi archiviare il ruolo in un profilo di istanza. Un profilo dell'istanza è un container per un ruolo che può essere associato a un'istanza Amazon EC2 quando viene avviato. Un profilo dell'istanza può contenere un solo ruolo e tale limite non può essere aumentato. Se crei il ruolo utilizzando Console di gestione AWS, il profilo dell'istanza viene creato per te con lo stesso nome del ruolo. Per ulteriori informazioni sui profili delle istanze, consulta [Usare profili dell'istanza](id_roles_use_switch-role-ec2_instance-profiles.md). Per informazioni su come avviare un'istanza EC2 con un ruolo, consulta [Controllo dell'accesso alle risorse Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UsingIAM.html#UsingIAMrolesWithAmazonEC2Instances) nella *Guida per l'utente di Amazon EC2*.

**Per creare un profilo dell'istanza e memorizzarvi il ruolo (AWS CLI)**

1. Crea un profilo di istanza: [aws iam create-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/create-instance-profile.html)

1. Aggiungi il ruolo al profilo dell'istanza: [aws iam add-role-to-instance -profile](https://docs.aws.amazon.com/cli/latest/reference/iam/add-role-to-instance-profile.html)

Il comando di AWS CLI esempio riportato di seguito illustra i primi due passaggi per la creazione di un ruolo e l'assegnazione delle autorizzazioni. Mostra inoltre i due passaggi necessari per creare un profilo dell'istanza e aggiungere il ruolo al profilo. Questa policy di attendibilità di esempio permette al servizio Amazon EC2 di assumere il ruolo e visualizzare il bucket `example_bucket` di Amazon S3. L'esempio presuppone inoltre l'uso un computer client con Windows e che l'interfaccia a riga di comando sia già configurata con le credenziali dell'account e la regione. Per ulteriori informazioni, vedere [Configurazione](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) dell'interfaccia a riga di comando. AWS 

In questo esempio, è necessario includere la seguente policy di attendibilità nel primo comando al momento della creazione del ruolo. La policy di attendibilità consente al servizio Amazon EC2 di assumere il ruolo. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Principal": {"Service": "ec2.amazonaws.com"},
    "Action": "sts:AssumeRole"
  }
}
```

------

Quando si utilizza il secondo comando, è necessario collegare una policy di autorizzazione al ruolo. L'esempio di policy di autorizzazione seguente consente al ruolo di eseguire solo l'operazione `ListBucket` sul bucket `example_bucket` di Amazon S3.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "s3:ListBucket",
    "Resource": "arn:aws:s3:::example_bucket"
  }
}
```

------

Per creare questo ruolo `Test-Role-for-EC2`, è innanzitutto necessario salvare la policy di attendibilità precedente con il nome `trustpolicyforec2.json` e la policy di autorizzazione precedente con il nome `permissionspolicyforec2.json` nella directory `policies` dell'unità `C:` locale. È quindi possibile utilizzare i comandi seguenti per creare il ruolo, collegare la policy, creare il profilo dell'istanza e aggiungere il ruolo al profilo dell'istanza.

```
# Create the role and attach the trust policy that allows EC2 to assume this role.
$ aws iam create-role --role-name Test-Role-for-EC2 --assume-role-policy-document file://C:\policies\trustpolicyforec2.json

# Embed the permissions policy (in this example an inline policy) to the role to specify what it is allowed to do.
$ aws iam put-role-policy --role-name Test-Role-for-EC2 --policy-name Permissions-Policy-For-Ec2 --policy-document file://C:\policies\permissionspolicyforec2.json

# Create the instance profile required by EC2 to contain the role
$ aws iam create-instance-profile --instance-profile-name EC2-ListBucket-S3

# Finally, add the role to the instance profile
$ aws iam add-role-to-instance-profile --instance-profile-name EC2-ListBucket-S3 --role-name Test-Role-for-EC2
```

Quando avvii l'istanza EC2, specifica il nome del profilo dell'istanza nella pagina **Configura i dettagli dell'istanza** se utilizzi la AWS console. Se utilizzi il comando della CLI `aws ec2 run-instances`, specifica il parametro `--iam-instance-profile`.

## Creazione di un ruolo per un servizio (AWS API)
<a name="roles-creatingrole-service-api"></a>

La creazione di un ruolo dall' AWS API prevede diversi passaggi. Quando si usa la console per creare un ruolo, molti dei passaggi vengono eseguiti automaticamente, ma con l'API ogni passaggio deve essere eseguito esplicitamente dall'utente. È necessario creare il ruolo e quindi assegnargli una policy di autorizzazione. Se il servizio in uso è Amazon EC2, è necessario creare anche un profilo dell'istanza e aggiungervi il ruolo. Puoi anche scegliere di impostare il [limite delle autorizzazioni](access_policies_boundaries.md) per il ruolo.

**Creare un ruolo per un AWS servizio (AWS API)**

1. Crea un ruolo: [CreateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html)

   Per la policy di affidabilità del ruolo, è possibile specificare una posizione del file.

1. Allega una politica di autorizzazioni gestite al ruolo: [AttachRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachRolePolicy.html)

    or

   Crea una politica di autorizzazioni in linea per il ruolo: [PutRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePolicy.html)

1. (Facoltativo) Aggiungi attributi personalizzati all'utente allegando tag: [TagRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagRole.html)

   Per ulteriori informazioni, consulta [Gestione dei tag sugli utenti IAM (AWS CLI o AWS API)](id_tags_users.md#id_tags_users_procs-cli-api).

1. (Facoltativo) Imposta il [limite delle autorizzazioni per il ruolo](access_policies_boundaries.md): [PutRolePermissionsBoundary](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePermissionsBoundary.html)

   Il limite delle autorizzazioni controlla il numero massimo di autorizzazioni che è possibile concedere a un ruolo. I limiti delle autorizzazioni sono una funzionalità avanzata. AWS 

Se intendi utilizzare il ruolo con Amazon EC2 o un altro AWS servizio che utilizza Amazon EC2, devi archiviare il ruolo in un profilo di istanza. Un profilo dell'istanza è un container per un ruolo. Ogni profilo dell'istanza può contenere un solo ruolo e tale limite non può essere superato. Se crei il ruolo in Console di gestione AWS, il profilo dell'istanza viene creato per te con lo stesso nome del ruolo. Per ulteriori informazioni sui profili delle istanze, consulta [Usare profili dell'istanza](id_roles_use_switch-role-ec2_instance-profiles.md). Per informazioni su come avviare un'istanza Amazon EC2 con un ruolo, consulta [Controllo dell'accesso alle risorse Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UsingIAM.html#UsingIAMrolesWithAmazonEC2Instances) nella *Guida per l'utente di Amazon EC2*. 

**Per creare un profilo di istanza e memorizzare il ruolo al suo interno (AWS API)**

1. Crea un profilo di istanza: [CreateInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateInstanceProfile.html)

1. Aggiungi il ruolo al profilo dell'istanza: [AddRoleToInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddRoleToInstanceProfile.html)

# Creare un ruolo collegato ai servizi
<a name="id_roles_create-service-linked-role"></a>

Un ruolo collegato ai servizi è un tipo univoco di ruolo IAM collegato direttamente a un servizio AWS . I ruoli collegati ai servizi sono predefiniti dal servizio e includono tutte le autorizzazioni richieste dal servizio per chiamare altri AWS servizi per conto dell'utente. Il servizio collegato definisce anche le modalità di creazione, modifica ed eliminazione di un ruolo collegato al servizio. Un servizio può creare o eliminare automaticamente il ruolo. È possibile che ti permetta di creare, modificare o eliminare il ruolo come parte di una procedura guidata o un processo nel servizio. Oppure potrebbe richiedere l'utilizzo di IAM per creare o eliminare il ruolo. Indipendentemente dal metodo, i ruoli collegati ai servizi semplificano la procedura di configurazione di un servizio poiché non dovrai più aggiungere manualmente le autorizzazioni necessarie ai servizi per completare le operazioni per tuo conto.

**Nota**  
Ricorda che i ruoli di servizio sono diversi dai ruoli collegati ai servizi. Un ruolo di servizio è un [ruolo IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) che un servizio assume per eseguire operazioni per tuo conto. Un amministratore IAM può creare, modificare ed eliminare un ruolo di servizio dall’interno di IAM. Per ulteriori informazioni, consulta [Create a role to delegate permissions to an Servizio AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) nella *Guida per l’utente IAM*. Un ruolo collegato al servizio è un tipo di ruolo di servizio collegato a un. Servizio AWS Il servizio può assumere il ruolo per eseguire un’operazione per tuo conto. I ruoli collegati al servizio vengono visualizzati nel tuo account Account AWS e sono di proprietà del servizio. Un amministratore IAM può visualizzare le autorizzazioni per i ruoli collegati al servizio, ma non modificarle. 

Il servizio collegato definisce le autorizzazioni dei relativi ruoli collegati ai servizi e, a meno che non sia stato stabilito diversamente, solo quel servizio può assumere i ruoli. Le autorizzazioni definite includono la policy di attendibilità e la policy delle autorizzazioni. Una policy delle autorizzazioni specifica non può essere collegata a un’altra entità IAM.

Prima di poter eliminare i ruoli, devi eliminare le risorse associate. Questo ti aiuta a evitare di rimuovere involontariamente l’autorizzazione ad accedere alle risorse. 

**Suggerimento**  
Per informazioni su quali servizi supportano i ruoli collegati ai servizi, consulta la pagina [AWS servizi che funzionano con IAM](reference_aws-services-that-work-with-iam.md) e cerca i servizi per cui è indicato **Sì **nella colonna **Ruolo collegato ai servizi**. Scegliere **Sì** in corrispondenza di un link per visualizzare la documentazione relativa al ruolo collegato al servizio per tale servizio.

## Autorizzazioni del ruolo collegato ai servizi
<a name="service-linked-role-permissions"></a>

Per consentire a un utente o un ruolo di creare o modificare un ruolo collegato ai servizi, devi configurare le autorizzazioni per un'entità IAM (utente o ruolo).

**Nota**  
L'ARN per un ruolo collegato ai servizi include un'entità principale del servizio, indicata nelle policy seguenti come `SERVICE-NAME.amazonaws.com`. Non cercate di indovinare il principale del servizio, perché fa distinzione tra AWS maiuscole e minuscole e il formato può variare da un servizio all'altro. Per visualizzare l'entità principale di un servizio, consulta la relativa documentazione del ruolo collegato al servizio.

**Per consentire a un'entità IAM di creare un ruolo specifico collegato ai servizi**

Aggiungi la policy seguente a un'entità IAM che deve creare il ruolo collegato ai servizi.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*",
            "Condition": {"StringLike": {"iam:AWSServiceName": "SERVICE-NAME.amazonaws.com"}}
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:PutRolePolicy"
            ],
            "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*"
        }
    ]
}
```

------

**Come consentire a un'entità IAM di creare qualunque ruolo collegato ai servizi**

Aggiungi la seguente istruzione alla policy delle autorizzazioni per l'entità IAM che deve creare un ruolo collegato ai servizi o qualunque ruolo di servizio che include le policy di cui ha bisogno. Questa istruzione della policy non consente all'entità IAM di collegare una policy al ruolo.

```
{
    "Effect": "Allow",
    "Action": "iam:CreateServiceLinkedRole",
    "Resource": "arn:aws:iam::*:role/aws-service-role/*"
}
```

**Come consentire a un'entità IAM di modificare la descrizione di qualunque ruolo di servizio**

Aggiungi la seguente istruzione alla policy delle autorizzazioni per l'entità IAM che deve modificare la descrizione di un ruolo collegato ai servizi o qualunque ruolo di servizio.

```
{
    "Effect": "Allow",
    "Action": "iam:UpdateRoleDescription",
    "Resource": "arn:aws:iam::*:role/aws-service-role/*"
}
```

**Come consentire a un'entità IAM di eliminare un ruolo collegato ai servizi specifico**

Aggiungi la seguente istruzione alla policy delle autorizzazioni per l'entità IAM che deve eliminare il ruolo collegato ai servizi.

```
{
    "Effect": "Allow",
    "Action": [
        "iam:DeleteServiceLinkedRole",
        "iam:GetServiceLinkedRoleDeletionStatus"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*"
}
```

**Come consentire a un'entità IAM di eliminare qualunque ruolo collegato ai servizi**

Aggiungi la seguente istruzione alla policy delle autorizzazioni per l'entità IAM che deve eliminare un ruolo collegato ai servizi ma non il ruolo di servizio.

```
{
    "Effect": "Allow",
    "Action": [
        "iam:DeleteServiceLinkedRole",
        "iam:GetServiceLinkedRoleDeletionStatus"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/*"
}
```

**Come consentire a un'entità IAM di passare un ruolo esistente al servizio**

Alcuni AWS servizi consentono di trasferire un ruolo esistente al servizio, anziché creare un nuovo ruolo collegato al servizio. Per eseguire questa operazione, un utente deve disporre delle autorizzazioni per *passare il ruolo* al servizio. Aggiungi l'istruzione seguente alla policy delle autorizzazioni per l'entità IAM che deve passare un ruolo. Questa istruzione della policy consente anche all'entità di visualizzare un elenco di ruoli da cui è possibile scegliere il ruolo da passare. Per ulteriori informazioni, consulta [Concedere a un utente le autorizzazioni per passare un ruolo a un servizio AWS](id_roles_use_passrole.md).

```
{
  "Sid": "PolicyStatementToAllowUserToListRoles",
  "Effect": "Allow",
  "Action": ["iam:ListRoles"],
  "Resource": "*"
},
{
  "Sid": "PolicyStatementToAllowUserToPassOneSpecificRole",
  "Effect": "Allow",
  "Action": [ "iam:PassRole" ],
  "Resource": "arn:aws:iam::account-id:role/my-role-for-XYZ"
}
```

## Autorizzazioni indirette con ruoli collegati al servizio
<a name="create-service-linked-role-permissions-transfer"></a>

Le autorizzazioni concesse da un ruolo collegato ai servizi possono essere indirettamente trasferite ad altri utenti e ruoli. Quando un ruolo collegato al servizio viene utilizzato da un AWS servizio, tale ruolo può utilizzare le proprie autorizzazioni per chiamare altri servizi. AWS Ciò significa che gli utenti e i ruoli con le autorizzazioni per chiamare un servizio che utilizza un ruolo collegato al servizio possono avere accesso indiretto ai servizi a cui può accedere quel ruolo collegato al servizio.

Ad esempio, quando crei un'istanza database Amazon RDS, [un ruolo collegato ai servizi per RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAM.ServiceLinkedRoles.html) viene creato automaticamente se non ne esiste già uno. Questo ruolo collegato al servizio consente a RDS di chiamare Amazon EC2, Amazon SNS, Amazon CloudWatch Logs e Amazon Kinesis per tuo conto. Se consenti agli utenti e ai ruoli del tuo account di modificare o creare database RDS, potrebbero interagire indirettamente con Amazon EC2, Amazon SNS, i log di Amazon Logs e le risorse CloudWatch Amazon Kinesis chiamando RDS, poiché RDS utilizzerebbe il suo ruolo collegato ai servizi per accedere a tali risorse.

### Metodi per creare un ruolo collegato ai servizi
<a name="create-service-linked-role"></a>

Il metodo utilizzato per creare un ruolo collegato ai servizi dipende dal servizio. In alcuni casi, non devi creare manualmente un ruolo collegato ai servizi. Ad esempio, quando completi un'azione specifica (ad esempio la creazione di una risorsa) nel servizio, il servizio potrebbe creare il ruolo collegato ai servizi per te. O se stavi utilizzando un servizio prima di iniziare il supporto ai ruoli collegati ai servizi, allora il servizio potrebbe aver creato automaticamente il ruolo nel tuo account. Per ulteriori informazioni, consulta [Nel mio account è apparso un nuovo ruolo AWS](troubleshoot_roles.md#troubleshoot_roles_new-role-appeared).

In altri casi, il servizio può supportare la creazione di un ruolo collegato ai servizi manualmente utilizzando la console di servizio, le API o la CLI. Per informazioni su quali servizi supportano i ruoli collegati ai servizi, consulta la pagina [AWS servizi che funzionano con IAM](reference_aws-services-that-work-with-iam.md) e cerca i servizi per cui è indicato **Sì **nella colonna **Ruolo collegato ai servizi**. Per scoprire se il servizio supporta la creazione del ruolo collegato ai servizi, selezionare il link **Sì** per visualizzare il ruolo collegato ai servizi per quel servizio.

Se il servizio non supporta la creazione del ruolo, è possibile utilizzare IAM per creare il ruolo collegato ai servizi.

**Importante**  
I ruoli collegati ai servizi vengono conteggiati nel limite dei [Ruoli IAM in un Account AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-entities), ma se è stato raggiunto il limite puoi sempre creare i ruoli collegati ai servizi nel tuo account. Solo i ruoli collegati ai servizi possono superare il limite.

### Creazione di un ruolo collegato ai servizi (console)
<a name="create-service-linked-role-iam-console"></a>

Prima di creare un ruolo collegato ai servizi in IAM, scopri se il servizio collegato crea automaticamente i ruoli collegati ai servizi; inoltre, scopri se è possibile creare il ruolo dalla console del servizio, dall'API o dalla CLI.<a name="create-service-linked-role-iam-console"></a>

**Come creare un ruolo collegato ai servizi (console)**

1. Accedi e apri la console IAM all'indirizzo. Console di gestione AWS [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

1. Nel pannello di navigazione della console IAM seleziona **Ruoli**. Quindi seleziona **Create role** (Crea ruolo).

1. Scegli il tipo di ruolo di **servizio AWS **.

1. Scegli il caso d'uso per il servizio. I casi d'uso sono definiti dal servizio in modo da includere la policy di attendibilità richiesta dal servizio. Quindi, seleziona **Successivo**.

1. Scegli una o più policy di autorizzazione da collegare al ruolo. A seconda del caso d'uso selezionato, il servizio può eseguire una di queste operazioni:
   + Definire le autorizzazioni utilizzate dal ruolo.
   + Consentire di scegliere tra un set limitato di autorizzazioni.
   + Consentire di scegliere qualsiasi autorizzazione.
   + Ti consente di non selezionare policy in questo momento, creare le policy successivamente e quindi collegarle al ruolo.

   Seleziona la casella di controllo accanto alla policy che assegna le autorizzazioni desiderate per il ruolo, quindi scegli **Successivo**. 
**Nota**  
Le autorizzazioni specificate sono disponibili per qualsiasi entità che utilizza il ruolo. Per default, un ruolo non dispone di autorizzazioni.

1. Il grado di personalizzazione per **Nome ruolo** viene definito dal servizio. Se il servizio definisce il nome del ruolo, allora questa opzione non può essere modificata. In altri casi, il servizio può definire un prefisso per il ruolo e consentirti di inserire un suffisso opzionale.

   Se possibile, inserisci il suffisso del nome del ruolo da aggiungere al nome predefinito. Il suffisso consente di identificare lo scopo del ruolo. I nomi dei ruoli devono essere univoci all'interno dell'account AWS . Non si distinguono per caso. Ad esempio, non è possibile creare ruoli denominati sia **<service-linked-role-name>\$1SAMPLE** che **<service-linked-role-name>\$1sample**. Poiché varie entità possono fare riferimento al ruolo, non è possibile modificare il nome del ruolo dopo averlo creato.

1. (Facoltativo) In **Description** (Descrizione), modifica la descrizione per il nuovo ruolo collegato ai servizi.

1. Non è possibile collegare tag ai ruoli collegati ai servizi durante la creazione. Per ulteriori informazioni sull'utilizzo dei tag in IAM, consultare [Tag per AWS Identity and Access Management le risorse](id_tags.md).

1. Rivedere il ruolo e scegliere **Crea ruolo**.

### Creazione di un ruolo collegato ai servizi (AWS CLI)
<a name="create-service-linked-role-iam-cli"></a>

Prima di creare un ruolo collegato ai servizi in IAM, scopri se il servizio collegato crea automaticamente i ruoli collegati ai servizi e se è possibile creare il ruolo dalla CLI del servizio. Se la CLI del servizio non è supportata, puoi usare i comandi IAM per creare un ruolo collegato ai servizi con la policy di attendibilità e le policy in linea che il servizio richiede per assumere il ruolo.

**Per creare un ruolo collegato ai servizi (AWS CLI)**

Esegui il comando seguente:

```
aws iam [create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) --aws-service-name SERVICE-NAME.amazonaws.com
```

### Creazione di un ruolo collegato al servizio (API)AWS
<a name="create-service-linked-role-iam-api"></a>

Prima di creare un ruolo collegato ai servizi in IAM, scopri se il servizio collegato crea automaticamente i ruoli collegati ai servizi e scopri se è possibile creare il ruolo dalle API del servizio. Se l'API del servizio non è supportata, puoi utilizzarla per creare un ruolo collegato al servizio con la policy di fiducia e le politiche in linea necessarie al servizio per assumere il ruolo. AWS 

**Per creare un ruolo collegato al servizio (API)AWS **

Utilizzare la chiamata API [CreateServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html). Nella richiesta, specificare un nome del servizio di `SERVICE_NAME_URL.amazonaws.com`. 

Ad esempio, per creare il ruolo collegato ai servizi **Lex Bots (Bot di Lex)**, utilizzare `lex.amazonaws.com`.

# Creazione di un ruolo per un provider di identità di terze parti
<a name="id_roles_create_for-idp"></a>

Puoi utilizzare provider di identità invece di creare utenti IAM nel tuo Account AWS. Con un provider di identità (IdP), puoi gestire le tue identità utente all'esterno AWS e concedere a queste identità utente esterne le autorizzazioni per accedere AWS alle risorse del tuo account. Per ulteriori informazioni sulla federazione e sui provider di identità, consultare [Provider di identità e federazione in AWS](id_roles_providers.md).

## Creazione di un ruolo per i principali federati OIDC e SAML (console)
<a name="roles-creatingrole-federated-users-console"></a>

Le procedure per la creazione di un ruolo dipendono dalla scelta dei provider di terze parti:
+ Per OpenID Connect (OIDC), consulta [Creare un ruolo per la federazione OpenID Connect (console)](id_roles_create_for-idp_oidc.md).
+ Per SAML 2.0, consulta [Creare un ruolo per una federazione SAML 2.0 (console)](id_roles_create_for-idp_saml.md).

## Creazione di un ruolo per l'accesso federato (AWS CLI)
<a name="roles-creatingrole-identityprovider-cli"></a>

Le procedure per creare un ruolo per il provider di identità supportato (OIDC o SAML) dalla AWS CLI sono identiche. La differenza consiste nel contenuto della policy di affidabilità creata in passaggi preliminari. Inizia seguendo le fasi descritte nella sezione dei **prerequisiti** per il tipo di provider in uso:
+ Per un provider OIDC, consulta [Prerequisiti per la creazione di un ruolo per OIDC](id_roles_create_for-idp_oidc.md#idp_oidc_Prerequisites).
+ Per un provider SAML, consulta [Prerequisiti per la creazione di un ruolo per SAML](id_roles_create_for-idp_saml.md#idp_saml_Prerequisites).

La creazione di un ruolo da richiede diversi passaggi. AWS CLI Quando si utilizza la console per creare un ruolo, molti passaggi vengono eseguiti automaticamente, ma con la console AWS CLI è necessario eseguire esplicitamente ogni passaggio da soli. È necessario creare il ruolo e quindi assegnargli una policy di autorizzazione. Puoi anche scegliere di impostare il [limite delle autorizzazioni](access_policies_boundaries.md) per il ruolo.

**Per creare un ruolo (AWS CLI)**

1. Creare un ruolo: [aws iam create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html)

1. [Allega una politica di autorizzazioni al ruolo: aws iam attach-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html)

    or

   [Crea una politica di autorizzazioni in linea per il ruolo: aws iam put-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-policy.html)

1. (Facoltativo) Aggiungere attributi personalizzati al ruolo collegando tag: [aws iam tag-role](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-role.html)

   Per ulteriori informazioni, consulta [Gestione dei tag sui ruoli (AWS CLI o AWS API) IAM](id_tags_roles.md#id_tags_roles_procs-cli-api).

1. [(Facoltativo) Imposta il [limite delle autorizzazioni](access_policies_boundaries.md) per il ruolo: aws iam put-role-permissions-boundary](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-permissions-boundary.html)

   Il limite delle autorizzazioni controlla il numero massimo di autorizzazioni che è possibile concedere a un ruolo. I limiti delle autorizzazioni sono una funzionalità avanzata. AWS 

L'esempio seguente mostra i primi due passaggi, più comuni, per la creazione di un ruolo del provider di identità in un ambiente semplice. Questo esempio permette agli utenti dell'account `123456789012` di assumere il ruolo e visualizzare il bucket `example_bucket` di Amazon S3. Questo esempio presuppone inoltre che tu stia eseguendo Windows AWS CLI su un computer che esegue Windows e che lo abbia già configurato AWS CLI con le tue credenziali. Per ulteriori informazioni, consultare la pagina relativa alla [configurazione di AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html).

La policy di attendibilità di esempio riportata di seguito è progettata per un'app per dispositivi mobili in cui l'utente accede tramite Amazon Cognito. In questo esempio, *us-east:12345678-ffff-ffff-ffff-123456* rappresenta l'ID del pool di identità assegnato da Amazon Cognito.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "RoleForCognito",
        "Effect": "Allow",
        "Principal": {"Federated": "cognito-identity.amazonaws.com"},
        "Action": "sts:AssumeRoleWithWebIdentity",
        "Condition": {"StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east:12345678-ffff-ffff-ffff-123456"}}
    }
}
```

------

La policy delle autorizzazioni seguente consente agli utenti che assumono il ruolo di eseguire solo l'operazione `ListBucket` sul bucket `example_bucket` di Amazon S3.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "s3:ListBucket",
    "Resource": "arn:aws:s3:::example_bucket"
  }
}
```

------

Per creare questo ruolo `Test-Cognito-Role`, è prima necessario salvare la policy di attendibilità precedente con il nome `trustpolicyforcognitofederation.json` e la policy di autorizzazione precedente con il nome `permspolicyforcognitofederation.json` nella cartella `policies` dell'unità `C:` locale. È quindi possibile utilizzare i comandi seguenti per creare il ruolo e collegare la policy inline.

```
# Create the role and attach the trust policy that enables users in an account to assume the role.
$ aws iam create-role --role-name Test-Cognito-Role --assume-role-policy-document file://C:\policies\trustpolicyforcognitofederation.json

# Attach the permissions policy to the role to specify what it is allowed to do.
aws iam put-role-policy --role-name Test-Cognito-Role --policy-name Perms-Policy-For-CognitoFederation --policy-document file://C:\policies\permspolicyforcognitofederation.json
```

## Creazione di un ruolo per l'accesso federato (API)AWS
<a name="roles-creatingrole-identityprovider-api"></a>

Le procedure per creare un ruolo per il provider di identità supportato (OIDC o SAML) dalla AWS CLI sono identiche. La differenza consiste nel contenuto della policy di affidabilità creata in passaggi preliminari. Inizia seguendo le fasi descritte nella sezione dei **prerequisiti** per il tipo di provider in uso:
+ Per un provider OIDC, consulta [Prerequisiti per la creazione di un ruolo per OIDC](id_roles_create_for-idp_oidc.md#idp_oidc_Prerequisites).
+ Per un provider SAML, consulta [Prerequisiti per la creazione di un ruolo per SAML](id_roles_create_for-idp_saml.md#idp_saml_Prerequisites).

**Per creare un ruolo (AWS API)**

1. Crea un ruolo: [CreateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html)

1. Allega una politica di autorizzazioni al ruolo: [AttachRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachRolePolicy.html)

    or

   Crea una politica di autorizzazioni in linea per il ruolo: [PutRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePolicy.html)

1. (Facoltativo) Aggiungi attributi personalizzati all'utente allegando tag: [TagRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagRole.html)

   Per ulteriori informazioni, consulta [Gestione dei tag sugli utenti IAM (AWS CLI o AWS API)](id_tags_users.md#id_tags_users_procs-cli-api).

1. (Facoltativo) Imposta il [limite delle autorizzazioni per il ruolo](access_policies_boundaries.md): [PutRolePermissionsBoundary](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePermissionsBoundary.html)

   Il limite delle autorizzazioni controlla il numero massimo di autorizzazioni che è possibile concedere a un ruolo. I limiti delle autorizzazioni sono una funzionalità avanzata. AWS 

# Creare un ruolo per la federazione OpenID Connect (console)
<a name="id_roles_create_for-idp_oidc"></a>

Puoi utilizzare i provider di identità federati OpenID Connect (OIDC) invece di creare utenti nel tuo. AWS Identity and Access Management Account AWS Con un provider di identità (IdP), puoi gestire le tue identità utente all'esterno AWS e concedere a queste identità utente esterne le autorizzazioni per accedere AWS alle risorse del tuo account. Per ulteriori informazioni sulla federazione e, vedere. IdPs [Provider di identità e federazione in AWS](id_roles_providers.md)

## Prerequisiti per la creazione di un ruolo per OIDC
<a name="idp_oidc_Prerequisites"></a>

Prima di poter creare un ruolo per la federazione OIDC, devi completare i seguenti passaggi obbligatori.<a name="oidc-prereqs"></a>

**Per prepararsi alla creazione di un ruolo per la federazione OIDC**

1. Registrati con uno o più servizi che offrono l'identità OIDC federata. Se stai creando un'app che richiede l'accesso alle tue AWS risorse, configurala anche con le informazioni del provider. Al momento della registrazione, il gestore fornisce un ID applicazione o destinatario univoco per l'app. Provider diversi utilizzano una terminologia diversa per questo processo. Questa guida utilizza il termine*configurare* per il processo di identificazione dell'applicazione con il provider. È possibile configurare più app con ogni provider o più provider con una sola app. Consulta le informazioni sull'utilizzo degli IdP specificate di seguito:
   + [Centro Sviluppatori di Login with Amazon](https://login.amazon.com/)
   + [Aggiunta dell'accesso a Facebook a un'app o a un sito Web](https://developers.facebook.com/docs/facebook-login/v2.1) sul sito degli sviluppatori di Facebook.
   + [Utilizzo della OAuth versione 2.0 per il login (OpenID Connect)](https://developers.google.com/accounts/docs/OAuth2Login) sul sito degli sviluppatori di Google.

1. <a name="idpoidcstep2"></a>Dopo aver ricevuto le informazioni richieste dall'IdP, crea un IdP in IAM. Per ulteriori informazioni, consulta [Creare un provider di identità OpenID Connect (OIDC) in IAM](id_roles_providers_create_oidc.md).
**Importante**  
Se utilizzi un IdP OIDC di Google, Facebook o Amazon Cognito, non occorre creare un IdP IAM separato nella Console di gestione AWS. Questi provider di identità OIDC sono già integrati AWS e possono essere utilizzati. Ignora questa fase e vai alla fase successiva per creare nuovi ruoli utilizzando l'IdP.

1. Prepara le policy per il ruolo che verrà assunto dagli utenti autenticati dal provider di identità. Come qualsiasi altro ruolo, anche il ruolo per un'app per dispositivi mobili include due policy. Una è la policy di affidabilità, che specifica chi può assumere il ruolo. L'altra è la policy di autorizzazione, che specifica le operazioni e le risorse AWS a cui l'app per dispositivi mobili può accedere o meno.

   Per il Web IdPs, ti consigliamo di utilizzare [Amazon Cognito](https://aws.amazon.com/cognito/) per gestire le identità. In tal caso, si utilizza una policy di attendibilità simile all'esempio seguente.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Principal": {"Federated": "cognito-identity.amazonaws.com"},
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
               "StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east-2:12345678-abcd-abcd-abcd-123456"},
               "ForAnyValue:StringLike": {"cognito-identity.amazonaws.com:amr": "unauthenticated"}
           }
       }
   }
   ```

------

   Sostituisci `us-east-2:12345678-abcd-abcd-abcd-123456` con l'ID del pool di identità che ti ha assegnato Amazon Cognito.

   Nella configurazione manuale di un IdP OIDC, al momento della creazione della policy di attendibilità occorre utilizzare tre valori che garantiscono che solo l'app in questione possa assumere quel ruolo:
   + Per l'elemento `Action`, si utilizza l'operazione `sts:AssumeRoleWithWebIdentity`.
   + Per l'elemento `Principal`, usa la stringa `{"Federated":providerUrl/providerArn}`.
     + Per alcuni OIDC comuni IdPs, si tratta di un URL. `providerUrl` Gli esempi seguenti includono metodi per specificare il principale per alcuni casi comuni: IdPs

       `"Principal":{"Federated":"cognito-identity.amazonaws.com"}`

       `"Principal":{"Federated":"www.amazon.com"}`

       `"Principal":{"Federated":"graph.facebook.com"}`

       `"Principal":{"Federated":"accounts.google.com"}`
     + Per gli altri gestori OIDC, utilizza il nome della risorsa Amazon (ARN) dell'IdP OIDC creato in [Step 2](#idpoidcstep2), come nell'esempio seguente:

       `"Principal":{"Federated":"arn:aws:iam::123456789012:oidc-provider/server.example.com"}`
   + Per l'elemento `Condition`, si utilizza una condizione `StringEquals` per limitare le autorizzazioni. È necessario testare l'ID del pool di identità per Amazon Cognito o l'ID app per altri provider. L'ID del pool di identità dovrebbe corrispondere all'ID app che hai ricevuto durante la configurazione dell'app con l'IdP. Questa corrispondenza tra i IDs garantisce che la richiesta provenga dalla tua app.
**Nota**  
I ruoli IAM per i pool di identità di Amazon Cognito si affidano al principale del servizio `cognito-identity.amazonaws.com` per assumere il ruolo. I ruoli di questo tipo devono contenere almeno una chiave di condizione per limitare i principali che possono assumere il ruolo.  
Considerazioni aggiuntive si applicano ai pool di identità di Amazon Cognito che assumono [ruoli IAM su più account](access_policies-cross-account-resource-access.md). Le policy di attendibilità di questi ruoli devono accettare il principale del servizio `cognito-identity.amazonaws.com` e devono contenere la chiave di condizione `aud` per limitare l'assunzione di ruoli agli utenti dei pool di identità previsti. Una policy che considera attendibili i pool di identità di Amazon Cognito senza questa condizione comporta il rischio che un utente proveniente da un pool di identità non intenzionale possa assumere il ruolo. Per ulteriori informazioni, consulta [Policy di attendibilità per i ruoli IAM nell'autenticazione di base (classica)](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#trust-policies) nella *Guida per gli sviluppatori di Amazon Cognito*.

     Crea un elemento condizione simile agli esempi seguenti, a seconda dell'IdP in uso: 

     `"Condition": {"StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east:12345678-ffff-ffff-ffff-123456"}}`

     `"Condition": {"StringEquals": {"www.amazon.com:app_id": "amzn1.application-oa2-123456"}}`

     `"Condition": {"StringEquals": {"graph.facebook.com:app_id": "111222333444555"}}`

     `"Condition": {"StringEquals": {"accounts.google.com:aud": "66677788899900pro0"}}`

     Per i provider OIDC, si utilizza l'URL completo del provider di identità OIDC con la chiave di contesto `aud`, come nell'esempio seguente: 

     `"Condition": {"StringEquals": {"server.example.com:aud": "appid_from_oidc_idp"}}`
**Nota**  
I valori per il principale nella policy di attendibilità per il ruolo sono specifici dell'IdP. Un ruolo per OIDC può specificare solo un principale. Pertanto, se l'app per dispositivi mobili consente agli utenti di effettuare l'accesso da più di un IdP, devi creare un ruolo separato per ogni IdP da supportare. Crea policy di attendibilità separate per ogni IdP.

   Se un utente utilizza un'app per dispositivi mobili per accedere da Login with Amazon, si applica la policy di attendibilità di esempio riportata di seguito. Nell'esempio, *amzn1.application-oa2-123456* rappresenta l'ID dell'app che Amazon assegna quando hai configurato l'app utilizzando Login with Amazon.

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

****  

   ```
   {
         "Version":"2012-10-17",		 	 	 
         "Statement": [{
             "Sid": "RoleForLoginWithAmazon",
             "Effect": "Allow",
             "Principal": {"Federated": "www.amazon.com"},
             "Action": "sts:AssumeRoleWithWebIdentity",
             "Condition": {"StringEquals": {"www.amazon.com:app_id": "amzn1.application-oa2-123456"}}
         }]
     }
   ```

------

   Se un utente utilizza un'app per dispositivi mobili per accedere da Facebook, si applica la policy di attendibilità di esempio riportata di seguito. In questo esempio, *111222333444555* rappresenta l'ID dell'app assegnato da Facebook.

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

****  

   ```
   {
         "Version":"2012-10-17",		 	 	 
         "Statement": [{
             "Sid": "RoleForFacebook",
             "Effect": "Allow",
             "Principal": {"Federated": "graph.facebook.com"},
             "Action": "sts:AssumeRoleWithWebIdentity",
             "Condition": {"StringEquals": {"graph.facebook.com:app_id": "111222333444555"}}
         }]
     }
   ```

------

   Se un utente utilizza un'app per dispositivi mobili per accedere da Google, si applica la policy di attendibilità di esempio riportata di seguito. In questo esempio, *666777888999000* rappresenta l'ID dell'app assegnato da Google.

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

****  

   ```
   {
         "Version":"2012-10-17",		 	 	 
         "Statement": [{
             "Sid": "RoleForGoogle",
             "Effect": "Allow",
             "Principal": {"Federated": "accounts.google.com"},
             "Action": "sts:AssumeRoleWithWebIdentity",
             "Condition": {"StringEquals": {"accounts.google.com:aud": "666777888999000"}}
         }]
     }
   ```

------

   Se un utente utilizza un'app per dispositivi mobili per accedere da Amazon Cognito, si applica la policy di attendibilità di esempio riportata di seguito. In questo esempio, *us-east:12345678-ffff-ffff-ffff-123456* rappresenta l'ID del pool di identità assegnato da Amazon Cognito.

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

****  

   ```
   {
         "Version":"2012-10-17",		 	 	 
         "Statement": [{
             "Sid": "RoleForCognito",
             "Effect": "Allow",
             "Principal": {"Federated": "cognito-identity.amazonaws.com"},
             "Action": "sts:AssumeRoleWithWebIdentity",
             "Condition": {"StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east:12345678-ffff-ffff-ffff-123456"}}
         }]
     }
   ```

------

## Creazione di un ruolo per OIDC
<a name="idp_oidc_Create"></a>

Una volta completati i prerequisiti, puoi creare il ruolo in IAM. *Per i provider di identità OpenID Connect (OIDC) condivisi riconosciuti, IAM richiede una valutazione esplicita di affermazioni specifiche in JSON Web Tokens (IdPs), note come controlli del provider di identità. JWTs* *Per ulteriori informazioni su quali OIDC dispongono dei controlli dei provider di identità, consulta. IdPs * [Controlli tramite provider di identità per i provider OIDC condivisi](id_roles_providers_oidc_secure-by-default.md)

Nella procedura seguente viene descritto come creare il ruolo per la federazione OIDC nella Console di gestione AWS. Per creare un ruolo dall' AWS API AWS CLI or, consulta le procedure disponibili all'indirizzo. [Creazione di un ruolo per un provider di identità di terze parti](id_roles_create_for-idp.md)

**Importante**  
Se utilizzi Amazon Cognito, utilizza la console di Amazon Cognito per configurare i ruoli. In caso contrario, usa la console IAM per creare un ruolo per la federazione OIDC.

**Per creare un ruolo IAM per la federazione OIDC**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione, scegli **Ruoli**, quindi **Crea ruolo**.

1. Scegli **Identità Web** come tipo di entità attendibile e seleziona **Avanti**.

1. Per **Identity provider** (Gestore dell'identità digitale [IdP]), scegli l'IdP per il ruolo: 
   + Se vuoi creare un ruolo per un singolo IdP Web, scegli **Login with Amazon**, **Facebook** o **Google**. 
**Nota**  
Devi creare un ruolo separato per ogni IdP che intendi supportare.
   + Se vuoi creare un ruolo per uno scenario avanzato per Amazon Cognito, scegli **Amazon Cognito**. 
**Nota**  
Devi creare manualmente un ruolo da utilizzare con Amazon Cognito solo quando operi in uno scenario avanzato. In caso contrario, i ruoli possono essere creati da Amazon Cognito. Per ulteriori informazioni su Amazon Cognito, consulta la pagina [Provider di identità esterni di pool di identità (identità federate)](https://docs.aws.amazon.com/cognito/latest/developerguide/external-identity-providers.html) nella *Guida per gli sviluppatori di Amazon Cognito*. 
   + Se desideri creare un ruolo per GitHub Actions, devi iniziare aggiungendo il provider GitHub OIDC a IAM. **Dopo aver aggiunto il provider GitHub OIDC a IAM, scegli token.actions.githubusercontent.com.** 
**Nota**  
Per informazioni su come configurare AWS il provider OIDC GitHub di Trust come identità federata, consulta [GitHub Docs - Configuring OpenID Connect in](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) Amazon Web Services. Per informazioni sulle best practice per limitare l'accesso ai ruoli associati a IAM IdP GitHub for, [Configurazione di un ruolo per il provider di GitHub identità OIDC](#idp_oidc_Create_GitHub) consulta questa pagina.
   + Se desideri creare un ruolo per HashiCorp Cloud Platform (HCP) Terraform, devi iniziare aggiungendo il provider Terraform OIDC a IAM. Dopo aver aggiunto il provider OIDC Terraform a IAM, scegli **app.terraform.io**. 
**Importante**  
Il provider IAM roles for HashiCorp Cloud Platform (HCP) Terraform OIDC deve valutare la chiave delle condizioni IAM, nella policy di fiducia dei ruoli. `app.terraform.io:sub` Questa chiave di condizione limita le organizzazioni, i progetti, gli spazi di lavoro o le fasi di esecuzione di HCP Terraform in grado di assumere il ruolo. Senza questa condizione chiave, la vostra policy di fiducia concede l'accesso al vostro ruolo e alle vostre AWS risorse da parte di identità esterne all'organizzazione, il che non è in linea con il principio del privilegio minimo.   
Se imposti o modifichi una politica di fiducia per un ruolo associato al provider HCP Terraform OIDC nel tuo AWS account, ma non valuti la chiave di condizione IAM, riceverai un errore. `app.terraform.io:sub` Inoltre, AWS STS negherà le richieste di autorizzazione se la policy di attendibilità del ruolo non valuta questa chiave di condizione.

1. Le informazioni richieste variano in base al provider OIDC scelto.
   + Inserisci l'identificatore per l'applicazione. L'etichetta relativa all'identificatore cambia in base al gestore scelto:
     + Se vuoi creare un ruolo per Login with Amazon, inserisci l'ID app nella casella **Application ID** (ID applicazione).
     + Se vuoi creare un ruolo per Facebook, inserisci l'ID app nella casella **Application ID** (ID applicazione).
     + Se vuoi creare un ruolo per Google, inserisci il nome del destinatario nella casella **Audience** (Destinatario).
     + Se vuoi creare un ruolo per Amazon Cognito, inserisci l'ID del pool di identità che hai creato per le applicazioni Amazon Cognito nella casella **Identity Pool ID** (ID pool di identità).
   + Se desideri creare un ruolo per GitHub Actions, inserisci i seguenti dettagli:
     + Per **Pubblico**, scegli `sts.amazonaws.com`.
     + Per **GitHub l'organizzazione**, inserisci il nome GitHub dell'organizzazione. Il nome GitHub dell'organizzazione è obbligatorio e deve essere alfanumerico, compresi i trattini (-). Non puoi usare caratteri jolly (\$1 e?) nel nome dell' GitHub organizzazione.
     + (Facoltativo) Per il **GitHub repository**, inserisci il nome del GitHub repository. Se non specifichi un valore, viene utilizzato un carattere jolly (`*`) per impostazione predefinita.
     + (Facoltativo) Per il **GitHub ramo**, inserisci il nome del GitHub ramo. Se non specifichi un valore, viene utilizzato un carattere jolly (`*`) per impostazione predefinita.
   + Se desideri creare un ruolo per HashiCorp Cloud Platform (HCP) Terraform, inserisci i seguenti dettagli:
     + Per **Pubblico**, scegli `aws.workload.identity`.
     + Per **Organizzazione**, inserisci il nome dell'organizzazione. È possibile specificare un carattere jolly (`*`) per tutte le organizzazioni.
     + Per **Progetto**, inserisci il nome del progetto. È possibile specificare un carattere jolly (`*`) per tutti i progetti.
     + In **Spazio di lavoro**, immetti un nome per lo spazio di lavoro. È possibile specificare un carattere jolly (`*`) per tutti gli spazi di lavoro.
     + Per **Fase di esecuzione**, inserisci il nome della fase di esecuzione. È possibile specificare un carattere jolly (`*`) per tutte le fasi di esecuzione.

1. (Facoltativo) In **Condizione (facoltativo)** scegli **Aggiungi condizione**per creare condizioni aggiuntive che devono essere soddisfatte prima che gli utenti dell'applicazione possano utilizzare le autorizzazioni concesse dal ruolo. Ad esempio, puoi aggiungere una condizione che conceda l'accesso alle AWS risorse solo per uno specifico ID utente IAM. Puoi anche aggiungere condizioni alla policy di attendibilità dopo la creazione del ruolo. Per ulteriori informazioni, consulta [Aggiornamento di una policy di attendibilità del ruolo](id_roles_update-role-trust-policy.md).

1. Verifica le informazioni su OIDC, quindi seleziona **Successivo**.

1. IAM include un elenco delle politiche AWS gestite e gestite dai clienti nel tuo account. Seleziona la policy delle autorizzazioni da utilizzare o scegli **Create policy** (Crea policy) per aprire una nuova scheda del browser e creare una nuova policy da zero. Per ulteriori informazioni, consulta [Creazione di policy IAM](access_policies_create-console.md#access_policies_create-start). Una volta creata la policy, chiudere la scheda e tornare alla scheda originale. Seleziona la casella di controllo accanto alle policy di autorizzazione che si desidera abbiano gli utenti OIDC. È anche possibile non selezionare le policy ora e collegarle al ruolo in un secondo momento. Per default, un ruolo non dispone di autorizzazioni.

1. (Facoltativo) Impostare un [limite delle autorizzazioni](access_policies_boundaries.md). Questa è una caratteristica avanzata.

   Apri la sezione **Permissions boundary** (Limite delle autorizzazioni) e scegli **Use a permissions boundary to control the maximum role permissions** (Usa un limite delle autorizzazioni per controllare il numero massimo di autorizzazioni del ruolo). Selezionare la policy da utilizzare per il limite delle autorizzazioni.

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

1. In **Role name**, (Nome ruolo), inserisci un nome. I nomi dei ruoli devono essere univoci all'interno del tuo Account AWS. Non fanno distinzione tra maiuscole e minuscole. Ad esempio, non è possibile creare ruoli denominati sia **PRODROLE** sia **prodrole**. Poiché altre AWS risorse potrebbero fare riferimento al ruolo, non puoi modificare il nome del ruolo dopo averlo creato.

1. (Facoltativo) In **Description** (Descrizione), inserisci una descrizione per il nuovo ruolo.

1. Per modificare i casi d'uso e le autorizzazioni per il ruolo, scegli **Edit** (Modifica) nelle sezioni **Step 1: Select trusted entities** (Fase 1: seleziona le entità attendibili) o **Step 2: Add permissions** (Fase 2: aggiungi autorizzazioni). 

1. (Facoltativo) Per aggiungere metadati al ruolo, collegare i tag come coppie chiave-valore. Per ulteriori informazioni sull'utilizzo dei tag in IAM, consultare [Tag per AWS Identity and Access Management le risorse](id_tags.md).

1. Rivedere il ruolo e scegliere **Crea ruolo**.

## Configurazione di un ruolo per il provider di GitHub identità OIDC
<a name="idp_oidc_Create_GitHub"></a>

Se si utilizza GitHub come provider di identità (IdP) OpenID Connect (OIDC), la best practice consiste nel limitare le entità che possono assumere il ruolo associato all'IDP IAM. Quando includi una dichiarazione di condizione nella policy di fiducia, puoi limitare il ruolo a un' GitHuborganizzazione, un repository o una filiale specifici. Puoi usare la chiave di condizione `token.actions.githubusercontent.com:sub` con operatori di condizione delle stringhe per limitare l'accesso. Ti consigliamo di limitare la condizione a un insieme specifico di repository o filiali all'interno dell'organizzazione GitHub . Per informazioni su come configurare AWS l'OIDC GitHub di To Trust come identità federata, consulta [GitHub Docs - Configuring OpenID Connect in](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) Amazon Web Services. 

Se utilizzi GitHub ambienti in flussi di lavoro operativi o in policy OIDC, ti consigliamo vivamente di aggiungere regole di protezione all'ambiente per una maggiore sicurezza. Utilizza i rami e i tag di implementazione per limitare i rami e i tag che possono essere implementati nell'ambiente. Per ulteriori informazioni sulla configurazione degli ambienti con regole di protezione, consulta [i rami e i tag di distribuzione](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-branches-and-tags) nell'articolo *Utilizzo degli ambienti GitHub* per la distribuzione.

Quando GitHub OIDC IdP è il Principal affidabile per il tuo ruolo, IAM verifica la condizione della policy di fiducia del ruolo per verificare che la chiave della condizione `token.actions.githubusercontent.com:sub` sia presente e che il suo valore non sia solo un carattere jolly (\$1 e?) o null. IAM esegue questo controllo quando la policy di attendibilità viene creata o aggiornata. Se la chiave di condizione `token.actions.githubusercontent.com:sub` non è presente o il valore della chiave non soddisfa i criteri di valore indicati, la richiesta avrà esito negativo e restituirà un errore.

**Importante**  
Se non limiti la chiave di condizione a un'organizzazione o `token.actions.githubusercontent.com:sub` a un repository specifici, GitHub le azioni di organizzazioni o repository al di fuori del tuo controllo possono assumere ruoli associati all' GitHub IdP IAM nel tuo account. AWS 

L'esempio seguente di policy di fiducia limita l'accesso all' GitHub organizzazione, al repository e alla filiale definiti. Il `token.actions.githubusercontent.com:sub` valore della chiave di condizione nell'esempio seguente è il formato predefinito del valore dell'oggetto documentato da. GitHub

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::012345678910:oidc-provider/token.actions.githubusercontent.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "token.actions.githubusercontent.com:aud": "sts.amazonaws.com",
          "token.actions.githubusercontent.com:sub": "repo:GitHubOrg/GitHubRepo:ref:refs/heads/GitHubBranch"
        }
      }
    }
  ]
}
```

------

La condizione di esempio seguente limita l'accesso all' GitHub organizzazione e all'archivio definiti, ma concede l'accesso a qualsiasi ramo all'interno del repository.

```
"Condition": {
  "StringEquals": {
          "token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
  },
  "StringLike": {    
    "token.actions.githubusercontent.com:sub": "repo:GitHubOrg/GitHubRepo:*"
  }
}
```

La condizione di esempio seguente limita l'accesso a qualsiasi repository o ramo all'interno dell'organizzazione definita. GitHub Si consiglia di limitare la chiave di condizione `token.actions.githubusercontent.com:sub` a un valore specifico che limiti l'accesso ad GitHub Actions dall'interno GitHub dell'organizzazione.

```
"Condition": {
  "StringEquals": {
          "token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
  },
  "StringLike": {    
    "token.actions.githubusercontent.com:sub": "repo:GitHubOrg/*"
  }
}
```

Per ulteriori informazioni sulle chiavi di federazione OIDC disponibili per i controlli delle condizioni nelle policy, consulta [Chiavi disponibili per la federazione AWS OIDC](reference_policies_iam-condition-keys.md#condition-keys-wif).

# Creare un ruolo per una federazione SAML 2.0 (console)
<a name="id_roles_create_for-idp_saml"></a>

 Puoi utilizzare la federazione SAML 2.0 invece di creare utenti IAM nel tuo Account AWS. Con un provider di identità (IdP), puoi gestire le tue identità utente all'esterno AWS e concedere a queste identità utente esterne le autorizzazioni per accedere AWS alle risorse del tuo account. Per ulteriori informazioni sulla federazione e sui provider di identità, consultare [Provider di identità e federazione in AWS](id_roles_providers.md).

**Nota**  
Per migliorare la resilienza della federazione, ti consigliamo di configurare l'IdP e la federazione AWS per supportare più endpoint di accesso SAML. Per i dettagli, consulta l'articolo del AWS Security Blog [Come utilizzare gli endpoint SAML regionali per](https://aws.amazon.com/blogs//security/how-to-use-regional-saml-endpoints-for-failover) il failover.

## Prerequisiti per la creazione di un ruolo per SAML
<a name="idp_saml_Prerequisites"></a>

Prima di creare un ruolo per la federazione SAML 2.0, devi completare i seguenti passaggi obbligatori.<a name="saml-prereqs"></a>

**Preparazione per la creazione di un ruolo per la federazione SAML 2.0**

1. <a name="idpsamlstep1"></a>Prima di creare un ruolo per la federazione basata su SAML, devi creare un provider SAML in IAM. Per ulteriori informazioni, consulta [Creare un provider di identità SAML in IAM](id_roles_providers_create_saml.md).

1. Prepara le policy per il ruolo che verrà assunto dagli utenti autenticati con SAML 2.0. Come qualsiasi altro ruolo, anche i ruoli per la federazione SAML includono due policy. Una è la policy di attendibilità del ruolo, che specifica chi può assumere il ruolo. L'altra è la politica di autorizzazione IAM che specifica le AWS azioni e le risorse a cui è consentito o negato l'accesso al principale federato SAML.

   Al momento della creazione della policy di attendibilità per il ruolo, devi utilizzare tre valori che garantiscono che solo la tua applicazione possa assumere il ruolo:
   + Per l'elemento `Action`, si utilizza l'operazione `sts:AssumeRoleWithSAML`.
   + Per l'elemento `Principal`, usa la stringa `{"Federated":ARNofIdentityProvider}`. Sostituire `ARNofIdentityProvider` con l'ARN del [provider di identità SAML](id_roles_providers_saml.md) creato in [Step 1](#idpsamlstep1).
   + Per l’elemento `Condition`, utilizza una condizione `StringEquals` per verificare che l’attributo `saml:aud` della risposta SAML corrisponda all’URL visualizzato dal browser quando si accede alla console. L’URL dell’endpoint di accesso corrisponde all’attributo destinatario SAML del provider di identità. Puoi includere l'accesso URLs all'interno di aree geografiche particolari. AWS consiglia di utilizzare gli endpoint regionali anziché l'endpoint globale per migliorare la resilienza della federazione. [Per un elenco dei *region-code* valori possibili, consulta la colonna **Regione** negli AWS endpoint di accesso.](https://docs.aws.amazon.com/general/latest/gr/signin-service.html)

     Se è richiesta la crittografia SAML, l’URL di accesso deve includere l’identificatore univoco che AWS assegna al provider SAML. Puoi visualizzare l’identificatore univoco selezionando il provider di identità nella console IAM per visualizzare la pagina dei dettagli.

     `https://region-code.signin.aws.amazon.com/saml/acs/IdP-ID`

   L'esempio seguente mostra una policy di affidabilità concepita per un utente federato SAML:

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": "sts:AssumeRoleWithSAML",
           "Principal": {
               "Federated": "arn:aws:iam::111122223333:saml-provider/PROVIDER-NAME"
           },
           "Condition": {
               "StringEquals": {
                   "SAML:aud": "https://region-code.signin.aws.amazon.com/saml"
               }
           }
       }
   }
   ```

------

   Sostituisci l'ARN principale con l'ARN effettivo del provider SAML, creato in IAM. L'ARN include l'ID account e il nome del provider. 

## Creazione di un ruolo per SAML
<a name="idp_saml_Create"></a>

Dopo aver completato i passaggi dei prerequisiti, è possibile creare il ruolo per la federazione basata su SAML. 

**Per creare un ruolo per una federazione basata su SAML**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

1. Nel pannello di navigazione della console IAM, scegli **Ruoli** e quindi **Crea ruolo**.

1. Selezionare il tipo di ruolo **SAML 2.0 federation (Federazione SAML 2.0)**.

1. In **Select a SAML provider** (Seleziona un gestore dell'identità digitale SAML), scegli il gestore per il ruolo. 

1. Selezionare il metodo di livello di accesso SAML 2.0. 
   + Scegli **Consenti solo l'accesso programmatico** per creare un ruolo che può essere assunto a livello di codice dall' AWS API oppure. AWS CLI
   + Scegli **Consenti Console di gestione AWS accesso e programmazione** per creare un ruolo che può essere assunto a livello di codice e da. Console di gestione AWS

   I due comandi sono simili, ma il ruolo che può essere assunto anche tramite console include una policy di affidabilità con una condizione particolare. Tale condizione verifica in modo esplicito che il destinatario SAML (attributo `SAML:aud`) sia impostato sull’endpoint di accesso di AWS per il tuo provider SAML.

1. La procedura per definire gli attributi varia a seconda del tipo di accesso.
   + Se si sta creando un ruolo per l'accesso programmatico, scegliere un attributo dall'elenco **Attributo**. Dopodiché, nella casella **Value** (Valore), inserisci un valore da includere nel ruolo. In questo modo, l'accesso al ruolo viene limitato agli utenti dal provider di identità la cui risposta di autenticazione SAML (asserzione) includa gli attributi specificati. Per fare in modo che il ruolo sia limitato a un sottoinsieme di utenti all'interno dell'organizzazione, specificare almeno un attributo. 
   + Se stai creando un ruolo per scopi programmatici e di Console di gestione AWS accesso, la sezione **Endpoint di accesso** definisce l'URL visualizzato dal browser quando accedi alla console. Questo endpoint è l’attributo destinatario SAML del tuo provider di identità, che corrisponde alla chiave di contesto [`saml:aud`](reference_policies_iam-condition-keys.md#condition-keys-saml). Per ulteriori informazioni, consulta [Configurare le asserzioni SAML per la risposta di autenticazione](id_roles_providers_create_saml_assertions.md).

     1. Scegli **Endpoint regionali** o **Endpoint non regionali**. Ti consigliamo di utilizzare più endpoint di accesso SAML regionali per migliorare la resilienza della federazione.

     1. Per **le regioni**, scegli le aree che il tuo provider SAML supporta per l'accesso. AWS 

     1.  **Affinché l'accesso URLs includa identificatori univoci**, seleziona se gli endpoint di accesso includono gli AWS identificatori univoci assegnati al tuo provider di identità SAML. Questa opzione è necessaria per le asserzioni SAML crittografate. Per ulteriori informazioni, consulta [Federazione SAML 2.0](id_roles_providers_saml.md).

1. Per aggiungere ulteriori condizioni relative agli attributi alla policy di attendibilità, scegli **Condition (optional)** (Condizione [facoltativo]), seleziona la condizione aggiuntiva e specifica un valore. 
**Nota**  
L'elenco include gli attributi SAML più comunemente utilizzati. IAM supporta attributi aggiuntivi che puoi usare per creare condizioni. Per un elenco degli attributi supportati, consulta [Chiavi disponibili per la federazione SAML](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#condition-keys-saml). Se si necessita di una condizione per un attributo SAML supportato che non è nell'elenco, è possibile aggiungere tale condizione manualmente. A tale scopo, modificare la policy di attendibilità dopo aver creato il ruolo.

1.  Verifica le informazioni di attendibilità di SAML 2.0, quindi scegli **Next** (Successivo). 

1. IAM include un elenco delle politiche AWS gestite e gestite dai clienti nel tuo account. Seleziona la policy delle autorizzazioni da utilizzare o scegli **Create policy** (Crea policy) per aprire una nuova scheda del browser e creare una nuova policy da zero. Per ulteriori informazioni, consulta [Creazione di policy IAM](access_policies_create-console.md#access_policies_create-start). Una volta creata la policy, chiudere la scheda e tornare alla scheda originale. Seleziona la casella di controllo accanto alle policy di autorizzazione che desideri concedere agli utenti federati SAML. È anche possibile non selezionare le policy ora e collegarle al ruolo in un secondo momento. Per default, un ruolo non dispone di autorizzazioni.

1. (Facoltativo) Impostare un [limite delle autorizzazioni](access_policies_boundaries.md). Questa è una caratteristica avanzata.

   Apri la sezione **Permissions boundary** (Limite delle autorizzazioni) e scegli **Use a permissions boundary to control the maximum role permissions** (Usa un limite delle autorizzazioni per controllare il numero massimo di autorizzazioni del ruolo). Selezionare la policy da utilizzare per il limite delle autorizzazioni.

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

1. Scegli **Prossimo: Rivedi**.

1. In **Role name**, (Nome ruolo), inserisci un nome. I nomi dei ruoli devono essere univoci all'interno del tuo Account AWS. Non si distinguono per caso. Ad esempio, non è possibile creare ruoli denominati sia **PRODROLE** che **prodrole**. Poiché altre AWS risorse potrebbero fare riferimento al ruolo, non è possibile modificare il nome del ruolo dopo che è stato creato. 

1. (Facoltativo) In **Description** (Descrizione), inserisci una descrizione per il nuovo ruolo.

1. Scegli **Edit** (Modifica) nelle sezioni **Step 1: Select trusted entities** (Fase 1: seleziona le entità attendibili) o **Step 2: Add permissions** (Fase 2: aggiungi autorizzazioni) per modificare i casi d'uso e le autorizzazioni per il ruolo. 

1. (Facoltativo) Aggiungere metadati al ruolo collegando i tag come coppie chiave-valore. Per ulteriori informazioni sull'utilizzo dei tag in IAM, consultare [Tag per AWS Identity and Access Management le risorse](id_tags.md).

1. Rivedere il ruolo e scegliere **Crea ruolo**.

Una volta creato il ruolo, è possibile completare la relazione di trust SAML configurando il software provider di identità con informazioni su AWS. Queste informazioni includono i ruoli che devono utilizzare gli utenti federati SAML. Tale operazione viene definita configurazione della relazione di trust fra IdP e AWS. Per ulteriori informazioni, consulta [Configurare il provider di identità SAML 2.0 con una relazione di attendibilità della parte affidabile e aggiunta di attestazioni](id_roles_providers_create_saml_relying-party.md). 

# Creare un ruolo utilizzando policy di attendibilità personalizzate
<a name="id_roles_create_for-custom"></a>

Puoi creare una politica di fiducia personalizzata per delegare l'accesso e consentire ad altri di eseguire azioni nel tuo Account AWS. Per ulteriori informazioni, consulta [Creazione di policy IAM](access_policies_create-console.md#access_policies_create-start).

Per informazioni su come utilizzare i ruoli per delegare le autorizzazioni, consultare [Termini e concetti dei ruoli](id_roles.md#id_roles_terms-and-concepts).

## Creazione di un ruolo IAM utilizzando una policy di attendibilità personalizzata (console)
<a name="roles-creatingrole-custom-trust-policy-console"></a>

Puoi utilizzare il Console di gestione AWS per creare un ruolo che un utente IAM può assumere. Ad esempio, supponiamo che l'organizzazione disponga di più Account AWS elementi per isolare un ambiente di sviluppo da un ambiente di produzione. Per informazioni di alto livello sulla creazione di un ruolo che consenta agli utenti nell'account di sviluppo di accedere alle risorse nell'account di produzione, consulta la sezione [Esempio di uno scenario in cui si utilizzano account di sviluppo e produzione separati](id_roles_common-scenarios_aws-accounts.md#id_roles_common-scenarios_aws-accounts-example).

**Creare un ruolo utilizzando una policy di attendibilità personalizzata (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione della console, selezionare **Ruoli** e **Crea ruolo**.

1. Scegli il tipo di ruolo **Custom trust policy** (Policy di attendibilità personalizzata).

1. Nella sezione **Custom trust policy** (Policy di attendibilità personalizzata), inserisci o incolla la policy di attendibilità personalizzata per il ruolo. Per ulteriori informazioni, consulta [Creazione di policy IAM](access_policies_create-console.md#access_policies_create-start).

1. Risolvi eventuali avvisi di sicurezza, errori o avvisi generali generati durante la [convalida delle policy](access_policies_policy-validator.md), quindi scegli **Next** (Successivo).

1. (Facoltativo) Impostare un [limite delle autorizzazioni](access_policies_boundaries.md). Questa è una funzionalità avanzata disponibile per i ruoli di servizio, ma non per i ruoli collegati ai servizi.

   Apri la sezione **Permissions boundary** (Limite delle autorizzazioni) e scegli **Use a permissions boundary to control the maximum role permissions** (Usa un limite delle autorizzazioni per controllare il numero massimo di autorizzazioni del ruolo). IAM include un elenco delle politiche AWS gestite e gestite dai clienti nel tuo account. Selezionare la policy da utilizzare per il limite delle autorizzazioni.

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

1. Il grado di personalizzazione per **Nome ruolo** viene definito dal servizio. Se il servizio definisce il nome del ruolo, questa opzione non può essere modificata. In altri casi, il servizio può definire un prefisso per il ruolo e consentire all'utente di aggiungere un suffisso opzionale. Alcuni servizi consentono di specificare l'intero nome del ruolo.

   Se possibile, inserisci un nome del ruolo o un suffisso del nome del ruolo. I nomi dei ruoli devono essere univoci all'interno del tuo Account AWS. Non si distinguono per caso. Ad esempio, non è possibile creare ruoli denominati sia **PRODROLE** che **prodrole**. Poiché altre AWS risorse potrebbero fare riferimento al ruolo, non è possibile modificare il nome del ruolo dopo che è stato creato.

1. (Facoltativo) In **Descrizione**, inserisci una descrizione per il nuovo ruolo.

1. (Facoltativo) Scegli **Modifica** nelle sezioni **Fase 1: seleziona le entità attendibili** o **Fase 2: aggiungi autorizzazioni** per modificare la policy personalizzata e le autorizzazioni per il ruolo. 

1. (Facoltativo) Aggiungere metadati al ruolo collegando i tag come coppie chiave-valore. Per ulteriori informazioni sull'utilizzo dei tag in IAM, consultare [Tag per AWS Identity and Access Management le risorse](id_tags.md).

1. Rivedere il ruolo e scegliere **Crea ruolo**.

# Esempi di policy per la delega dell'accesso
<a name="id_roles_create_policy-examples"></a>

Gli esempi seguenti mostrano come consentire o concedere Account AWS l'accesso alle risorse di un altro Account AWS. Per ulteriori informazioni su come creare una policy IAM utilizzando questi documenti di policy JSON, consulta [Creazione di policy utilizzando l'editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

**Topics**
+ [Utilizzo dei ruoli per delegare l'accesso alle risorse di altre Account AWS risorse](#example-delegate-xaccount-rolesapi)
+ [Utilizzo di una policy per delegare l'accesso ai servizi](#id_roles_create_policy-examples-access-to-services)
+ [Utilizzo di una policy basata sulle risorse per delegare l'accesso a un bucket Amazon S3 in un altro account](#example-delegate-xaccount-S3)
+ [Utilizzo di una policy basata sulle risorse per delegare l'accesso a una coda Amazon SQS in un altro account](#example-delegate-xaccount-SQS)
+ [Impossibile delegare l'accesso quando l'accesso all'account è rifiutato](#example-delegate-xaccount-SQS-denied)

## Utilizzo dei ruoli per delegare l'accesso alle risorse di altre Account AWS risorse
<a name="example-delegate-xaccount-rolesapi"></a>

 Per un tutorial che mostra come utilizzare i ruoli IAM per concedere agli utenti di un account l'accesso alle AWS risorse presenti in un altro account, consulta[Tutorial IAM: delega l'accesso tra AWS account utilizzando i ruoli IAM](tutorial_cross-account-with-roles.md). 

**Importante**  
È possibile includere l'ARN per un ruolo o utente specifico nell'elemento `Principal` di una policy di affidabilità del ruolo. Quando si salva la policy, AWS trasforma l'ARN in un ID principale univoco. Ciò aiuta a mitigare il rischio che qualcuno aumenti i propri privilegi rimuovendo e ricreando il ruolo o l'utente. Questa ID nella console non è normalmente presente, in quanto c'è anche una trasformazione inversa verso il nome ARN quando la policy di affidabilità viene visualizzata. Tuttavia, se si elimina il ruolo o l'utente, la relazione viene interrotta. La policy non è più applicabile, anche se si ricrea l'utente o il ruolo perché non corrisponde all'ID principale archiviato nella policy di attendibilità. Quando ciò accade, l'ID principale viene visualizzato nella console perché non è più AWS possibile mapparlo su un ARN. Il risultato è che se si elimina e si ricrea un utente o un ruolo referenziato in un elemento `Principal` della policy di attendibilità, è necessario modificare il ruolo per sostituire il nome ARN. L'utente o il ruolo viene trasformato nel nuovo ID principale quando si salva la policy.

## Utilizzo di una policy per delegare l'accesso ai servizi
<a name="id_roles_create_policy-examples-access-to-services"></a>

L'esempio seguente mostra una policy che può essere collegata a un ruolo. La policy consente a due servizi, Amazon EMR e AWS Data Pipeline, di assumere il ruolo. I servizi possono eseguire qualsiasi attività concesse da una policy di autorizzazioni assegnata al ruolo (non visualizzato). Per specificare più principali del servizio, non si specificano due elementi `Service`, è possibile averne solo uno. Utilizzare invece una serie di principali del servizio come il valore di un elemento singolo `Service`.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "elasticmapreduce.amazonaws.com",
          "datapipeline.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

## Utilizzo di una policy basata sulle risorse per delegare l'accesso a un bucket Amazon S3 in un altro account
<a name="example-delegate-xaccount-S3"></a>

In questo esempio, l'account A utilizza una policy basata sulle risorse (una [policy del bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucketPolicies.html) Amazon S3) per concedere all'account B l'accesso completo al bucket S3 dell'account A. A questo punto, l'account B crea una policy utente IAM per delegare tale accesso al bucket dell'account A a uno degli utenti nell'account B. 

La policy del bucket S3 nell'account A potrebbe essere simile alla policy seguente. In questo esempio, il bucket S3 dell'account A è denominato *amzn-s3-demo-bucket* e il numero dell'account B è 111122223333. Non specifica alcun utente o gruppo nell'account B, ma solo l'account stesso.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Sid": "AccountBAccess1",
    "Effect": "Allow",
    "Principal": {"AWS": "111122223333"},
    "Action": "s3:*",
    "Resource": [
      "arn:aws:s3:::amzn-s3-demo-bucket",
      "arn:aws:s3:::amzn-s3-demo-bucket/*"
    ]
  }
}
```

------

In alternativa, l'account A può utilizzare Amazon S3 [Access Control Lists (ACLs)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3_ACLs_UsingACLs.html) per concedere all'account B l'accesso a un bucket S3 o a un singolo oggetto all'interno di un bucket. In questo caso, l'unica cosa che cambia è il modo in cui l'account A concede l'accesso all'account B. L'account B utilizza ancora una policy per delegare l'accesso a un gruppo IAM nell'account B, come descritto nella parte successiva di questo esempio. Per maggiori informazioni sul controllo dell'accesso a bucket e oggetti S3, passa a [Controllo accessi](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingAuthAccess.html) nella *Guida per l'utente di Amazon Simple Storage Service*. 

L'amministratore dell'account B potrebbe creare le seguenti policy di esempio. La policy permette l'accesso in lettura a un gruppo o un utente nell'account B. La policy precedente concede l'accesso all'account B. Tuttavia, i singoli gruppi e gli utenti dell'account B non possono accedere alla risorsa finché una policy utente o di gruppo non concede esplicitamente le autorizzazioni alla risorsa. Le autorizzazioni in questa policy possono essere solo un subset di quelli nella precedente policy multiaccount. L'account B non può concedere più autorizzazioni ai propri gruppi e utenti rispetto a quanti concessi dall'account A all'account B nella prima policy. In questa policy, l'elemento `Action` è esplicitamente definito per permettere solo operazioni `List` e l'elemento `Resource` di questa policy corrisponde all'elemento `Resource` per la policy del bucket implementata dall'account A.

Per implementare questa policy, l'account B utilizza IAM per collegarla all'utente (o al gruppo) appropriato nell'account B. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "s3:List*",
    "Resource": [
      "arn:aws:s3:::amzn-s3-demo-bucket",
      "arn:aws:s3:::amzn-s3-demo-bucket/*"
    ]
  }
}
```

------

## Utilizzo di una policy basata sulle risorse per delegare l'accesso a una coda Amazon SQS in un altro account
<a name="example-delegate-xaccount-SQS"></a>

Nell'esempio seguente, l'account A ha una coda Amazon SQS che utilizza una policy basata sulla risorsa collegata alla coda per concedere l'accesso in coda all'account B. Quindi, l'account B utilizza una policy di gruppo IAM per delegare l'accesso a un gruppo nell'account B. 

La seguente policy di coda di esempio fornisce all'account B l'autorizzazione per eseguire le operazioni `SendMessage` e `ReceiveMessage` sulla coda dell'account A denominata *queue1*, ma solo tra mezzogiorno e le 15:00 del 30 novembre 2014. Il numero dell'account B è 1111-2222-3333. L'account A usa Amazon SQS per implementare questa policy. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Principal": {"AWS": "111122223333"},
    "Action": [
      "sqs:SendMessage",
      "sqs:ReceiveMessage"
    ],
    "Resource": ["arn:aws:sqs:*:123456789012:queue1"],
    "Condition": {
      "DateGreaterThan": {"aws:CurrentTime": "2014-11-30T12:00Z"},
      "DateLessThan": {"aws:CurrentTime": "2014-11-30T15:00Z"}
    }
  }
}
```

------

La policy dell'account B per la delega dell'accesso a un gruppo nell'account B potrebbe essere simile all'esempio seguente. L'account B usa IAM per collegare questa policy a un gruppo (o utente). 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "sqs:*",
    "Resource": "arn:aws:sqs:*:123456789012:queue1"
  }
}
```

------

Nell'esempio della policy utente IAM precedente, l'account B utilizza un carattere jolly per concedere all'utente l'accesso a tutte le operazioni Amazon SQS per la coda dell'account A. Tuttavia, l'account B può delegare l'accesso solo nella misura in cui all'account B è stato concesso l'accesso. Il gruppo dell'account B con la seconda policy può accedere alla coda solo tra mezzogiorno e le 15:00 del 30 novembre 2014. L'utente può eseguire solo le operazioni `SendMessage` e `ReceiveMessage`, come definito nella policy della coda Amazon SQS dell'account A. 

## Impossibile delegare l'accesso quando l'accesso all'account è rifiutato
<a name="example-delegate-xaccount-SQS-denied"></a>

Un Account AWS non può delegare l'accesso alle risorse di un altro account se l'altro account ha negato esplicitamente l'accesso all'account principale dell'utente. Il rifiuto si propaga agli utenti di tale account indipendentemente dal fatto che gli utenti dispongano di policy esistenti che garantiscono loro l'accesso.

Ad esempio, l'account A scrive una policy bucket per il bucket S3 dell'account A che rifiuta esplicitamente l'accesso all'account B per il bucket dell'account A. Tuttavia, l'account B scrive una policy utente IAM che concede a un utente dell'account B l'accesso al bucket dell'account A. Il rifiuto esplicito applicato al bucket S3 dell'account A si propaga agli utenti dell'account B e sostituisce la policy dell'utente IAM che concede l'accesso all'utente dell'account B. Per informazioni dettagliate su come vengono valutate le autorizzazioni, consulta [Logica di valutazione delle policy](reference_policies_evaluation-logic.md). 

La policy del bucket dell'account A potrebbe essere simile alla policy seguente. In questo esempio, il bucket S3 dell'account A è denominato *amzn-s3-demo-bucket* e il numero dell'account B è 1111-2222-3333. L'account A usa Amazon S3 per implementare questa policy. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Sid": "AccountBDeny",
    "Effect": "Deny",
    "Principal": {"AWS": "111122223333"},
    "Action": "s3:*",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
  }
}
```

------

Questo rifiuto esplicito sostituisce qualsiasi policy dell'account B che fornisce l'autorizzazione per accedere al bucket S3 nell'account A. 

# Gestione del ruolo IAM
<a name="id_roles_manage"></a>

Prima che un utente, applicazione o servizio possa utilizzare un ruolo che è stato creato, è necessario concedere le autorizzazioni per passare al ruolo. È possibile utilizzare qualsiasi policy collegata a gruppi o utenti per concedere le autorizzazioni necessarie. In questa sezione viene descritto come concedere agli utenti l'autorizzazione per l'utilizzo di un ruolo. Spiega inoltre come l'utente può passare a un ruolo dagli Console di gestione AWS strumenti per Windows PowerShell, da AWS Command Line Interface (AWS CLI) e dall'[https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API.

**Importante**  
Se crei un ruolo a livello programmatico anziché nella console IAM, hai l'opzione per aggiungere un `Path` con un massimo di 512 caratteri in aggiunta a `RoleName`, che può contenere fino a 64 caratteri. Tuttavia, se intendi utilizzare un ruolo con la funzione **Cambia ruolo** in Console di gestione AWS, la combinazione `Path` `RoleName` non può superare i 64 caratteri.

**Topics**
+ [Visualizzazione dell'accesso per il ruolo](#roles-modify_prerequisites)
+ [Generazione di una policy basata sulle informazioni di accesso](#roles-modify_gen-policy)
+ [Concedere le autorizzazioni agli utenti per cambiare ruoli](id_roles_use_permissions-to-switch.md)
+ [Concedere a un utente le autorizzazioni per passare un ruolo a un servizio AWS](id_roles_use_passrole.md)
+ [Revocare le credenziali di sicurezza temporanee per i ruoli IAM](id_roles_use_revoke-sessions.md)
+ [Aggiornamento di un ruolo collegato ai servizi](id_roles_update-service-linked-role.md)
+ [Aggiornamento di una policy di attendibilità del ruolo](id_roles_update-role-trust-policy.md)
+ [Aggiornamento delle autorizzazioni per un ruolo](id_roles_update-role-permissions.md)
+ [Aggiornamento delle impostazioni per un ruolo](id_roles_update-role-settings.md)
+ [Eliminare i ruoli o i profili delle istanze](id_roles_manage_delete.md)

## Visualizzazione dell'accesso per il ruolo
<a name="roles-modify_prerequisites"></a>

Prima di modificare le autorizzazioni per un ruolo, è opportuno esaminare la sua attività recente a livello di servizio. È un'opzione importante per non rimuovere l'accesso da parte di un principale (persona o applicazione) che la sta utilizzando. Per ulteriori informazioni sulla visualizzazione delle ultime informazioni di accesso, vedere [Perfeziona le autorizzazioni AWS utilizzando le informazioni dell'ultimo accesso](access_policies_last-accessed.md).

## Generazione di una policy basata sulle informazioni di accesso
<a name="roles-modify_gen-policy"></a>

Talvolta, è possibile concedere autorizzazioni a un'entità IAM (utente o ruolo) oltre a quelle richieste. Per ottimizzare le autorizzazioni concesse, puoi generare una policy IAM basata sull'attività di accesso per un'entità. IAM Access Analyzer esamina AWS CloudTrail i log e genera un modello di policy che contiene le autorizzazioni utilizzate dall'entità nell'intervallo di date specificato. È possibile utilizzare il modello per creare una policy gestita con autorizzazioni granulari e quindi collegarla al ruolo IAM. In questo modo, concedi solo le autorizzazioni necessarie all'utente o al ruolo per interagire con le AWS risorse per il tuo caso d'uso specifico. Per ulteriori informazioni, consulta [Generazione di policy per Sistema di analisi degli accessi IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html).

# Concedere le autorizzazioni agli utenti per cambiare ruoli
<a name="id_roles_use_permissions-to-switch"></a>

Quando un amministratore [crea un ruolo per l'accesso multi-account](id_roles_create_for-user.md), stabilisce l'attendibilità tra l'account proprietario del ruolo e le risorse (account che determina l'attendibilità) e l'account che contiene gli utenti (account attendibile). A tale scopo, l'amministratore dell'account attendibile specifica il numero dell'account attendibile come `Principal` nella policy di attendibilità del ruolo. Ciò consente *potenzialmente* a qualsiasi utente nell'account attendibile di assumere il ruolo. Per completare la configurazione, l'amministratore dell'account attendibile deve fornire a determinati gruppi o utenti dell'account l'autorizzazione per il passaggio al ruolo.

**Concessione dell'autorizzazione per passare a un ruolo**

1. In qualità di amministratore dell'account attendibile, crea una nuova policy per l'utente oppure modifica una policy esistente per aggiungere gli elementi richiesti. Per informazioni dettagliate, vedi [Creazione o modifica della policy](#roles-usingrole-createpolicy).

1. Quindi decidi come desideri eseguire la condivisione delle informazioni sul ruolo: 
   + **Role link** (Link del ruolo): invia agli utenti un collegamento che indirizza alla pagina **Switch Role** (Cambia ruolo) con tutti i dettagli già compilati. 
   + **ID account o alias:** fornisci a ciascun utente il nome del ruolo insieme al numero dell'ID account o all'alias dell'account. L'utente accede quindi alla pagina **Switch Role (Cambia ruolo)** e aggiunge i dettagli manualmente. 

   Per informazioni dettagliate, vedi [Fornire informazioni all'utente](#roles-usingrole-giveuser).

Tieni presente che puoi cambiare ruolo solo quando effettui l'accesso come utente IAM, come ruolo federato SAML o come ruolo con federazione delle identità Web. Non è possibile cambiare i ruoli se si effettua l'accesso come Utente root dell'account AWS.

**Importante**  
Non è possibile passare da un ruolo Console di gestione AWS a un ruolo che richiede un [ExternalId](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id)valore. È possibile passare a tale ruolo solo chiamando l'API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) che supporta il parametro `ExternalId`.

**Note**  
In questo argomento sono descritte le policy per un *utente* poiché sostanzialmente concedi autorizzazioni a un utente per l'esecuzione di un'operazione. Tuttavia, consigliamo di non concedere le autorizzazioni direttamente a un singolo utente. Quando un utente assume un ruolo, gli vengono assegnate le autorizzazioni associate a quel ruolo.
Quando si cambia ruolo in Console di gestione AWS, la console utilizza sempre le credenziali originali per autorizzare il passaggio. Questo vale sia per l'accesso come utente IAM che come ruolo federato SAML o come ruolo federato di identità Web. Ad esempio, se passi al RuoloA, IAM; utilizza le tue credenziali utente originali o le credenziali del ruolo federato per determinare se è possibile assumere il RuoloA. Se provi quindi a passare al RuoloB *mentre stai utilizzando il RuoloA*, per autorizzare il tentativo vengono utilizzate le credenziali utente **originali** o le credenziali del ruolo federato. Le credenziali per RuoloA non vengono utilizzate per questa operazione.

**Topics**
+ [Creazione o modifica della policy](#roles-usingrole-createpolicy)
+ [Fornire informazioni all'utente](#roles-usingrole-giveuser)

## Creazione o modifica della policy
<a name="roles-usingrole-createpolicy"></a>

Una policy che concede a un utente l'autorizzazione di assumere un ruolo deve includere una dichiarazione con effetto `Allow` per quanto segue: 
+ L'operazione `sts:AssumeRole`
+ L'Amazon Resource Name (ARN) del ruolo in un elemento `Resource`

Agli utenti che ottengono la policy (mediante l'appartenenza a un gruppo o collegata direttamente) è consentito cambiare ruoli sulla risorsa specificata.

**Nota**  
Se `Resource` è impostato su `*`, l'utente può assumere qualsiasi ruolo in qualsiasi account che considera l'account utente attendibile. (In altre parole, la policy di attendibilità del ruolo specifica l'account dell'utente come `Principal`). Come best practice, si consiglia di seguire il [principio di privilegio minimo](http://en.wikipedia.org/wiki/Principle_of_least_privilege) e specificare l'ARN completo solo per i ruoli necessari per l'utente.

L'esempio seguente mostra una policy che consente all'utente di assumere ruoli in un unico account. Inoltre, la policy utilizza un carattere jolly (\$1) per specificare che l'utente può passare a un ruolo solo se il nome del ruolo inizia con le lettere `Test`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::111122223333:role/Test*"
    }
}
```

------

**Nota**  
Le autorizzazioni che il ruolo concede all'utente non vengono aggiunte alle autorizzazioni già concesse per l'utente. Quando un utente passa a un ruolo, l'utente rinuncia temporaneamente alle proprie autorizzazioni originali in cambio di quelle concesse dal ruolo. Quando l'utente esce dal ruolo, le autorizzazioni originali dell'utente vengono ripristinate automaticamente. Ad esempio, assumiamo che le autorizzazioni dell'utente permettano di utilizzare le istanze Amazon EC2, ma le policy di autorizzazione del ruolo non concedano tali autorizzazioni. In tal caso, durante l'utilizzo del ruolo, l'utente non potrà utilizzare le istanze Amazon EC2 nella console. Inoltre, le credenziali temporanee ottenute tramite `AssumeRole` non funzioneranno con le istanze Amazon EC2 in modo programmatico.

## Fornire informazioni all'utente
<a name="roles-usingrole-giveuser"></a>

Dopo aver creato un ruolo e concesso all'utente le autorizzazioni per passare a tale ruolo, è necessario fornire all'utente quanto segue:
+ Il nome del ruolo
+ L'ID o l'alias dell'account che contiene il ruolo

Puoi semplificare le operazioni per gli utenti inviando loro un collegamento preconfigurato con l'ID account e il nome del ruolo. Puoi visualizzare il collegamento al ruolo dopo aver completato la procedura guidata **Crea ruolo** selezionando il banner **Visualizza ruolo** o nella pagina **Riepilogo del ruolo** per qualsiasi ruolo abilitato per più account.

È inoltre possibile utilizzare il formato seguente per creare manualmente il collegamento. Sostituisci l'ID account o alias e il nome del ruolo per i due parametri nel seguente esempio:

`https://signin.aws.amazon.com/switchrole?account=your_account_ID_or_alias&roleName=optional_path/role_name`

Consigliamo di suggerire agli utenti di consultare l'argomento [Passare da un utente a un ruolo IAM (console)](id_roles_use_switch-role-console.md) per guidarli nel processo. Per risolvere i problemi più comuni che si possono verificare quando si assume un ruolo, consulta la pagina [Non è possibile assumere un ruolo](troubleshoot_roles.md#troubleshoot_roles_cant-assume-role).

**Considerazioni**
+ Se crei il ruolo in maniera programmatica, puoi crearlo con un percorso e un nome. In tal caso, è necessario fornire il percorso completo e il nome del ruolo agli utenti in modo che possano specificare queste informazioni sulla pagina **Cambia ruolo** della Console di gestione AWS. Ad esempio: `division_abc/subdivision_efg/role_XYZ`.
+ Se crei il ruolo in maniera programmatica, potrai aggiungere un `Path` con un massimo di 512 caratteri e un `RoleName`. Il nome del ruolo può contenere un massimo di 64 caratteri. Tuttavia, per utilizzare un ruolo con la funzione **Switch Role** in Console di gestione AWS, la combinazione `Path` e `RoleName` non può superare i 64 caratteri.
+ Per motivi di sicurezza, puoi [esaminare AWS CloudTrail i log](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds) per scoprire chi ha eseguito un'azione in AWS. È possibile utilizzare la chiave di condizione `sts:SourceIdentity` nella policy di attendibilità del ruolo per richiedere agli utenti di specificare un'identità quando assumono un ruolo. Ad esempio, è possibile richiedere che gli utenti IAM specifichino il proprio nome utente come identità di origine. In questo modo è possibile determinare quale utente ha eseguito un'operazione specifica in AWS. Per ulteriori informazioni, consulta [`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity). Puoi utilizzare [`sts:RoleSessionName`](reference_policies_iam-condition-keys.md#ck_rolesessionname) anche per richiedere agli utenti di specificare un nome di sessione quando assumono un ruolo. Ciò consente di distinguere tra le sessioni di ruolo quando un ruolo viene utilizzato da principali diversi.

# Concedere a un utente le autorizzazioni per passare un ruolo a un servizio AWS
<a name="id_roles_use_passrole"></a>

Per configurare molti AWS servizi, è necessario *passare* un ruolo IAM al servizio. Ciò consente al servizio di assumere successivamente il ruolo ed eseguire operazioni per tuo conto. Per la maggior parte dei servizi, è sufficiente passare il ruolo al servizio una sola volta durante la configurazione e non ogni volta che il servizio assume il ruolo. Ad esempio, si supponga di disporre di un'applicazione in esecuzione in un'istanza Amazon EC2. Tale applicazione richiede credenziali temporanee per l'autenticazione e autorizzazioni per autorizzare l'applicazione a eseguire operazioni in AWS. Quando configuri l'applicazione, devi passare un ruolo ad Amazon EC2 per l'utilizzo con l'istanza che fornisce tali credenziali. È possibile definire le autorizzazioni per le applicazioni in esecuzione nell'istanza collegando una policy IAM al ruolo. L'applicazione assume il ruolo ogni volta che è necessario per eseguire le operazioni consentite dal ruolo.

Per passare un ruolo (e le relative autorizzazioni) a un AWS servizio, un utente deve disporre delle autorizzazioni per *passare il ruolo* al servizio. Ciò consente agli amministratori di garantire che solo gli utenti autorizzati possano configurare un servizio con un ruolo che concede le autorizzazioni. Per consentire a un utente di passare un ruolo a un AWS servizio, devi concedere l'`PassRole`autorizzazione all'utente, al ruolo o al gruppo IAM dell'utente.

**avvertimento**  
Puoi utilizzare l'`PassRole`autorizzazione solo per passare un ruolo IAM a un servizio che condivide lo stesso AWS account. Per passare un ruolo nell'Account A a un servizio nell'Account B, devi prima creare un ruolo IAM nell'Account B che possa assumere il ruolo dall'Account A, quindi il ruolo nell'Account B può essere passato al servizio. Per informazioni dettagliate, vedi [Accesso alle risorse multi-account in IAM](access_policies-cross-account-resource-access.md).
Non cercare di controllare chi può passare un ruolo assegnando tag al ruolo e utilizzando la chiave di condizione `ResourceTag` in una policy con l'operazione `iam:PassRole`. Questo approccio non produce risultati affidabili.

Quando imposti l'autorizzazione `PassRole`, devi assicurarti che un utente non invii un ruolo dove il ruolo dispone di più autorizzazioni di quelle che desideri che l'utente abbia. Ad esempio, Alice potrebbe non essere autorizzata a eseguire alcune operazioni su Amazon S3. Se Alice potesse trasferire un ruolo a un servizio che consente le azioni di Amazon S3, il servizio potrebbe eseguire azioni Amazon S3 per conto di Alice durante l'esecuzione del processo.

Quando si specifica un ruolo collegato ai servizi, è necessario disporre anche delle autorizzazioni per inoltrare tale ruolo al servizio. Alcuni servizi creano automaticamente un ruolo collegato ai servizi nell'account quando si esegue un'azione in quel servizio. Ad esempio, Amazon EC2 Auto Scaling crea il ruolo collegato ai servizi `AWSServiceRoleForAutoScaling` la prima volta che crei un gruppo Auto Scaling. Se provi a specificare il ruolo collegato ai servizi quando crei un gruppo con scalabilità automatica senza l'autorizzazione `iam:PassRole`, viene visualizzato un messaggio di errore. Se non specifichi esplicitamente il ruolo, l'autorizzazione `iam:PassRole` non è richiesta e l'impostazione predefinita prevede l'utilizzo del ruolo `AWSServiceRoleForAutoScaling` per tutte le operazioni eseguite su quel gruppo. Per scoprire i servizi che supportano i ruoli collegati ai servizi, consulta [AWS servizi che funzionano con IAM](reference_aws-services-that-work-with-iam.md). Per scoprire quali servizi creano automaticamente un ruolo collegato ai servizi quando si esegue un'operazione in quel servizio, selezionare il collegamento **Yes (Sì)** e visualizzare il ruolo collegato ai servizi per il servizio.

Un utente può passare un ruolo ARN come parametro in qualsiasi operazione API che utilizza il ruolo per assegnare le autorizzazioni al servizio. Il servizio quindi verifica se l'utente dispone dell'autorizzazione `iam:PassRole`. Per limitare l'utente a passare solo i ruoli approvati, puoi filtrare l'autorizzazione `iam:PassRole` con l'elemento `Resources` dell'istruzione della policy IAM. 

Puoi utilizzare l'`Condition`elemento in una policy JSON per testare il valore delle chiavi incluse nel contesto di richiesta di tutte le AWS richieste. Per ulteriori informazioni sull'utilizzo delle chiavi di condizione in una policy, consulta [Elementi delle policy JSON IAM: Condition](reference_policies_elements_condition.md). La chiave di condizione `iam:PassedToService` può essere utilizzata per specificare il principale del servizio del servizio a cui è possibile passare un ruolo. Per ulteriori informazioni sull'utilizzo della chiave `iam:PassedToService` condition in una politica, consulta [iam: PassedToService](reference_policies_iam-condition-keys.md#ck_PassedToService).

**Esempio 1**  
Si immagini di voler concedere a un utente la possibilità di trasferire uno qualsiasi dei set di ruoli approvati al servizio Amazon EC2 all'avvio di un'istanza. È necessario disporre di tre elementi:
+ Una *policy di autorizzazioni* IAM collegata al ruolo che determina quali operazioni può compiere il ruolo. Definire l'ambito delle autorizzazioni in modo da includere solo le operazioni che il ruolo deve effettuare e sole le risorse necessarie per tali operazioni. Puoi utilizzare una politica di autorizzazioni IAM AWS gestita o creata dal cliente.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": {
          "Effect": "Allow",
          "Action": [ "A list of the permissions the role is allowed to use" ],
          "Resource": [ "A list of the resources the role is allowed to access" ]
      }
  }
  ```

------
+ Una* policy di attendibilità* per il ruolo che consente al servizio di assumere tale ruolo. Ad esempio, è possibile collegare la seguente policy di affidabilità al ruolo con l'operazione `UpdateAssumeRolePolicy`. Questa policy di attendibilità consente ad Amazon EC2 di utilizzare il ruolo e le autorizzazioni associate al ruolo.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": {
          "Sid": "TrustPolicyStatementThatAllowsEC2ServiceToAssumeTheAttachedRole",
          "Effect": "Allow",
          "Principal": { "Service": "ec2.amazonaws.com" },
         "Action": "sts:AssumeRole"
      }
  }
  ```

------
+ Una *policy di autorizzazioni* IAM collegata all'utente IAM che consente all'utente di trasferire solo i ruoli approvati. In genere si aggiunge `iam:GetRole` a `iam:PassRole` in modo che l'utente possa ottenere i dettagli del ruolo da passare. In questo esempio, l'utente può passare solo i ruoli esistenti nell'account specificato con nomi che iniziano con `EC2-roles-for-XYZ-`:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iam:GetRole",
                  "iam:PassRole"
              ],
              "Resource": "arn:aws:iam::111122223333:role/EC2-roles-for-XYZ-*"
          }
      ]
  }
  ```

------

Ora l'utente può avviare un'istanza Amazon EC2 con un ruolo assegnato. Le applicazioni in esecuzione nell'istanza possono accedere alle credenziali temporanee per il ruolo tramite i metadati del profilo dell'istanza. Le policy delle autorizzazioni collegate al ruolo determinano cosa può fare l'istanza. 

**Esempio 2**  
Amazon Relational Database Service (Amazon RDS) supporta una funzione chiamata **Monitoraggio avanzato**. Questa funzione consente ad Amazon RDS di monitorare un'istanza di database tramite un agente. Consente inoltre ad Amazon RDS di registrare i parametri su Amazon CloudWatch Logs. Per abilitare questa funzione, è necessario creare un ruolo di servizio per fornire le autorizzazioni Amazon RDS per monitorare e scrivere i parametri per i log. 

**Come creare un ruolo IAM per il monitoraggio avanzato di Amazon RDS**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

1. Selezionare **Roles (Ruoli)**, quindi selezionare **Create role (Crea ruolo)**.

1. Scegli il tipo di ruolo di **AWS servizio**, quindi, per **Casi d'uso per altri Servizi AWS**, scegli il servizio **RDS**. Scegli **RDS - Enhanced Monitoring** (RDS - Monitoraggio avanzato), quindi seleziona **Next** (Successivo).

1. Scegli la politica di RDSEnhanced MonitoringRole autorizzazione di **Amazon**.

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

1. In **Role name** (Nome ruolo), inserisci un nome del ruolo che consenta di identificarne lo scopo. I nomi dei ruoli devono essere univoci all'interno del tuo Account AWS. Quando il nome di un ruolo viene utilizzato in una policy o come parte di un ARN, il nome del ruolo fa distinzione tra maiuscole e minuscole. Quando un nome di ruolo viene visualizzato ai clienti nella console, ad esempio durante la procedura di accesso, il nome del ruolo non fa distinzione tra maiuscole e minuscole. Poiché varie entità possono fare riferimento al ruolo, non puoi modificare il nome del ruolo dopo averlo creato.

1. (Facoltativo) In **Description** (Descrizione), inserisci una descrizione per il nuovo ruolo.

1. (Facoltativo) Aggiungi metadati all'utente collegando i tag come coppie chiave-valore. Per ulteriori informazioni sull'utilizzo dei tag in IAM, consultare [Tag per AWS Identity and Access Management le risorse](id_tags.md).

1. Rivedere il ruolo e scegliere **Crea ruolo**.

Il ruolo ottiene automaticamente una policy di affidabilità che concede le autorizzazioni del servizio `monitoring.rds.amazonaws.com` per assumere il ruolo. Dopo l'avvio, Amazon RDS potrà eseguire tutte le operazioni consentite dalla policy `AmazonRDSEnhancedMonitoringRole`.

L'utente che desideri possa accedere al monitoraggio avanzato necessita di una policy che includa un'istruzione che consenta all'utente di elencare i ruoli RDS e l'istruzione che consente di passare il ruolo, come nell'esempio seguente. Utilizza il tuo numero di account e sostituisci il nome del ruolo con il nome fornito nel passaggio 6.

```
    {
      "Sid": "PolicyStatementToAllowUserToListRoles",
      "Effect": "Allow",
      "Action": ["iam:ListRoles"],
      "Resource": "*"
    },
    {
        "Sid": "PolicyStatementToAllowUserToPassOneSpecificRole",
        "Effect": "Allow",
        "Action": [ "iam:PassRole" ],
        "Resource": "arn:aws:iam::account-id:role/RDS-Monitoring-Role"
    }
```

È possibile combinare questa istruzione con dichiarazioni in un'altra policy o collocarla nella policy personalizzata. Invece, per specificare che l'utente può passare qualsiasi ruolo che inizia con `RDS-`, puoi sostituire il nome del ruolo nella risorsa ARN con un carattere jolly, come nell'esempio seguente.

```
        "Resource": "arn:aws:iam::account-id:role/RDS-*"
```

## `iam:PassRole`azioni nei AWS CloudTrail log
<a name="id_roles_use_passrole_logs"></a>

 `PassRole`non è una chiamata API. `PassRole`è un'autorizzazione, il che significa che non vengono generati CloudTrail log per IAM`PassRole`. Per verificare quali ruoli vengono passati a quali Servizi AWS in CloudTrail, è necessario esaminare il CloudTrail registro che ha creato o modificato la AWS risorsa che riceve il ruolo. Ad esempio, un ruolo viene passato a una AWS Lambda funzione al momento della creazione. Il log per l'operazione `CreateFunction` mostra un record del ruolo passato alla funzione. 

# Revocare le credenziali di sicurezza temporanee per i ruoli IAM
<a name="id_roles_use_revoke-sessions"></a>

**avvertimento**  
Se segui i passaggi in questa pagina, a tutti gli utenti con sessioni correnti create assumendo il ruolo viene negato l'accesso a tutte le AWS azioni e le risorse. Questo può causare la perdita di dati non salvati da parte degli utenti.

Quando consenti agli utenti di accedere a sessioni Console di gestione AWS con una durata di sessione lunga (ad esempio 12 ore), le loro credenziali temporanee non scadono così rapidamente. Se gli utenti espongono inavvertitamente le proprie credenziali a una terza parte non autorizzata, tale parte ha accesso per la durata della sessione. Tuttavia, è possibile revocare immediatamente tutte le autorizzazioni per le credenziali del ruolo rilasciate prima di un certo periodo di tempo, se necessario. Tutte le credenziali temporanee per quel ruolo emesse prima del momento specificata diventano non valide. Questo costringe tutti gli utenti a ripetere l'autenticazione e a richiedere nuove credenziali.

 

**Nota**  
Non è possibile revocare la sessione per un *[ruolo collegato ai servizi](id_roles.md#iam-term-service-linked-role)*.

Quando si revocano le autorizzazioni per un ruolo utilizzando la procedura AWS riportata in questo argomento, al ruolo viene associata una nuova politica in linea che nega tutte le autorizzazioni a tutte le azioni. Include una condizione che applica le restrizioni solo se l'utente ha assunto il ruolo *prima* del momento in cui sono state revocate le autorizzazioni. Se l'utente assume il ruolo *dopo* la revoca delle autorizzazioni, la policy di rifiuto non si applica a quell'utente.

Per ulteriori informazioni sulla negazione dell'accesso, consulta [Disabilitazione delle autorizzazioni per le credenziali di sicurezza temporanee](id_credentials_temp_control-access_disable-perms.md).

**Importante**  
La policy di rifiuto si applica a tutti gli utenti con il ruolo specificato, non solo a quelli con sessioni della console di durata più lunga.

## Autorizzazioni minime per revocare le autorizzazioni di sessione da un ruolo
<a name="revoke-session-permissions"></a>

Per revocare le autorizzazioni di sessione da un ruolo, è necessario disporre dell'autorizzazione `PutRolePolicy` per il ruolo. In questo modo è possibile collegare la policy inline `AWSRevokeOlderSessions` al ruolo.

## Revoca delle autorizzazioni di sessione
<a name="revoke-session"></a>

Puoi revocare le autorizzazioni della sessione da un ruolo per negare tutte le autorizzazioni a tutti gli utenti che hanno assunto il ruolo.

**Nota**  
Non è possibile modificare i ruoli in IAM creati dai set di autorizzazioni del Centro identità IAM. È necessario revocare la sessione attiva del set di autorizzazioni per un utente nel Centro identità IAM. Per ulteriori informazioni, consulta [Revocare le sessioni attive di un ruolo IAM create dai set di autorizzazioni](https://docs.aws.amazon.com/singlesignon/latest/userguide/useraccess.html#revoke-user-permissions) nella *Guida per l'utente del Centro identità IAM*.

**Per rifiutare immediatamente tutte le autorizzazioni a qualsiasi utente corrente con credenziali del ruolo**

1. Accedi e apri la console IAM all'indirizzo. Console di gestione AWS [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

1. Nel pannello di navigazione scegli **Ruoli**, quindi seleziona il nome (non la casella di controllo) del ruolo per cui desideri revocare le autorizzazioni.

1. Nella pagina **Summary (Riepilogo)** per il ruolo selezionato, selezionare la scheda **Revoke sessions (Revoca sessioni)**.

1. Nelle scheda **Revoke sessions (Revoca sessioni)** selezionare **Revoke active sessions (Revoca sessioni attive)**.

1. AWS ti chiede di confermare l'azione. Seleziona la casella di controllo **Riconosco che sto revocando tutte le sessioni attive per questo ruolo.** e scegli **Revoca le sessioni attive** nella finestra di dialogo.

   IAM quindi collega al ruolo una policy denominata `AWSRevokeOlderSessions`. Dopo aver scelto **Revoca sessioni attive**, la policy rifiuta l'accesso a tutti gli utenti che hanno assunto il ruolo in passato e per circa 30 secondi nel futuro. Questa scelta temporale futura tiene conto del ritardo di propagazione della policy per gestire una nuova sessione acquisita o rinnovata prima che la policy aggiornata entrasse in vigore in una determinata regione. Gli utenti che assumono il ruolo più di 30 secondi dopo aver selezionato Revoca sessioni attive non saranno interessati. Per scoprire perché le modifiche non sono sempre immediatamente visibili, consulta [Le modifiche che apporto non sono sempre immediatamente visibili](troubleshoot.md#troubleshoot_general_eventual-consistency). 

**Nota**  
Se scegli nuovamente **Revoca sessioni** in un secondo momento, l'indicatore di data e timestamp della policy viene aggiornato e nega nuovamente tutte le autorizzazioni a qualsiasi utente che ha assunto il ruolo prima della nuova ora specificata.

Gli utenti validi le cui sessioni sono revocate in questo modo devono acquisire credenziali provvisorie per una nuova sessione per continuare a lavorare. Le credenziali vengono memorizzate nella AWS CLI cache fino alla loro scadenza. Per forzare la CLI a eliminare e aggiornare le credenziali memorizzate nella cache che non sono più valide, eseguire uno dei seguenti comandi:

**Linux, macOS o Unix**

```
$ rm -r ~/.aws/cli/cache
```

**Windows**

```
C:\> del /s /q %UserProfile%\.aws\cli\cache
```

## Revoca delle autorizzazioni di sessione prima di un orario specificato
<a name="revoke-session-policy"></a>

 Puoi anche revocare le autorizzazioni di sessione in qualsiasi momento a tua scelta utilizzando AWS CLI o l'SDK per specificare un valore per la `aws:TokenIssueTime` chiave nell'elemento Condition di una politica. 

Questa policy nega tutte le autorizzazioni, quando il valore di `aws:TokenIssueTime` è precedente alla data e ora specificate. Il valore di `aws:TokenIssueTime` corrisponde al momento in cui sono state create le credenziali di sicurezza provvisorie. Il `aws:TokenIssueTime` valore è presente solo nel contesto delle AWS richieste firmate con credenziali di sicurezza temporanee, pertanto l'istruzione Deny nella policy non influisce sulle richieste firmate con le credenziali a lungo termine dell'utente IAM.

Questa policy può essere collegata a un ruolo. In questo caso, la policy influisce solo sulle credenziali di sicurezza provvisorie create da tale ruolo prima della data e ora specificate.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Deny",
    "Action": "*",
    "Resource": "*",
    "Condition": {
      "DateLessThan": {"aws:TokenIssueTime": "2014-05-07T23:47:00Z"}
    }
  }
}
```

------

Gli utenti validi le cui sessioni sono revocate in questo modo devono acquisire credenziali provvisorie per una nuova sessione per continuare a lavorare. Le credenziali vengono memorizzate AWS CLI nella cache fino alla loro scadenza. Per forzare la CLI a eliminare e aggiornare le credenziali memorizzate nella cache che non sono più valide, eseguire uno dei seguenti comandi:

**Linux, macOS o Unix**

```
$ rm -r ~/.aws/cli/cache
```

**Windows**

```
C:\> del /s /q %UserProfile%\.aws\cli\cache
```

# Aggiornamento di un ruolo collegato ai servizi
<a name="id_roles_update-service-linked-role"></a>

Il metodo utilizzato per modificare un ruolo collegato ai servizi dipende dal servizio. Alcuni servizi consentono di modificare le autorizzazioni per un ruolo collegato ai servizi dalla console di servizio, dalle API o dalla CLI. Tuttavia, dopo aver creato un ruolo collegato ai servizi, non è possibile modificare il nome del ruolo poiché varie entità possono farvi riferimento. Puoi modificare la descrizione di qualsiasi ruolo dalla console IAM, dall'API o dalla CLI.

Per informazioni su quali servizi supportano i ruoli collegati ai servizi, consulta la pagina [AWS servizi che funzionano con IAM](reference_aws-services-that-work-with-iam.md) e cerca i servizi per cui è indicato **Sì **nella colonna **Ruolo collegato ai servizi**. Per scoprire se il servizio supporta la modifica del ruolo collegato ai servizi, selezionare il link **Sì** per visualizzare il ruolo collegato ai servizi per quel servizio.

## Modifica della descrizione di un ruolo collegato ai servizi (console)
<a name="edit-service-linked-role-iam-console"></a>

Puoi utilizzare la console IAM per modificare la descrizione di un ruolo collegato ai servizi.

**Per modificare la descrizione di un ruolo collegato ai servizi (console)**

1. Nel pannello di navigazione della console IAM seleziona **Roles (Ruoli)**.

1. Scegliere il nome del ruolo da modificare.

1. Nella parte destra di **Role description** (Descrizione ruolo), scegliere **Edit** (Modifica). 

1. Digita una nuova descrizione nella casella e scegli **Save (Salva)**.

## Modifica della descrizione di un ruolo collegato ai servizi (AWS CLI)
<a name="edit-service-linked-role-iam-cli"></a>

Puoi utilizzare i comandi IAM di AWS CLI per modificare la descrizione di un ruolo collegato al servizio.

**Per modificare la descrizione di un ruolo collegato ai servizi (AWS CLI)**

1. (Facoltativo) Per visualizzare la descrizione attuale di un ruolo, utilizza i seguenti comandi:

   ```
   aws iam [get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html) --role-name ROLE-NAME
   ```

   Per fare riferimento ai ruoli con i comandi della CLI utilizza il nome del ruolo, non l'ARN. Ad esempio, per fare riferimento a un ruolo il cui ARN è `arn:aws:iam::123456789012:role/myrole`, puoi usare **myrole**.

1. Per aggiornare la descrizione di un ruolo collegato ai servizi, utilizza il seguente comando:

   ```
   aws iam [update-role](https://docs.aws.amazon.com/cli/latest/reference/iam/update-role.html) --role-name ROLE-NAME --description OPTIONAL-DESCRIPTION
   ```

## Modifica di una descrizione di ruolo (API) collegata al servizio AWS
<a name="edit-service-linked-role-iam-api"></a>

È possibile utilizzare l' AWS API per modificare la descrizione di un ruolo collegato al servizio.

**Per modificare la descrizione di un ruolo collegato al servizio (API)AWS**

1. (Facoltativo) Per visualizzare l'attuale descrizione per un ruolo, effettua una chiamata all'operazione seguente e specifica il nome del ruolo:

   AWS API: [GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html) 

1. Per aggiornare la descrizione di un ruolo, effettua una chiamata all'operazione seguente e specifica il nome (e facoltativamente la descrizione) del ruolo: 

   AWS API: [UpdateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRole.html) 

# Aggiornamento di una policy di attendibilità del ruolo
<a name="id_roles_update-role-trust-policy"></a>

Per cambiare l'utente che può assumere un ruolo, modifica la policy di affidabilità del ruolo. Non puoi modificare la policy di attendibilità per un *[ruolo collegato al servizio](id_roles.md#iam-term-service-linked-role)*.

**Note**  
Se un utente viene elencato come principale in una policy di attendibilità del ruolo ma non può assumere il ruolo, controlla il [limite delle autorizzazioni](access_policies_boundaries.md) dell'utente. Se è impostato un limite delle autorizzazioni per l'utente, questo deve consentire l'operazione `sts:AssumeRole`.
Per consentire agli utenti di assumere nuovamente il ruolo corrente all'interno di una sessione di ruolo, specificare il ruolo ARN o Account AWS ARN come principale nella politica di attendibilità dei ruoli. Servizi AWS che forniscono risorse di elaborazione come Amazon EC2, Amazon ECS, Amazon EKS e Lambda forniscono credenziali temporanee e aggiornano automaticamente tali credenziali. Ciò garantisce di disporre sempre di un set di credenziali valido. Per questi servizi, non è necessario riassumere il ruolo attuale per ottenere credenziali temporanee. Tuttavia, se intendi passare [tag di sessione](id_session-tags.md) o una [Policy di sessione](access_policies.md#policies_session), devi riassumere il ruolo attuale.


## Aggiornamento di una policy di attendibilità del ruolo (console)
<a name="id_roles_update-trust-policy-console"></a>

**Per modificare una politica di fiducia nei ruoli in Console di gestione AWS**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione della console IAM seleziona **Ruoli**.

1. Nell'elenco di ruoli dell'account selezionare il nome del ruolo da modificare.

1. Scegli la scheda **Relazioni di attendibilità** e quindi **Modifica policy di attendibilità**.

1. Modificare la policy di affidabilità in base alle esigenze. Per aggiungere ulteriori entità principali che possono assumere il ruolo, specificarle nell'elemento `Principal`. Ad esempio, il seguente frammento di policy mostra come fare riferimento a due Account AWS nell'`Principal`elemento:

   ```
   "Principal": {
     "AWS": [
       "arn:aws:iam::111122223333:root",
       "arn:aws:iam::444455556666:root"
     ]
   },
   ```

   Se specifichi un'entità principale in un altro account, l'aggiunta di un account alla policy di attendibilità di un ruolo è solo una parte della creazione della relazione di trust tra più account. Per impostazione predefinita, gli utenti negli account attendibili non possono assumere il ruolo. L'amministratore del nuovo account attendibile deve concedere agli utenti l'autorizzazione ad assumere il ruolo. A tale scopo, l'amministratore deve creare o modificare una policy collegata all'utente per consentire all'utente di accedere all'operazione `sts:AssumeRole`. Per ulteriori informazioni, consultare la procedura seguente o [Concedere le autorizzazioni agli utenti per cambiare ruoli](id_roles_use_permissions-to-switch.md).

   Il seguente frammento di policy mostra come fare riferimento a due AWS servizi nell'elemento: `Principal`

   ```
   "Principal": {
     "Service": [
       "opsworks.amazonaws.com",
       "ec2.amazonaws.com"
     ]
   },
   ```

1. Una volta completata la modifica della policy di attendibilità, scegli **Update policy** (Aggiorna policy) per salvare le modifiche.

   Per ulteriori informazioni sulla sintassi e sulla struttura della policy, consultare [Politiche e autorizzazioni in AWS Identity and Access Management](access_policies.md) e [Documentazione di riferimento degli elementi delle policy JSON IAM](reference_policies_elements.md).

**Per permettere agli utenti in un account esterno attendibile di usare il ruolo (console)**

Per ulteriori informazioni e dettagli su questa procedura, consultare [Concedere le autorizzazioni agli utenti per cambiare ruoli](id_roles_use_permissions-to-switch.md).

1. Accedi a un sito esterno affidabile. Account AWS

1. Stabilire se collegare le autorizzazioni a un utente o a un gruppo. Nel riquadro di navigazione della console IAM, scegli **Users** (Utenti) o **User groups** (Gruppi di utenti) in base alle esigenze.

1. Scegliere il nome dell'utente o del gruppo a cui si desidera concedere l'accesso e selezionare la scheda **Permissions (Autorizzazioni)**.

1. Esegui una delle seguenti operazioni:
   + Per modificare una policy gestita dal cliente, selezionare il nome della policy, **Edit policy (Modifica policy)** e la scheda **JSON**. Non è possibile modificare una politica AWS gestita. AWS le politiche gestite vengono visualizzate con l' AWS icona (![\[Orange cube icon indicating a policy is managed by AWS.\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/policy_icon.png)). Per ulteriori informazioni sulle differenze tra le policy gestite da AWS e quelle gestite dal cliente, consultare [Policy gestite e policy inline](access_policies_managed-vs-inline.md).
   + Per modificare una policy inline, selezionare la freccia accanto al nome della policy e scegliere **Edit policy (Modifica policy)**.

1. Nell'editor di policy aggiungere un nuovo elemento `Statement` che specifica quanto segue:

   ```
   {
     "Effect": "Allow",
     "Action": "sts:AssumeRole",
     "Resource": "arn:aws:iam::ACCOUNT-ID:role/ROLE-NAME"
   }
   ```

   Sostituire l'ARN nell'istruzione con l'ARN del ruolo che l'utente può assumere.

1. Seguire le indicazioni sullo schermo per completare la modifica della policy. 

## Aggiornamento di una policy di attendibilità del ruolo (AWS CLI)
<a name="id_roles-update-trust-policy-cli"></a>

È possibile utilizzare il AWS CLI per modificare chi può assumere un ruolo.

**Per modificare una policy di attendibilità del ruolo (AWS CLI)**

1. (Facoltativo) Se non si conosce il nome del ruolo da modificare, eseguire il comando seguente per elencare i ruoli nell'account:
   + [aws iam list-roles](https://docs.aws.amazon.com/cli/latest/reference/iam/list-roles.html)

1. (Facoltativo) Per visualizzare la policy di affidabilità corrente per un ruolo, eseguire il comando seguente:
   + [aws iam get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html)

1. Per modificare le entità principali attendibili che possono accedere al ruolo, creare un file di testo con la policy di affidabilità aggiornata. È possibile usare qualsiasi editor di testo per creare la policy.

   Ad esempio, la policy di attendibilità seguente illustra come fare riferimento a due Account AWS nell'elemento `Principal`. Ciò consente agli utenti di due persone separate Account AWS di assumere questo ruolo.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Principal": {"AWS": [
               "arn:aws:iam::111122223333:root",
               "arn:aws:iam::444455556666:root"
           ]},
           "Action": "sts:AssumeRole"
       }
   }
   ```

------

   Se specifichi un'entità principale in un altro account, l'aggiunta di un account alla policy di attendibilità di un ruolo è solo una parte della creazione della relazione di trust tra più account. Per impostazione predefinita, gli utenti negli account attendibili non possono assumere il ruolo. L'amministratore del nuovo account attendibile deve concedere agli utenti l'autorizzazione ad assumere il ruolo. A tale scopo, l'amministratore deve creare o modificare una policy collegata all'utente per consentire all'utente di accedere all'operazione `sts:AssumeRole`. Per ulteriori informazioni, consultare la procedura seguente o [Concedere le autorizzazioni agli utenti per cambiare ruoli](id_roles_use_permissions-to-switch.md).

1. Per utilizzare il file creato per aggiornare la policy di attendibilità, eseguire il comando seguente:
   + [era io update-assume-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/update-assume-role-policy.html)

**Per permettere agli utenti in un account esterno attendibile di usare il ruolo (AWS CLI)**

Per ulteriori informazioni e dettagli su questa procedura, consultare [Concedere le autorizzazioni agli utenti per cambiare ruoli](id_roles_use_permissions-to-switch.md).

1. Creare un file JSON contenente una policy di autorizzazione che concede le autorizzazioni ad assumere il ruolo. La policy seguente contiene ad esempio le autorizzazioni minime necessarie:

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": "sts:AssumeRole",
           "Resource": "arn:aws:iam::111122223333:role/ROLE-NAME"
       }
   }
   ```

------

   Sostituire l'ARN nell'istruzione con l'ARN del ruolo che l'utente può assumere.

1. Esegui il comando seguente per caricare il file JSON contenente la policy di attendibilità in IAM:
   + [aws iam create-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html)

   L'output di questo comando include l'ARN della policy. Prendere nota di questo ARN, perché sarà necessario in una fase successiva. 

1. Stabilire a quale utente o gruppo collegare la policy. Se non si conosce il nome dell'utente o del gruppo desiderato, usare uno dei comandi seguenti per elencare gli utenti o i gruppi nell'account:
   + [aws iam list-users](https://docs.aws.amazon.com/cli/latest/reference/iam/list-users.html)
   + [aws iam list-groups](https://docs.aws.amazon.com/cli/latest/reference/iam/list-groups.html)

1. Usare uno dei comandi seguenti per collegare la policy creata nel passaggio precedente all'utente o al gruppo:
   + [era io attach-user-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-user-policy.html)
   + [era io attach-group-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-group-policy.html)

## Aggiornamento di una policy di fiducia dei ruoli (AWS API)
<a name="id_roles-update-trust-policy-api"></a>

Puoi utilizzare l' AWS API per modificare chi può assumere un ruolo.

**Per modificare una politica di fiducia (AWS API) del ruolo**

1. (Facoltativo) Se non si conosce il nome del ruolo che si desidera modificare, chiamare l'operazione seguente per elencare i ruoli nell'account:
   + [ListRoles](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoles.html)

1. (Facoltativo) Per visualizzare la policy di affidabilità corrente per un ruolo, chiamare l'operazione seguente:
   + [GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html)

1. Per modificare le entità principali attendibili che possono accedere al ruolo, creare un file di testo con la policy di affidabilità aggiornata. È possibile usare qualsiasi editor di testo per creare la policy.

   Ad esempio, la policy di attendibilità seguente illustra come fare riferimento a due Account AWS nell'elemento `Principal`. Ciò consente agli utenti di due persone separate Account AWS di assumere questo ruolo.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Principal": {"AWS": [
               "arn:aws:iam::111122223333:root",
               "arn:aws:iam::444455556666:root"
           ]},
           "Action": "sts:AssumeRole"
       }
   }
   ```

------

   Se specifichi un'entità principale in un altro account, l'aggiunta di un account alla policy di attendibilità di un ruolo è solo una parte della creazione della relazione di trust tra più account. Per impostazione predefinita, gli utenti negli account attendibili non possono assumere il ruolo. L'amministratore del nuovo account attendibile deve concedere agli utenti l'autorizzazione ad assumere il ruolo. A tale scopo, l'amministratore deve creare o modificare una policy collegata all'utente per consentire all'utente di accedere all'operazione `sts:AssumeRole`. Per ulteriori informazioni, consultare la procedura seguente o [Concedere le autorizzazioni agli utenti per cambiare ruoli](id_roles_use_permissions-to-switch.md).

1. Per utilizzare il file creato per aggiornare la policy di attendibilità, chiamare l'operazione seguente:
   + [UpdateAssumeRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAssumeRolePolicy.html)

**Per consentire agli utenti di un account esterno affidabile di utilizzare il ruolo (AWS API)**

Per ulteriori informazioni e dettagli su questa procedura, consultare [Concedere le autorizzazioni agli utenti per cambiare ruoli](id_roles_use_permissions-to-switch.md).

1. Creare un file JSON contenente una policy di autorizzazione che concede le autorizzazioni ad assumere il ruolo. La policy seguente contiene ad esempio le autorizzazioni minime necessarie:

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": "sts:AssumeRole",
           "Resource": "arn:aws:iam::111122223333:role/ROLE-NAME"
       }
   }
   ```

------

   Sostituire l'ARN nell'istruzione con l'ARN del ruolo che l'utente può assumere.

1. Chiama l'operazione seguente per caricare il file JSON contenente la policy di attendibilità in IAM:
   + [CreatePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreatePolicy.html)

   L'output di questa operazione include l'ARN della policy. Prendere nota di questo ARN, perché sarà necessario in una fase successiva. 

1. Stabilire a quale utente o gruppo collegare la policy. Se non si conosce il nome dell'utente o del gruppo desiderato, chiamare una delle operazioni seguenti per elencare gli utenti o i gruppi nell'account:
   + [ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html)
   + [ListGroups](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroups.html)

1. Chiamare una delle operazioni seguenti per collegare la policy creata nel passaggio precedente all'utente o al gruppo:
   +  API: [AttachUserPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachUserPolicy.html)
   + [AttachGroupPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachGroupPolicy.html)

# Aggiornamento delle autorizzazioni per un ruolo
<a name="id_roles_update-role-permissions"></a>

Utilizza le seguenti procedure per aggiornare le policy e i limiti delle autorizzazioni di un ruolo.

## Prerequisito: Visualizzazione dell'accesso per il ruolo
<a name="roles-modify_prerequisites"></a>

Prima di modificare le autorizzazioni per un ruolo, è opportuno esaminare la sua attività recente a livello di servizio. È un'opzione importante per non rimuovere l'accesso da parte di un principale (persona o applicazione) che la sta utilizzando. Per ulteriori informazioni sulla visualizzazione delle ultime informazioni di accesso, vedere [Perfeziona le autorizzazioni AWS utilizzando le informazioni dell'ultimo accesso](access_policies_last-accessed.md).

## Aggiornamento di una policy delle autorizzazioni per un ruolo
<a name="id_roles_update-role-permissions-policy"></a>

Per modificare le autorizzazioni permesse dal ruolo, modifica la policy (o le policy) di autorizzazioni del ruolo. Non è possibile modificare la policy di autorizzazione per un *[ruolo collegato ai servizi](id_roles.md#iam-term-service-linked-role)* in IAM. Potresti essere in grado di modificare la policy di autorizzazione all'interno del servizio che dipende dal ruolo. Per controllare se un servizio supporta questa funzionalità, consulta [AWS servizi che funzionano con IAM](reference_aws-services-that-work-with-iam.md) e individua i servizi che hanno **Sì **nella colonna **Ruoli collegati ai servizi**. Scegliere **Sì** in corrispondenza di un link per visualizzare la documentazione relativa al ruolo collegato al servizio per tale servizio.

### Aggiornamento di una policy delle autorizzazioni del ruolo (console)
<a name="id_roles_update-role-permissions-policy-console"></a>

**Per modificare le autorizzazioni permesse da un ruolo (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 della console IAM seleziona **Ruoli**.

1. Selezionare il nome del ruolo da modificare e la scheda **Permissions (Autorizzazioni)**.

1. Esegui una delle seguenti operazioni:
   + Per modificare una policy gestita dal cliente esistente, selezionare il nome della policy e scegliere **Edit policy (Modifica policy)**.
**Nota**  
Non è possibile modificare una politica AWS gestita. AWS le politiche gestite vengono visualizzate con l' AWS icona (![\[Orange cube icon indicating a policy is managed by AWS.\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/policy_icon.png)). Per ulteriori informazioni sulla differenza tra politiche AWS gestite e politiche gestite dal cliente, vedere[Policy gestite e policy inline](access_policies_managed-vs-inline.md). 
   + Per collegare una policy gestita esistente al ruolo, scegli **Add permissions** (Aggiungi autorizzazioni) e quindi **Attach policies** (Collega policy).
   + Per modificare una policy inline esistente, espandi la policy e scegli **Edit** (Modifica).
   + Per integrare una nuova policy inline, scegli **Add permissions** (Aggiungi autorizzazioni), quindi **Create inline policy** (Crea policy inline). 
   + Per rimuovere una policy esistente dal ruolo, seleziona la casella di controllo accanto al nome della policy, quindi scegli **Rimuovi**.

### Aggiornamento di una policy di autorizzazione del ruolo (AWS CLI)
<a name="id_roles_update_permissions-policy-cli"></a>

Per modificare le autorizzazioni permesse dal ruolo, modifica la policy (o le policy) di autorizzazioni del ruolo. Non è possibile modificare la policy di autorizzazione per un *[ruolo collegato ai servizi](id_roles.md#iam-term-service-linked-role)* in IAM. Potresti essere in grado di modificare la policy di autorizzazione all'interno del servizio che dipende dal ruolo. Per controllare se un servizio supporta questa funzionalità, consulta [AWS servizi che funzionano con IAM](reference_aws-services-that-work-with-iam.md) e individua i servizi che hanno **Sì **nella colonna **Ruoli collegati ai servizi**. Scegliere **Sì** in corrispondenza di un link per visualizzare la documentazione relativa al ruolo collegato al servizio per tale servizio.

**Per modificare le autorizzazioni permesse da un ruolo (AWS CLI)**

1. (Facoltativo) Per visualizzare le autorizzazioni correnti associate a un ruolo, eseguire i comandi seguenti:

   1. [Lo scopo è quello list-role-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-role-policies.html) di elencare le politiche in linea

   1. [aws mira list-attached-role-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-attached-role-policies.html) a elencare le politiche gestite

1. Il comando per aggiornare le autorizzazioni per il ruolo varia a seconda del fatto che si aggiorni una policy gestita o una policy inline.

   Per aggiornare una policy gestita, eseguire il comando seguente per creare una nuova versione della policy gestita:
   + [era io create-policy-version](https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy-version.html)

   Per aggiornare una policy inline, eseguire il comando seguente:
   + [era io put-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-policy.html)

### Aggiornamento di una politica di autorizzazione dei ruoli (AWS API)
<a name="id_roles_update_permissions-policy-api"></a>

Per modificare le autorizzazioni permesse dal ruolo, modifica la policy (o le policy) di autorizzazioni del ruolo. Non è possibile modificare la policy di autorizzazione per un *[ruolo collegato ai servizi](id_roles.md#iam-term-service-linked-role)* in IAM. Potresti essere in grado di modificare la policy di autorizzazione all'interno del servizio che dipende dal ruolo. Per controllare se un servizio supporta questa funzionalità, consulta [AWS servizi che funzionano con IAM](reference_aws-services-that-work-with-iam.md) e individua i servizi che hanno **Sì **nella colonna **Ruoli collegati ai servizi**. Scegliere **Sì** in corrispondenza di un link per visualizzare la documentazione relativa al ruolo collegato al servizio per tale servizio.

**Per modificare le autorizzazioni consentite da un ruolo (API)AWS**

1. (Facoltativo) Per visualizzare le autorizzazioni correnti associate a un ruolo, chiamare le operazioni seguenti:

   1. [ListRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRolePolicies.html)per elencare le politiche in linea

   1. [ListAttachedRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedRolePolicies.html)per elencare le politiche gestite

1. L'operazione per aggiornare le autorizzazioni per il ruolo varia a seconda del fatto che si aggiorni una policy gestita o una policy inline.

   Per aggiornare una policy gestita, chiamare l'operazione seguente per creare una nuova versione della policy gestita:
   + [CreatePolicyVersion](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreatePolicyVersion.html)

   Per aggiornare una policy inline, chiamare l'operazione seguente:
   + [PutRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePolicy.html)

## Aggiornamento del limite delle autorizzazioni per un ruolo
<a name="id_roles_update-role-permissions-boundary"></a>

Per modificare il numero massimo di autorizzazioni consentite per un ruolo, modifica il [limite delle autorizzazioni](access_policies_boundaries.md) del ruolo.

### Aggiornamento di un limite delle autorizzazioni del ruolo (console)
<a name="id_roles_update-permissions-boundary-console"></a>

**Per modificare la policy utilizzata per impostare il limite delle autorizzazioni per un ruolo**

1. Accedi Console di gestione AWS e apri 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. Scegli il nome del ruolo con il [limite delle autorizzazioni](access_policies_boundaries.md) che desideri modificare. 

1. Scegli la scheda **Autorizzazioni**. Se necessario, aprire la sezione **Permissions boundary (Limite delle autorizzazioni)** e selezionare **Change boundary (Modifica limite)**.

1. Selezionare la policy da utilizzare per il limite delle autorizzazioni.

1. Selezionare **Change boundary (Modifica limite)**.

   Le modifiche non verranno applicate fino alla volta successiva in cui qualcuno assume questo ruolo.

### Aggiornamento di un limite delle autorizzazioni del ruolo (AWS CLI)
<a name="id_roles_update_permissions-boundary-cli"></a>

**Per modificare la policy gestita utilizzata per impostare il limite delle autorizzazioni per un ruolo (AWS CLI)**

1. (Facoltativo) Per visualizzare il [limite delle autorizzazioni](access_policies_boundaries.md) corrente per un ruolo, eseguire il comando seguente: 
   + [aws iam get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html)

1. Per usare un'altra policy gestita per aggiornare il limite delle autorizzazioni per un ruolo, eseguire il comando seguente: 
   + [era iam put-role-permissions-boundary](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-permissions-boundary.html)

   Un ruolo può avere solo una policy gestita impostata come limite delle autorizzazioni. Modificando il limite delle autorizzazioni è possibile modificare il numero massimo di autorizzazioni consentite per un ruolo.

### Aggiornamento di un limite di autorizzazioni di ruolo (API)AWS
<a name="id_roles_update-permissions-boundary-api"></a>

**Per modificare la politica gestita utilizzata per impostare il limite delle autorizzazioni per un ruolo (API)AWS**

1. (Facoltativo) Per visualizzare il [limite delle autorizzazioni](access_policies_boundaries.md) corrente per un ruolo, richiamare l'operazione seguente: 
   + [GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html)

1. Per usare un'altra policy gestita per aggiornare il limite delle autorizzazioni per un ruolo, chiamare l'operazione seguente: 
   + [PutRolePermissionsBoundary](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePermissionsBoundary.html)

   Un ruolo può avere solo una policy gestita impostata come limite delle autorizzazioni. Modificando il limite delle autorizzazioni è possibile modificare il numero massimo di autorizzazioni consentite per un ruolo.

# Aggiornamento delle impostazioni per un ruolo
<a name="id_roles_update-role-settings"></a>

Utilizza le seguenti procedure per aggiornare la descrizione di un ruolo o modificare la durata massima della sessione per un ruolo.

## Aggiornamento della descrizione di un ruolo
<a name="id_roles_update-description"></a>

Per cambiare la descrizione del ruolo, modifica il testo di descrizione.

### Aggiornamento della descrizione di un ruolo (console)
<a name="id_roles_update-description-console"></a>

**Per modificare la descrizione di un ruolo (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione della console IAM seleziona **Roles (Ruoli)**.

1. Scegliere il nome del ruolo da modificare.

1. Nella sezione **Summary** (Riepilogo), scegli **Edit** (Modifica).

1. Digita una nuova descrizione nella casella e scegli **Save changes (Salva modifiche)**.

### Aggiornamento della descrizione di un ruolo (AWS CLI)
<a name="id_roles_update-description-cli"></a>

**Per modificare la descrizione di un ruolo (AWS CLI)**

1. (Facoltativo) Per visualizzare la descrizione corrente di un ruolo, eseguire il comando seguente:
   + [aws iam get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html)

1. Per aggiornare la descrizione di un ruolo, eseguire il comando seguente con il parametro relativo alla descrizione:
   + [aws iam update-role](https://docs.aws.amazon.com/cli/latest/reference/iam/update-role.html)

### Aggiornamento di una descrizione del ruolo (AWS API)
<a name="id_roles_update-description-api"></a>

**Per modificare la descrizione di un ruolo (AWS API)**

1. (Facoltativo) Per visualizzare la descrizione corrente per un ruolo, chiamare l'operazione seguente:
   + [GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html) 

1. Per aggiornare la descrizione di un ruolo, chiamare l'operazione seguente con il parametro relativo alla descrizione:
   + [UpdateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRole.html)

## Aggiornamento della durata massima della sessione per un ruolo
<a name="id_roles_update-session-duration"></a>

Per specificare l'impostazione della durata massima della sessione per i ruoli che vengono assunti utilizzando la console AWS CLI, l'o l' AWS API, modifica il valore di impostazione della durata massima della sessione. Questa impostazione può avere un valore compreso tra 1 ora e 12 ore. Se non specifichi un valore, viene applicata l'impostazione predefinita massima di 1 ora. Questa impostazione non limita le sessioni assunte dai AWS servizi.

### Aggiornamento della durata massima della sessione del ruolo (console)
<a name="id_roles_update-session-duration-console"></a><a name="id_roles_modify_max-session"></a>

**Per modificare l'impostazione della durata massima della sessione per i ruoli assunti utilizzando la console o l' AWS API (console) AWS CLI**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione della console IAM seleziona **Roles (Ruoli)**.

1. Scegliere il nome del ruolo da modificare.

1. Nella sezione **Summary** (Riepilogo), scegli **Edit** (Modifica).

1. In **Maximum session duration** (Durata massima della sessione), scegli un valore. In alternativa, scegli **Custom duration** (Durata personalizzata) e inserisci un valore (in secondi).

1. Scegli **Save changes** (Salva modifiche).

   Le modifiche non verranno applicate fino alla volta successiva in cui qualcuno assume questo ruolo. Per informazioni su come revocare le sessioni esistenti per il ruolo, consultare [Revocare le credenziali di sicurezza temporanee per i ruoli IAM](id_roles_use_revoke-sessions.md).

In Console di gestione AWS, per impostazione predefinita, le sessioni utente IAM durano 12 ore. Agli utenti IAM viene che cambiano ruoli nella console viene concessa la durata massima della sessione del ruolo o il tempo rimanente nella sessione dell'utente IAM, a seconda di quale sia minore.

Chiunque assuma il ruolo dell' AWS API AWS CLI or può richiedere una sessione più lunga, fino a questo massimo. L'impostazione `MaxSessionDuration` determina la durata massima della sessione del ruolo che può essere richiesta.
+ Per specificare la durata di una sessione AWS CLI utilizzando il `duration-seconds` parametro. Per ulteriori informazioni, consulta [Passaggio a un ruolo IAM (AWS CLI)](id_roles_use_switch-role-cli.md).
+ Per specificare la durata di una sessione utilizzando l' AWS API, utilizza il `DurationSeconds` parametro. Per ulteriori informazioni, consulta [Passa a un ruolo IAM (AWS API)](id_roles_use_switch-role-api.md). 

### Aggiornamento della durata massima della sessione di ruolo (AWS CLI)
<a name="id_roles_update-session-duration-cli"></a>

**Nota**  
Chiunque assuma il ruolo dell'API AWS CLI o può utilizzare il parametro `duration-seconds` CLI o `DurationSeconds` il parametro API per richiedere una sessione più lunga. L'impostazione `MaxSessionDuration` determina la durata massima della sessione del ruolo che può essere richiesta usando il parametro `DurationSeconds`. Se gli utenti non specificano un valore per il parametro `DurationSeconds` le loro credenziali di sicurezza rimangono valide per un'ora.

**Per modificare l'impostazione della durata massima della sessione per i ruoli assunti utilizzando il AWS CLI ()AWS CLI**

1. (Facoltativo) Per visualizzare l'impostazione della durata massima della sessione corrente per un ruolo, eseguire il comando seguente:
   + [aws iam get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html)

1. Per aggiornare l'impostazione della durata massima della sessione di un ruolo, eseguire il comando seguente con il parametro `max-session-duration` della CLI oppure il parametro API `MaxSessionDuration`:
   + [aws iam update-role](https://docs.aws.amazon.com/cli/latest/reference/iam/update-role.html)

   Le modifiche non verranno applicate fino alla volta successiva in cui qualcuno assume questo ruolo. Per informazioni su come revocare le sessioni esistenti per il ruolo, consultare [Revocare le credenziali di sicurezza temporanee per i ruoli IAM](id_roles_use_revoke-sessions.md).

### Aggiornamento della durata massima della sessione di ruolo (AWS API)
<a name="id_roles_update-session-duration-api"></a>

**Nota**  
Chiunque assuma il ruolo dell'API AWS CLI o può utilizzare il parametro `duration-seconds` CLI o `DurationSeconds` il parametro API per richiedere una sessione più lunga. L'impostazione `MaxSessionDuration` determina la durata massima della sessione del ruolo che può essere richiesta usando il parametro `DurationSeconds`. Se gli utenti non specificano un valore per il parametro `DurationSeconds` le loro credenziali di sicurezza rimangono valide per un'ora.

**Per modificare l'impostazione della durata massima della sessione per i ruoli assunti utilizzando l'API (API)AWS**

1. (Facoltativo) Per visualizzare l'impostazione della durata massima della sessione corrente per un ruolo, chiamare l'operazione seguente:
   + [GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html) 

1. Per aggiornare l'impostazione della durata massima della sessione di un ruolo, chiamare l'operazione seguente con il parametro `max-sessionduration` della CLI oppure il parametro API `MaxSessionDuration`:
   + [UpdateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRole.html)

   Le modifiche non verranno applicate fino alla volta successiva in cui qualcuno assume questo ruolo. Per informazioni su come revocare le sessioni esistenti per il ruolo, consultare [Revocare le credenziali di sicurezza temporanee per i ruoli IAM](id_roles_use_revoke-sessions.md).

# Eliminare i ruoli o i profili delle istanze
<a name="id_roles_manage_delete"></a>

Se un ruolo non è più necessario, si consiglia di eliminare il ruolo e le autorizzazioni associate. In questo modo non sarà più presente un’entità non utilizzata che non viene monitorata e gestita attivamente. 

Se il ruolo è stato associato a un'istanza EC2, è anche possibile rimuovere il ruolo dal profilo dell'istanza e quindi eliminare il profilo dell'istanza.

**avvertimento**  
Assicurati di non avere istanze Amazon EC2 in esecuzione con il ruolo o il profilo di istanza che stai per eliminare. L'eliminazione di un ruolo o di un profilo di istanza associato a un'istanza in esecuzione interrompe tutte le applicazioni in esecuzione sull'istanza.

Se si preferisce non eliminare definitivamente un ruolo, è possibile disabilitarlo. A tale scopo, modifica le policy del ruolo e quindi revoca tutte le sessioni correnti. Ad esempio, potresti aggiungere una policy al ruolo che nega l'accesso a tutti. AWSÈ inoltre possibile modificare i criteri di attendibilità per negare l'accesso a tutti coloro che tentano di assumere il ruolo. Per ulteriori informazioni sull'avvio delle sessioni, consulta [Revocare le credenziali di sicurezza temporanee per i ruoli IAM](id_roles_use_revoke-sessions.md).

**Topics**
+ [Visualizzazione dell'accesso del ruolo](#roles-delete_prerequisites)
+ [Eliminazione del ruolo collegato ai servizi](#id_roles_manage_delete_slr)
+ [Eliminazione di un ruolo IAM (console)](#roles-managingrole-deleting-console)
+ [Eliminazione di un ruolo IAM (AWS CLI)](#roles-managingrole-deleting-cli)
+ [Eliminazione di un ruolo IAM (API)AWS](#roles-managingrole-deleting-api)
+ [Informazioni correlate](#roles-managingrole-deleting-related-info)

## Visualizzazione dell'accesso del ruolo
<a name="roles-delete_prerequisites"></a>

Prima di eliminare un ruolo, è opportuno esaminare quando è stato utilizzato per l'ultima volta. È possibile eseguire questa operazione utilizzando l' Console di gestione AWS AWS CLI, l'o l' AWS API. È consigliabile visualizzare queste informazioni per non privare dell'accesso qualcuno che utilizza il ruolo. 

La data dell'ultima attività del ruolo potrebbe non corrispondere all'ultima data riportata nella scheda **Ultimo accesso**. La scheda [**Ultimo accesso**](access_policies_last-accessed-view-data.md) riporta l'attività solo per i servizi consentiti dalle policy di autorizzazione del ruolo. La data dell'ultima attività del ruolo include l'ultimo tentativo di accesso a qualsiasi servizio in AWS.

**Nota**  
Il periodo di monitoraggio dei dati per l'ultima attività di un ruolo e i dati di Ultimo accesso sono per gli ultimi 400 giorni. Questo periodo può essere abbreviato se la regione ha iniziato a supportare queste funzionalità nell'ultimo anno. Il ruolo potrebbe essere stato utilizzato più di 400 giorni fa. Per ulteriori informazioni sul periodo di monitoraggio, consulta [Dove AWS tiene traccia delle ultime informazioni a cui si accede](access_policies_last-accessed.md#last-accessed_tracking-period).

**Per visualizzare la data di ultimo utilizzo di un ruolo (console)**

1. Accedi Console di gestione AWS e apri 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. Individua la riga del ruolo con l'attività che si desidera visualizzare. È possibile utilizzare il campo di ricerca per restringere i risultati. Visualizzare la colonna **Last activity (Ultima attività)** per visualizzare il numero di giorni trascorsi dalla data di ultimo utilizzo del ruolo. Se il ruolo non è stato utilizzato entro il periodo di monitoraggio, nella tabella viene visualizzato **None (Nessuno)**. 

1. Scegliere il nome del ruolo per visualizzare ulteriori informazioni. La pagina **Riepilogo** del ruolo include anche **Ultima attività**, che visualizza la data dell'ultimo utilizzo del ruolo. Se il ruolo non è stato utilizzato negli ultimi 400 giorni, **Last activity (Ultima attività)** visualizza **Not accessed in the tracking period (Nessun accesso nel periodo di monitoraggio)**.

**Per visualizzare la data di ultimo utilizzo di un ruolo (AWS CLI)**  
`[aws iam get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html)` - Eseguire questo comando per restituire le informazioni su un ruolo, incluso l'oggetto `RoleLastUsed`. Questo oggetto contiene `LastUsedDate` e la `Region` in cui il ruolo è stato utilizzato per l'ultima volta. Se `RoleLastUsed` è presente ma non contiene un valore, il ruolo non è stato utilizzato entro il periodo di monitoraggio.

**Per visualizzare quando un ruolo è stato utilizzato l'ultima volta (AWS API)**  
`[GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/GetRole.html)` - Chiamare questa operazione per restituire le informazioni su un ruolo, incluso l'oggetto `RoleLastUsed`. Questo oggetto contiene `LastUsedDate` e la `Region` in cui il ruolo è stato utilizzato per l'ultima volta. Se `RoleLastUsed` è presente ma non contiene un valore, il ruolo non è stato utilizzato entro il periodo di monitoraggio.

## Eliminazione del ruolo collegato ai servizi
<a name="id_roles_manage_delete_slr"></a>

Il metodo utilizzato per eliminare un ruolo collegato ai servizi dipende dal servizio. In alcuni casi, non devi eliminare manualmente un ruolo collegato ai servizi. Ad esempio, quando completi un'operazione specifica (come eliminare una risorsa) nel servizio, il servizio potrebbe eliminare il ruolo collegato ai servizi per te. In altri casi, il servizio può supportare l'eliminazione di un ruolo collegato ai servizi manualmente dalla console del servizio, dall'API o dalla AWS CLI. 

Consulta la documentazione relativa al *[ruolo collegato al servizio](id_roles.md#iam-term-service-linked-role)* del servizio collegato per ulteriori informazioni su come eliminare il ruolo. Puoi visualizzare i ruoli collegati ai servizi nell'account visitando la pagina **Ruoli** IAM nella console. I ruoli collegati al servizio vengono visualizzati con l'indicazione **(Service-linked role) (Ruolo collegato al servizio)** nella colonna **Trusted entities (Entità attendibili)** della tabella. Un banner nella pagina **Riepilogo** del ruolo indica anche che il ruolo è un ruolo collegato ai servizi.

Se il servizio non include la documentazione per l'eliminazione del ruolo collegato al servizio, puoi utilizzare la console IAM o l'API per eliminare il ruolo. AWS CLI

## Eliminazione di un ruolo IAM (console)
<a name="roles-managingrole-deleting-console"></a>

Quando utilizzi il Console di gestione AWS per eliminare un ruolo, IAM scollega automaticamente le policy gestite associate al ruolo. Inoltre elimina automaticamente anche le policy in linea associate al ruolo e qualsiasi profilo dell'istanza Amazon EC2 che contiene il ruolo. 

**Importante**  
In alcuni casi, un ruolo potrebbe essere associato a un profilo dell'istanza Amazon EC2 e il ruolo e il profilo dell'istanza potrebbero avere lo stesso nome. In tal caso puoi utilizzare il Console di gestione AWS per eliminare il ruolo e il profilo dell'istanza. Questo collegamento avviene automaticamente per i ruoli e i profili delle istanze creati nella console. Se hai creato il ruolo da AWS CLI, Tools for Windows PowerShell o dall' AWS API, il ruolo e il profilo dell'istanza potrebbero avere nomi diversi. In questo caso non è possibile utilizzare la console per eliminarli. È invece necessario utilizzare Tools for Windows PowerShell o AWS API per rimuovere prima il ruolo dal profilo dell'istanza. AWS CLIÈ quindi necessario eseguire un passaggio distinto per eliminare il ruolo.

**Per eliminare un ruolo (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione, scegliere **Roles (Ruoli)**, quindi selezionare la casella di controllo accanto al nome del ruolo che si desidera eliminare. 

1. Nella parte superiore della pagina, scegli **Elimina**.

1. Nella finestra di dialogo di conferma, esamina le informazioni relative all'ultimo accesso, che mostrano l'ultima volta che ciascuno dei ruoli selezionati ha effettuato l'ultimo accesso a un AWS servizio. In questo modo potrai verificare se il ruolo è attualmente attivo. Se desideri procedere, inserisci il nome del ruolo nel campo di immissione testo e seleziona **Elimina**. Se sei sicuro, puoi procedere con l'eliminazione anche se l'ultimo accesso ai dati del servizio è ancora in fase di caricamento.

**Nota**  
Non è possibile utilizzare la console per eliminare un profilo dell'istanza, a meno che non abbia lo stesso nome del ruolo. Il profilo dell'istanza viene eliminato come parte del processo di eliminazione di un ruolo descritto nella procedura precedente. Per eliminare un profilo di istanza senza eliminare anche il ruolo, è necessario utilizzare l' AWS API AWS CLI o. Per ulteriori informazioni, consultare le sezioni indicate di seguito.

## Eliminazione di un ruolo IAM (AWS CLI)
<a name="roles-managingrole-deleting-cli"></a>

Quando si utilizza il AWS CLI per eliminare un ruolo, è necessario innanzitutto eliminare le politiche in linea associate al ruolo. È inoltre necessario scollegare le policy gestite associate al ruolo. Se desideri eliminare il profilo dell'istanza associato che contiene il ruolo, devi eliminarlo separatamente.

**Per eliminare un ruolo (AWS CLI)**

1. Se non conosci il nome del ruolo da eliminare, immetti il comando seguente per elencare i ruoli nell'account:

   ```
   aws iam list-roles
   ```

   L'elenco include l'Amazon Resource Name (ARN) di ogni ruolo. Per fare riferimento ai ruoli con i comandi della CLI utilizza il nome del ruolo, non l'ARN. Ad esempio, per fare riferimento a un ruolo il cui ARN è `arn:aws:iam::123456789012:role/myrole`, puoi usare **myrole**.

1. Rimuovi il ruolo da tutti i profili delle istanze a cui è associato.

   1. Per elencare tutti i profili delle istanze cui è associato il ruolo, immetti il seguente comando:

      ```
      aws iam list-instance-profiles-for-role --role-name role-name
      ```

   1. Per rimuovere il ruolo da un profilo dell'istanza, immetti il seguente comando per ogni profilo dell'istanza:

      ```
      aws iam remove-role-from-instance-profile --instance-profile-name instance-profile-name --role-name role-name
      ```

1. Elimina tutte le policy associate al ruolo.

   1. Per elencare tutte le policy inline presenti nel ruolo, immetti il seguente comando:

      ```
      aws iam list-role-policies --role-name role-name
      ```

   1. Per eliminare ogni policy inline dal ruolo, immetti il seguente comando per ogni policy: 

      ```
      aws iam delete-role-policy --role-name role-name --policy-name policy-name
      ```

   1. Per elencare tutte le policy gestite collegate al ruolo, immetti il seguente comando:

      ```
      aws iam list-attached-role-policies --role-name role-name
      ```

   1. Per scollegare ogni policy gestita dal ruolo, immetti il seguente comando per ogni policy: 

      ```
      aws iam detach-role-policy --role-name role-name --policy-arn policy-arn
      ```

1. Immetti il seguente comando per eliminare il ruolo:

   ```
   aws iam delete-role --role-name role-name
   ```

1. Se non prevedi di riutilizzare i profili delle istanze associati al ruolo, puoi immettere il seguente comando per eliminarli:

   ```
   aws iam delete-instance-profile --instance-profile-name instance-profile-name
   ```

## Eliminazione di un ruolo IAM (API)AWS
<a name="roles-managingrole-deleting-api"></a>

Se utilizzi l'API IAM per eliminare un ruolo, devi prima eliminare le policy inline associate al ruolo. È inoltre necessario scollegare le policy gestite associate al ruolo. Se desideri eliminare il profilo dell'istanza associato che contiene il ruolo, devi eliminarlo separatamente.

**Per eliminare un ruolo (AWS API)**

1. Per elencare tutti i profili di istanza a cui è associato un ruolo, chiama [ListInstanceProfilesForRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfilesForRole.html).

   Per rimuovere il ruolo da un profilo di istanza, chiama [RemoveRoleFromInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveRoleFromInstanceProfile.html). È necessario passare il nome del ruolo e il nome del profilo di istanza. 

   Se non intendi riutilizzare un profilo di istanza associato al ruolo, chiama [DeleteInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteInstanceProfile.html)per eliminarlo.

1. Per elencare tutte le politiche in linea per un ruolo, chiama. [ListRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRolePolicies.html)

   Per eliminare le politiche in linea associate al ruolo, chiama. [DeleteRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteRolePolicy.html) Devi passare il nome del ruolo e il nome della policy inline. 

1. Per elencare tutte le politiche gestite associate a un ruolo, chiama [ListAttachedRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedRolePolicies.html). 

   Per scollegare le politiche gestite allegate al ruolo, chiama [DetachRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DetachRolePolicy.html). Devi passare il nome del ruolo e l'ARN della policy gestita. 

1. Chiama [DeleteRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteRole.html)per eliminare il ruolo.

## Informazioni correlate
<a name="roles-managingrole-deleting-related-info"></a>

Per informazioni generali sui profili delle istanze, consulta [Usare profili dell'istanza](id_roles_use_switch-role-ec2_instance-profiles.md).

Per informazioni generali sui ruoli collegati al servizio, consultare [Creare un ruolo collegato ai servizi](id_roles_create-service-linked-role.md).

# Metodi per assumere un ruolo
<a name="id_roles_manage-assume"></a>

Prima che un utente, applicazione o servizio possa utilizzare un ruolo che è stato creato, è necessario [concedere le autorizzazioni per passare](id_roles_use_permissions-to-switch.md) al ruolo. È possibile utilizzare qualsiasi policy collegata a gruppi o utenti per concedere le autorizzazioni necessarie. Dopo aver concesso le autorizzazioni, l'utente può assumere un ruolo dagli Console di gestione AWS strumenti per Windows PowerShell, da AWS Command Line Interface (AWS CLI) e dall'[https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API.

**Importante**  
Se crei un ruolo a livello programmatico anziché nella console IAM, hai l'opzione per aggiungere un `Path` con un massimo di 512 caratteri in aggiunta a `RoleName`, che può contenere fino a 64 caratteri. Tuttavia, se intendete utilizzare un ruolo con la funzione **Cambia ruolo** in Console di gestione AWS, la combinazione `Path` `RoleName` non può superare i 64 caratteri.

Il metodo utilizzato per assumere il ruolo determina chi può assumere il ruolo e per quanto tempo la sessione del ruolo della sessione può durare. Quando utilizzi `AssumeRole*` Operazioni API, il ruolo IAM assunto è la risorsa. L'utente o il ruolo che chiama le operazioni API `AssumeRole*` è il principale.

Nella tabella seguente vengono confrontati i metodi per assumere i ruoli.


|  Metodo per assumere il ruolo |  **Chi può assumere il ruolo**  | **Metodo per specificare il ciclo di vita delle credenziali** |  **Ciclo di vita delle credenziali (minimo \$1 massimo \$1 predefinito)**  | 
| --- | --- | --- | --- | 
| Console di gestione AWS | Utente o ruoli¹ ([cambiando ruoli](id_roles_use_switch-role-console.md)) | Durata massima sessione nella pagina di riepilogo Ruolo | 15 min \$1 Impostazione durata massima sessione² \$1 1 ora | 
| [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) CLI oppure operazione API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) |  Utente o ruolo¹ | CLI duration-seconds oppure parametro API DurationSeconds | 15 min \$1 Impostazione durata massima sessione² \$1 1 ora  | 
| [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-saml.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-saml.html) CLI oppure operazione API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) | Tutti gli utenti autenticati utilizzando SAML | CLI duration-seconds oppure parametro API DurationSeconds | 15 min \$1 Impostazione durata massima sessione² \$1 1 ora  | 
| [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html) CLI oppure operazione API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) | Tutti gli utenti autenticati che utilizzano un provider OIDC | CLI duration-seconds oppure parametro API DurationSeconds | 15 min \$1 Impostazione durata massima sessione² \$1 1 ora  | 
| [Console URL](id_roles_providers_enable-console-custom-url.md) creata con AssumeRole  | Utente o ruolo | Parametro HTML SessionDuration nell'URL | 15 min \$1 12 ore \$1 1 ora  | 
| [Console URL](id_roles_providers_enable-console-custom-url.md) creata con AssumeRoleWithSAML  | Tutti gli utenti autenticati utilizzando SAML | Parametro HTML SessionDuration nell'URL | 15 min \$1 12 ore \$1 1 ora | 
| [Console URL](id_roles_providers_enable-console-custom-url.md) creata con AssumeRoleWithWebIdentity  | Tutti gli utenti autenticati che utilizzano un provider OIDC | Parametro HTML SessionDuration nell'URL | 15 min \$1 12 ore \$1 1 ora  | 

¹ L’utilizzo delle credenziali di un ruolo per assumere un ruolo diverso si chiama [concatenazione dei ruoli](id_roles.md#iam-term-role-chaining). Quando si utilizza la concatenazione dei ruoli, la durata della sessione del ruolo è limitata a un’ora. Questo vale per Console di gestione AWS il cambio di ruolo e le operazioni API. AWS CLI Questa limitazione non si applica all'assunzione iniziale di un ruolo in base alle credenziali utente o alle applicazioni in esecuzione su EC2 istanze Amazon che utilizzano profili di istanza.

² Questa impostazione può avere un valore compreso tra 1 ora e 12 ore. Per informazioni sulla modifica dell'impostazione della durata massima della sessione, consulta [Gestione del ruolo IAM](id_roles_manage.md). Questa impostazione determina la durata massima della sessione che è possibile richiedere quando si ottengono le credenziali del ruolo. Ad esempio, quando utilizzi le operazioni dell'[AssumeRoleAPI\$1](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) per assumere un ruolo, puoi specificare la durata della sessione utilizzando il parametro. `DurationSeconds` Utilizzare questo parametro per specificare la durata della sessione del ruolo da 900 secondi (15 minuti) fino all'impostazione di durata massima della sessione per il ruolo. Agli utenti IAM che cambiano ruoli nella console viene concessa la durata massima della sessione o il tempo rimanente nella sessione dell'utente, a seconda di quale sia minore. Si supponga di impostare una durata massima di 5 ore su un ruolo. Un utente IAM che è stato collegato alla console per 10 ore (rispetto al valore massimo predefinito di 12) può cambiare ruolo. La durata della sessione di ruolo disponibile è di 2 ore. Per informazioni su come visualizzare il valore massimo per il ruolo, consulta [Aggiornamento della durata massima della sessione per un ruolo](id_roles_update-role-settings.md#id_roles_update-session-duration) più avanti su questa pagina.

**Note**  
L'impostazione di durata massima delle sessioni non limita le sessioni assunte dai servizi AWS .
Le credenziali del ruolo Amazon EC2 IAM non sono soggette alla durata massima della sessione configurata nel ruolo.
Per consentire agli utenti di assumere nuovamente il ruolo corrente all'interno di una sessione di ruolo, specificare il ruolo ARN o Account AWS ARN come principale nella politica di attendibilità dei ruoli. Servizi AWS che forniscono risorse di elaborazione come Amazon EC2, Amazon ECS, Amazon EKS e Lambda forniscono credenziali temporanee e le aggiornano automaticamente. Ciò garantisce di disporre sempre di un set di credenziali valido. Per questi servizi, non è necessario riassumere il ruolo attuale per ottenere credenziali temporanee. Tuttavia, se intendi passare [tag di sessione](id_session-tags.md) o una [Policy di sessione](access_policies.md#policies_session), devi riassumere il ruolo attuale. Per informazioni su come modificare una politica di attendibilità dei ruoli per aggiungere il ruolo principale ARN o Account AWS ARN, vedere. [Aggiornamento di una policy di attendibilità del ruolo](id_roles_update-role-trust-policy.md)

**Topics**
+ [Passare da un utente a un ruolo IAM (console)](id_roles_use_switch-role-console.md)
+ [Passaggio a un ruolo IAM (AWS CLI)](id_roles_use_switch-role-cli.md)
+ [Passare a un ruolo IAM (Tools for Windows PowerShell)](id_roles_use_switch-role-twp.md)
+ [Passa a un ruolo IAM (AWS API)](id_roles_use_switch-role-api.md)
+ [Utilizzare un ruolo IAM per concedere autorizzazioni alle applicazioni in esecuzione su istanze Amazon EC2](id_roles_use_switch-role-ec2.md)
+ [Usare profili dell'istanza](id_roles_use_switch-role-ec2_instance-profiles.md)

# Passare da un utente a un ruolo IAM (console)
<a name="id_roles_use_switch-role-console"></a>

Puoi cambiare ruolo quando effettui l'accesso come utente IAM, utente del Centro identità IAM, come ruolo federato SAML o come ruolo con federazione delle identità Web. Un *ruolo* specifica un set di autorizzazioni che è possibile utilizzare per accedere alle AWS risorse necessarie. Tuttavia, non si effettua l'accesso a un ruolo, ma una volta effettuato l'accesso come utente IAM è possibile passare a un ruolo IAM. Ciò consente di accantonare temporaneamente le autorizzazioni utente originali e usufruire invece delle autorizzazioni assegnate al ruolo. Il ruolo può trovarsi nel tuo account o in qualsiasi altro Account AWS. Per ulteriori informazioni sui ruoli e i relativi vantaggi e su come crearli e configurarli, consulta [Ruoli IAM](id_roles.md) e [Creazione di ruoli IAM](id_roles_create.md).

Le autorizzazioni dell'utente e di qualsiasi ruolo a cui si passa non sono cumulative. Un solo set di autorizzazioni è attivo alla volta. Quando passi a un ruolo, lasci temporaneamente le autorizzazioni utente e utilizzi le autorizzazioni assegnate al ruolo. Quando lasci il ruolo, le autorizzazioni utente vengono automaticamente ripristinate.

Quando si cambia ruolo in Console di gestione AWS, la console utilizza sempre le credenziali originali per autorizzare lo switch. Ad esempio, se passi al RuoloA, IAM utilizza le tue credenziali originali per determinare se è possibile assumere il RuoloA. **Se poi si passa a *RoleB mentre si utilizza RoLEA, utilizza comunque le* credenziali originali per autorizzare lo switch AWS , non le credenziali per RolEA.**

**Nota**  
Quando accedi come utente al Centro identità IAM, come ruolo federato SAML o come ruolo con federazione delle identità Web, all'avvio della sessione assumi un ruolo IAM. Ad esempio, quando un utente di IAM Identity Center accede al portale di AWS accesso, deve scegliere un set di autorizzazioni correlato a un ruolo prima di poter accedere alle risorse. AWS 

## Sessioni come ruolo
<a name="id_roles_iam_user-switch-role-sessions"></a>

Quando cambi ruolo, la Console di gestione AWS sessione dura per impostazione predefinita 1 ora. Le sessioni dell'utente IAM sono 12 ore per impostazione predefinita, mentre per altri utenti è possibile che la durata della sessione sia diversa. Quando cambi ruolo nella console, viene concessa la durata massima della sessione o il tempo rimanente nella sessione dell’utente, a seconda di quale sia minore. Non puoi prolungare la durata della sessione assumendo un ruolo.

Si supponga, ad esempio, che per un ruolo sia impostata una durata massima di sessione di 10 ore. Hai effettuato l'accesso alla console per 8 ore quando decidi di cambiare ruolo. Ci sono 4 ore rimanenti nella sessione utente, quindi la durata della sessione ruolo consentita è di 4 ore e non la durata massima della sessione di 10 ore. Nella tabella seguente viene illustrato come determinare la durata della sessione per un utente IAM quando si cambia ruolo nella console.


| Il tempo rimanente della sessione utente IAM è... | La durata della sessione del ruolo è… | 
| --- | --- | 
| Meno della durata massima della sessione del ruolo | Tempo rimanente nella sessione utente | 
| Più della durata massima della sessione del ruolo | Valore della durata massima della sessione | 
| Uguale alla durata massima della sessione del ruolo | Valore della durata massima della sessione (approssimativo) | 

L’utilizzo delle credenziali perché un ruolo assuma un ruolo diverso viene chiamato [concatenamento dei ruoli](id_roles.md#iam-term-role-chaining). Quando si utilizza il concatenamento dei ruoli, la durata della sessione è limitata a un’ora, indipendentemente dall’impostazione della durata massima della sessione configurata per i singoli ruoli. Questo vale per Console di gestione AWS il cambio di ruolo e le operazioni API. AWS CLI

**Nota**  
Alcune console AWS di servizio possono rinnovare automaticamente la sessione di ruolo alla scadenza senza che l'utente intraprenda alcuna azione. Alcune potrebbero richiedere di ricaricare la pagina del browser per autenticare nuovamente la sessione.

## Considerazioni
<a name="id_roles_iam_user-switch-role-considerations"></a>
+ Non puoi cambiare ruolo se accedi come. Utente root dell'account AWS
+ Agli utenti deve essere concessa l'autorizzazione a cambiare ruolo in base alla policy. Per istruzioni, consulta [Concedere le autorizzazioni agli utenti per cambiare ruoli](id_roles_use_permissions-to-switch.md).
+ Non puoi passare da un ruolo Console di gestione AWS a un ruolo che richiede un [ExternalId](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id)valore. È possibile passare a tale ruolo solo chiamando l'API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) che supporta il parametro `ExternalId`.

## Per passare a un ruolo
<a name="id_roles_iam_user-switch-role-console-procedure"></a>

1. Segui la procedura di accesso appropriata al tuo tipo di utente, come descritto nell’argomento [Accesso alla Console di gestione AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l’utente di Accedi ad AWS *.

1. In Console di gestione AWS, scegli il tuo nome utente nella barra di navigazione in alto a destra. Di solito ha il seguente aspetto: ***username*@ *account\$1ID\$1number\$1or\$1alias***.

1. Per cambiare ruolo scegli uno dei seguenti metodi:
   + Scegli **Cambia ruolo**.
   + Se hai scelto il supporto multisessione, scegli **Aggiungi sessione** e seleziona **Cambia ruolo**.
**Nota**  
Puoi accedere contemporaneamente fino a un massimo di cinque identità diverse in un unico browser web nella Console di gestione AWS. Per maggiori dettagli, consulta [Accesso a più account](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/multisession.html) nella *Guida introduttiva alla Console di gestione AWS *.

1. Nella pagina **Switch Role (Cambia ruolo)** inserisci il numero ID dell'account o l'alias dell'account e il nome del ruolo che è stato fornito dall'amministratore.
**Nota**  
Se l'amministratore ha creato il ruolo con un percorso, ad esempio `division_abc/subdivision_efg/roleToDoX`, allora è necessario digitare tale percorso completo e il nome nella casella **Role (Ruolo)**. Se digiti solo il nome del ruolo, oppure se il `Path` e il `RoleName` insieme superano 64 caratteri, il passaggio di ruolo fallisce. Si tratta di un limite dei cookie del browser che memorizzano il nome del ruolo. In questo caso, contatta l'amministratore e chiedi di ridurre le dimensioni del percorso e il nome del ruolo.

1. (Facoltativo) È possibile inserire un nome di visualizzazione e selezionare un colore di visualizzazione che evidenzierà il ruolo nella barra di navigazione della console.
   + Per **Nome di visualizzazione** inserisci il testo che desideri visualizzare nella barra di navigazione al posto del tuo nome utente quando questo ruolo è attivo. Viene suggerito un nome, in base all'account e alle informazioni del ruolo, ma è possibile modificarlo in base alle proprie esigenze. 
   + Per **Colore di visualizzazione**, seleziona un colore per evidenziare il nome di visualizzazione.

   Il nome e il colore possono aiutarti a ricordare quando questo ruolo è attivo, ciò cambia le tue autorizzazioni. Ad esempio, per un ruolo che ti consente di accedere all'ambiente di test, puoi specificare un **Nome di visualizzazione** uguale a **Test** e selezionare il verde in **Colore**. Per il ruolo che ti consente di accedere all'ambiente di produzione, puoi specificare un **Nome di visualizzazione** uguale a **Production** e selezionare il rosso in **Colore**.

1. Seleziona **Switch Role** (Cambia ruolo). Il nome di visualizzazione e il colore sostituiscono il nome utente nella barra di navigazione ed è possibile iniziare a utilizzare le autorizzazioni concesse dal ruolo.

1. Dopo aver completato le attività che richiedono il ruolo IAM, potrai tornare alla sessione originale. In questo modo verranno rimosse le autorizzazioni aggiuntive fornite dal ruolo e verranno ripristinate le autorizzazioni standard.

   1. Nella console IAM, scegli il **Nome di visualizzazione** del tuo ruolo sulla barra di navigazione in alto a destra.

   1. Seleziona **Torna indietro**.

      Ad esempio, supponiamo di aver eseguito l'accesso all'account numero `123456789012` utilizzando il nome utente `Richard`. Dopo aver utilizzato il ruolo `admin-role`, si desidera interrompere l'utilizzo del ruolo e tornare alle autorizzazioni originali. Per smettere di usare il ruolo, scegli **admin-role @ 123456789012**, quindi scegli **Torna indietro**.  
![\[Grafico che mostra la funzione Torna indietro per smettere di usare un ruolo IAM e tornare all'utente originale.\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/role-stop-using.png)

**Suggerimento**  
Gli ultimi ruoli utilizzati appariranno nel menu. La prossima volta che devi passare a uno di questi ruoli, è sufficiente selezionare il ruolo desiderato. Se il ruolo non è visualizzato nel menu, è sufficiente digitare l'account e le informazioni del ruolo manualmente.

## Risorse aggiuntive
<a name="id_roles_use_switch-role-console_additional_resources"></a>
+ [Concedere le autorizzazioni agli utenti per cambiare ruoli](id_roles_use_permissions-to-switch.md)
+ [Concedere a un utente le autorizzazioni per passare un ruolo a un servizio AWS](id_roles_use_passrole.md)
+ [Creazione di un ruolo per fornire le autorizzazioni a un utente IAM](id_roles_create_for-user.md)
+ [Creare un ruolo per delegare le autorizzazioni a un servizio AWS](id_roles_create_for-service.md)
+ [Risoluzione dei problemi relativi ai ruoli IAM](troubleshoot_roles.md)

# Passaggio a un ruolo IAM (AWS CLI)
<a name="id_roles_use_switch-role-cli"></a>

Un *ruolo* specifica un set di autorizzazioni da utilizzare per accedere alle risorse AWS necessarie. In questo senso, è simile a un [utente in AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) (IAM). Quando effettui l'accesso come utente, ottieni uno specifico set di autorizzazioni. Tuttavia, non effettui l'accesso a un ruolo, ma dopo aver effettuato l'accesso come utente, puoi passare a un ruolo. Ciò consente di accantonare temporaneamente le autorizzazioni utente originali e usufruire invece delle autorizzazioni assegnate al ruolo. Il ruolo può trovarsi nel tuo account o in qualsiasi altro Account AWS. Per ulteriori informazioni sui ruoli e i relativi vantaggi e su come crearli e configurarli, consulta [Ruoli IAM](id_roles.md) e [Creazione di ruoli IAM](id_roles_create.md). Per informazioni sui diversi metodi che si possono utilizzare per assumere un ruolo, consulta [Metodi per assumere un ruolo](id_roles_manage-assume.md).

**Importante**  
Le autorizzazioni dell'utente IAM e di qualsiasi ruolo assunto non sono cumulative. Un solo set di autorizzazioni è attivo alla volta. Quando si assume un ruolo, si lascia temporaneamente l'utente precedente o le autorizzazioni del ruolo e si lavora con le autorizzazioni assegnate al ruolo. Quando lasci il ruolo, le autorizzazioni utente vengono automaticamente ripristinate.

Puoi utilizzare un ruolo per eseguire un AWS CLI comando quando accedi come utente IAM. Puoi anche utilizzare un ruolo per eseguire un AWS CLI comando quando accedi come [utente autenticato esternamente](id_roles_providers.md) ([SAML](id_roles_providers_saml.md) o [OIDC](id_roles_providers_oidc.md)) che sta già utilizzando un ruolo. Inoltre, puoi utilizzare un ruolo per eseguire un comando AWS CLI da un'istanza Amazon EC2 collegata a un ruolo tramite il relativo profilo. Non è possibile assumere un ruolo quando si è effettuato l'accesso come Utente root dell'account AWS.

[**Concatenamento del ruolo**](id_roles.md#iam-term-role-chaining): puoi anche utilizzare la concatenamento dei ruoli che utilizza le autorizzazioni di un ruolo per accedere a un secondo ruolo.

Come impostazione predefinita, la sessione del ruolo dura un'ora. Quando si assume questo ruolo utilizzando le operazioni della CLI `assume-role*`, è possibile specificare un valore per il parametro `duration-seconds`. Questo valore può variare da 900 secondi (15 minuti) fino alla durata massima della sessione per il ruolo. Se cambi ruolo nella console, la durata della sessione è limitata a un massimo di un'ora. Per informazioni su come visualizzare il valore massimo per il ruolo, consulta [Aggiornamento della durata massima della sessione per un ruolo](id_roles_update-role-settings.md#id_roles_update-session-duration). 

Se si utilizza il concatenamento dei ruoli, la tua durata della sessione è limitata a un massimo di un'ora. Se successivamente utilizzi il parametro `duration-seconds` per fornire un valore superiore a un'ora, l'operazione ha esito negativo.

## Scenario di esempio: passaggio a un ruolo di produzione
<a name="switch-role-cli-scenario-prod-env"></a>

Immagina di essere un utente IAM per utilizzare l'ambiente di sviluppo. In questo scenario, a volte è necessario utilizzare l'ambiente di produzione nella riga di comando con l'[AWS CLI](https://aws.amazon.com/cli/). Disponi già di un set di credenziali con chiave di accesso. Questa può essere la coppia di chiavi di accesso assegnata all'utente IAM standard. Oppure, se hai effettuato l’accesso come principale federato SAML o OIDC, può essere la coppia di chiavi di accesso per il ruolo che ti è stato inizialmente assegnato. Se le autorizzazioni attuali ti garantiscono la possibilità di assumere un ruolo IAM specifico, puoi identificare quel ruolo in un «profilo» nei file di configurazione. AWS CLI Questo comando viene quindi eseguito con le autorizzazioni del ruolo IAM specificato, non con l'identità originale. Nota che quando specifichi quel profilo in un AWS CLI comando, stai usando il nuovo ruolo. In questa situazione, non puoi utilizzare le autorizzazioni originali nell'account di sviluppo nello stesso momento. Il motivo è che solo un set di autorizzazioni può essere attivo alla volta.

**Nota**  
Per motivi di sicurezza, gli amministratori possono [esaminare AWS CloudTrail i registri](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds) per scoprire chi ha eseguito un'azione in. AWS L'amministratore potrebbe richiedere di specificare una identità di origine o un nome della sessione del ruolo quando si assume il ruolo. Per ulteriori informazioni, consultare [`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity) e [`sts:RoleSessionName`](reference_policies_iam-condition-keys.md#ck_rolesessionname).

**Per passare a un ruolo di produzione (AWS CLI)**

1. <a name="step-configure-default"></a>Se non hai mai usato il AWS CLI, devi prima configurare il tuo profilo CLI predefinito. Apri un prompt dei comandi e configura AWS CLI l'installazione per utilizzare la chiave di accesso del tuo utente IAM o del tuo ruolo federato. Per ulteriori informazioni, consulta [Configurazione della AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-quick-configuration) nella *Guida per l'utente di AWS Command Line Interface *.

   Esegui il comando [aws configure](https://docs.aws.amazon.com/cli/latest/reference/configure/) come riportato di seguito:

   ```
   aws configure
   ```

   Quando viene richiesto, fornire le seguenti informazioni:

   ```
   AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
   AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   Default region name [None]: us-east-2
   Default output format [None]: json
   ```

1. Creare un nuovo profilo per il ruolo nel file `.aws/config` in Unix o Linux, oppure nel file `C:\Users\USERNAME\.aws\config` in Windows. L'esempio seguente crea un profilo denominato `prodaccess` che passa al ruolo `ProductionAccessRole` nell'account `123456789012`. L'ARN del ruolo si ottiene dall'amministratore dell'account che ha creato il ruolo. Quando questo profilo viene richiamato, AWS CLI utilizza le credenziali di `source_profile` per richiedere le credenziali per il ruolo. Per questo motivo, l'identità alla quale viene fatto riferimento come `source_profile` deve disporre delle autorizzazioni `sts:AssumeRole` per il ruolo specificato in `role_arn`.

   ```
   [profile prodaccess]
       role_arn = arn:aws:iam::123456789012:role/ProductionAccessRole
       source_profile = default
   ```

1. Dopo aver creato il nuovo profilo, qualsiasi AWS CLI comando che specifica il parametro `--profile prodaccess` viene eseguito con le autorizzazioni associate al ruolo IAM `ProductionAccessRole` anziché con l'utente predefinito.

   ```
   aws iam list-users --profile prodaccess
   ```

   Questo comando funziona se le autorizzazioni assegnate a `ProductionAccessRole` permettono di elencare gli utenti nell'account attuale AWS .

1. Per ripristinare le autorizzazioni concesse dalle credenziali originali, eseguire i comandi senza il parametro `--profile`. Torna a AWS CLI utilizzare le credenziali nel tuo profilo predefinito, in cui hai configurato. [Step 1](#step-configure-default)

Per ulteriori informazioni, consulta [Assunzione di un ruolo](https://docs.aws.amazon.com/cli/latest/userguide/cli-roles.html) nella *Guida per l'utente di AWS Command Line Interface *.

## Scenario di esempio: consentire a un ruolo del profilo dell'istanza di passare a un ruolo in un altro account
<a name="switch-role-cli-scenario-ec2-instance"></a>

Immagina di usarne due Account AWS e di voler consentire a un'applicazione in esecuzione su un'istanza Amazon EC2 di eseguire [AWS CLI](https://aws.amazon.com/cli/)comandi in entrambi gli account. Supponiamo che l'istanza EC2 esista nell'account `111111111111`. Tale istanza include il ruolo del profilo dell'istanza `abcd` che consente all'applicazione di eseguire attività Amazon S3 di sola lettura nel bucket `amzn-s3-demo-bucket1` all'interno dello stesso account `111111111111`. Tuttavia, l'applicazione deve anche poter assumere il ruolo tra più account `efgh` per eseguire attività nell'account `222222222222`. A questo scopo, il ruolo del profilo dell'istanza EC2 `abcd` deve disporre della policy di autorizzazioni seguente:

***Policy di autorizzazioni del ruolo `abcd` 111111111111 dell'account***

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAccountLevelS3Actions",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Sid": "AllowListAndReadS3ActionOnMyBucket",
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1/*",
                "arn:aws:s3:::amzn-s3-demo-bucket1"
            ]
        },
        {
            "Sid": "AllowIPToAssumeCrossAccountRole",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::222222222222:role/efgh"
        }
    ]
}
```

------

Supponiamo che il ruolo tra account `efgh` consenta attività Amazon S3 di sola lettura nel bucket `amzn-s3-demo-bucket2` all'interno dello stesso account `222222222222`. A tale scopo, il ruolo tra account `efgh` deve disporre della seguente policy di autorizzazioni:

***Policy di autorizzazioni del ruolo `efgh` 222222222222 dell'account***

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAccountLevelS3Actions",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Sid": "AllowListAndReadS3ActionOnMyBucket",
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket2/*",
                "arn:aws:s3:::amzn-s3-demo-bucket2"
            ]
        }
    ]
}
```

------

Il ruolo `efgh` deve consentire al ruolo del profilo dell'istanza `abcd` di assumerlo. A tale scopo, il ruolo `efgh` deve disporre della seguente policy di attendibilità:

***Policy di attendibilità del ruolo `efgh` dell'account 222222222222***

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "efghTrustPolicy",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {"AWS": "arn:aws:iam::111111111111:role/abcd"}
        }
    ]
}
```

------

Per eseguire quindi AWS CLI i comandi nell'account`222222222222`, è necessario aggiornare il file di configurazione CLI. Identifica il ruolo `efgh` come il "profilo" e il ruolo del profilo dell'istanza EC2 `abcd` come "origine delle credenziali" nel file di configurazione di AWS CLI . I comandi della CLI vengono quindi eseguiti con le autorizzazioni del ruolo `efgh`, non il ruolo `abcd` originale.

**Nota**  
Per motivi di sicurezza, è possibile utilizzare AWS CloudTrail per controllare l'uso dei ruoli nell'account. Per distinguere tra le sessioni di ruolo quando un ruolo viene utilizzato da diversi responsabili nei CloudTrail log, è possibile utilizzare il nome della sessione di ruolo. Quando AWS CLI assume un ruolo per conto di un utente come descritto in questo argomento, viene creato automaticamente un nome di sessione di ruolo come. `AWS-CLI-session-nnnnnnnn` *nnnnnnnn*Ecco un numero intero che rappresenta l'ora espressa in [Unix Epoch Time](http://wikipedia.org/wiki/Unix_time) (il numero di secondi trascorsi dalla mezzanotte UTC del 1° gennaio 1970). *Per ulteriori informazioni, consultate [CloudTrail Event Reference](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/eventreference.html) nella Guida per l'utente.AWS CloudTrail *

**Per consentire a un ruolo del profilo dell'istanza EC2 di passare a un ruolo tra account (AWS CLI)**

1. Non è necessario configurare un profilo predefinito della CLI. Al contrario, puoi caricare le credenziali dai metadati del profilo dell'istanza EC2. Crea un nuovo profilo per il ruolo nel file `.aws/config`. L'esempio seguente crea un profilo `instancecrossaccount` che passa al ruolo `efgh` nell'account `222222222222`. Quando questo profilo viene richiamato, AWS CLI utilizza le credenziali dei metadati del profilo dell'istanza EC2 per richiedere le credenziali per il ruolo. Per questo motivo, il ruolo del profilo dell'istanza EC2 deve disporre delle autorizzazioni `sts:AssumeRole` per il ruolo specificato nel `role_arn`.

   ```
   [profile instancecrossaccount]
   role_arn = arn:aws:iam::222222222222:role/efgh
   credential_source = Ec2InstanceMetadata
   ```

1. Dopo aver creato il nuovo profilo, qualsiasi AWS CLI comando che specifica il parametro `--profile instancecrossaccount` viene eseguito con le autorizzazioni associate al `efgh` ruolo nell'account. `222222222222`

   ```
   aws s3 ls amzn-s3-demo-bucket2 --profile instancecrossaccount
   ```

   Questo comando funziona se le autorizzazioni che vengono assegnate al ruolo `efgh` consentono di elencare gli utenti nell' Account AWS corrente.

1. Per tornare alle autorizzazioni del profilo dell'istanza EC2 originale nell'account `111111111111`, esegui i comandi della CLI senza il parametro `--profile`.

Per ulteriori informazioni, consulta [Assunzione di un ruolo](https://docs.aws.amazon.com/cli/latest/userguide/cli-roles.html) nella *Guida per l'utente di AWS Command Line Interface *.

# Passare a un ruolo IAM (Tools for Windows PowerShell)
<a name="id_roles_use_switch-role-twp"></a>

Un *ruolo* specifica un set di autorizzazioni da utilizzare per accedere alle risorse AWS necessarie. In questo senso, è simile a un [utente in AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) (IAM). Quando effettui l'accesso come utente, ottieni uno specifico set di autorizzazioni. Tuttavia, non accedi a un ruolo, ma una volta effettuato l'accesso puoi passare a un ruolo. Ciò consente di accantonare temporaneamente le autorizzazioni utente originali e usufruire invece delle autorizzazioni assegnate al ruolo. Il ruolo può trovarsi nel tuo account o in qualsiasi altro Account AWS. Per ulteriori informazioni sui ruoli e i relativi vantaggi e su come crearli e configurarli, consulta [Ruoli IAM](id_roles.md) e [Creazione di ruoli IAM](id_roles_create.md).

**Importante**  
Le autorizzazioni dell'utente IAM e di qualsiasi ruolo a cui si passa non sono cumulative. Un solo set di autorizzazioni è attivo alla volta. Quando passi a un ruolo, lasci temporaneamente le autorizzazioni utente e utilizzi le autorizzazioni assegnate al ruolo. Quando lasci il ruolo, le autorizzazioni utente vengono automaticamente ripristinate.

Questa sezione descrive come cambiare ruoli quando utilizzi la riga di comando con gli AWS Tools for Windows PowerShell.

Immagina di avere un account nell'ambiente di sviluppo e di dover occasionalmente lavorare con l'ambiente di produzione dalla riga di comando utilizzando gli [strumenti per Windows PowerShell](https://aws.amazon.com/powershell/). Disponi già di un set di credenziali con chiave di accesso. Può trattarsi di una coppia di chiavi di accesso assegnata all'utente IAM standard. In alternativa, se hai effettuato l’accesso come principale federato SAML o OIDC, può trattarsi della coppia di chiavi di accesso per il ruolo inizialmente assegnato. Puoi utilizzare queste credenziali per eseguire il cmdlet `Use-STSRole` che passa l'ARN di un nuovo ruolo come parametro. Il comando restituisce le credenziali di sicurezza temporanee per il ruolo richiesto. È quindi possibile utilizzare tali credenziali nei PowerShell comandi successivi con le autorizzazioni del ruolo per accedere alle risorse in produzione. Mentre utilizzi il ruolo, non puoi utilizzare le autorizzazioni utente dell'account di sviluppo perché è attivo un solo set di autorizzazioni alla volta.

**Nota**  
Per motivi di sicurezza, gli amministratori possono [esaminare AWS CloudTrail i registri](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds) per scoprire chi ha eseguito un'azione in. AWS L'amministratore potrebbe richiedere di specificare una identità di origine o un nome della sessione del ruolo quando si assume il ruolo. Per ulteriori informazioni, consultare [`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity) e [`sts:RoleSessionName`](reference_policies_iam-condition-keys.md#ck_rolesessionname).

Tutte le chiavi di accesso e i token sono solo esempi e non possono essere utilizzati come mostrato. Sostituiscili con i valori appropriati del tuo ambiente reale.

**Per passare a un ruolo (Strumenti per Windows) PowerShell**

1. Apri un PowerShell prompt dei comandi e configura il profilo predefinito per utilizzare la chiave di accesso del tuo attuale utente IAM o del tuo ruolo federato. Se in precedenza hai utilizzato gli Strumenti per Windows PowerShell, probabilmente l'operazione è già stata eseguita. Tieni presente che è possibile cambiare ruolo solo se hai effettuato l'accesso come utente IAM e non come Utente root dell'account AWS.

   ```
   PS C:\> Set-AWSCredentials -AccessKey AKIAIOSFODNN7EXAMPLE -SecretKey wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY -StoreAs MyMainUserProfile
   PS C:\> Initialize-AWSDefaults -ProfileName MyMainUserProfile -Region us-east-2
   ```

   Per ulteriori informazioni, vedere [Utilizzo AWS delle credenziali](https://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html) nella *Guida per l'AWS Strumenti per PowerShell utente*.

1. Per recuperare le credenziali per il nuovo ruolo, eseguire il comando seguente per passare al ruolo `RoleName` nell'account 123456789012. L'ARN del ruolo si ottiene dall'amministratore dell'account che ha creato il ruolo. Il comando richiede di fornire anche un nome di sessione. È possibile selezionare qualsiasi testo. Il comando seguente richiede le credenziali e quindi acquisisce l'oggetto proprietà `Credentials` dall'oggetto risultati restituiti e lo memorizza nella variabile `$Creds`.

   ```
   PS C:\> $Creds = (Use-STSRole -RoleArn "arn:aws:iam::123456789012:role/RoleName" -RoleSessionName "MyRoleSessionName").Credentials
   ```

   `$Creds` è un oggetto che ora contiene gli elementi `AccessKeyId`, `SecretAccessKey` e `SessionToken` necessari nelle fasi successive. I seguenti comandi di esempio illustrano valori tipici:

   ```
   PS C:\> $Creds.AccessKeyId
   AKIAIOSFODNN7EXAMPLE
   
   PS C:\> $Creds.SecretAccessKey
   wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   
   PS C:\> $Creds.SessionToken
   AQoDYXdzEGcaEXAMPLE2gsYULo+Im5ZEXAMPLEeYjs1M2FUIgIJx9tQqNMBEXAMPLECvSRyh0FW7jEXAMPLEW+vE/7s1HRp
   XviG7b+qYf4nD00EXAMPLEmj4wxS04L/uZEXAMPLECihzFB5lTYLto9dyBgSDyEXAMPLE9/g7QRUhZp4bqbEXAMPLENwGPy
   Oj59pFA4lNKCIkVgkREXAMPLEjlzxQ7y52gekeVEXAMPLEDiB9ST3UuysgsKdEXAMPLE1TVastU1A0SKFEXAMPLEiywCC/C
   s8EXAMPLEpZgOs+6hz4AP4KEXAMPLERbASP+4eZScEXAMPLEsnf87eNhyDHq6ikBQ==
   
   PS C:\> $Creds.Expiration
   Thursday, June 18, 2018 2:28:31 PM
   ```

1. Per utilizzare queste credenziali per ogni successivo comando, includerle con il parametro `-Credential`. Ad esempio, il comando seguente utilizza le credenziali del ruolo e funziona solo se al ruolo viene concessa l'autorizzazione `iam:ListRoles` grazie alla quale può quindi eseguire il cmdlet `Get-IAMRoles`:

   ```
           PS C:\> get-iamroles -Credential $Creds
   ```

1. Per tornare alle credenziali originali, è sufficiente interrompere l'utilizzo del `-Credentials $Creds` parametro e consentire PowerShell il ripristino delle credenziali archiviate nel profilo predefinito.

# Passa a un ruolo IAM (AWS API)
<a name="id_roles_use_switch-role-api"></a>

Un *ruolo* specifica un set di autorizzazioni da utilizzare per accedere alle risorse di AWS . In questo senso, è simile a un [utente IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html). Un principale (persona o applicazione) assume il ruolo di ricevere le autorizzazioni temporanee per svolgere le attività richieste e interagire con AWS le risorse. Il ruolo può trovarsi nel tuo account o in qualsiasi altro Account AWS. Per ulteriori informazioni sui ruoli e i relativi vantaggi e su come crearli e configurarli, consulta [Ruoli IAM](id_roles.md) e [Creazione di ruoli IAM](id_roles_create.md). Per informazioni sui diversi metodi che si possono utilizzare per assumere un ruolo, consulta [Metodi per assumere un ruolo](id_roles_manage-assume.md).

**Importante**  
Le autorizzazioni dell'utente IAM e di qualsiasi ruolo assunto non sono cumulative. Un solo set di autorizzazioni è attivo alla volta. Quando si assume un ruolo, si lascia temporaneamente l'utente precedente o le autorizzazioni del ruolo e si lavora con le autorizzazioni assegnate al ruolo. Quando lasci il ruolo, le autorizzazioni originali vengono automaticamente ripristinate.

Per assumere un ruolo, un'applicazione chiama l'operazione AWS STS [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API e passa l'ARN del ruolo da utilizzare. L'operazione crea una nuova sessione con le credenziali temporanee. Questa sessione ha le stesse autorizzazioni delle policy basate su identità per quel ruolo. 

Quando chiami [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html), puoi passare facoltativamente [policy di sessione](access_policies.md#policies_session) inline o gestite. Le policy di sessione sono policy avanzate che vengono passate come un parametro quando si crea a livello di programmazione una sessione di credenziali temporanee per un ruolo o per una sessione dell’utente federato. Puoi passare un singolo documento della policy di sessione inline JSON utilizzando il parametro `Policy`. Puoi utilizzare il parametro `PolicyArns` per specificare fino a 10 policy di sessione gestite. Le autorizzazioni della sessione risultanti sono l'intersezione delle policy basate sull'identità dell'entità e delle policy di sessione. Le policy di sessione sono utili quando occorre fornire le credenziali temporanee del ruolo a un'altra persona, che potrà usare le credenziali temporanee del ruolo nelle chiamate API AWS successive, per accedere alle risorse nell'account che possiede il ruolo. Non è possibile utilizzare policy di sessione per concedere autorizzazioni maggiori rispetto a quelle consentite dalla policy basata su identità. Per ulteriori informazioni su come AWS determina le autorizzazioni effettive di un ruolo, consulta. [Logica di valutazione delle policy](reference_policies_evaluation-logic.md) 

![\[PermissionsWhenPassingRoles_Diagramma\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/role_passed_policy_permissions.png)


Puoi effettuare una chiamata `AssumeRole` quando hai effettuato l’accesso come utente IAM oppure come [utente autenticato esternamente](id_roles_providers.md) ([SAML](id_roles_providers_saml.md) o [OIDC](id_roles_providers_oidc.md)) che sta già utilizzando un ruolo. Puoi anche utilizzare una [*concatenazione dei ruoli*](id_roles.md#iam-term-role-chaining) ovvero usare un ruolo per definirne un secondo. Non è possibile assumere un ruolo quando si è effettuato l'accesso come Utente root dell'account AWS.

Come impostazione predefinita, la sessione del ruolo dura un'ora. Quando assumi questo ruolo utilizzando le operazioni AWS STS [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API, puoi specificare un valore per il `DurationSeconds` parametro. Questo valore può variare da 900 secondi (15 minuti) fino alla durata massima della sessione per il ruolo. Per informazioni su come visualizzare il valore massimo per il ruolo, consulta [Aggiornamento della durata massima della sessione per un ruolo](id_roles_update-role-settings.md#id_roles_update-session-duration). 

Se scegli di ricorrere alla concatenazione dei ruoli, la durata della sessione è limitata a un'ora. Se successivamente utilizzi il parametro `DurationSeconds` per fornire un valore superiore a un'ora, l'operazione ha esito negativo.

**Nota**  
Per motivi di sicurezza, gli amministratori possono [esaminare AWS CloudTrail i log](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds) per scoprire chi ha eseguito un'azione in. AWS L'amministratore potrebbe richiedere di specificare una identità di origine o un nome della sessione del ruolo quando si assume il ruolo. Per ulteriori informazioni, consultare [`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity) e [`sts:RoleSessionName`](reference_policies_iam-condition-keys.md#ck_rolesessionname).

Gli esempi di codice seguenti mostrano come creare un utente e assumere un ruolo.

**avvertimento**  
Per evitare rischi per la sicurezza, non utilizzare gli utenti IAM per l’autenticazione quando sviluppi software creato ad hoc o lavori con dati reali. Utilizza invece la federazione con un provider di identità come [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html).
+ Crea un utente che non disponga di autorizzazioni.
+ Crea un ruolo che conceda l’autorizzazione per elencare i bucket Amazon S3 per l’account.
+ Aggiungi una policy per consentire all’utente di assumere il ruolo.
+ Assumi il ruolo ed elenca i bucket S3 utilizzando le credenziali temporanee, quindi ripulisci le risorse.

------
#### [ .NET ]

**SDK per .NET**  
 C'è altro su. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel [Repository di esempi di codice AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3/IAM#code-examples). 

```
global using Amazon.IdentityManagement;
global using Amazon.S3;
global using Amazon.SecurityToken;
global using IAMActions;
global using IamScenariosCommon;
global using Microsoft.Extensions.DependencyInjection;
global using Microsoft.Extensions.Hosting;
global using Microsoft.Extensions.Logging;
global using Microsoft.Extensions.Logging.Console;
global using Microsoft.Extensions.Logging.Debug;


namespace IAMActions;

public class IAMWrapper
{
    private readonly IAmazonIdentityManagementService _IAMService;

    /// <summary>
    /// Constructor for the IAMWrapper class.
    /// </summary>
    /// <param name="IAMService">An IAM client object.</param>
    public IAMWrapper(IAmazonIdentityManagementService IAMService)
    {
        _IAMService = IAMService;
    }

    /// <summary>
    /// Attach an IAM policy to a role.
    /// </summary>
    /// <param name="policyArn">The policy to attach.</param>
    /// <param name="roleName">The role that the policy will be attached to.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> AttachRolePolicyAsync(string policyArn, string roleName)
    {
        var response = await _IAMService.AttachRolePolicyAsync(new AttachRolePolicyRequest
        {
            PolicyArn = policyArn,
            RoleName = roleName,
        });

        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Create an IAM access key for a user.
    /// </summary>
    /// <param name="userName">The username for which to create the IAM access
    /// key.</param>
    /// <returns>The AccessKey.</returns>
    public async Task<AccessKey> CreateAccessKeyAsync(string userName)
    {
        var response = await _IAMService.CreateAccessKeyAsync(new CreateAccessKeyRequest
        {
            UserName = userName,
        });

        return response.AccessKey;

    }


    /// <summary>
    /// Create an IAM policy.
    /// </summary>
    /// <param name="policyName">The name to give the new IAM policy.</param>
    /// <param name="policyDocument">The policy document for the new policy.</param>
    /// <returns>The new IAM policy object.</returns>
    public async Task<ManagedPolicy> CreatePolicyAsync(string policyName, string policyDocument)
    {
        var response = await _IAMService.CreatePolicyAsync(new CreatePolicyRequest
        {
            PolicyDocument = policyDocument,
            PolicyName = policyName,
        });

        return response.Policy;
    }


    /// <summary>
    /// Create a new IAM role.
    /// </summary>
    /// <param name="roleName">The name of the IAM role.</param>
    /// <param name="rolePolicyDocument">The name of the IAM policy document
    /// for the new role.</param>
    /// <returns>The Amazon Resource Name (ARN) of the role.</returns>
    public async Task<string> CreateRoleAsync(string roleName, string rolePolicyDocument)
    {
        var request = new CreateRoleRequest
        {
            RoleName = roleName,
            AssumeRolePolicyDocument = rolePolicyDocument,
        };

        var response = await _IAMService.CreateRoleAsync(request);
        return response.Role.Arn;
    }


    /// <summary>
    /// Create an IAM service-linked role.
    /// </summary>
    /// <param name="serviceName">The name of the AWS Service.</param>
    /// <param name="description">A description of the IAM service-linked role.</param>
    /// <returns>The IAM role that was created.</returns>
    public async Task<Role> CreateServiceLinkedRoleAsync(string serviceName, string description)
    {
        var request = new CreateServiceLinkedRoleRequest
        {
            AWSServiceName = serviceName,
            Description = description
        };

        var response = await _IAMService.CreateServiceLinkedRoleAsync(request);
        return response.Role;
    }


    /// <summary>
    /// Create an IAM user.
    /// </summary>
    /// <param name="userName">The username for the new IAM user.</param>
    /// <returns>The IAM user that was created.</returns>
    public async Task<User> CreateUserAsync(string userName)
    {
        var response = await _IAMService.CreateUserAsync(new CreateUserRequest { UserName = userName });
        return response.User;
    }


    /// <summary>
    /// Delete an IAM user's access key.
    /// </summary>
    /// <param name="accessKeyId">The Id for the IAM access key.</param>
    /// <param name="userName">The username of the user that owns the IAM
    /// access key.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DeleteAccessKeyAsync(string accessKeyId, string userName)
    {
        var response = await _IAMService.DeleteAccessKeyAsync(new DeleteAccessKeyRequest
        {
            AccessKeyId = accessKeyId,
            UserName = userName,
        });

        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Delete an IAM policy.
    /// </summary>
    /// <param name="policyArn">The Amazon Resource Name (ARN) of the policy to
    /// delete.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DeletePolicyAsync(string policyArn)
    {
        var response = await _IAMService.DeletePolicyAsync(new DeletePolicyRequest { PolicyArn = policyArn });
        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Delete an IAM role.
    /// </summary>
    /// <param name="roleName">The name of the IAM role to delete.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DeleteRoleAsync(string roleName)
    {
        var response = await _IAMService.DeleteRoleAsync(new DeleteRoleRequest { RoleName = roleName });
        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Delete an IAM role policy.
    /// </summary>
    /// <param name="roleName">The name of the IAM role.</param>
    /// <param name="policyName">The name of the IAM role policy to delete.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DeleteRolePolicyAsync(string roleName, string policyName)
    {
        var response = await _IAMService.DeleteRolePolicyAsync(new DeleteRolePolicyRequest
        {
            PolicyName = policyName,
            RoleName = roleName,
        });

        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Delete an IAM user.
    /// </summary>
    /// <param name="userName">The username of the IAM user to delete.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DeleteUserAsync(string userName)
    {
        var response = await _IAMService.DeleteUserAsync(new DeleteUserRequest { UserName = userName });

        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Delete an IAM user policy.
    /// </summary>
    /// <param name="policyName">The name of the IAM policy to delete.</param>
    /// <param name="userName">The username of the IAM user.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DeleteUserPolicyAsync(string policyName, string userName)
    {
        var response = await _IAMService.DeleteUserPolicyAsync(new DeleteUserPolicyRequest { PolicyName = policyName, UserName = userName });

        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Detach an IAM policy from an IAM role.
    /// </summary>
    /// <param name="policyArn">The Amazon Resource Name (ARN) of the IAM policy.</param>
    /// <param name="roleName">The name of the IAM role.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DetachRolePolicyAsync(string policyArn, string roleName)
    {
        var response = await _IAMService.DetachRolePolicyAsync(new DetachRolePolicyRequest
        {
            PolicyArn = policyArn,
            RoleName = roleName,
        });

        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Gets the IAM password policy for an AWS account.
    /// </summary>
    /// <returns>The PasswordPolicy for the AWS account.</returns>
    public async Task<PasswordPolicy> GetAccountPasswordPolicyAsync()
    {
        var response = await _IAMService.GetAccountPasswordPolicyAsync(new GetAccountPasswordPolicyRequest());
        return response.PasswordPolicy;
    }


    /// <summary>
    /// Get information about an IAM policy.
    /// </summary>
    /// <param name="policyArn">The IAM policy to retrieve information for.</param>
    /// <returns>The IAM policy.</returns>
    public async Task<ManagedPolicy> GetPolicyAsync(string policyArn)
    {

        var response = await _IAMService.GetPolicyAsync(new GetPolicyRequest { PolicyArn = policyArn });
        return response.Policy;
    }


    /// <summary>
    /// Get information about an IAM role.
    /// </summary>
    /// <param name="roleName">The name of the IAM role to retrieve information
    /// for.</param>
    /// <returns>The IAM role that was retrieved.</returns>
    public async Task<Role> GetRoleAsync(string roleName)
    {
        var response = await _IAMService.GetRoleAsync(new GetRoleRequest
        {
            RoleName = roleName,
        });

        return response.Role;
    }


    /// <summary>
    /// Get information about an IAM user.
    /// </summary>
    /// <param name="userName">The username of the user.</param>
    /// <returns>An IAM user object.</returns>
    public async Task<User> GetUserAsync(string userName)
    {
        var response = await _IAMService.GetUserAsync(new GetUserRequest { UserName = userName });
        return response.User;
    }


    /// <summary>
    /// List the IAM role policies that are attached to an IAM role.
    /// </summary>
    /// <param name="roleName">The IAM role to list IAM policies for.</param>
    /// <returns>A list of the IAM policies attached to the IAM role.</returns>
    public async Task<List<AttachedPolicyType>> ListAttachedRolePoliciesAsync(string roleName)
    {
        var attachedPolicies = new List<AttachedPolicyType>();
        var attachedRolePoliciesPaginator = _IAMService.Paginators.ListAttachedRolePolicies(new ListAttachedRolePoliciesRequest { RoleName = roleName });

        await foreach (var response in attachedRolePoliciesPaginator.Responses)
        {
            attachedPolicies.AddRange(response.AttachedPolicies);
        }

        return attachedPolicies;
    }


    /// <summary>
    /// List IAM groups.
    /// </summary>
    /// <returns>A list of IAM groups.</returns>
    public async Task<List<Group>> ListGroupsAsync()
    {
        var groupsPaginator = _IAMService.Paginators.ListGroups(new ListGroupsRequest());
        var groups = new List<Group>();

        await foreach (var response in groupsPaginator.Responses)
        {
            groups.AddRange(response.Groups);
        }

        return groups;
    }


    /// <summary>
    /// List IAM policies.
    /// </summary>
    /// <returns>A list of the IAM policies.</returns>
    public async Task<List<ManagedPolicy>> ListPoliciesAsync()
    {
        var listPoliciesPaginator = _IAMService.Paginators.ListPolicies(new ListPoliciesRequest());
        var policies = new List<ManagedPolicy>();

        await foreach (var response in listPoliciesPaginator.Responses)
        {
            policies.AddRange(response.Policies);
        }

        return policies;
    }


    /// <summary>
    /// List IAM role policies.
    /// </summary>
    /// <param name="roleName">The IAM role for which to list IAM policies.</param>
    /// <returns>A list of IAM policy names.</returns>
    public async Task<List<string>> ListRolePoliciesAsync(string roleName)
    {
        var listRolePoliciesPaginator = _IAMService.Paginators.ListRolePolicies(new ListRolePoliciesRequest { RoleName = roleName });
        var policyNames = new List<string>();

        await foreach (var response in listRolePoliciesPaginator.Responses)
        {
            policyNames.AddRange(response.PolicyNames);
        }

        return policyNames;
    }


    /// <summary>
    /// List IAM roles.
    /// </summary>
    /// <returns>A list of IAM roles.</returns>
    public async Task<List<Role>> ListRolesAsync()
    {
        var listRolesPaginator = _IAMService.Paginators.ListRoles(new ListRolesRequest());
        var roles = new List<Role>();

        await foreach (var response in listRolesPaginator.Responses)
        {
            roles.AddRange(response.Roles);
        }

        return roles;
    }


    /// <summary>
    /// List SAML authentication providers.
    /// </summary>
    /// <returns>A list of SAML providers.</returns>
    public async Task<List<SAMLProviderListEntry>> ListSAMLProvidersAsync()
    {
        var response = await _IAMService.ListSAMLProvidersAsync(new ListSAMLProvidersRequest());
        return response.SAMLProviderList;
    }


    /// <summary>
    /// List IAM users.
    /// </summary>
    /// <returns>A list of IAM users.</returns>
    public async Task<List<User>> ListUsersAsync()
    {
        var listUsersPaginator = _IAMService.Paginators.ListUsers(new ListUsersRequest());
        var users = new List<User>();

        await foreach (var response in listUsersPaginator.Responses)
        {
            users.AddRange(response.Users);
        }

        return users;
    }


    /// <summary>
    /// Update the inline policy document embedded in a role.
    /// </summary>
    /// <param name="policyName">The name of the policy to embed.</param>
    /// <param name="roleName">The name of the role to update.</param>
    /// <param name="policyDocument">The policy document that defines the role.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> PutRolePolicyAsync(string policyName, string roleName, string policyDocument)
    {
        var request = new PutRolePolicyRequest
        {
            PolicyName = policyName,
            RoleName = roleName,
            PolicyDocument = policyDocument
        };

        var response = await _IAMService.PutRolePolicyAsync(request);
        return response.HttpStatusCode == HttpStatusCode.OK;
    }


    /// <summary>
    /// Add or update an inline policy document that is embedded in an IAM user.
    /// </summary>
    /// <param name="userName">The name of the IAM user.</param>
    /// <param name="policyName">The name of the IAM policy.</param>
    /// <param name="policyDocument">The policy document defining the IAM policy.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> PutUserPolicyAsync(string userName, string policyName, string policyDocument)
    {
        var request = new PutUserPolicyRequest
        {
            UserName = userName,
            PolicyName = policyName,
            PolicyDocument = policyDocument
        };

        var response = await _IAMService.PutUserPolicyAsync(request);
        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }

    /// <summary>
    /// Wait for a new access key to be ready to use.
    /// </summary>
    /// <param name="accessKeyId">The Id of the access key.</param>
    /// <returns>A boolean value indicating the success of the action.</returns>
    public async Task<bool> WaitUntilAccessKeyIsReady(string accessKeyId)
    {
        var keyReady = false;

        do
        {
            try
            {
                var response = await _IAMService.GetAccessKeyLastUsedAsync(
                    new GetAccessKeyLastUsedRequest { AccessKeyId = accessKeyId });
                if (response.UserName is not null)
                {
                    keyReady = true;
                }
            }
            catch (NoSuchEntityException)
            {
                keyReady = false;
            }
        } while (!keyReady);

        return keyReady;
    }
}



using Microsoft.Extensions.Configuration;

namespace IAMBasics;

public class IAMBasics
{
    private static ILogger logger = null!;

    static async Task Main(string[] args)
    {
        // Set up dependency injection for the AWS service.
        using var host = Host.CreateDefaultBuilder(args)
            .ConfigureLogging(logging =>
                logging.AddFilter("System", LogLevel.Debug)
                    .AddFilter<DebugLoggerProvider>("Microsoft", LogLevel.Information)
                    .AddFilter<ConsoleLoggerProvider>("Microsoft", LogLevel.Trace))
            .ConfigureServices((_, services) =>
            services.AddAWSService<IAmazonIdentityManagementService>()
            .AddTransient<IAMWrapper>()
            .AddTransient<UIWrapper>()
            )
            .Build();

        logger = LoggerFactory.Create(builder => { builder.AddConsole(); })
            .CreateLogger<IAMBasics>();


        IConfiguration configuration = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("settings.json") // Load test settings from .json file.
            .AddJsonFile("settings.local.json",
                true) // Optionally load local settings.
            .Build();

        // Values needed for user, role, and policies.
        string userName = configuration["UserName"]!;
        string s3PolicyName = configuration["S3PolicyName"]!;
        string roleName = configuration["RoleName"]!;


        var iamWrapper = host.Services.GetRequiredService<IAMWrapper>();
        var uiWrapper = host.Services.GetRequiredService<UIWrapper>();

        uiWrapper.DisplayBasicsOverview();
        uiWrapper.PressEnter();

        // First create a user. By default, the new user has
        // no permissions.
        uiWrapper.DisplayTitle("Create User");
        Console.WriteLine($"Creating a new user with user name: {userName}.");
        var user = await iamWrapper.CreateUserAsync(userName);
        var userArn = user.Arn;

        Console.WriteLine($"Successfully created user: {userName} with ARN: {userArn}.");
        uiWrapper.WaitABit(15, "Now let's wait for the user to be ready for use.");

        // Define a role policy document that allows the new user
        // to assume the role.
        string assumeRolePolicyDocument = "{" +
          "\"Version\": \"2012-10-17\"," +
          "\"Statement\": [{" +
              "\"Effect\": \"Allow\"," +
              "\"Principal\": {" +
              $"	\"AWS\": \"{userArn}\"" +
              "}," +
              "\"Action\": \"sts:AssumeRole\"" +
          "}]" +
        "}";

        // Permissions to list all buckets.
        string policyDocument = "{" +
            "\"Version\": \"2012-10-17\"," +
            "	\"Statement\" : [{" +
                "	\"Action\" : [\"s3:ListAllMyBuckets\"]," +
                "	\"Effect\" : \"Allow\"," +
                "	\"Resource\" : \"*\"" +
            "}]" +
        "}";

        // Create an AccessKey for the user.
        uiWrapper.DisplayTitle("Create access key");
        Console.WriteLine("Now let's create an access key for the new user.");
        var accessKey = await iamWrapper.CreateAccessKeyAsync(userName);

        var accessKeyId = accessKey.AccessKeyId;
        var secretAccessKey = accessKey.SecretAccessKey;

        Console.WriteLine($"We have created the access key with Access key id: {accessKeyId}.");

        Console.WriteLine("Now let's wait until the IAM access key is ready to use.");
        var keyReady = await iamWrapper.WaitUntilAccessKeyIsReady(accessKeyId);

        // Now try listing the Amazon Simple Storage Service (Amazon S3)
        // buckets. This should fail at this point because the user doesn't
        // have permissions to perform this task.
        uiWrapper.DisplayTitle("Try to display Amazon S3 buckets");
        Console.WriteLine("Now let's try to display a list of the user's Amazon S3 buckets.");
        var s3Client1 = new AmazonS3Client(accessKeyId, secretAccessKey);
        var stsClient1 = new AmazonSecurityTokenServiceClient(accessKeyId, secretAccessKey);

        var s3Wrapper = new S3Wrapper(s3Client1, stsClient1);
        var buckets = await s3Wrapper.ListMyBucketsAsync();

        Console.WriteLine(buckets is null
            ? "As expected, the call to list the buckets has returned a null list."
            : "Something went wrong. This shouldn't have worked.");

        uiWrapper.PressEnter();

        uiWrapper.DisplayTitle("Create IAM role");
        Console.WriteLine($"Creating the role: {roleName}");

        // Creating an IAM role to allow listing the S3 buckets. A role name
        // is not case sensitive and must be unique to the account for which it
        // is created.
        var roleArn = await iamWrapper.CreateRoleAsync(roleName, assumeRolePolicyDocument);

        uiWrapper.PressEnter();

        // Create a policy with permissions to list S3 buckets.
        uiWrapper.DisplayTitle("Create IAM policy");
        Console.WriteLine($"Creating the policy: {s3PolicyName}");
        Console.WriteLine("with permissions to list the Amazon S3 buckets for the account.");
        var policy = await iamWrapper.CreatePolicyAsync(s3PolicyName, policyDocument);

        // Wait 15 seconds for the IAM policy to be available.
        uiWrapper.WaitABit(15, "Waiting for the policy to be available.");

        // Attach the policy to the role you created earlier.
        uiWrapper.DisplayTitle("Attach new IAM policy");
        Console.WriteLine("Now let's attach the policy to the role.");
        await iamWrapper.AttachRolePolicyAsync(policy.Arn, roleName);

        // Wait 15 seconds for the role to be updated.
        Console.WriteLine();
        uiWrapper.WaitABit(15, "Waiting for the policy to be attached.");

        // Use the AWS Security Token Service (AWS STS) to have the user
        // assume the role we created.
        var stsClient2 = new AmazonSecurityTokenServiceClient(accessKeyId, secretAccessKey);

        // Wait for the new credentials to become valid.
        uiWrapper.WaitABit(10, "Waiting for the credentials to be valid.");

        var assumedRoleCredentials = await s3Wrapper.AssumeS3RoleAsync("temporary-session", roleArn);

        // Try again to list the buckets using the client created with
        // the new user's credentials. This time, it should work.
        var s3Client2 = new AmazonS3Client(assumedRoleCredentials);

        s3Wrapper.UpdateClients(s3Client2, stsClient2);

        buckets = await s3Wrapper.ListMyBucketsAsync();

        uiWrapper.DisplayTitle("List Amazon S3 buckets");
        Console.WriteLine("This time we should have buckets to list.");
        if (buckets is not null)
        {
            buckets.ForEach(bucket =>
            {
                Console.WriteLine($"{bucket.BucketName} created: {bucket.CreationDate}");
            });
        }

        uiWrapper.PressEnter();

        // Now clean up all the resources used in the example.
        uiWrapper.DisplayTitle("Clean up resources");
        Console.WriteLine("Thank you for watching. The IAM Basics demo is complete.");
        Console.WriteLine("Please wait while we clean up the resources we created.");

        await iamWrapper.DetachRolePolicyAsync(policy.Arn, roleName);

        await iamWrapper.DeletePolicyAsync(policy.Arn);

        await iamWrapper.DeleteRoleAsync(roleName);

        await iamWrapper.DeleteAccessKeyAsync(accessKeyId, userName);

        await iamWrapper.DeleteUserAsync(userName);

        uiWrapper.PressEnter();

        Console.WriteLine("All done cleaning up our resources. Thank you for your patience.");
    }
}


namespace IamScenariosCommon;

using System.Net;

/// <summary>
/// A class to perform Amazon Simple Storage Service (Amazon S3) actions for
/// the IAM Basics scenario.
/// </summary>
public class S3Wrapper
{
    private IAmazonS3 _s3Service;
    private IAmazonSecurityTokenService _stsService;

    /// <summary>
    /// Constructor for the S3Wrapper class.
    /// </summary>
    /// <param name="s3Service">An Amazon S3 client object.</param>
    /// <param name="stsService">An AWS Security Token Service (AWS STS)
    /// client object.</param>
    public S3Wrapper(IAmazonS3 s3Service, IAmazonSecurityTokenService stsService)
    {
        _s3Service = s3Service;
        _stsService = stsService;
    }

    /// <summary>
    /// Assumes an AWS Identity and Access Management (IAM) role that allows
    /// Amazon S3 access for the current session.
    /// </summary>
    /// <param name="roleSession">A string representing the current session.</param>
    /// <param name="roleToAssume">The name of the IAM role to assume.</param>
    /// <returns>Credentials for the newly assumed IAM role.</returns>
    public async Task<Credentials> AssumeS3RoleAsync(string roleSession, string roleToAssume)
    {
        // Create the request to use with the AssumeRoleAsync call.
        var request = new AssumeRoleRequest()
        {
            RoleSessionName = roleSession,
            RoleArn = roleToAssume,
        };

        var response = await _stsService.AssumeRoleAsync(request);

        return response.Credentials;
    }


    /// <summary>
    /// Delete an S3 bucket.
    /// </summary>
    /// <param name="bucketName">Name of the S3 bucket to delete.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DeleteBucketAsync(string bucketName)
    {
        var result = await _s3Service.DeleteBucketAsync(new DeleteBucketRequest { BucketName = bucketName });
        return result.HttpStatusCode == HttpStatusCode.OK;
    }

    /// <summary>
    /// List the buckets that are owned by the user's account.
    /// </summary>
    /// <returns>Async Task.</returns>
    public async Task<List<S3Bucket>?> ListMyBucketsAsync()
    {
        try
        {
            // Get the list of buckets accessible by the new user.
            var response = await _s3Service.ListBucketsAsync();

            return response.Buckets;
        }
        catch (AmazonS3Exception ex)
        {
            // Something else went wrong. Display the error message.
            Console.WriteLine($"Error: {ex.Message}");
            return null;
        }
    }

    /// <summary>
    /// Create a new S3 bucket.
    /// </summary>
    /// <param name="bucketName">The name for the new bucket.</param>
    /// <returns>A Boolean value indicating whether the action completed
    /// successfully.</returns>
    public async Task<bool> PutBucketAsync(string bucketName)
    {
        var response = await _s3Service.PutBucketAsync(new PutBucketRequest { BucketName = bucketName });
        return response.HttpStatusCode == HttpStatusCode.OK;
    }

    /// <summary>
    /// Update the client objects with new client objects. This is available
    /// because the scenario uses the methods of this class without and then
    /// with the proper permissions to list S3 buckets.
    /// </summary>
    /// <param name="s3Service">The Amazon S3 client object.</param>
    /// <param name="stsService">The AWS STS client object.</param>
    public void UpdateClients(IAmazonS3 s3Service, IAmazonSecurityTokenService stsService)
    {
        _s3Service = s3Service;
        _stsService = stsService;
    }
}


namespace IamScenariosCommon;

public class UIWrapper
{
    public readonly string SepBar = new('-', Console.WindowWidth);

    /// <summary>
    /// Show information about the IAM Groups scenario.
    /// </summary>
    public void DisplayGroupsOverview()
    {
        Console.Clear();

        DisplayTitle("Welcome to the IAM Groups Demo");
        Console.WriteLine("This example application does the following:");
        Console.WriteLine("\t1. Creates an Amazon Identity and Access Management (IAM) group.");
        Console.WriteLine("\t2. Adds an IAM policy to the IAM group giving it full access to Amazon S3.");
        Console.WriteLine("\t3. Creates a new IAM user.");
        Console.WriteLine("\t4. Creates an IAM access key for the user.");
        Console.WriteLine("\t5. Adds the user to the IAM group.");
        Console.WriteLine("\t6. Lists the buckets on the account.");
        Console.WriteLine("\t7. Proves that the user has full Amazon S3 access by creating a bucket.");
        Console.WriteLine("\t8. List the buckets again to show the new bucket.");
        Console.WriteLine("\t9. Cleans up all the resources created.");
    }

    /// <summary>
    /// Show information about the IAM Basics scenario.
    /// </summary>
    public void DisplayBasicsOverview()
    {
        Console.Clear();

        DisplayTitle("Welcome to IAM Basics");
        Console.WriteLine("This example application does the following:");
        Console.WriteLine("\t1. Creates a user with no permissions.");
        Console.WriteLine("\t2. Creates a role and policy that grant s3:ListAllMyBuckets permission.");
        Console.WriteLine("\t3. Grants the user permission to assume the role.");
        Console.WriteLine("\t4. Creates an S3 client object as the user and tries to list buckets (this will fail).");
        Console.WriteLine("\t5. Gets temporary credentials by assuming the role.");
        Console.WriteLine("\t6. Creates a new S3 client object with the temporary credentials and lists the buckets (this will succeed).");
        Console.WriteLine("\t7. Deletes all the resources.");
    }

    /// <summary>
    /// Display a message and wait until the user presses enter.
    /// </summary>
    public void PressEnter()
    {
        Console.Write("\nPress <Enter> to continue. ");
        _ = Console.ReadLine();
        Console.WriteLine();
    }

    /// <summary>
    /// Pad a string with spaces to center it on the console display.
    /// </summary>
    /// <param name="strToCenter">The string to be centered.</param>
    /// <returns>The padded string.</returns>
    public string CenterString(string strToCenter)
    {
        var padAmount = (Console.WindowWidth - strToCenter.Length) / 2;
        var leftPad = new string(' ', padAmount);
        return $"{leftPad}{strToCenter}";
    }

    /// <summary>
    /// Display a line of hyphens, the centered text of the title, and another
    /// line of hyphens.
    /// </summary>
    /// <param name="strTitle">The string to be displayed.</param>
    public void DisplayTitle(string strTitle)
    {
        Console.WriteLine(SepBar);
        Console.WriteLine(CenterString(strTitle));
        Console.WriteLine(SepBar);
    }

    /// <summary>
    /// Display a countdown and wait for a number of seconds.
    /// </summary>
    /// <param name="numSeconds">The number of seconds to wait.</param>
    public void WaitABit(int numSeconds, string msg)
    {
        Console.WriteLine(msg);

        // Wait for the requested number of seconds.
        for (int i = numSeconds; i > 0; i--)
        {
            System.Threading.Thread.Sleep(1000);
            Console.Write($"{i}...");
        }

        PressEnter();
    }
}
```
+ Per informazioni dettagliate sull'API, consulta i seguenti argomenti nella *documentazione di riferimento dell’API AWS SDK per .NET *.
  + [AttachRolePolicy](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/AttachRolePolicy)
  + [CreateAccessKey](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/CreateAccessKey)
  + [CreatePolicy](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/CreatePolicy)
  + [CreateRole](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/CreateRole)
  + [CreateUser](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/CreateUser)
  + [DeleteAccessKey](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/DeleteAccessKey)
  + [DeletePolicy](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/DeletePolicy)
  + [DeleteRole](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/DeleteRole)
  + [DeleteUser](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/DeleteUser)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/DeleteUserPolicy)
  + [DetachRolePolicy](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/DetachRolePolicy)
  + [PutUserPolicy](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/PutUserPolicy)

------
#### [ Bash ]

**AWS CLI con lo script Bash**  
 C'è altro da fare. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel [Repository di esempi di codice AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/aws-cli/bash-linux/iam#code-examples). 

```
###############################################################################
# function iam_create_user_assume_role
#
# Scenario to create an IAM user, create an IAM role, and apply the role to the user.
#
#     "IAM access" permissions are needed to run this code.
#     "STS assume role" permissions are needed to run this code. (Note: It might be necessary to
#           create a custom policy).
#
# Returns:
#       0 - If successful.
#       1 - If an error occurred.
###############################################################################
function iam_create_user_assume_role() {
  {
    if [ "$IAM_OPERATIONS_SOURCED" != "True" ]; then

      source ./iam_operations.sh
    fi
  }

  echo_repeat "*" 88
  echo "Welcome to the IAM create user and assume role demo."
  echo
  echo "This demo will create an IAM user, create an IAM role, and apply the role to the user."
  echo_repeat "*" 88
  echo

  echo -n "Enter a name for a new IAM user: "
  get_input
  user_name=$get_input_result

  local user_arn
  user_arn=$(iam_create_user -u "$user_name")

  # shellcheck disable=SC2181
  if [[ ${?} == 0 ]]; then
    echo "Created demo IAM user named $user_name"
  else
    errecho "$user_arn"
    errecho "The user failed to create. This demo will exit."
    return 1
  fi

  local access_key_response
  access_key_response=$(iam_create_user_access_key -u "$user_name")
  # shellcheck disable=SC2181
  if [[ ${?} != 0 ]]; then
    errecho "The access key failed to create. This demo will exit."
    clean_up "$user_name"
    return 1
  fi

  IFS=$'\t ' read -r -a access_key_values <<<"$access_key_response"
  local key_name=${access_key_values[0]}
  local key_secret=${access_key_values[1]}

  echo "Created access key named $key_name"

  echo "Wait 10 seconds for the user to be ready."
  sleep 10
  echo_repeat "*" 88
  echo

  local iam_role_name
  iam_role_name=$(generate_random_name "test-role")
  echo "Creating a role named $iam_role_name with user $user_name as the principal."

  local assume_role_policy_document="{
    \"Version\": \"2012-10-17\",
    \"Statement\": [{
        \"Effect\": \"Allow\",
        \"Principal\": {\"AWS\": \"$user_arn\"},
        \"Action\": \"sts:AssumeRole\"
        }]
    }"

  local role_arn
  role_arn=$(iam_create_role -n "$iam_role_name" -p "$assume_role_policy_document")

  # shellcheck disable=SC2181
  if [ ${?} == 0 ]; then
    echo "Created IAM role named $iam_role_name"
  else
    errecho "The role failed to create. This demo will exit."
    clean_up "$user_name" "$key_name"
    return 1
  fi

  local policy_name
  policy_name=$(generate_random_name "test-policy")
  local policy_document="{
                \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Action\": \"s3:ListAllMyBuckets\",
                    \"Resource\": \"arn:aws:s3:::*\"}]}"

  local policy_arn
  policy_arn=$(iam_create_policy -n "$policy_name" -p "$policy_document")
  # shellcheck disable=SC2181
  if [[ ${?} == 0 ]]; then
    echo "Created  IAM policy named $policy_name"
  else
    errecho "The policy failed to create."
    clean_up "$user_name" "$key_name" "$iam_role_name"
    return 1
  fi

  if (iam_attach_role_policy -n "$iam_role_name" -p "$policy_arn"); then
    echo "Attached policy $policy_arn to role $iam_role_name"
  else
    errecho "The policy failed to attach."
    clean_up "$user_name" "$key_name" "$iam_role_name" "$policy_arn"
    return 1
  fi

  local assume_role_policy_document="{
                \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Action\": \"sts:AssumeRole\",
                    \"Resource\": \"$role_arn\"}]}"

  local assume_role_policy_name
  assume_role_policy_name=$(generate_random_name "test-assume-role-")

  # shellcheck disable=SC2181
  local assume_role_policy_arn
  assume_role_policy_arn=$(iam_create_policy -n "$assume_role_policy_name" -p "$assume_role_policy_document")
  # shellcheck disable=SC2181
  if [ ${?} == 0 ]; then
    echo "Created  IAM policy named $assume_role_policy_name for sts assume role"
  else
    errecho "The policy failed to create."
    clean_up "$user_name" "$key_name" "$iam_role_name" "$policy_arn" "$policy_arn"
    return 1
  fi

  echo "Wait 10 seconds to give AWS time to propagate these new resources and connections."
  sleep 10
  echo_repeat "*" 88
  echo

  echo "Try to list buckets without the new user assuming the role."
  echo_repeat "*" 88
  echo

  # Set the environment variables for the created user.
  # bashsupport disable=BP2001
  export AWS_ACCESS_KEY_ID=$key_name
  # bashsupport disable=BP2001
  export AWS_SECRET_ACCESS_KEY=$key_secret

  local buckets
  buckets=$(s3_list_buckets)

  # shellcheck disable=SC2181
  if [ ${?} == 0 ]; then
    local bucket_count
    bucket_count=$(echo "$buckets" | wc -w | xargs)
    echo "There are $bucket_count buckets in the account. This should not have happened."
  else
    errecho "Because the role with permissions has not been assumed, listing buckets failed."
  fi

  echo
  echo_repeat "*" 88
  echo "Now assume the role $iam_role_name and list the buckets."
  echo_repeat "*" 88
  echo

  local credentials

  credentials=$(sts_assume_role -r "$role_arn" -n "AssumeRoleDemoSession")
  # shellcheck disable=SC2181
  if [ ${?} == 0 ]; then
    echo "Assumed role $iam_role_name"
  else
    errecho "Failed to assume role."
    export AWS_ACCESS_KEY_ID=""
    export AWS_SECRET_ACCESS_KEY=""
    clean_up "$user_name" "$key_name" "$iam_role_name" "$policy_arn" "$policy_arn" "$assume_role_policy_arn"
    return 1
  fi

  IFS=$'\t ' read -r -a credentials <<<"$credentials"

  export AWS_ACCESS_KEY_ID=${credentials[0]}
  export AWS_SECRET_ACCESS_KEY=${credentials[1]}
  # bashsupport disable=BP2001
  export AWS_SESSION_TOKEN=${credentials[2]}

  buckets=$(s3_list_buckets)

  # shellcheck disable=SC2181
  if [ ${?} == 0 ]; then
    local bucket_count
    bucket_count=$(echo "$buckets" | wc -w | xargs)
    echo "There are $bucket_count buckets in the account. Listing buckets succeeded because of "
    echo "the assumed role."
  else
    errecho "Failed to list buckets. This should not happen."
    export AWS_ACCESS_KEY_ID=""
    export AWS_SECRET_ACCESS_KEY=""
    export AWS_SESSION_TOKEN=""
    clean_up "$user_name" "$key_name" "$iam_role_name" "$policy_arn" "$policy_arn" "$assume_role_policy_arn"
    return 1
  fi

  local result=0
  export AWS_ACCESS_KEY_ID=""
  export AWS_SECRET_ACCESS_KEY=""

  echo
  echo_repeat "*" 88
  echo "The created resources will now be deleted."
  echo_repeat "*" 88
  echo

  clean_up "$user_name" "$key_name" "$iam_role_name" "$policy_arn" "$policy_arn" "$assume_role_policy_arn"

  # shellcheck disable=SC2181
  if [[ ${?} -ne 0 ]]; then
    result=1
  fi

  return $result
}
```
Le funzioni IAM utilizzate in questo scenario.  

```
###############################################################################
# function iam_user_exists
#
# This function checks to see if the specified AWS Identity and Access Management (IAM) user already exists.
#
# Parameters:
#       $1 - The name of the IAM user to check.
#
# Returns:
#       0 - If the user already exists.
#       1 - If the user doesn't exist.
###############################################################################
function iam_user_exists() {
  local user_name
  user_name=$1

  # Check whether the IAM user already exists.
  # We suppress all output - we're interested only in the return code.

  local errors
  errors=$(aws iam get-user \
    --user-name "$user_name" 2>&1 >/dev/null)

  local error_code=${?}

  if [[ $error_code -eq 0 ]]; then
    return 0 # 0 in Bash script means true.
  else
    if [[ $errors != *"error"*"(NoSuchEntity)"* ]]; then
      aws_cli_error_log $error_code
      errecho "Error calling iam get-user $errors"
    fi

    return 1 # 1 in Bash script means false.
  fi
}

###############################################################################
# function iam_create_user
#
# This function creates the specified IAM user, unless
# it already exists.
#
# Parameters:
#       -u user_name  -- The name of the user to create.
#
# Returns:
#       The ARN of the user.
#     And:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_create_user() {
  local user_name response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_create_user"
    echo "Creates an AWS Identity and Access Management (IAM) user. You must supply a username:"
    echo "  -u user_name    The name of the user. It must be unique within the account."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "u:h" option; do
    case "${option}" in
      u) user_name="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$user_name" ]]; then
    errecho "ERROR: You must provide a username with the -u parameter."
    usage
    return 1
  fi

  iecho "Parameters:\n"
  iecho "    User name:   $user_name"
  iecho ""

  # If the user already exists, we don't want to try to create it.
  if (iam_user_exists "$user_name"); then
    errecho "ERROR: A user with that name already exists in the account."
    return 1
  fi

  response=$(aws iam create-user --user-name "$user_name" \
    --output text \
    --query 'User.Arn')

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports create-user operation failed.$response"
    return 1
  fi

  echo "$response"

  return 0
}

###############################################################################
# function iam_create_user_access_key
#
# This function creates an IAM access key for the specified user.
#
# Parameters:
#       -u user_name -- The name of the IAM user.
#       [-f file_name] -- The optional file name for the access key output.
#
# Returns:
#       [access_key_id access_key_secret]
#     And:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_create_user_access_key() {
  local user_name file_name response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_create_user_access_key"
    echo "Creates an AWS Identity and Access Management (IAM) key pair."
    echo "  -u user_name   The name of the IAM user."
    echo "  [-f file_name]   Optional file name for the access key output."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "u:f:h" option; do
    case "${option}" in
      u) user_name="${OPTARG}" ;;
      f) file_name="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$user_name" ]]; then
    errecho "ERROR: You must provide a username with the -u parameter."
    usage
    return 1
  fi

  response=$(aws iam create-access-key \
    --user-name "$user_name" \
    --output text)

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports create-access-key operation failed.$response"
    return 1
  fi

  if [[ -n "$file_name" ]]; then
    echo "$response" >"$file_name"
  fi

  local key_id key_secret
  # shellcheck disable=SC2086
  key_id=$(echo $response | cut -f 2 -d ' ')
  # shellcheck disable=SC2086
  key_secret=$(echo $response | cut -f 4 -d ' ')

  echo "$key_id $key_secret"

  return 0
}

###############################################################################
# function iam_create_role
#
# This function creates an IAM role.
#
# Parameters:
#       -n role_name -- The name of the IAM role.
#       -p policy_json -- The assume role policy document.
#
# Returns:
#       The ARN of the role.
#     And:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_create_role() {
  local role_name policy_document response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_create_user_access_key"
    echo "Creates an AWS Identity and Access Management (IAM) role."
    echo "  -n role_name   The name of the IAM role."
    echo "  -p policy_json -- The assume role policy document."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "n:p:h" option; do
    case "${option}" in
      n) role_name="${OPTARG}" ;;
      p) policy_document="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$role_name" ]]; then
    errecho "ERROR: You must provide a role name with the -n parameter."
    usage
    return 1
  fi

  if [[ -z "$policy_document" ]]; then
    errecho "ERROR: You must provide a policy document with the -p parameter."
    usage
    return 1
  fi

  response=$(aws iam create-role \
    --role-name "$role_name" \
    --assume-role-policy-document "$policy_document" \
    --output text \
    --query Role.Arn)

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports create-role operation failed.\n$response"
    return 1
  fi

  echo "$response"

  return 0
}

###############################################################################
# function iam_create_policy
#
# This function creates an IAM policy.
#
# Parameters:
#       -n policy_name -- The name of the IAM policy.
#       -p policy_json -- The policy document.
#
# Returns:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_create_policy() {
  local policy_name policy_document response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_create_policy"
    echo "Creates an AWS Identity and Access Management (IAM) policy."
    echo "  -n policy_name   The name of the IAM policy."
    echo "  -p policy_json -- The policy document."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "n:p:h" option; do
    case "${option}" in
      n) policy_name="${OPTARG}" ;;
      p) policy_document="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$policy_name" ]]; then
    errecho "ERROR: You must provide a policy name with the -n parameter."
    usage
    return 1
  fi

  if [[ -z "$policy_document" ]]; then
    errecho "ERROR: You must provide a policy document with the -p parameter."
    usage
    return 1
  fi

  response=$(aws iam create-policy \
    --policy-name "$policy_name" \
    --policy-document "$policy_document" \
    --output text \
    --query Policy.Arn)

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports create-policy operation failed.\n$response"
    return 1
  fi

  echo "$response"
}

###############################################################################
# function iam_attach_role_policy
#
# This function attaches an IAM policy to a tole.
#
# Parameters:
#       -n role_name -- The name of the IAM role.
#       -p policy_ARN -- The IAM policy document ARN..
#
# Returns:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_attach_role_policy() {
  local role_name policy_arn response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_attach_role_policy"
    echo "Attaches an AWS Identity and Access Management (IAM) policy to an IAM role."
    echo "  -n role_name   The name of the IAM role."
    echo "  -p policy_ARN -- The IAM policy document ARN."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "n:p:h" option; do
    case "${option}" in
      n) role_name="${OPTARG}" ;;
      p) policy_arn="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$role_name" ]]; then
    errecho "ERROR: You must provide a role name with the -n parameter."
    usage
    return 1
  fi

  if [[ -z "$policy_arn" ]]; then
    errecho "ERROR: You must provide a policy ARN with the -p parameter."
    usage
    return 1
  fi

  response=$(aws iam attach-role-policy \
    --role-name "$role_name" \
    --policy-arn "$policy_arn")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports attach-role-policy operation failed.\n$response"
    return 1
  fi

  echo "$response"

  return 0
}

###############################################################################
# function iam_detach_role_policy
#
# This function detaches an IAM policy to a tole.
#
# Parameters:
#       -n role_name -- The name of the IAM role.
#       -p policy_ARN -- The IAM policy document ARN..
#
# Returns:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_detach_role_policy() {
  local role_name policy_arn response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_detach_role_policy"
    echo "Detaches an AWS Identity and Access Management (IAM) policy to an IAM role."
    echo "  -n role_name   The name of the IAM role."
    echo "  -p policy_ARN -- The IAM policy document ARN."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "n:p:h" option; do
    case "${option}" in
      n) role_name="${OPTARG}" ;;
      p) policy_arn="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$role_name" ]]; then
    errecho "ERROR: You must provide a role name with the -n parameter."
    usage
    return 1
  fi

  if [[ -z "$policy_arn" ]]; then
    errecho "ERROR: You must provide a policy ARN with the -p parameter."
    usage
    return 1
  fi

  response=$(aws iam detach-role-policy \
    --role-name "$role_name" \
    --policy-arn "$policy_arn")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports detach-role-policy operation failed.\n$response"
    return 1
  fi

  echo "$response"

  return 0
}

###############################################################################
# function iam_delete_policy
#
# This function deletes an IAM policy.
#
# Parameters:
#       -n policy_arn -- The name of the IAM policy arn.
#
# Returns:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_delete_policy() {
  local policy_arn response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_delete_policy"
    echo "Deletes an AWS Identity and Access Management (IAM) policy"
    echo "  -n policy_arn -- The name of the IAM policy arn."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "n:h" option; do
    case "${option}" in
      n) policy_arn="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$policy_arn" ]]; then
    errecho "ERROR: You must provide a policy arn with the -n parameter."
    usage
    return 1
  fi

  iecho "Parameters:\n"
  iecho "    Policy arn:  $policy_arn"
  iecho ""

  response=$(aws iam delete-policy \
    --policy-arn "$policy_arn")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports delete-policy operation failed.\n$response"
    return 1
  fi

  iecho "delete-policy response:$response"
  iecho

  return 0
}

###############################################################################
# function iam_delete_role
#
# This function deletes an IAM role.
#
# Parameters:
#       -n role_name -- The name of the IAM role.
#
# Returns:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_delete_role() {
  local role_name response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_delete_role"
    echo "Deletes an AWS Identity and Access Management (IAM) role"
    echo "  -n role_name -- The name of the IAM role."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "n:h" option; do
    case "${option}" in
      n) role_name="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  echo "role_name:$role_name"
  if [[ -z "$role_name" ]]; then
    errecho "ERROR: You must provide a role name with the -n parameter."
    usage
    return 1
  fi

  iecho "Parameters:\n"
  iecho "    Role name:  $role_name"
  iecho ""

  response=$(aws iam delete-role \
    --role-name "$role_name")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports delete-role operation failed.\n$response"
    return 1
  fi

  iecho "delete-role response:$response"
  iecho

  return 0
}

###############################################################################
# function iam_delete_access_key
#
# This function deletes an IAM access key for the specified IAM user.
#
# Parameters:
#       -u user_name  -- The name of the user.
#       -k access_key -- The access key to delete.
#
# Returns:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_delete_access_key() {
  local user_name access_key response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_delete_access_key"
    echo "Deletes an AWS Identity and Access Management (IAM) access key for the specified IAM user"
    echo "  -u user_name    The name of the user."
    echo "  -k access_key   The access key to delete."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "u:k:h" option; do
    case "${option}" in
      u) user_name="${OPTARG}" ;;
      k) access_key="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$user_name" ]]; then
    errecho "ERROR: You must provide a username with the -u parameter."
    usage
    return 1
  fi

  if [[ -z "$access_key" ]]; then
    errecho "ERROR: You must provide an access key with the -k parameter."
    usage
    return 1
  fi

  iecho "Parameters:\n"
  iecho "    Username:   $user_name"
  iecho "    Access key:   $access_key"
  iecho ""

  response=$(aws iam delete-access-key \
    --user-name "$user_name" \
    --access-key-id "$access_key")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports delete-access-key operation failed.\n$response"
    return 1
  fi

  iecho "delete-access-key response:$response"
  iecho

  return 0
}

###############################################################################
# function iam_delete_user
#
# This function deletes the specified IAM user.
#
# Parameters:
#       -u user_name  -- The name of the user to create.
#
# Returns:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_delete_user() {
  local user_name response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_delete_user"
    echo "Deletes an AWS Identity and Access Management (IAM) user. You must supply a username:"
    echo "  -u user_name    The name of the user."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "u:h" option; do
    case "${option}" in
      u) user_name="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$user_name" ]]; then
    errecho "ERROR: You must provide a username with the -u parameter."
    usage
    return 1
  fi

  iecho "Parameters:\n"
  iecho "    User name:   $user_name"
  iecho ""

  # If the user does not exist, we don't want to try to delete it.
  if (! iam_user_exists "$user_name"); then
    errecho "ERROR: A user with that name does not exist in the account."
    return 1
  fi

  response=$(aws iam delete-user \
    --user-name "$user_name")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports delete-user operation failed.$response"
    return 1
  fi

  iecho "delete-user response:$response"
  iecho

  return 0
}
```
+ Per informazioni dettagliate sull’API, consulta i seguenti argomenti nella *documentazione di riferimento dei comandi della AWS CLI *.
  + [AttachRolePolicy](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/AttachRolePolicy)
  + [CreateAccessKey](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/CreateAccessKey)
  + [CreatePolicy](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/CreatePolicy)
  + [CreateRole](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/CreateRole)
  + [CreateUser](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/CreateUser)
  + [DeleteAccessKey](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/DeleteAccessKey)
  + [DeletePolicy](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/DeletePolicy)
  + [DeleteRole](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/DeleteRole)
  + [DeleteUser](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/DeleteUser)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/DeleteUserPolicy)
  + [DetachRolePolicy](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/DetachRolePolicy)
  + [PutUserPolicy](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/PutUserPolicy)

------
#### [ C\$1\$1 ]

**SDK per C\$1\$1**  
 C'è dell'altro GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel [Repository di esempi di codice AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/iam#code-examples). 

```
namespace AwsDoc {
    namespace IAM {
  
        //! Cleanup by deleting created entities.
        /*!
          \sa DeleteCreatedEntities
          \param client: IAM client.
          \param role: IAM role.
          \param user: IAM user.
          \param policy: IAM policy.
        */
        static bool DeleteCreatedEntities(const Aws::IAM::IAMClient &client,
                                          const Aws::IAM::Model::Role &role,
                                          const Aws::IAM::Model::User &user,
                                          const Aws::IAM::Model::Policy &policy);
    }

    static const int LIST_BUCKETS_WAIT_SEC = 20;

    static const char ALLOCATION_TAG[] = "example_code";
}

//! Scenario to create an IAM user, create an IAM role, and apply the role to the user.
// "IAM access" permissions are needed to run this code.
// "STS assume role" permissions are needed to run this code. (Note: It might be necessary to
//    create a custom policy).
/*!
  \sa iamCreateUserAssumeRoleScenario
  \param clientConfig: Aws client configuration.
  \return bool: Successful completion.
*/
bool AwsDoc::IAM::iamCreateUserAssumeRoleScenario(
        const Aws::Client::ClientConfiguration &clientConfig) {

    Aws::IAM::IAMClient client(clientConfig);
    Aws::IAM::Model::User user;
    Aws::IAM::Model::Role role;
    Aws::IAM::Model::Policy policy;

    // 1. Create a user.
    {
        Aws::IAM::Model::CreateUserRequest request;
        Aws::String uuid = Aws::Utils::UUID::RandomUUID();
        Aws::String userName = "iam-demo-user-" +
                               Aws::Utils::StringUtils::ToLower(uuid.c_str());
        request.SetUserName(userName);

        Aws::IAM::Model::CreateUserOutcome outcome = client.CreateUser(request);
        if (!outcome.IsSuccess()) {
            std::cout << "Error creating IAM user " << userName << ":" <<
                      outcome.GetError().GetMessage() << std::endl;
            return false;
        }
        else {
            std::cout << "Successfully created IAM user " << userName << std::endl;
        }

        user = outcome.GetResult().GetUser();
    }

    // 2. Create a role.
    {
        // Get the IAM user for the current client in order to access its ARN.
        Aws::String iamUserArn;
        {
            Aws::IAM::Model::GetUserRequest request;
            Aws::IAM::Model::GetUserOutcome outcome = client.GetUser(request);
            if (!outcome.IsSuccess()) {
                std::cerr << "Error getting Iam user. " <<
                          outcome.GetError().GetMessage() << std::endl;

                DeleteCreatedEntities(client, role, user, policy);
                return false;
            }
            else {
                std::cout << "Successfully retrieved Iam user "
                          << outcome.GetResult().GetUser().GetUserName()
                          << std::endl;
            }

            iamUserArn = outcome.GetResult().GetUser().GetArn();
        }

        Aws::IAM::Model::CreateRoleRequest request;

        Aws::String uuid = Aws::Utils::UUID::RandomUUID();
        Aws::String roleName = "iam-demo-role-" +
                               Aws::Utils::StringUtils::ToLower(uuid.c_str());
        request.SetRoleName(roleName);

        // Build policy document for role.
        Aws::Utils::Document jsonStatement;
        jsonStatement.WithString("Effect", "Allow");

        Aws::Utils::Document jsonPrincipal;
        jsonPrincipal.WithString("AWS", iamUserArn);
        jsonStatement.WithObject("Principal", jsonPrincipal);
        jsonStatement.WithString("Action", "sts:AssumeRole");
        jsonStatement.WithObject("Condition", Aws::Utils::Document());

        Aws::Utils::Document policyDocument;
        policyDocument.WithString("Version", "2012-10-17");

        Aws::Utils::Array<Aws::Utils::Document> statements(1);
        statements[0] = jsonStatement;
        policyDocument.WithArray("Statement", statements);

        std::cout << "Setting policy for role\n   "
                  << policyDocument.View().WriteCompact() << std::endl;

        // Set role policy document as JSON string.
        request.SetAssumeRolePolicyDocument(policyDocument.View().WriteCompact());

        Aws::IAM::Model::CreateRoleOutcome outcome = client.CreateRole(request);
        if (!outcome.IsSuccess()) {
            std::cerr << "Error creating role. " <<
                      outcome.GetError().GetMessage() << std::endl;

            DeleteCreatedEntities(client, role, user, policy);
            return false;
        }
        else {
            std::cout << "Successfully created a role with name " << roleName
                      << std::endl;
        }

        role = outcome.GetResult().GetRole();
    }

    // 3. Create an IAM policy.
    {
        Aws::IAM::Model::CreatePolicyRequest request;
        Aws::String uuid = Aws::Utils::UUID::RandomUUID();
        Aws::String policyName = "iam-demo-policy-" +
                                 Aws::Utils::StringUtils::ToLower(uuid.c_str());
        request.SetPolicyName(policyName);

        // Build IAM policy document.
        Aws::Utils::Document jsonStatement;
        jsonStatement.WithString("Effect", "Allow");
        jsonStatement.WithString("Action", "s3:ListAllMyBuckets");
        jsonStatement.WithString("Resource", "arn:aws:s3:::*");

        Aws::Utils::Document policyDocument;
        policyDocument.WithString("Version", "2012-10-17");

        Aws::Utils::Array<Aws::Utils::Document> statements(1);
        statements[0] = jsonStatement;
        policyDocument.WithArray("Statement", statements);

        std::cout << "Creating a policy.\n   " << policyDocument.View().WriteCompact()
                  << std::endl;

        // Set IAM policy document as JSON string.
        request.SetPolicyDocument(policyDocument.View().WriteCompact());

        Aws::IAM::Model::CreatePolicyOutcome outcome = client.CreatePolicy(request);
        if (!outcome.IsSuccess()) {
            std::cerr << "Error creating policy. " <<
                      outcome.GetError().GetMessage() << std::endl;

            DeleteCreatedEntities(client, role, user, policy);
            return false;
        }
        else {
            std::cout << "Successfully created a policy with name, " << policyName <<
                      "." << std::endl;
        }

        policy = outcome.GetResult().GetPolicy();
    }

    // 4. Assume the new role using the AWS Security Token Service (STS).
    Aws::STS::Model::Credentials credentials;
    {
        Aws::STS::STSClient stsClient(clientConfig);

        Aws::STS::Model::AssumeRoleRequest request;
        request.SetRoleArn(role.GetArn());
        Aws::String uuid = Aws::Utils::UUID::RandomUUID();
        Aws::String roleSessionName = "iam-demo-role-session-" +
                                      Aws::Utils::StringUtils::ToLower(uuid.c_str());
        request.SetRoleSessionName(roleSessionName);

        Aws::STS::Model::AssumeRoleOutcome assumeRoleOutcome;

        // Repeatedly call AssumeRole, because there is often a delay
        // before the role is available to be assumed.
        // Repeat at most 20 times when access is denied.
        int count = 0;
        while (true) {
            assumeRoleOutcome = stsClient.AssumeRole(request);
            if (!assumeRoleOutcome.IsSuccess()) {
                if (count > 20 ||
                    assumeRoleOutcome.GetError().GetErrorType() !=
                    Aws::STS::STSErrors::ACCESS_DENIED) {
                    std::cerr << "Error assuming role after 20 tries. " <<
                              assumeRoleOutcome.GetError().GetMessage() << std::endl;

                    DeleteCreatedEntities(client, role, user, policy);
                    return false;
                }
                std::this_thread::sleep_for(std::chrono::seconds(1));
            }
            else {
                std::cout << "Successfully assumed the role after " << count
                          << " seconds." << std::endl;
                break;
            }
            count++;
        }

        credentials = assumeRoleOutcome.GetResult().GetCredentials();
    }


    // 5. List objects in the bucket (This should fail).
    {
        Aws::S3::S3Client s3Client(
                Aws::Auth::AWSCredentials(credentials.GetAccessKeyId(),
                                          credentials.GetSecretAccessKey(),
                                          credentials.GetSessionToken()),
                Aws::MakeShared<Aws::S3::S3EndpointProvider>(ALLOCATION_TAG),
                clientConfig);
        Aws::S3::Model::ListBucketsOutcome listBucketsOutcome = s3Client.ListBuckets();
        if (!listBucketsOutcome.IsSuccess()) {
            if (listBucketsOutcome.GetError().GetErrorType() !=
                Aws::S3::S3Errors::ACCESS_DENIED) {
                std::cerr << "Could not lists buckets. " <<
                          listBucketsOutcome.GetError().GetMessage() << std::endl;
            }
            else {
                std::cout
                        << "Access to list buckets denied because privileges have not been applied."
                        << std::endl;
            }
        }
        else {
            std::cerr
                    << "Successfully retrieved bucket lists when this should not happen."
                    << std::endl;
        }
    }

    // 6. Attach the policy to the role.
    {
        Aws::IAM::Model::AttachRolePolicyRequest request;
        request.SetRoleName(role.GetRoleName());
        request.WithPolicyArn(policy.GetArn());

        Aws::IAM::Model::AttachRolePolicyOutcome outcome = client.AttachRolePolicy(
                request);
        if (!outcome.IsSuccess()) {
            std::cerr << "Error creating policy. " <<
                      outcome.GetError().GetMessage() << std::endl;

            DeleteCreatedEntities(client, role, user, policy);
            return false;
        }
        else {
            std::cout << "Successfully attached the policy with name, "
                      << policy.GetPolicyName() <<
                      ", to the role, " << role.GetRoleName() << "." << std::endl;
        }
    }

    int count = 0;
    // 7. List objects in the bucket (this should succeed).
    // Repeatedly call ListBuckets, because there is often a delay
    // before the policy with ListBucket permissions has been applied to the role.
    // Repeat at most LIST_BUCKETS_WAIT_SEC times when access is denied.
    while (true) {
        Aws::S3::S3Client s3Client(
                Aws::Auth::AWSCredentials(credentials.GetAccessKeyId(),
                                          credentials.GetSecretAccessKey(),
                                          credentials.GetSessionToken()),
                Aws::MakeShared<Aws::S3::S3EndpointProvider>(ALLOCATION_TAG),
                clientConfig);
        Aws::S3::Model::ListBucketsOutcome listBucketsOutcome = s3Client.ListBuckets();
        if (!listBucketsOutcome.IsSuccess()) {
            if ((count > LIST_BUCKETS_WAIT_SEC) ||
                listBucketsOutcome.GetError().GetErrorType() !=
                Aws::S3::S3Errors::ACCESS_DENIED) {
                std::cerr << "Could not lists buckets after " << LIST_BUCKETS_WAIT_SEC << " seconds. " <<
                          listBucketsOutcome.GetError().GetMessage() << std::endl;
                DeleteCreatedEntities(client, role, user, policy);
                return false;
            }

            std::this_thread::sleep_for(std::chrono::seconds(1));
        }
        else {

            std::cout << "Successfully retrieved bucket lists after " << count
                      << " seconds." << std::endl;
            break;
        }
        count++;
    }

    // 8. Delete all the created resources.
    return DeleteCreatedEntities(client, role, user, policy);
}

bool AwsDoc::IAM::DeleteCreatedEntities(const Aws::IAM::IAMClient &client,
                                        const Aws::IAM::Model::Role &role,
                                        const Aws::IAM::Model::User &user,
                                        const Aws::IAM::Model::Policy &policy) {
    bool result = true;
    if (policy.ArnHasBeenSet()) {
        // Detach the policy from the role.
        {
            Aws::IAM::Model::DetachRolePolicyRequest request;
            request.SetPolicyArn(policy.GetArn());
            request.SetRoleName(role.GetRoleName());

            Aws::IAM::Model::DetachRolePolicyOutcome outcome = client.DetachRolePolicy(
                    request);
            if (!outcome.IsSuccess()) {
                std::cerr << "Error Detaching policy from roles. " <<
                          outcome.GetError().GetMessage() << std::endl;
                result = false;
            }
            else {
                std::cout << "Successfully detached the policy with arn "
                          << policy.GetArn()
                          << " from role " << role.GetRoleName() << "." << std::endl;
            }
        }

        // Delete the policy.
        {
            Aws::IAM::Model::DeletePolicyRequest request;
            request.WithPolicyArn(policy.GetArn());

            Aws::IAM::Model::DeletePolicyOutcome outcome = client.DeletePolicy(request);
            if (!outcome.IsSuccess()) {
                std::cerr << "Error deleting policy. " <<
                          outcome.GetError().GetMessage() << std::endl;
                result = false;
            }
            else {
                std::cout << "Successfully deleted the policy with arn "
                          << policy.GetArn() << std::endl;
            }
        }

    }

    if (role.RoleIdHasBeenSet()) {
        // Delete the role.
        Aws::IAM::Model::DeleteRoleRequest request;
        request.SetRoleName(role.GetRoleName());

        Aws::IAM::Model::DeleteRoleOutcome outcome = client.DeleteRole(request);
        if (!outcome.IsSuccess()) {
            std::cerr << "Error deleting role. " <<
                      outcome.GetError().GetMessage() << std::endl;
            result = false;
        }
        else {
            std::cout << "Successfully deleted the role with name "
                      << role.GetRoleName() << std::endl;
        }
    }

    if (user.ArnHasBeenSet()) {
        // Delete the user.
        Aws::IAM::Model::DeleteUserRequest request;
        request.WithUserName(user.GetUserName());

        Aws::IAM::Model::DeleteUserOutcome outcome = client.DeleteUser(request);
        if (!outcome.IsSuccess()) {
            std::cerr << "Error deleting user. " <<
                      outcome.GetError().GetMessage() << std::endl;
            result = false;
        }
        else {
            std::cout << "Successfully deleted the user with name "
                      << user.GetUserName() << std::endl;
        }
    }

    return result;
}
```
+ Per informazioni dettagliate sull'API, consulta i seguenti argomenti nella *documentazione di riferimento dell’API AWS SDK per C\$1\$1 *.
  + [AttachRolePolicy](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/AttachRolePolicy)
  + [CreateAccessKey](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/CreateAccessKey)
  + [CreatePolicy](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/CreatePolicy)
  + [CreateRole](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/CreateRole)
  + [CreateUser](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/CreateUser)
  + [DeleteAccessKey](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/DeleteAccessKey)
  + [DeletePolicy](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/DeletePolicy)
  + [DeleteRole](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/DeleteRole)
  + [DeleteUser](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/DeleteUser)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/DeleteUserPolicy)
  + [DetachRolePolicy](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/DetachRolePolicy)
  + [PutUserPolicy](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/PutUserPolicy)

------
#### [ Go ]

**SDK per Go V2**  
 C'è dell'altro GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel [Repository di esempi di codice AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/gov2/iam#code-examples). 
Esegui uno scenario interattivo al prompt dei comandi.  

```
import (
	"context"
	"errors"
	"fmt"
	"log"
	"math/rand"
	"strings"
	"time"

	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/config"
	"github.com/aws/aws-sdk-go-v2/credentials"
	"github.com/aws/aws-sdk-go-v2/service/iam"
	"github.com/aws/aws-sdk-go-v2/service/iam/types"
	"github.com/aws/aws-sdk-go-v2/service/s3"
	"github.com/aws/aws-sdk-go-v2/service/sts"
	"github.com/aws/smithy-go"
	"github.com/awsdocs/aws-doc-sdk-examples/gov2/demotools"
	"github.com/awsdocs/aws-doc-sdk-examples/gov2/iam/actions"
)

// AssumeRoleScenario shows you how to use the AWS Identity and Access Management (IAM)
// service to perform the following actions:
//
//  1. Create a user who has no permissions.
//  2. Create a role that grants permission to list Amazon Simple Storage Service
//     (Amazon S3) buckets for the account.
//  3. Add a policy to let the user assume the role.
//  4. Try and fail to list buckets without permissions.
//  5. Assume the role and list S3 buckets using temporary credentials.
//  6. Delete the policy, role, and user.
type AssumeRoleScenario struct {
	sdkConfig      aws.Config
	accountWrapper actions.AccountWrapper
	policyWrapper  actions.PolicyWrapper
	roleWrapper    actions.RoleWrapper
	userWrapper    actions.UserWrapper
	questioner     demotools.IQuestioner
	helper         IScenarioHelper
	isTestRun      bool
}

// NewAssumeRoleScenario constructs an AssumeRoleScenario instance from a configuration.
// It uses the specified config to get an IAM client and create wrappers for the actions
// used in the scenario.
func NewAssumeRoleScenario(sdkConfig aws.Config, questioner demotools.IQuestioner,
	helper IScenarioHelper) AssumeRoleScenario {
	iamClient := iam.NewFromConfig(sdkConfig)
	return AssumeRoleScenario{
		sdkConfig:      sdkConfig,
		accountWrapper: actions.AccountWrapper{IamClient: iamClient},
		policyWrapper:  actions.PolicyWrapper{IamClient: iamClient},
		roleWrapper:    actions.RoleWrapper{IamClient: iamClient},
		userWrapper:    actions.UserWrapper{IamClient: iamClient},
		questioner:     questioner,
		helper:         helper,
	}
}

// addTestOptions appends the API options specified in the original configuration to
// another configuration. This is used to attach the middleware stubber to clients
// that are constructed during the scenario, which is needed for unit testing.
func (scenario AssumeRoleScenario) addTestOptions(scenarioConfig *aws.Config) {
	if scenario.isTestRun {
		scenarioConfig.APIOptions = append(scenarioConfig.APIOptions, scenario.sdkConfig.APIOptions...)
	}
}

// Run runs the interactive scenario.
func (scenario AssumeRoleScenario) Run(ctx context.Context) {
	defer func() {
		if r := recover(); r != nil {
			log.Printf("Something went wrong with the demo.\n")
			log.Println(r)
		}
	}()

	log.Println(strings.Repeat("-", 88))
	log.Println("Welcome to the AWS Identity and Access Management (IAM) assume role demo.")
	log.Println(strings.Repeat("-", 88))

	user := scenario.CreateUser(ctx)
	accessKey := scenario.CreateAccessKey(ctx, user)
	role := scenario.CreateRoleAndPolicies(ctx, user)
	noPermsConfig := scenario.ListBucketsWithoutPermissions(ctx, accessKey)
	scenario.ListBucketsWithAssumedRole(ctx, noPermsConfig, role)
	scenario.Cleanup(ctx, user, role)

	log.Println(strings.Repeat("-", 88))
	log.Println("Thanks for watching!")
	log.Println(strings.Repeat("-", 88))
}

// CreateUser creates a new IAM user. This user has no permissions.
func (scenario AssumeRoleScenario) CreateUser(ctx context.Context) *types.User {
	log.Println("Let's create an example user with no permissions.")
	userName := scenario.questioner.Ask("Enter a name for the example user:", demotools.NotEmpty{})
	user, err := scenario.userWrapper.GetUser(ctx, userName)
	if err != nil {
		panic(err)
	}
	if user == nil {
		user, err = scenario.userWrapper.CreateUser(ctx, userName)
		if err != nil {
			panic(err)
		}
		log.Printf("Created user %v.\n", *user.UserName)
	} else {
		log.Printf("User %v already exists.\n", *user.UserName)
	}
	log.Println(strings.Repeat("-", 88))
	return user
}

// CreateAccessKey creates an access key for the user.
func (scenario AssumeRoleScenario) CreateAccessKey(ctx context.Context, user *types.User) *types.AccessKey {
	accessKey, err := scenario.userWrapper.CreateAccessKeyPair(ctx, *user.UserName)
	if err != nil {
		panic(err)
	}
	log.Printf("Created access key %v for your user.", *accessKey.AccessKeyId)
	log.Println("Waiting a few seconds for your user to be ready...")
	scenario.helper.Pause(10)
	log.Println(strings.Repeat("-", 88))
	return accessKey
}

// CreateRoleAndPolicies creates a policy that grants permission to list S3 buckets for
// the current account and attaches the policy to a newly created role. It also adds an
// inline policy to the specified user that grants the user permission to assume the role.
func (scenario AssumeRoleScenario) CreateRoleAndPolicies(ctx context.Context, user *types.User) *types.Role {
	log.Println("Let's create a role and policy that grant permission to list S3 buckets.")
	scenario.questioner.Ask("Press Enter when you're ready.")
	listBucketsRole, err := scenario.roleWrapper.CreateRole(ctx, scenario.helper.GetName(), *user.Arn)
	if err != nil {
		panic(err)
	}
	log.Printf("Created role %v.\n", *listBucketsRole.RoleName)
	listBucketsPolicy, err := scenario.policyWrapper.CreatePolicy(
		ctx, scenario.helper.GetName(), []string{"s3:ListAllMyBuckets"}, "arn:aws:s3:::*")
	if err != nil {
		panic(err)
	}
	log.Printf("Created policy %v.\n", *listBucketsPolicy.PolicyName)
	err = scenario.roleWrapper.AttachRolePolicy(ctx, *listBucketsPolicy.Arn, *listBucketsRole.RoleName)
	if err != nil {
		panic(err)
	}
	log.Printf("Attached policy %v to role %v.\n", *listBucketsPolicy.PolicyName,
		*listBucketsRole.RoleName)
	err = scenario.userWrapper.CreateUserPolicy(ctx, *user.UserName, scenario.helper.GetName(),
		[]string{"sts:AssumeRole"}, *listBucketsRole.Arn)
	if err != nil {
		panic(err)
	}
	log.Printf("Created an inline policy for user %v that lets the user assume the role.\n",
		*user.UserName)
	log.Println("Let's give AWS a few seconds to propagate these new resources and connections...")
	scenario.helper.Pause(10)
	log.Println(strings.Repeat("-", 88))
	return listBucketsRole
}

// ListBucketsWithoutPermissions creates an Amazon S3 client from the user's access key
// credentials and tries to list buckets for the account. Because the user does not have
// permission to perform this action, the action fails.
func (scenario AssumeRoleScenario) ListBucketsWithoutPermissions(ctx context.Context, accessKey *types.AccessKey) *aws.Config {
	log.Println("Let's try to list buckets without permissions. This should return an AccessDenied error.")
	scenario.questioner.Ask("Press Enter when you're ready.")
	noPermsConfig, err := config.LoadDefaultConfig(ctx,
		config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider(
			*accessKey.AccessKeyId, *accessKey.SecretAccessKey, ""),
		))
	if err != nil {
		panic(err)
	}

	// Add test options if this is a test run. This is needed only for testing purposes.
	scenario.addTestOptions(&noPermsConfig)

	s3Client := s3.NewFromConfig(noPermsConfig)
	_, err = s3Client.ListBuckets(ctx, &s3.ListBucketsInput{})
	if err != nil {
		// The SDK for Go does not model the AccessDenied error, so check ErrorCode directly.
		var ae smithy.APIError
		if errors.As(err, &ae) {
			switch ae.ErrorCode() {
			case "AccessDenied":
				log.Println("Got AccessDenied error, which is the expected result because\n" +
					"the ListBuckets call was made without permissions.")
			default:
				log.Println("Expected AccessDenied, got something else.")
				panic(err)
			}
		}
	} else {
		log.Println("Expected AccessDenied error when calling ListBuckets without permissions,\n" +
			"but the call succeeded. Continuing the example anyway...")
	}
	log.Println(strings.Repeat("-", 88))
	return &noPermsConfig
}

// ListBucketsWithAssumedRole performs the following actions:
//
//  1. Creates an AWS Security Token Service (AWS STS) client from the config created from
//     the user's access key credentials.
//  2. Gets temporary credentials by assuming the role that grants permission to list the
//     buckets.
//  3. Creates an Amazon S3 client from the temporary credentials.
//  4. Lists buckets for the account. Because the temporary credentials are generated by
//     assuming the role that grants permission, the action succeeds.
func (scenario AssumeRoleScenario) ListBucketsWithAssumedRole(ctx context.Context, noPermsConfig *aws.Config, role *types.Role) {
	log.Println("Let's assume the role that grants permission to list buckets and try again.")
	scenario.questioner.Ask("Press Enter when you're ready.")
	stsClient := sts.NewFromConfig(*noPermsConfig)
	tempCredentials, err := stsClient.AssumeRole(ctx, &sts.AssumeRoleInput{
		RoleArn:         role.Arn,
		RoleSessionName: aws.String("AssumeRoleExampleSession"),
		DurationSeconds: aws.Int32(900),
	})
	if err != nil {
		log.Printf("Couldn't assume role %v.\n", *role.RoleName)
		panic(err)
	}
	log.Printf("Assumed role %v, got temporary credentials.\n", *role.RoleName)
	assumeRoleConfig, err := config.LoadDefaultConfig(ctx,
		config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider(
			*tempCredentials.Credentials.AccessKeyId,
			*tempCredentials.Credentials.SecretAccessKey,
			*tempCredentials.Credentials.SessionToken),
		),
	)
	if err != nil {
		panic(err)
	}

	// Add test options if this is a test run. This is needed only for testing purposes.
	scenario.addTestOptions(&assumeRoleConfig)

	s3Client := s3.NewFromConfig(assumeRoleConfig)
	result, err := s3Client.ListBuckets(ctx, &s3.ListBucketsInput{})
	if err != nil {
		log.Println("Couldn't list buckets with assumed role credentials.")
		panic(err)
	}
	log.Println("Successfully called ListBuckets with assumed role credentials, \n" +
		"here are some of them:")
	for i := 0; i < len(result.Buckets) && i < 5; i++ {
		log.Printf("\t%v\n", *result.Buckets[i].Name)
	}
	log.Println(strings.Repeat("-", 88))
}

// Cleanup deletes all resources created for the scenario.
func (scenario AssumeRoleScenario) Cleanup(ctx context.Context, user *types.User, role *types.Role) {
	if scenario.questioner.AskBool(
		"Do you want to delete the resources created for this example? (y/n)", "y",
	) {
		policies, err := scenario.roleWrapper.ListAttachedRolePolicies(ctx, *role.RoleName)
		if err != nil {
			panic(err)
		}
		for _, policy := range policies {
			err = scenario.roleWrapper.DetachRolePolicy(ctx, *role.RoleName, *policy.PolicyArn)
			if err != nil {
				panic(err)
			}
			err = scenario.policyWrapper.DeletePolicy(ctx, *policy.PolicyArn)
			if err != nil {
				panic(err)
			}
			log.Printf("Detached policy %v from role %v and deleted the policy.\n",
				*policy.PolicyName, *role.RoleName)
		}
		err = scenario.roleWrapper.DeleteRole(ctx, *role.RoleName)
		if err != nil {
			panic(err)
		}
		log.Printf("Deleted role %v.\n", *role.RoleName)

		userPols, err := scenario.userWrapper.ListUserPolicies(ctx, *user.UserName)
		if err != nil {
			panic(err)
		}
		for _, userPol := range userPols {
			err = scenario.userWrapper.DeleteUserPolicy(ctx, *user.UserName, userPol)
			if err != nil {
				panic(err)
			}
			log.Printf("Deleted policy %v from user %v.\n", userPol, *user.UserName)
		}
		keys, err := scenario.userWrapper.ListAccessKeys(ctx, *user.UserName)
		if err != nil {
			panic(err)
		}
		for _, key := range keys {
			err = scenario.userWrapper.DeleteAccessKey(ctx, *user.UserName, *key.AccessKeyId)
			if err != nil {
				panic(err)
			}
			log.Printf("Deleted access key %v from user %v.\n", *key.AccessKeyId, *user.UserName)
		}
		err = scenario.userWrapper.DeleteUser(ctx, *user.UserName)
		if err != nil {
			panic(err)
		}
		log.Printf("Deleted user %v.\n", *user.UserName)
		log.Println(strings.Repeat("-", 88))
	}

}

// IScenarioHelper abstracts input and wait functions from a scenario so that they
// can be mocked for unit testing.
type IScenarioHelper interface {
	GetName() string
	Pause(secs int)
}

const rMax = 100000

type ScenarioHelper struct {
	Prefix string
	Random *rand.Rand
}

// GetName returns a unique name formed of a prefix and a random number.
func (helper *ScenarioHelper) GetName() string {
	return fmt.Sprintf("%v%v", helper.Prefix, helper.Random.Intn(rMax))
}

// Pause waits for the specified number of seconds.
func (helper ScenarioHelper) Pause(secs int) {
	time.Sleep(time.Duration(secs) * time.Second)
}
```
Definisci una struttura che racchiude le azioni dell’account.  

```
import (
	"context"
	"log"

	"github.com/aws/aws-sdk-go-v2/service/iam"
	"github.com/aws/aws-sdk-go-v2/service/iam/types"
)

// AccountWrapper encapsulates AWS Identity and Access Management (IAM) account actions
// used in the examples.
// It contains an IAM service client that is used to perform account actions.
type AccountWrapper struct {
	IamClient *iam.Client
}



// GetAccountPasswordPolicy gets the account password policy for the current account.
// If no policy has been set, a NoSuchEntityException is error is returned.
func (wrapper AccountWrapper) GetAccountPasswordPolicy(ctx context.Context) (*types.PasswordPolicy, error) {
	var pwPolicy *types.PasswordPolicy
	result, err := wrapper.IamClient.GetAccountPasswordPolicy(ctx,
		&iam.GetAccountPasswordPolicyInput{})
	if err != nil {
		log.Printf("Couldn't get account password policy. Here's why: %v\n", err)
	} else {
		pwPolicy = result.PasswordPolicy
	}
	return pwPolicy, err
}



// ListSAMLProviders gets the SAML providers for the account.
func (wrapper AccountWrapper) ListSAMLProviders(ctx context.Context) ([]types.SAMLProviderListEntry, error) {
	var providers []types.SAMLProviderListEntry
	result, err := wrapper.IamClient.ListSAMLProviders(ctx, &iam.ListSAMLProvidersInput{})
	if err != nil {
		log.Printf("Couldn't list SAML providers. Here's why: %v\n", err)
	} else {
		providers = result.SAMLProviderList
	}
	return providers, err
}
```
Definisci una struttura che racchiude le azioni della policy.  

```
import (
	"context"
	"encoding/json"
	"log"

	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/service/iam"
	"github.com/aws/aws-sdk-go-v2/service/iam/types"
)

// PolicyWrapper encapsulates AWS Identity and Access Management (IAM) policy actions
// used in the examples.
// It contains an IAM service client that is used to perform policy actions.
type PolicyWrapper struct {
	IamClient *iam.Client
}



// ListPolicies gets up to maxPolicies policies.
func (wrapper PolicyWrapper) ListPolicies(ctx context.Context, maxPolicies int32) ([]types.Policy, error) {
	var policies []types.Policy
	result, err := wrapper.IamClient.ListPolicies(ctx, &iam.ListPoliciesInput{
		MaxItems: aws.Int32(maxPolicies),
	})
	if err != nil {
		log.Printf("Couldn't list policies. Here's why: %v\n", err)
	} else {
		policies = result.Policies
	}
	return policies, err
}



// PolicyDocument defines a policy document as a Go struct that can be serialized
// to JSON.
type PolicyDocument struct {
	Version   string
	Statement []PolicyStatement
}

// PolicyStatement defines a statement in a policy document.
type PolicyStatement struct {
	Effect    string
	Action    []string
	Principal map[string]string `json:",omitempty"`
	Resource  *string           `json:",omitempty"`
}

// CreatePolicy creates a policy that grants a list of actions to the specified resource.
// PolicyDocument shows how to work with a policy document as a data structure and
// serialize it to JSON by using Go's JSON marshaler.
func (wrapper PolicyWrapper) CreatePolicy(ctx context.Context, policyName string, actions []string,
	resourceArn string) (*types.Policy, error) {
	var policy *types.Policy
	policyDoc := PolicyDocument{
		Version: "2012-10-17",
		Statement: []PolicyStatement{{
			Effect:   "Allow",
			Action:   actions,
			Resource: aws.String(resourceArn),
		}},
	}
	policyBytes, err := json.Marshal(policyDoc)
	if err != nil {
		log.Printf("Couldn't create policy document for %v. Here's why: %v\n", resourceArn, err)
		return nil, err
	}
	result, err := wrapper.IamClient.CreatePolicy(ctx, &iam.CreatePolicyInput{
		PolicyDocument: aws.String(string(policyBytes)),
		PolicyName:     aws.String(policyName),
	})
	if err != nil {
		log.Printf("Couldn't create policy %v. Here's why: %v\n", policyName, err)
	} else {
		policy = result.Policy
	}
	return policy, err
}



// GetPolicy gets data about a policy.
func (wrapper PolicyWrapper) GetPolicy(ctx context.Context, policyArn string) (*types.Policy, error) {
	var policy *types.Policy
	result, err := wrapper.IamClient.GetPolicy(ctx, &iam.GetPolicyInput{
		PolicyArn: aws.String(policyArn),
	})
	if err != nil {
		log.Printf("Couldn't get policy %v. Here's why: %v\n", policyArn, err)
	} else {
		policy = result.Policy
	}
	return policy, err
}



// DeletePolicy deletes a policy.
func (wrapper PolicyWrapper) DeletePolicy(ctx context.Context, policyArn string) error {
	_, err := wrapper.IamClient.DeletePolicy(ctx, &iam.DeletePolicyInput{
		PolicyArn: aws.String(policyArn),
	})
	if err != nil {
		log.Printf("Couldn't delete policy %v. Here's why: %v\n", policyArn, err)
	}
	return err
}
```
Definisci una struttura che racchiude le azioni del ruolo.  

```
import (
	"context"
	"encoding/json"
	"log"

	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/service/iam"
	"github.com/aws/aws-sdk-go-v2/service/iam/types"
)

// RoleWrapper encapsulates AWS Identity and Access Management (IAM) role actions
// used in the examples.
// It contains an IAM service client that is used to perform role actions.
type RoleWrapper struct {
	IamClient *iam.Client
}



// ListRoles gets up to maxRoles roles.
func (wrapper RoleWrapper) ListRoles(ctx context.Context, maxRoles int32) ([]types.Role, error) {
	var roles []types.Role
	result, err := wrapper.IamClient.ListRoles(ctx,
		&iam.ListRolesInput{MaxItems: aws.Int32(maxRoles)},
	)
	if err != nil {
		log.Printf("Couldn't list roles. Here's why: %v\n", err)
	} else {
		roles = result.Roles
	}
	return roles, err
}



// CreateRole creates a role that trusts a specified user. The trusted user can assume
// the role to acquire its permissions.
// PolicyDocument shows how to work with a policy document as a data structure and
// serialize it to JSON by using Go's JSON marshaler.
func (wrapper RoleWrapper) CreateRole(ctx context.Context, roleName string, trustedUserArn string) (*types.Role, error) {
	var role *types.Role
	trustPolicy := PolicyDocument{
		Version: "2012-10-17",
		Statement: []PolicyStatement{{
			Effect:    "Allow",
			Principal: map[string]string{"AWS": trustedUserArn},
			Action:    []string{"sts:AssumeRole"},
		}},
	}
	policyBytes, err := json.Marshal(trustPolicy)
	if err != nil {
		log.Printf("Couldn't create trust policy for %v. Here's why: %v\n", trustedUserArn, err)
		return nil, err
	}
	result, err := wrapper.IamClient.CreateRole(ctx, &iam.CreateRoleInput{
		AssumeRolePolicyDocument: aws.String(string(policyBytes)),
		RoleName:                 aws.String(roleName),
	})
	if err != nil {
		log.Printf("Couldn't create role %v. Here's why: %v\n", roleName, err)
	} else {
		role = result.Role
	}
	return role, err
}



// GetRole gets data about a role.
func (wrapper RoleWrapper) GetRole(ctx context.Context, roleName string) (*types.Role, error) {
	var role *types.Role
	result, err := wrapper.IamClient.GetRole(ctx,
		&iam.GetRoleInput{RoleName: aws.String(roleName)})
	if err != nil {
		log.Printf("Couldn't get role %v. Here's why: %v\n", roleName, err)
	} else {
		role = result.Role
	}
	return role, err
}



// CreateServiceLinkedRole creates a service-linked role that is owned by the specified service.
func (wrapper RoleWrapper) CreateServiceLinkedRole(ctx context.Context, serviceName string, description string) (
	*types.Role, error) {
	var role *types.Role
	result, err := wrapper.IamClient.CreateServiceLinkedRole(ctx, &iam.CreateServiceLinkedRoleInput{
		AWSServiceName: aws.String(serviceName),
		Description:    aws.String(description),
	})
	if err != nil {
		log.Printf("Couldn't create service-linked role %v. Here's why: %v\n", serviceName, err)
	} else {
		role = result.Role
	}
	return role, err
}



// DeleteServiceLinkedRole deletes a service-linked role.
func (wrapper RoleWrapper) DeleteServiceLinkedRole(ctx context.Context, roleName string) error {
	_, err := wrapper.IamClient.DeleteServiceLinkedRole(ctx, &iam.DeleteServiceLinkedRoleInput{
		RoleName: aws.String(roleName)},
	)
	if err != nil {
		log.Printf("Couldn't delete service-linked role %v. Here's why: %v\n", roleName, err)
	}
	return err
}



// AttachRolePolicy attaches a policy to a role.
func (wrapper RoleWrapper) AttachRolePolicy(ctx context.Context, policyArn string, roleName string) error {
	_, err := wrapper.IamClient.AttachRolePolicy(ctx, &iam.AttachRolePolicyInput{
		PolicyArn: aws.String(policyArn),
		RoleName:  aws.String(roleName),
	})
	if err != nil {
		log.Printf("Couldn't attach policy %v to role %v. Here's why: %v\n", policyArn, roleName, err)
	}
	return err
}



// ListAttachedRolePolicies lists the policies that are attached to the specified role.
func (wrapper RoleWrapper) ListAttachedRolePolicies(ctx context.Context, roleName string) ([]types.AttachedPolicy, error) {
	var policies []types.AttachedPolicy
	result, err := wrapper.IamClient.ListAttachedRolePolicies(ctx, &iam.ListAttachedRolePoliciesInput{
		RoleName: aws.String(roleName),
	})
	if err != nil {
		log.Printf("Couldn't list attached policies for role %v. Here's why: %v\n", roleName, err)
	} else {
		policies = result.AttachedPolicies
	}
	return policies, err
}



// DetachRolePolicy detaches a policy from a role.
func (wrapper RoleWrapper) DetachRolePolicy(ctx context.Context, roleName string, policyArn string) error {
	_, err := wrapper.IamClient.DetachRolePolicy(ctx, &iam.DetachRolePolicyInput{
		PolicyArn: aws.String(policyArn),
		RoleName:  aws.String(roleName),
	})
	if err != nil {
		log.Printf("Couldn't detach policy from role %v. Here's why: %v\n", roleName, err)
	}
	return err
}



// ListRolePolicies lists the inline policies for a role.
func (wrapper RoleWrapper) ListRolePolicies(ctx context.Context, roleName string) ([]string, error) {
	var policies []string
	result, err := wrapper.IamClient.ListRolePolicies(ctx, &iam.ListRolePoliciesInput{
		RoleName: aws.String(roleName),
	})
	if err != nil {
		log.Printf("Couldn't list policies for role %v. Here's why: %v\n", roleName, err)
	} else {
		policies = result.PolicyNames
	}
	return policies, err
}



// DeleteRole deletes a role. All attached policies must be detached before a
// role can be deleted.
func (wrapper RoleWrapper) DeleteRole(ctx context.Context, roleName string) error {
	_, err := wrapper.IamClient.DeleteRole(ctx, &iam.DeleteRoleInput{
		RoleName: aws.String(roleName),
	})
	if err != nil {
		log.Printf("Couldn't delete role %v. Here's why: %v\n", roleName, err)
	}
	return err
}
```
Definisci una struttura che racchiude le azioni dell’utente.  

```
import (
	"context"
	"encoding/json"
	"errors"
	"log"

	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/service/iam"
	"github.com/aws/aws-sdk-go-v2/service/iam/types"
	"github.com/aws/smithy-go"
)

// UserWrapper encapsulates user actions used in the examples.
// It contains an IAM service client that is used to perform user actions.
type UserWrapper struct {
	IamClient *iam.Client
}



// ListUsers gets up to maxUsers number of users.
func (wrapper UserWrapper) ListUsers(ctx context.Context, maxUsers int32) ([]types.User, error) {
	var users []types.User
	result, err := wrapper.IamClient.ListUsers(ctx, &iam.ListUsersInput{
		MaxItems: aws.Int32(maxUsers),
	})
	if err != nil {
		log.Printf("Couldn't list users. Here's why: %v\n", err)
	} else {
		users = result.Users
	}
	return users, err
}



// GetUser gets data about a user.
func (wrapper UserWrapper) GetUser(ctx context.Context, userName string) (*types.User, error) {
	var user *types.User
	result, err := wrapper.IamClient.GetUser(ctx, &iam.GetUserInput{
		UserName: aws.String(userName),
	})
	if err != nil {
		var apiError smithy.APIError
		if errors.As(err, &apiError) {
			switch apiError.(type) {
			case *types.NoSuchEntityException:
				log.Printf("User %v does not exist.\n", userName)
				err = nil
			default:
				log.Printf("Couldn't get user %v. Here's why: %v\n", userName, err)
			}
		}
	} else {
		user = result.User
	}
	return user, err
}



// CreateUser creates a new user with the specified name.
func (wrapper UserWrapper) CreateUser(ctx context.Context, userName string) (*types.User, error) {
	var user *types.User
	result, err := wrapper.IamClient.CreateUser(ctx, &iam.CreateUserInput{
		UserName: aws.String(userName),
	})
	if err != nil {
		log.Printf("Couldn't create user %v. Here's why: %v\n", userName, err)
	} else {
		user = result.User
	}
	return user, err
}



// CreateUserPolicy adds an inline policy to a user. This example creates a policy that
// grants a list of actions on a specified role.
// PolicyDocument shows how to work with a policy document as a data structure and
// serialize it to JSON by using Go's JSON marshaler.
func (wrapper UserWrapper) CreateUserPolicy(ctx context.Context, userName string, policyName string, actions []string,
	roleArn string) error {
	policyDoc := PolicyDocument{
		Version: "2012-10-17",
		Statement: []PolicyStatement{{
			Effect:   "Allow",
			Action:   actions,
			Resource: aws.String(roleArn),
		}},
	}
	policyBytes, err := json.Marshal(policyDoc)
	if err != nil {
		log.Printf("Couldn't create policy document for %v. Here's why: %v\n", roleArn, err)
		return err
	}
	_, err = wrapper.IamClient.PutUserPolicy(ctx, &iam.PutUserPolicyInput{
		PolicyDocument: aws.String(string(policyBytes)),
		PolicyName:     aws.String(policyName),
		UserName:       aws.String(userName),
	})
	if err != nil {
		log.Printf("Couldn't create policy for user %v. Here's why: %v\n", userName, err)
	}
	return err
}



// ListUserPolicies lists the inline policies for the specified user.
func (wrapper UserWrapper) ListUserPolicies(ctx context.Context, userName string) ([]string, error) {
	var policies []string
	result, err := wrapper.IamClient.ListUserPolicies(ctx, &iam.ListUserPoliciesInput{
		UserName: aws.String(userName),
	})
	if err != nil {
		log.Printf("Couldn't list policies for user %v. Here's why: %v\n", userName, err)
	} else {
		policies = result.PolicyNames
	}
	return policies, err
}



// DeleteUserPolicy deletes an inline policy from a user.
func (wrapper UserWrapper) DeleteUserPolicy(ctx context.Context, userName string, policyName string) error {
	_, err := wrapper.IamClient.DeleteUserPolicy(ctx, &iam.DeleteUserPolicyInput{
		PolicyName: aws.String(policyName),
		UserName:   aws.String(userName),
	})
	if err != nil {
		log.Printf("Couldn't delete policy from user %v. Here's why: %v\n", userName, err)
	}
	return err
}



// DeleteUser deletes a user.
func (wrapper UserWrapper) DeleteUser(ctx context.Context, userName string) error {
	_, err := wrapper.IamClient.DeleteUser(ctx, &iam.DeleteUserInput{
		UserName: aws.String(userName),
	})
	if err != nil {
		log.Printf("Couldn't delete user %v. Here's why: %v\n", userName, err)
	}
	return err
}



// CreateAccessKeyPair creates an access key for a user. The returned access key contains
// the ID and secret credentials needed to use the key.
func (wrapper UserWrapper) CreateAccessKeyPair(ctx context.Context, userName string) (*types.AccessKey, error) {
	var key *types.AccessKey
	result, err := wrapper.IamClient.CreateAccessKey(ctx, &iam.CreateAccessKeyInput{
		UserName: aws.String(userName)})
	if err != nil {
		log.Printf("Couldn't create access key pair for user %v. Here's why: %v\n", userName, err)
	} else {
		key = result.AccessKey
	}
	return key, err
}



// DeleteAccessKey deletes an access key from a user.
func (wrapper UserWrapper) DeleteAccessKey(ctx context.Context, userName string, keyId string) error {
	_, err := wrapper.IamClient.DeleteAccessKey(ctx, &iam.DeleteAccessKeyInput{
		AccessKeyId: aws.String(keyId),
		UserName:    aws.String(userName),
	})
	if err != nil {
		log.Printf("Couldn't delete access key %v. Here's why: %v\n", keyId, err)
	}
	return err
}



// ListAccessKeys lists the access keys for the specified user.
func (wrapper UserWrapper) ListAccessKeys(ctx context.Context, userName string) ([]types.AccessKeyMetadata, error) {
	var keys []types.AccessKeyMetadata
	result, err := wrapper.IamClient.ListAccessKeys(ctx, &iam.ListAccessKeysInput{
		UserName: aws.String(userName),
	})
	if err != nil {
		log.Printf("Couldn't list access keys for user %v. Here's why: %v\n", userName, err)
	} else {
		keys = result.AccessKeyMetadata
	}
	return keys, err
}
```
+ Per informazioni dettagliate sull’API, consulta i seguenti argomenti nella *documentazione di riferimento dell’API AWS SDK per Go *.
  + [AttachRolePolicy](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.AttachRolePolicy)
  + [CreateAccessKey](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.CreateAccessKey)
  + [CreatePolicy](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.CreatePolicy)
  + [CreateRole](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.CreateRole)
  + [CreateUser](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.CreateUser)
  + [DeleteAccessKey](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.DeleteAccessKey)
  + [DeletePolicy](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.DeletePolicy)
  + [DeleteRole](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.DeleteRole)
  + [DeleteUser](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.DeleteUser)
  + [DeleteUserPolicy](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.DeleteUserPolicy)
  + [DetachRolePolicy](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.DetachRolePolicy)
  + [PutUserPolicy](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.PutUserPolicy)

------
#### [ Java ]

**SDK per Java 2.x**  
 C'è dell'altro GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel [Repository di esempi di codice AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/iam#code-examples). 
Crea funzioni che eseguono il wrapping delle operazioni degli utenti IAM.  

```
/*
  To run this Java V2 code example, set up your development environment, including your credentials.

  For information, see this documentation topic:

  https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html

  This example performs these operations:

  1. Creates a user that has no permissions.
  2. Creates a role and policy that grants Amazon S3 permissions.
  3. Creates a role.
  4. Grants the user permissions.
  5. Gets temporary credentials by assuming the role.  Creates an Amazon S3 Service client object with the temporary credentials.
  6. Deletes the resources.
 */

public class IAMScenario {
    public static final String DASHES = new String(new char[80]).replace("\0", "-");
    public static final String PolicyDocument = "{" +
            "  \"Version\": \"2012-10-17\"," +
            "  \"Statement\": [" +
            "    {" +
            "        \"Effect\": \"Allow\"," +
            "        \"Action\": [" +
            "            \"s3:*\"" +
            "       ]," +
            "       \"Resource\": \"*\"" +
            "    }" +
            "   ]" +
            "}";

    public static String userArn;

    public static void main(String[] args) throws Exception {

        final String usage = """

                Usage:
                    <username> <policyName> <roleName> <roleSessionName> <bucketName>\s

                Where:
                    username - The name of the IAM user to create.\s
                    policyName - The name of the policy to create.\s
                    roleName - The name of the role to create.\s
                    roleSessionName - The name of the session required for the assumeRole operation.\s
                    bucketName - The name of the Amazon S3 bucket from which objects are read.\s
                """;

        if (args.length != 5) {
            System.out.println(usage);
            System.exit(1);
        }

        String userName = args[0];
        String policyName = args[1];
        String roleName = args[2];
        String roleSessionName = args[3];
        String bucketName = args[4];

        Region region = Region.AWS_GLOBAL;
        IamClient iam = IamClient.builder()
                .region(region)
                .build();

        System.out.println(DASHES);
        System.out.println("Welcome to the AWS IAM example scenario.");
        System.out.println(DASHES);

        System.out.println(DASHES);
        System.out.println(" 1. Create the IAM user.");
        User createUser = createIAMUser(iam, userName);

        System.out.println(DASHES);
        userArn = createUser.arn();

        AccessKey myKey = createIAMAccessKey(iam, userName);
        String accessKey = myKey.accessKeyId();
        String secretKey = myKey.secretAccessKey();
        String assumeRolePolicyDocument = "{" +
                "\"Version\": \"2012-10-17\"," +
                "\"Statement\": [{" +
                "\"Effect\": \"Allow\"," +
                "\"Principal\": {" +
                "	\"AWS\": \"" + userArn + "\"" +
                "}," +
                "\"Action\": \"sts:AssumeRole\"" +
                "}]" +
                "}";

        System.out.println(assumeRolePolicyDocument);
        System.out.println(userName + " was successfully created.");
        System.out.println(DASHES);
        System.out.println("2. Creates a policy.");
        String polArn = createIAMPolicy(iam, policyName);
        System.out.println("The policy " + polArn + " was successfully created.");
        System.out.println(DASHES);

        System.out.println(DASHES);
        System.out.println("3. Creates a role.");
        TimeUnit.SECONDS.sleep(30);
        String roleArn = createIAMRole(iam, roleName, assumeRolePolicyDocument);
        System.out.println(roleArn + " was successfully created.");
        System.out.println(DASHES);

        System.out.println(DASHES);
        System.out.println("4. Grants the user permissions.");
        attachIAMRolePolicy(iam, roleName, polArn);
        System.out.println(DASHES);

        System.out.println(DASHES);
        System.out.println("*** Wait for 30 secs so the resource is available");
        TimeUnit.SECONDS.sleep(30);
        System.out.println("5. Gets temporary credentials by assuming the role.");
        System.out.println("Perform an Amazon S3 Service operation using the temporary credentials.");
        assumeRole(roleArn, roleSessionName, bucketName, accessKey, secretKey);
        System.out.println(DASHES);

        System.out.println(DASHES);
        System.out.println("6 Getting ready to delete the AWS resources");
        deleteKey(iam, userName, accessKey);
        deleteRole(iam, roleName, polArn);
        deleteIAMUser(iam, userName);
        System.out.println(DASHES);

        System.out.println(DASHES);
        System.out.println("This IAM Scenario has successfully completed");
        System.out.println(DASHES);
    }

    public static AccessKey createIAMAccessKey(IamClient iam, String user) {
        try {
            CreateAccessKeyRequest request = CreateAccessKeyRequest.builder()
                    .userName(user)
                    .build();

            CreateAccessKeyResponse response = iam.createAccessKey(request);
            return response.accessKey();

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return null;
    }

    public static User createIAMUser(IamClient iam, String username) {
        try {
            // Create an IamWaiter object
            IamWaiter iamWaiter = iam.waiter();
            CreateUserRequest request = CreateUserRequest.builder()
                    .userName(username)
                    .build();

            // Wait until the user is created.
            CreateUserResponse response = iam.createUser(request);
            GetUserRequest userRequest = GetUserRequest.builder()
                    .userName(response.user().userName())
                    .build();

            WaiterResponse<GetUserResponse> waitUntilUserExists = iamWaiter.waitUntilUserExists(userRequest);
            waitUntilUserExists.matched().response().ifPresent(System.out::println);
            return response.user();

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return null;
    }

    public static String createIAMRole(IamClient iam, String rolename, String json) {

        try {
            CreateRoleRequest request = CreateRoleRequest.builder()
                    .roleName(rolename)
                    .assumeRolePolicyDocument(json)
                    .description("Created using the AWS SDK for Java")
                    .build();

            CreateRoleResponse response = iam.createRole(request);
            System.out.println("The ARN of the role is " + response.role().arn());
            return response.role().arn();

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return "";
    }

    public static String createIAMPolicy(IamClient iam, String policyName) {
        try {
            // Create an IamWaiter object.
            IamWaiter iamWaiter = iam.waiter();
            CreatePolicyRequest request = CreatePolicyRequest.builder()
                    .policyName(policyName)
                    .policyDocument(PolicyDocument).build();

            CreatePolicyResponse response = iam.createPolicy(request);
            GetPolicyRequest polRequest = GetPolicyRequest.builder()
                    .policyArn(response.policy().arn())
                    .build();

            WaiterResponse<GetPolicyResponse> waitUntilPolicyExists = iamWaiter.waitUntilPolicyExists(polRequest);
            waitUntilPolicyExists.matched().response().ifPresent(System.out::println);
            return response.policy().arn();

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return "";
    }

    public static void attachIAMRolePolicy(IamClient iam, String roleName, String policyArn) {
        try {
            ListAttachedRolePoliciesRequest request = ListAttachedRolePoliciesRequest.builder()
                    .roleName(roleName)
                    .build();

            ListAttachedRolePoliciesResponse response = iam.listAttachedRolePolicies(request);
            List<AttachedPolicy> attachedPolicies = response.attachedPolicies();
            String polArn;
            for (AttachedPolicy policy : attachedPolicies) {
                polArn = policy.policyArn();
                if (polArn.compareTo(policyArn) == 0) {
                    System.out.println(roleName + " policy is already attached to this role.");
                    return;
                }
            }

            AttachRolePolicyRequest attachRequest = AttachRolePolicyRequest.builder()
                    .roleName(roleName)
                    .policyArn(policyArn)
                    .build();

            iam.attachRolePolicy(attachRequest);
            System.out.println("Successfully attached policy " + policyArn + " to role " + roleName);

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }

    // Invoke an Amazon S3 operation using the Assumed Role.
    public static void assumeRole(String roleArn, String roleSessionName, String bucketName, String keyVal,
            String keySecret) {

        // Use the creds of the new IAM user that was created in this code example.
        AwsBasicCredentials credentials = AwsBasicCredentials.create(keyVal, keySecret);
        StsClient stsClient = StsClient.builder()
                .region(Region.US_EAST_1)
                .credentialsProvider(StaticCredentialsProvider.create(credentials))
                .build();

        try {
            AssumeRoleRequest roleRequest = AssumeRoleRequest.builder()
                    .roleArn(roleArn)
                    .roleSessionName(roleSessionName)
                    .build();

            AssumeRoleResponse roleResponse = stsClient.assumeRole(roleRequest);
            Credentials myCreds = roleResponse.credentials();
            String key = myCreds.accessKeyId();
            String secKey = myCreds.secretAccessKey();
            String secToken = myCreds.sessionToken();

            // List all objects in an Amazon S3 bucket using the temp creds retrieved by
            // invoking assumeRole.
            Region region = Region.US_EAST_1;
            S3Client s3 = S3Client.builder()
                    .credentialsProvider(
                            StaticCredentialsProvider.create(AwsSessionCredentials.create(key, secKey, secToken)))
                    .region(region)
                    .build();

            System.out.println("Created a S3Client using temp credentials.");
            System.out.println("Listing objects in " + bucketName);
            ListObjectsRequest listObjects = ListObjectsRequest.builder()
                    .bucket(bucketName)
                    .build();

            ListObjectsResponse res = s3.listObjects(listObjects);
            List<S3Object> objects = res.contents();
            for (S3Object myValue : objects) {
                System.out.println("The name of the key is " + myValue.key());
                System.out.println("The owner is " + myValue.owner());
            }

        } catch (StsException e) {
            System.err.println(e.getMessage());
            System.exit(1);
        }
    }

    public static void deleteRole(IamClient iam, String roleName, String polArn) {

        try {
            // First the policy needs to be detached.
            DetachRolePolicyRequest rolePolicyRequest = DetachRolePolicyRequest.builder()
                    .policyArn(polArn)
                    .roleName(roleName)
                    .build();

            iam.detachRolePolicy(rolePolicyRequest);

            // Delete the policy.
            DeletePolicyRequest request = DeletePolicyRequest.builder()
                    .policyArn(polArn)
                    .build();

            iam.deletePolicy(request);
            System.out.println("*** Successfully deleted " + polArn);

            // Delete the role.
            DeleteRoleRequest roleRequest = DeleteRoleRequest.builder()
                    .roleName(roleName)
                    .build();

            iam.deleteRole(roleRequest);
            System.out.println("*** Successfully deleted " + roleName);

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }

    public static void deleteKey(IamClient iam, String username, String accessKey) {
        try {
            DeleteAccessKeyRequest request = DeleteAccessKeyRequest.builder()
                    .accessKeyId(accessKey)
                    .userName(username)
                    .build();

            iam.deleteAccessKey(request);
            System.out.println("Successfully deleted access key " + accessKey +
                    " from user " + username);

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }

    public static void deleteIAMUser(IamClient iam, String userName) {
        try {
            DeleteUserRequest request = DeleteUserRequest.builder()
                    .userName(userName)
                    .build();

            iam.deleteUser(request);
            System.out.println("*** Successfully deleted " + userName);

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}
```
+ Per informazioni dettagliate sull’API, consulta i seguenti argomenti nella *documentazione di riferimento dell’API AWS SDK for Java 2.x *.
  + [AttachRolePolicy](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/AttachRolePolicy)
  + [CreateAccessKey](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/CreateAccessKey)
  + [CreatePolicy](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/CreatePolicy)
  + [CreateRole](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/CreateRole)
  + [CreateUser](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/CreateUser)
  + [DeleteAccessKey](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/DeleteAccessKey)
  + [DeletePolicy](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/DeletePolicy)
  + [DeleteRole](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/DeleteRole)
  + [DeleteUser](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/DeleteUser)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/DeleteUserPolicy)
  + [DetachRolePolicy](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/DetachRolePolicy)
  + [PutUserPolicy](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/PutUserPolicy)

------
#### [ JavaScript ]

**SDK per JavaScript (v3)**  
 C'è altro da fare. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel [Repository di esempi di codice AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/iam#code-examples). 
Crea un utente IAM che conceda l’autorizzazione per elencare i bucket Amazon S3. L’utente dispone dei diritti soltanto per assumere il ruolo. Dopo aver assunto il ruolo, utilizza le credenziali temporanee per elencare i bucket per l’account.  

```
import {
  CreateUserCommand,
  GetUserCommand,
  CreateAccessKeyCommand,
  CreatePolicyCommand,
  CreateRoleCommand,
  AttachRolePolicyCommand,
  DeleteAccessKeyCommand,
  DeleteUserCommand,
  DeleteRoleCommand,
  DeletePolicyCommand,
  DetachRolePolicyCommand,
  IAMClient,
} from "@aws-sdk/client-iam";
import { ListBucketsCommand, S3Client } from "@aws-sdk/client-s3";
import { AssumeRoleCommand, STSClient } from "@aws-sdk/client-sts";
import { retry } from "@aws-doc-sdk-examples/lib/utils/util-timers.js";
import { ScenarioInput } from "@aws-doc-sdk-examples/lib/scenario/index.js";

// Set the parameters.
const iamClient = new IAMClient({});
const userName = "iam_basic_test_username";
const policyName = "iam_basic_test_policy";
const roleName = "iam_basic_test_role";

/**
 * Create a new IAM user. If the user already exists, give
 * the option to delete and re-create it.
 * @param {string} name
 */
export const createUser = async (name, confirmAll = false) => {
  try {
    const { User } = await iamClient.send(
      new GetUserCommand({ UserName: name }),
    );
    const input = new ScenarioInput(
      "deleteUser",
      "Do you want to delete and remake this user?",
      { type: "confirm" },
    );
    const deleteUser = await input.handle({}, { confirmAll });
    // If the user exists, and you want to delete it, delete the user
    // and then create it again.
    if (deleteUser) {
      await iamClient.send(new DeleteUserCommand({ UserName: User.UserName }));
      await iamClient.send(new CreateUserCommand({ UserName: name }));
    } else {
      console.warn(
        `${name} already exists. The scenario may not work as expected.`,
      );
      return User;
    }
  } catch (caught) {
    // If there is no user by that name, create one.
    if (caught instanceof Error && caught.name === "NoSuchEntityException") {
      const { User } = await iamClient.send(
        new CreateUserCommand({ UserName: name }),
      );
      return User;
    }
    throw caught;
  }
};

export const main = async (confirmAll = false) => {
  // Create a user. The user has no permissions by default.
  const User = await createUser(userName, confirmAll);

  if (!User) {
    throw new Error("User not created");
  }

  // Create an access key. This key is used to authenticate the new user to
  // Amazon Simple Storage Service (Amazon S3) and AWS Security Token Service (AWS STS).
  // It's not best practice to use access keys. For more information, see https://aws.amazon.com/iam/resources/best-practices/.
  const createAccessKeyResponse = await iamClient.send(
    new CreateAccessKeyCommand({ UserName: userName }),
  );

  if (
    !createAccessKeyResponse.AccessKey?.AccessKeyId ||
    !createAccessKeyResponse.AccessKey?.SecretAccessKey
  ) {
    throw new Error("Access key not created");
  }

  const {
    AccessKey: { AccessKeyId, SecretAccessKey },
  } = createAccessKeyResponse;

  let s3Client = new S3Client({
    credentials: {
      accessKeyId: AccessKeyId,
      secretAccessKey: SecretAccessKey,
    },
  });

  // Retry the list buckets operation until it succeeds. InvalidAccessKeyId is
  // thrown while the user and access keys are still stabilizing.
  await retry({ intervalInMs: 1000, maxRetries: 300 }, async () => {
    try {
      return await listBuckets(s3Client);
    } catch (err) {
      if (err instanceof Error && err.name === "InvalidAccessKeyId") {
        throw err;
      }
    }
  });

  // Retry the create role operation until it succeeds. A MalformedPolicyDocument error
  // is thrown while the user and access keys are still stabilizing.
  const { Role } = await retry(
    {
      intervalInMs: 2000,
      maxRetries: 60,
    },
    () =>
      iamClient.send(
        new CreateRoleCommand({
          AssumeRolePolicyDocument: JSON.stringify({
            Version: "2012-10-17",
            Statement: [
              {
                Effect: "Allow",
                Principal: {
                  // Allow the previously created user to assume this role.
                  AWS: User.Arn,
                },
                Action: "sts:AssumeRole",
              },
            ],
          }),
          RoleName: roleName,
        }),
      ),
  );

  if (!Role) {
    throw new Error("Role not created");
  }

  // Create a policy that allows the user to list S3 buckets.
  const { Policy: listBucketPolicy } = await iamClient.send(
    new CreatePolicyCommand({
      PolicyDocument: JSON.stringify({
        Version: "2012-10-17",
        Statement: [
          {
            Effect: "Allow",
            Action: ["s3:ListAllMyBuckets"],
            Resource: "*",
          },
        ],
      }),
      PolicyName: policyName,
    }),
  );

  if (!listBucketPolicy) {
    throw new Error("Policy not created");
  }

  // Attach the policy granting the 's3:ListAllMyBuckets' action to the role.
  await iamClient.send(
    new AttachRolePolicyCommand({
      PolicyArn: listBucketPolicy.Arn,
      RoleName: Role.RoleName,
    }),
  );

  // Assume the role.
  const stsClient = new STSClient({
    credentials: {
      accessKeyId: AccessKeyId,
      secretAccessKey: SecretAccessKey,
    },
  });

  // Retry the assume role operation until it succeeds.
  const { Credentials } = await retry(
    { intervalInMs: 2000, maxRetries: 60 },
    () =>
      stsClient.send(
        new AssumeRoleCommand({
          RoleArn: Role.Arn,
          RoleSessionName: `iamBasicScenarioSession-${Math.floor(
            Math.random() * 1000000,
          )}`,
          DurationSeconds: 900,
        }),
      ),
  );

  if (!Credentials?.AccessKeyId || !Credentials?.SecretAccessKey) {
    throw new Error("Credentials not created");
  }

  s3Client = new S3Client({
    credentials: {
      accessKeyId: Credentials.AccessKeyId,
      secretAccessKey: Credentials.SecretAccessKey,
      sessionToken: Credentials.SessionToken,
    },
  });

  // List the S3 buckets again.
  // Retry the list buckets operation until it succeeds. AccessDenied might
  // be thrown while the role policy is still stabilizing.
  await retry({ intervalInMs: 2000, maxRetries: 120 }, () =>
    listBuckets(s3Client),
  );

  // Clean up.
  await iamClient.send(
    new DetachRolePolicyCommand({
      PolicyArn: listBucketPolicy.Arn,
      RoleName: Role.RoleName,
    }),
  );

  await iamClient.send(
    new DeletePolicyCommand({
      PolicyArn: listBucketPolicy.Arn,
    }),
  );

  await iamClient.send(
    new DeleteRoleCommand({
      RoleName: Role.RoleName,
    }),
  );

  await iamClient.send(
    new DeleteAccessKeyCommand({
      UserName: userName,
      AccessKeyId,
    }),
  );

  await iamClient.send(
    new DeleteUserCommand({
      UserName: userName,
    }),
  );
};

/**
 *
 * @param {S3Client} s3Client
 */
const listBuckets = async (s3Client) => {
  const { Buckets } = await s3Client.send(new ListBucketsCommand({}));

  if (!Buckets) {
    throw new Error("Buckets not listed");
  }

  console.log(Buckets.map((bucket) => bucket.Name).join("\n"));
};
```
+ Per informazioni dettagliate sull’API, consulta i seguenti argomenti nella *documentazione di riferimento dell’API AWS SDK per JavaScript *.
  + [AttachRolePolicy](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/AttachRolePolicyCommand)
  + [CreateAccessKey](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/CreateAccessKeyCommand)
  + [CreatePolicy](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/CreatePolicyCommand)
  + [CreateRole](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/CreateRoleCommand)
  + [CreateUser](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/CreateUserCommand)
  + [DeleteAccessKey](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/DeleteAccessKeyCommand)
  + [DeletePolicy](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/DeletePolicyCommand)
  + [DeleteRole](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/DeleteRoleCommand)
  + [DeleteUser](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/DeleteUserCommand)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/DeleteUserPolicyCommand)
  + [DetachRolePolicy](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/DetachRolePolicyCommand)
  + [PutUserPolicy](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/PutUserPolicyCommand)

------
#### [ Kotlin ]

**SDK per Kotlin**  
 C'è dell'altro GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel [Repository di esempi di codice AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/kotlin/services/iam#code-examples). 
Crea funzioni che eseguono il wrapping delle operazioni degli utenti IAM.  

```
suspend fun main(args: Array<String>) {
    val usage = """
    Usage:
        <username> <policyName> <roleName> <roleSessionName> <fileLocation> <bucketName> 

    Where:
        username - The name of the IAM user to create. 
        policyName - The name of the policy to create. 
        roleName - The name of the role to create. 
        roleSessionName - The name of the session required for the assumeRole operation. 
        fileLocation - The file location to the JSON required to create the role (see Readme). 
        bucketName - The name of the Amazon S3 bucket from which objects are read. 
    """

    if (args.size != 6) {
        println(usage)
        exitProcess(1)
    }

    val userName = args[0]
    val policyName = args[1]
    val roleName = args[2]
    val roleSessionName = args[3]
    val fileLocation = args[4]
    val bucketName = args[5]

    createUser(userName)
    println("$userName was successfully created.")

    val polArn = createPolicy(policyName)
    println("The policy $polArn was successfully created.")

    val roleArn = createRole(roleName, fileLocation)
    println("$roleArn was successfully created.")
    attachRolePolicy(roleName, polArn)

    println("*** Wait for 1 MIN so the resource is available.")
    delay(60000)
    assumeGivenRole(roleArn, roleSessionName, bucketName)

    println("*** Getting ready to delete the AWS resources.")
    deleteRole(roleName, polArn)
    deleteUser(userName)
    println("This IAM Scenario has successfully completed.")
}

suspend fun createUser(usernameVal: String?): String? {
    val request =
        CreateUserRequest {
            userName = usernameVal
        }

    IamClient { region = "AWS_GLOBAL" }.use { iamClient ->
        val response = iamClient.createUser(request)
        return response.user?.userName
    }
}

suspend fun createPolicy(policyNameVal: String?): String {
    val policyDocumentValue = """
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:*"
                ],
                "Resource": "*"
            }
        ]
    }
    """.trimIndent()

    val request =
        CreatePolicyRequest {
            policyName = policyNameVal
            policyDocument = policyDocumentValue
        }

    IamClient.fromEnvironment { region = "AWS_GLOBAL" }.use { iamClient ->
        val response = iamClient.createPolicy(request)
        return response.policy?.arn.toString()
    }
}

suspend fun createRole(
    rolenameVal: String?,
    fileLocation: String?,
): String? {
    val jsonObject = fileLocation?.let { readJsonSimpleDemo(it) } as JSONObject

    val request =
        CreateRoleRequest {
            roleName = rolenameVal
            assumeRolePolicyDocument = jsonObject.toJSONString()
            description = "Created using the AWS SDK for Kotlin"
        }

    IamClient { region = "AWS_GLOBAL" }.use { iamClient ->
        val response = iamClient.createRole(request)
        return response.role?.arn
    }
}

suspend fun attachRolePolicy(
    roleNameVal: String,
    policyArnVal: String,
) {
    val request =
        ListAttachedRolePoliciesRequest {
            roleName = roleNameVal
        }

    IamClient.fromEnvironment { region = "AWS_GLOBAL" }.use { iamClient ->
        val response = iamClient.listAttachedRolePolicies(request)
        val attachedPolicies = response.attachedPolicies

        // Ensure that the policy is not attached to this role.
        val checkStatus: Int
        if (attachedPolicies != null) {
            checkStatus = checkMyList(attachedPolicies, policyArnVal)
            if (checkStatus == -1) {
                return
            }
        }

        val policyRequest =
            AttachRolePolicyRequest {
                roleName = roleNameVal
                policyArn = policyArnVal
            }
        iamClient.attachRolePolicy(policyRequest)
        println("Successfully attached policy $policyArnVal to role $roleNameVal")
    }
}

fun checkMyList(
    attachedPolicies: List<AttachedPolicy>,
    policyArnVal: String,
): Int {
    for (policy in attachedPolicies) {
        val polArn = policy.policyArn.toString()

        if (polArn.compareTo(policyArnVal) == 0) {
            println("The policy is already attached to this role.")
            return -1
        }
    }
    return 0
}

suspend fun assumeGivenRole(
    roleArnVal: String?,
    roleSessionNameVal: String?,
    bucketName: String,
) {
    val stsClient = StsClient.fromEnvironment { region = "us-east-1" }
    val roleRequest =
        AssumeRoleRequest {
            roleArn = roleArnVal
            roleSessionName = roleSessionNameVal
        }

    val roleResponse = stsClient.assumeRole(roleRequest)
    val myCreds = roleResponse.credentials
    val key = myCreds?.accessKeyId
    val secKey = myCreds?.secretAccessKey
    val secToken = myCreds?.sessionToken

    val staticCredentials = StaticCredentialsProvider {
        accessKeyId = key
        secretAccessKey = secKey
        sessionToken = secToken
    }

    // List all objects in an Amazon S3 bucket using the temp creds.
    val s3 = S3Client.fromEnvironment {
        region = "us-east-1"
        credentialsProvider = staticCredentials
    }

    println("Created a S3Client using temp credentials.")
    println("Listing objects in $bucketName")

    val listObjects =
        ListObjectsRequest {
            bucket = bucketName
        }

    val response = s3.listObjects(listObjects)
    response.contents?.forEach { myObject ->
        println("The name of the key is ${myObject.key}")
        println("The owner is ${myObject.owner}")
    }
}

suspend fun deleteRole(
    roleNameVal: String,
    polArn: String,
) {
    val iam = IamClient.fromEnvironment { region = "AWS_GLOBAL" }

    // First the policy needs to be detached.
    val rolePolicyRequest =
        DetachRolePolicyRequest {
            policyArn = polArn
            roleName = roleNameVal
        }

    iam.detachRolePolicy(rolePolicyRequest)

    // Delete the policy.
    val request =
        DeletePolicyRequest {
            policyArn = polArn
        }

    iam.deletePolicy(request)
    println("*** Successfully deleted $polArn")

    // Delete the role.
    val roleRequest =
        DeleteRoleRequest {
            roleName = roleNameVal
        }

    iam.deleteRole(roleRequest)
    println("*** Successfully deleted $roleNameVal")
}

suspend fun deleteUser(userNameVal: String) {
    val iam = IamClient.fromEnvironment { region = "AWS_GLOBAL" }
    val request =
        DeleteUserRequest {
            userName = userNameVal
        }

    iam.deleteUser(request)
    println("*** Successfully deleted $userNameVal")
}

@Throws(java.lang.Exception::class)
fun readJsonSimpleDemo(filename: String): Any? {
    val reader = FileReader(filename)
    val jsonParser = JSONParser()
    return jsonParser.parse(reader)
}
```
+ Per informazioni dettagliate sull’API, consulta i seguenti argomenti nella *documentazione di riferimento dell’API AWS SDK per Kotlin*.
  + [AttachRolePolicy](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [CreateAccessKey](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [CreatePolicy](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [CreateRole](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [CreateUser](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [DeleteAccessKey](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [DeletePolicy](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [DeleteRole](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [DeleteUser](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [DeleteUserPolicy](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [DetachRolePolicy](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [PutUserPolicy](https://sdk.amazonaws.com/kotlin/api/latest/index.html)

------
#### [ PHP ]

**SDK per PHP**  
 C'è dell'altro GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel [Repository di esempi di codice AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code/iam#code-examples). 

```
namespace Iam\Basics;

require 'vendor/autoload.php';

use Aws\Credentials\Credentials;
use Aws\S3\Exception\S3Exception;
use Aws\S3\S3Client;
use Aws\Sts\StsClient;
use Iam\IAMService;

echo("\n");
echo("--------------------------------------\n");
print("Welcome to the IAM getting started demo using PHP!\n");
echo("--------------------------------------\n");

$uuid = uniqid();
$service = new IAMService();

$user = $service->createUser("iam_demo_user_$uuid");
echo "Created user with the arn: {$user['Arn']}\n";

$key = $service->createAccessKey($user['UserName']);
$assumeRolePolicyDocument = "{
                \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Principal\": {\"AWS\": \"{$user['Arn']}\"},
                    \"Action\": \"sts:AssumeRole\"
                }]
            }";
$assumeRoleRole = $service->createRole("iam_demo_role_$uuid", $assumeRolePolicyDocument);
echo "Created role: {$assumeRoleRole['RoleName']}\n";

$listAllBucketsPolicyDocument = "{
                \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Action\": \"s3:ListAllMyBuckets\",
                    \"Resource\": \"arn:aws:s3:::*\"}]
}";
$listAllBucketsPolicy = $service->createPolicy("iam_demo_policy_$uuid", $listAllBucketsPolicyDocument);
echo "Created policy: {$listAllBucketsPolicy['PolicyName']}\n";

$service->attachRolePolicy($assumeRoleRole['RoleName'], $listAllBucketsPolicy['Arn']);

$inlinePolicyDocument = "{
                \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Action\": \"sts:AssumeRole\",
                    \"Resource\": \"{$assumeRoleRole['Arn']}\"}]
}";
$inlinePolicy = $service->createUserPolicy("iam_demo_inline_policy_$uuid", $inlinePolicyDocument, $user['UserName']);
//First, fail to list the buckets with the user
$credentials = new Credentials($key['AccessKeyId'], $key['SecretAccessKey']);
$s3Client = new S3Client(['region' => 'us-west-2', 'version' => 'latest', 'credentials' => $credentials]);
try {
    $s3Client->listBuckets([
    ]);
    echo "this should not run";
} catch (S3Exception $exception) {
    echo "successfully failed!\n";
}

$stsClient = new StsClient(['region' => 'us-west-2', 'version' => 'latest', 'credentials' => $credentials]);
sleep(10);
$assumedRole = $stsClient->assumeRole([
    'RoleArn' => $assumeRoleRole['Arn'],
    'RoleSessionName' => "DemoAssumeRoleSession_$uuid",
]);
$assumedCredentials = [
    'key' => $assumedRole['Credentials']['AccessKeyId'],
    'secret' => $assumedRole['Credentials']['SecretAccessKey'],
    'token' => $assumedRole['Credentials']['SessionToken'],
];
$s3Client = new S3Client(['region' => 'us-west-2', 'version' => 'latest', 'credentials' => $assumedCredentials]);
try {
    $s3Client->listBuckets([]);
    echo "this should now run!\n";
} catch (S3Exception $exception) {
    echo "this should now not fail\n";
}

$service->detachRolePolicy($assumeRoleRole['RoleName'], $listAllBucketsPolicy['Arn']);
$deletePolicy = $service->deletePolicy($listAllBucketsPolicy['Arn']);
echo "Delete policy: {$listAllBucketsPolicy['PolicyName']}\n";
$deletedRole = $service->deleteRole($assumeRoleRole['Arn']);
echo "Deleted role: {$assumeRoleRole['RoleName']}\n";
$deletedKey = $service->deleteAccessKey($key['AccessKeyId'], $user['UserName']);
$deletedUser = $service->deleteUser($user['UserName']);
echo "Delete user: {$user['UserName']}\n";
```
+ Per informazioni dettagliate sull'API, consulta i seguenti argomenti nella *documentazione di riferimento dell’API AWS SDK per PHP *.
  + [AttachRolePolicy](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/AttachRolePolicy)
  + [CreateAccessKey](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/CreateAccessKey)
  + [CreatePolicy](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/CreatePolicy)
  + [CreateRole](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/CreateRole)
  + [CreateUser](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/CreateUser)
  + [DeleteAccessKey](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/DeleteAccessKey)
  + [DeletePolicy](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/DeletePolicy)
  + [DeleteRole](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/DeleteRole)
  + [DeleteUser](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/DeleteUser)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/DeleteUserPolicy)
  + [DetachRolePolicy](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/DetachRolePolicy)
  + [PutUserPolicy](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/PutUserPolicy)

------
#### [ Python ]

**SDK per Python (Boto3)**  
 C'è dell'altro GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel [Repository di esempi di codice AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python/example_code/iam#code-examples). 
Crea un utente IAM che conceda l’autorizzazione per elencare i bucket Amazon S3. L’utente dispone dei diritti soltanto per assumere il ruolo. Dopo aver assunto il ruolo, utilizza le credenziali temporanee per elencare i bucket per l'account.  

```
import json
import sys
import time
from uuid import uuid4

import boto3
from botocore.exceptions import ClientError


def progress_bar(seconds):
    """Shows a simple progress bar in the command window."""
    for _ in range(seconds):
        time.sleep(1)
        print(".", end="")
        sys.stdout.flush()
    print()


def setup(iam_resource):
    """
    Creates a new user with no permissions.
    Creates an access key pair for the user.
    Creates a role with a policy that lets the user assume the role.
    Creates a policy that allows listing Amazon S3 buckets.
    Attaches the policy to the role.
    Creates an inline policy for the user that lets the user assume the role.

    :param iam_resource: A Boto3 AWS Identity and Access Management (IAM) resource
                         that has permissions to create users, roles, and policies
                         in the account.
    :return: The newly created user, user key, and role.
    """
    try:
        user = iam_resource.create_user(UserName=f"demo-user-{uuid4()}")
        print(f"Created user {user.name}.")
    except ClientError as error:
        print(
            f"Couldn't create a user for the demo. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise

    try:
        user_key = user.create_access_key_pair()
        print(f"Created access key pair for user.")
    except ClientError as error:
        print(
            f"Couldn't create access keys for user {user.name}. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise

    print(f"Wait for user to be ready.", end="")
    progress_bar(10)

    try:
        role = iam_resource.create_role(
            RoleName=f"demo-role-{uuid4()}",
            AssumeRolePolicyDocument=json.dumps(
                {
                    "Version":"2012-10-17",		 	 	 
                    "Statement": [
                        {
                            "Effect": "Allow",
                            "Principal": {"AWS": user.arn},
                            "Action": "sts:AssumeRole",
                        }
                    ],
                }
            ),
        )
        print(f"Created role {role.name}.")
    except ClientError as error:
        print(
            f"Couldn't create a role for the demo. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise

    try:
        policy = iam_resource.create_policy(
            PolicyName=f"demo-policy-{uuid4()}",
            PolicyDocument=json.dumps(
                {
                    "Version":"2012-10-17",		 	 	 
                    "Statement": [
                        {
                            "Effect": "Allow",
                            "Action": "s3:ListAllMyBuckets",
                            "Resource": "arn:aws:s3:::*",
                        }
                    ],
                }
            ),
        )
        role.attach_policy(PolicyArn=policy.arn)
        print(f"Created policy {policy.policy_name} and attached it to the role.")
    except ClientError as error:
        print(
            f"Couldn't create a policy and attach it to role {role.name}. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise

    try:
        user.create_policy(
            PolicyName=f"demo-user-policy-{uuid4()}",
            PolicyDocument=json.dumps(
                {
                    "Version":"2012-10-17",		 	 	 
                    "Statement": [
                        {
                            "Effect": "Allow",
                            "Action": "sts:AssumeRole",
                            "Resource": role.arn,
                        }
                    ],
                }
            ),
        )
        print(
            f"Created an inline policy for {user.name} that lets the user assume "
            f"the role."
        )
    except ClientError as error:
        print(
            f"Couldn't create an inline policy for user {user.name}. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise

    print("Give AWS time to propagate these new resources and connections.", end="")
    progress_bar(10)

    return user, user_key, role


def show_access_denied_without_role(user_key):
    """
    Shows that listing buckets without first assuming the role is not allowed.

    :param user_key: The key of the user created during setup. This user does not
                     have permission to list buckets in the account.
    """
    print(f"Try to list buckets without first assuming the role.")
    s3_denied_resource = boto3.resource(
        "s3", aws_access_key_id=user_key.id, aws_secret_access_key=user_key.secret
    )
    try:
        for bucket in s3_denied_resource.buckets.all():
            print(bucket.name)
        raise RuntimeError("Expected to get AccessDenied error when listing buckets!")
    except ClientError as error:
        if error.response["Error"]["Code"] == "AccessDenied":
            print("Attempt to list buckets with no permissions: AccessDenied.")
        else:
            raise


def list_buckets_from_assumed_role(user_key, assume_role_arn, session_name):
    """
    Assumes a role that grants permission to list the Amazon S3 buckets in the account.
    Uses the temporary credentials from the role to list the buckets that are owned
    by the assumed role's account.

    :param user_key: The access key of a user that has permission to assume the role.
    :param assume_role_arn: The Amazon Resource Name (ARN) of the role that
                            grants access to list the other account's buckets.
    :param session_name: The name of the STS session.
    """
    sts_client = boto3.client(
        "sts", aws_access_key_id=user_key.id, aws_secret_access_key=user_key.secret
    )
    try:
        response = sts_client.assume_role(
            RoleArn=assume_role_arn, RoleSessionName=session_name
        )
        temp_credentials = response["Credentials"]
        print(f"Assumed role {assume_role_arn} and got temporary credentials.")
    except ClientError as error:
        print(
            f"Couldn't assume role {assume_role_arn}. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise

    # Create an S3 resource that can access the account with the temporary credentials.
    s3_resource = boto3.resource(
        "s3",
        aws_access_key_id=temp_credentials["AccessKeyId"],
        aws_secret_access_key=temp_credentials["SecretAccessKey"],
        aws_session_token=temp_credentials["SessionToken"],
    )
    print(f"Listing buckets for the assumed role's account:")
    try:
        for bucket in s3_resource.buckets.all():
            print(bucket.name)
    except ClientError as error:
        print(
            f"Couldn't list buckets for the account. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise




def teardown(user, role):
    """
    Removes all resources created during setup.

    :param user: The demo user.
    :param role: The demo role.
    """
    try:
        for attached in role.attached_policies.all():
            policy_name = attached.policy_name
            role.detach_policy(PolicyArn=attached.arn)
            attached.delete()
            print(f"Detached and deleted {policy_name}.")
        role.delete()
        print(f"Deleted {role.name}.")
    except ClientError as error:
        print(
            "Couldn't detach policy, delete policy, or delete role. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise

    try:
        for user_pol in user.policies.all():
            user_pol.delete()
            print("Deleted inline user policy.")
        for key in user.access_keys.all():
            key.delete()
            print("Deleted user's access key.")
        user.delete()
        print(f"Deleted {user.name}.")
    except ClientError as error:
        print(
            "Couldn't delete user policy or delete user. Here's why: "
            f"{error.response['Error']['Message']}"
        )


def usage_demo():
    """Drives the demonstration."""
    print("-" * 88)
    print(f"Welcome to the IAM create user and assume role demo.")
    print("-" * 88)
    iam_resource = boto3.resource("iam")
    user = None
    role = None
    try:
        user, user_key, role = setup(iam_resource)
        print(f"Created {user.name} and {role.name}.")
        show_access_denied_without_role(user_key)
        list_buckets_from_assumed_role(user_key, role.arn, "AssumeRoleDemoSession")
    except Exception:
        print("Something went wrong!")
    finally:
        if user is not None and role is not None:
            teardown(user, role)
        print("Thanks for watching!")


if __name__ == "__main__":
    usage_demo()
```
+ Per informazioni dettagliate sull’API, consulta i seguenti argomenti nella *documentazione di riferimento dell’API AWS SDK per Python (Boto3)*.
  + [AttachRolePolicy](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/AttachRolePolicy)
  + [CreateAccessKey](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/CreateAccessKey)
  + [CreatePolicy](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/CreatePolicy)
  + [CreateRole](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/CreateRole)
  + [CreateUser](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/CreateUser)
  + [DeleteAccessKey](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/DeleteAccessKey)
  + [DeletePolicy](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/DeletePolicy)
  + [DeleteRole](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/DeleteRole)
  + [DeleteUser](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/DeleteUser)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/DeleteUserPolicy)
  + [DetachRolePolicy](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/DetachRolePolicy)
  + [PutUserPolicy](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/PutUserPolicy)

------
#### [ Ruby ]

**SDK per Ruby**  
 C'è dell'altro GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel [Repository di esempi di codice AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/ruby/example_code/iam#code-examples). 
Crea un utente IAM che conceda l’autorizzazione per elencare i bucket Amazon S3. L’utente dispone dei diritti soltanto per assumere il ruolo. Dopo aver assunto il ruolo, utilizza le credenziali temporanee per elencare i bucket per l’account.  

```
# Wraps the scenario actions.
class ScenarioCreateUserAssumeRole
  attr_reader :iam_client

  # @param [Aws::IAM::Client] iam_client: The AWS IAM client.
  def initialize(iam_client, logger: Logger.new($stdout))
    @iam_client = iam_client
    @logger = logger
  end

  # Waits for the specified number of seconds.
  #
  # @param duration [Integer] The number of seconds to wait.
  def wait(duration)
    puts('Give AWS time to propagate resources...')
    sleep(duration)
  end

  # Creates a user.
  #
  # @param user_name [String] The name to give the user.
  # @return [Aws::IAM::User] The newly created user.
  def create_user(user_name)
    user = @iam_client.create_user(user_name: user_name).user
    @logger.info("Created demo user named #{user.user_name}.")
  rescue Aws::Errors::ServiceError => e
    @logger.info('Tried and failed to create demo user.')
    @logger.info("\t#{e.code}: #{e.message}")
    @logger.info("\nCan't continue the demo without a user!")
    raise
  else
    user
  end

  # Creates an access key for a user.
  #
  # @param user [Aws::IAM::User] The user that owns the key.
  # @return [Aws::IAM::AccessKeyPair] The newly created access key.
  def create_access_key_pair(user)
    user_key = @iam_client.create_access_key(user_name: user.user_name).access_key
    @logger.info("Created accesskey pair for user #{user.user_name}.")
  rescue Aws::Errors::ServiceError => e
    @logger.info("Couldn't create access keys for user #{user.user_name}.")
    @logger.info("\t#{e.code}: #{e.message}")
    raise
  else
    user_key
  end

  # Creates a role that can be assumed by a user.
  #
  # @param role_name [String] The name to give the role.
  # @param user [Aws::IAM::User] The user who is granted permission to assume the role.
  # @return [Aws::IAM::Role] The newly created role.
  def create_role(role_name, user)
    trust_policy = {
      Version: '2012-10-17',
      Statement: [{
        Effect: 'Allow',
        Principal: { 'AWS': user.arn },
        Action: 'sts:AssumeRole'
      }]
    }.to_json
    role = @iam_client.create_role(
      role_name: role_name,
      assume_role_policy_document: trust_policy
    ).role
    @logger.info("Created role #{role.role_name}.")
  rescue Aws::Errors::ServiceError => e
    @logger.info("Couldn't create a role for the demo. Here's why: ")
    @logger.info("\t#{e.code}: #{e.message}")
    raise
  else
    role
  end

  # Creates a policy that grants permission to list S3 buckets in the account, and
  # then attaches the policy to a role.
  #
  # @param policy_name [String] The name to give the policy.
  # @param role [Aws::IAM::Role] The role that the policy is attached to.
  # @return [Aws::IAM::Policy] The newly created policy.
  def create_and_attach_role_policy(policy_name, role)
    policy_document = {
      Version: '2012-10-17',
      Statement: [{
        Effect: 'Allow',
        Action: 's3:ListAllMyBuckets',
        Resource: 'arn:aws:s3:::*'
      }]
    }.to_json
    policy = @iam_client.create_policy(
      policy_name: policy_name,
      policy_document: policy_document
    ).policy
    @iam_client.attach_role_policy(
      role_name: role.role_name,
      policy_arn: policy.arn
    )
    @logger.info("Created policy #{policy.policy_name} and attached it to role #{role.role_name}.")
  rescue Aws::Errors::ServiceError => e
    @logger.info("Couldn't create a policy and attach it to role #{role.role_name}. Here's why: ")
    @logger.info("\t#{e.code}: #{e.message}")
    raise
  end

  # Creates an inline policy for a user that lets the user assume a role.
  #
  # @param policy_name [String] The name to give the policy.
  # @param user [Aws::IAM::User] The user that owns the policy.
  # @param role [Aws::IAM::Role] The role that can be assumed.
  # @return [Aws::IAM::UserPolicy] The newly created policy.
  def create_user_policy(policy_name, user, role)
    policy_document = {
      Version: '2012-10-17',
      Statement: [{
        Effect: 'Allow',
        Action: 'sts:AssumeRole',
        Resource: role.arn
      }]
    }.to_json
    @iam_client.put_user_policy(
      user_name: user.user_name,
      policy_name: policy_name,
      policy_document: policy_document
    )
    puts("Created an inline policy for #{user.user_name} that lets the user assume role #{role.role_name}.")
  rescue Aws::Errors::ServiceError => e
    @logger.info("Couldn't create an inline policy for user #{user.user_name}. Here's why: ")
    @logger.info("\t#{e.code}: #{e.message}")
    raise
  end

  # Creates an Amazon S3 resource with specified credentials. This is separated into a
  # factory function so that it can be mocked for unit testing.
  #
  # @param credentials [Aws::Credentials] The credentials used by the Amazon S3 resource.
  def create_s3_resource(credentials)
    Aws::S3::Resource.new(client: Aws::S3::Client.new(credentials: credentials))
  end

  # Lists the S3 buckets for the account, using the specified Amazon S3 resource.
  # Because the resource uses credentials with limited access, it may not be able to
  # list the S3 buckets.
  #
  # @param s3_resource [Aws::S3::Resource] An Amazon S3 resource.
  def list_buckets(s3_resource)
    count = 10
    s3_resource.buckets.each do |bucket|
      @logger.info "\t#{bucket.name}"
      count -= 1
      break if count.zero?
    end
  rescue Aws::Errors::ServiceError => e
    if e.code == 'AccessDenied'
      puts('Attempt to list buckets with no permissions: AccessDenied.')
    else
      @logger.info("Couldn't list buckets for the account. Here's why: ")
      @logger.info("\t#{e.code}: #{e.message}")
      raise
    end
  end

  # Creates an AWS Security Token Service (AWS STS) client with specified credentials.
  # This is separated into a factory function so that it can be mocked for unit testing.
  #
  # @param key_id [String] The ID of the access key used by the STS client.
  # @param key_secret [String] The secret part of the access key used by the STS client.
  def create_sts_client(key_id, key_secret)
    Aws::STS::Client.new(access_key_id: key_id, secret_access_key: key_secret)
  end

  # Gets temporary credentials that can be used to assume a role.
  #
  # @param role_arn [String] The ARN of the role that is assumed when these credentials
  #                          are used.
  # @param sts_client [AWS::STS::Client] An AWS STS client.
  # @return [Aws::AssumeRoleCredentials] The credentials that can be used to assume the role.
  def assume_role(role_arn, sts_client)
    credentials = Aws::AssumeRoleCredentials.new(
      client: sts_client,
      role_arn: role_arn,
      role_session_name: 'create-use-assume-role-scenario'
    )
    @logger.info("Assumed role '#{role_arn}', got temporary credentials.")
    credentials
  end

  # Deletes a role. If the role has policies attached, they are detached and
  # deleted before the role is deleted.
  #
  # @param role_name [String] The name of the role to delete.
  def delete_role(role_name)
    @iam_client.list_attached_role_policies(role_name: role_name).attached_policies.each do |policy|
      @iam_client.detach_role_policy(role_name: role_name, policy_arn: policy.policy_arn)
      @iam_client.delete_policy(policy_arn: policy.policy_arn)
      @logger.info("Detached and deleted policy #{policy.policy_name}.")
    end
    @iam_client.delete_role({ role_name: role_name })
    @logger.info("Role deleted: #{role_name}.")
  rescue Aws::Errors::ServiceError => e
    @logger.info("Couldn't detach policies and delete role #{role.name}. Here's why:")
    @logger.info("\t#{e.code}: #{e.message}")
    raise
  end

  # Deletes a user. If the user has inline policies or access keys, they are deleted
  # before the user is deleted.
  #
  # @param user [Aws::IAM::User] The user to delete.
  def delete_user(user_name)
    user = @iam_client.list_access_keys(user_name: user_name).access_key_metadata
    user.each do |key|
      @iam_client.delete_access_key({ access_key_id: key.access_key_id, user_name: user_name })
      @logger.info("Deleted access key #{key.access_key_id} for user '#{user_name}'.")
    end

    @iam_client.delete_user(user_name: user_name)
    @logger.info("Deleted user '#{user_name}'.")
  rescue Aws::IAM::Errors::ServiceError => e
    @logger.error("Error deleting user '#{user_name}': #{e.message}")
  end
end

# Runs the IAM create a user and assume a role scenario.
def run_scenario(scenario)
  puts('-' * 88)
  puts('Welcome to the IAM create a user and assume a role demo!')
  puts('-' * 88)
  user = scenario.create_user("doc-example-user-#{Random.uuid}")
  user_key = scenario.create_access_key_pair(user)
  scenario.wait(10)
  role = scenario.create_role("doc-example-role-#{Random.uuid}", user)
  scenario.create_and_attach_role_policy("doc-example-role-policy-#{Random.uuid}", role)
  scenario.create_user_policy("doc-example-user-policy-#{Random.uuid}", user, role)
  scenario.wait(10)
  puts('Try to list buckets with credentials for a user who has no permissions.')
  puts('Expect AccessDenied from this call.')
  scenario.list_buckets(
    scenario.create_s3_resource(Aws::Credentials.new(user_key.access_key_id, user_key.secret_access_key))
  )
  puts('Now, assume the role that grants permission.')
  temp_credentials = scenario.assume_role(
    role.arn, scenario.create_sts_client(user_key.access_key_id, user_key.secret_access_key)
  )
  puts('Here are your buckets:')
  scenario.list_buckets(scenario.create_s3_resource(temp_credentials))
  puts("Deleting role '#{role.role_name}' and attached policies.")
  scenario.delete_role(role.role_name)
  puts("Deleting user '#{user.user_name}', policies, and keys.")
  scenario.delete_user(user.user_name)
  puts('Thanks for watching!')
  puts('-' * 88)
rescue Aws::Errors::ServiceError => e
  puts('Something went wrong with the demo.')
  puts("\t#{e.code}: #{e.message}")
end

run_scenario(ScenarioCreateUserAssumeRole.new(Aws::IAM::Client.new)) if $PROGRAM_NAME == __FILE__
```
+ Per informazioni dettagliate sull’API, consulta i seguenti argomenti nella *documentazione di riferimento dell’API AWS SDK per Ruby *.
  + [AttachRolePolicy](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/AttachRolePolicy)
  + [CreateAccessKey](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/CreateAccessKey)
  + [CreatePolicy](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/CreatePolicy)
  + [CreateRole](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/CreateRole)
  + [CreateUser](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/CreateUser)
  + [DeleteAccessKey](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/DeleteAccessKey)
  + [DeletePolicy](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/DeletePolicy)
  + [DeleteRole](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/DeleteRole)
  + [DeleteUser](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/DeleteUser)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/DeleteUserPolicy)
  + [DetachRolePolicy](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/DetachRolePolicy)
  + [PutUserPolicy](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/PutUserPolicy)

------
#### [ Rust ]

**SDK per Rust**  
 C'è altro da fare. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel [Repository di esempi di codice AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rustv1/examples/iam#code-examples). 

```
use aws_config::meta::region::RegionProviderChain;
use aws_sdk_iam::Error as iamError;
use aws_sdk_iam::{config::Credentials as iamCredentials, config::Region, Client as iamClient};
use aws_sdk_s3::Client as s3Client;
use aws_sdk_sts::Client as stsClient;
use tokio::time::{sleep, Duration};
use uuid::Uuid;

#[tokio::main]
async fn main() -> Result<(), iamError> {
    let (client, uuid, list_all_buckets_policy_document, inline_policy_document) =
        initialize_variables().await;

    if let Err(e) = run_iam_operations(
        client,
        uuid,
        list_all_buckets_policy_document,
        inline_policy_document,
    )
    .await
    {
        println!("{:?}", e);
    };

    Ok(())
}

async fn initialize_variables() -> (iamClient, String, String, String) {
    let region_provider = RegionProviderChain::first_try(Region::new("us-west-2"));

    let shared_config = aws_config::from_env().region(region_provider).load().await;
    let client = iamClient::new(&shared_config);
    let uuid = Uuid::new_v4().to_string();

    let list_all_buckets_policy_document = "{
                \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Action\": \"s3:ListAllMyBuckets\",
                    \"Resource\": \"arn:aws:s3:::*\"}]
    }"
    .to_string();
    let inline_policy_document = "{
                \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Action\": \"sts:AssumeRole\",
                    \"Resource\": \"{}\"}]
    }"
    .to_string();

    (
        client,
        uuid,
        list_all_buckets_policy_document,
        inline_policy_document,
    )
}

async fn run_iam_operations(
    client: iamClient,
    uuid: String,
    list_all_buckets_policy_document: String,
    inline_policy_document: String,
) -> Result<(), iamError> {
    let user = iam_service::create_user(&client, &format!("{}{}", "iam_demo_user_", uuid)).await?;
    println!("Created the user with the name: {}", user.user_name());
    let key = iam_service::create_access_key(&client, user.user_name()).await?;

    let assume_role_policy_document = "{
        \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Principal\": {\"AWS\": \"{}\"},
                    \"Action\": \"sts:AssumeRole\"
                }]
            }"
    .to_string()
    .replace("{}", user.arn());

    let assume_role_role = iam_service::create_role(
        &client,
        &format!("{}{}", "iam_demo_role_", uuid),
        &assume_role_policy_document,
    )
    .await?;
    println!("Created the role with the ARN: {}", assume_role_role.arn());

    let list_all_buckets_policy = iam_service::create_policy(
        &client,
        &format!("{}{}", "iam_demo_policy_", uuid),
        &list_all_buckets_policy_document,
    )
    .await?;
    println!(
        "Created policy: {}",
        list_all_buckets_policy.policy_name.as_ref().unwrap()
    );

    let attach_role_policy_result =
        iam_service::attach_role_policy(&client, &assume_role_role, &list_all_buckets_policy)
            .await?;
    println!(
        "Attached the policy to the role: {:?}",
        attach_role_policy_result
    );

    let inline_policy_name = format!("{}{}", "iam_demo_inline_policy_", uuid);
    let inline_policy_document = inline_policy_document.replace("{}", assume_role_role.arn());
    iam_service::create_user_policy(&client, &user, &inline_policy_name, &inline_policy_document)
        .await?;
    println!("Created inline policy.");

    //First, fail to list the buckets with the user.
    let creds = iamCredentials::from_keys(key.access_key_id(), key.secret_access_key(), None);
    let fail_config = aws_config::from_env()
        .credentials_provider(creds.clone())
        .load()
        .await;
    println!("Fail config: {:?}", fail_config);
    let fail_client: s3Client = s3Client::new(&fail_config);
    match fail_client.list_buckets().send().await {
        Ok(e) => {
            println!("This should not run. {:?}", e);
        }
        Err(e) => {
            println!("Successfully failed with error: {:?}", e)
        }
    }

    let sts_config = aws_config::from_env()
        .credentials_provider(creds.clone())
        .load()
        .await;
    let sts_client: stsClient = stsClient::new(&sts_config);
    sleep(Duration::from_secs(10)).await;
    let assumed_role = sts_client
        .assume_role()
        .role_arn(assume_role_role.arn())
        .role_session_name(format!("iam_demo_assumerole_session_{uuid}"))
        .send()
        .await;
    println!("Assumed role: {:?}", assumed_role);
    sleep(Duration::from_secs(10)).await;

    let assumed_credentials = iamCredentials::from_keys(
        assumed_role
            .as_ref()
            .unwrap()
            .credentials
            .as_ref()
            .unwrap()
            .access_key_id(),
        assumed_role
            .as_ref()
            .unwrap()
            .credentials
            .as_ref()
            .unwrap()
            .secret_access_key(),
        Some(
            assumed_role
                .as_ref()
                .unwrap()
                .credentials
                .as_ref()
                .unwrap()
                .session_token
                .clone(),
        ),
    );

    let succeed_config = aws_config::from_env()
        .credentials_provider(assumed_credentials)
        .load()
        .await;
    println!("succeed config: {:?}", succeed_config);
    let succeed_client: s3Client = s3Client::new(&succeed_config);
    sleep(Duration::from_secs(10)).await;
    match succeed_client.list_buckets().send().await {
        Ok(_) => {
            println!("This should now run successfully.")
        }
        Err(e) => {
            println!("This should not run. {:?}", e);
            panic!()
        }
    }

    //Clean up.
    iam_service::detach_role_policy(
        &client,
        assume_role_role.role_name(),
        list_all_buckets_policy.arn().unwrap_or_default(),
    )
    .await?;
    iam_service::delete_policy(&client, list_all_buckets_policy).await?;
    iam_service::delete_role(&client, &assume_role_role).await?;
    println!("Deleted role {}", assume_role_role.role_name());
    iam_service::delete_access_key(&client, &user, &key).await?;
    println!("Deleted key for {}", key.user_name());
    iam_service::delete_user_policy(&client, &user, &inline_policy_name).await?;
    println!("Deleted inline user policy: {}", inline_policy_name);
    iam_service::delete_user(&client, &user).await?;
    println!("Deleted user {}", user.user_name());

    Ok(())
}
```
+ Per informazioni dettagliate sull’API, consulta i seguenti argomenti nella *documentazione di riferimento dell’API SDK AWS per Rust*.
  + [AttachRolePolicy](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.attach_role_policy)
  + [CreateAccessKey](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.create_access_key)
  + [CreatePolicy](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.create_policy)
  + [CreateRole](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.create_role)
  + [CreateUser](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.create_user)
  + [DeleteAccessKey](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.delete_access_key)
  + [DeletePolicy](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.delete_policy)
  + [DeleteRole](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.delete_role)
  + [DeleteUser](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.delete_user)
  + [DeleteUserPolicy](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.delete_user_policy)
  + [DetachRolePolicy](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.detach_role_policy)
  + [PutUserPolicy](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.put_user_policy)

------

# Utilizzare un ruolo IAM per concedere autorizzazioni alle applicazioni in esecuzione su istanze Amazon EC2
<a name="id_roles_use_switch-role-ec2"></a>

Le applicazioni eseguite su un'istanza Amazon EC2 devono includere AWS credenziali nelle richieste API. AWS Potresti chiedere ai tuoi sviluppatori di archiviare AWS le credenziali direttamente all'interno dell'istanza Amazon EC2 e consentire alle applicazioni in quell'istanza di utilizzare tali credenziali. Tuttavia, in questo caso, gli sviluppatori dovrebbero gestire le credenziali, accertarsi che vengano passate in modo sicuro a ciascuna istanza e aggiornare ogni istanza Amazon EC2 al momento di aggiornare le credenziali. Si tratta di una notevole quantità di lavoro aggiuntivo.

In alternativa, puoi (e devi) utilizzare un ruolo IAM per gestire credenziali *temporanee* per le applicazioni eseguite in un'istanza Amazon EC2. Quando utilizzi un ruolo, non occorre distribuire credenziali a lungo termine (come, ad esempio, credenziali di accesso oppure chiavi di accesso) per un'istanza Amazon EC2. Al contrario, il ruolo fornisce autorizzazioni temporanee che le applicazioni possono utilizzare quando effettuano chiamate ad altre risorse. AWS Quando avvii un'istanza Amazon EC2, devi specificare un ruolo IAM da associare ad essa. Le applicazioni eseguite nell'istanza possono quindi utilizzare le credenziali provvisorie fornite dal ruolo per firmare le richieste API.

L'utilizzo dei ruoli per concedere autorizzazioni alle applicazioni eseguite nelle istanze Amazon EC2 richiede una configurazione leggermente più elaborata Un'applicazione in esecuzione su un'istanza Amazon EC2 viene astratta AWS dal sistema operativo virtualizzato. A causa di questa ulteriore separazione, è necessario un passaggio aggiuntivo per assegnare un AWS ruolo e le relative autorizzazioni a un'istanza Amazon EC2 e renderle disponibili alle sue applicazioni. Tale passaggio aggiuntivo prevede la creazione di un *[profilo dell'istanza](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)* collegato all'istanza. Il profilo dell'istanza contiene il ruolo e può fornire le credenziali provvisorie del ruolo a un'applicazione eseguita nell'istanza. Le credenziali provvisorie possono essere utilizzate nelle chiamate dell'API dell'applicazione per accedere alle risorse e limitare l'accesso alle sole risorse specificate dal ruolo.

**Nota**  
A un'istanza Amazon EC2 può essere assegnato soltanto un ruolo alla volta e tutte le applicazioni dell'istanza condividono lo stesso ruolo e le stesse autorizzazioni. Quando si utilizza Amazon ECS per gestire le istanze Amazon EC2, alle attività di Amazon ECS è possibile assegnare dei ruoli che possono essere distinti dal ruolo dell'istanza Amazon EC2 su cui è in esecuzione. L'assegnazione di un ruolo a ciascuna attività è conforme al principio dell'accesso con privilegi minimi e consente un controllo più granulare su operazioni e risorse.  
Per ulteriori informazioni, consulta la pagina [Utilizzo dei ruoli IAM con le attività Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/bestpracticesguide/security-iam-roles.html) nella *Guida alle best practice per Amazon Elastic Container Service*.

Questo tipo di utilizzo dei ruoli offre diversi vantaggi. Dato che le credenziali dei ruoli sono temporanee e vengono aggiornate automaticamente, non dovrai preoccuparti della gestione né dei rischi di sicurezza a lungo termine. Inoltre, se utilizzi un singolo ruolo per più istanze, quando apporti una modifica a un ruolo, queste si propaga automaticamente a tutte le istanze. 

**Nota**  
Anche se in genere un ruolo viene assegnato a un'istanza Amazon EC2 all'avvio, puoi comunque effettuare il collegamento anche a un'istanza Amazon EC2 già in esecuzione. Per informazioni sul collegamento di un ruolo a un'istanza in esecuzione, consulta [Ruoli IAM per Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role).

**Topics**
+ [Funzionamento dei ruoli per le istanze Amazon EC2](#roles-usingrole-ec2instance-roles)
+ [Autorizzazioni richieste per l'utilizzo dei ruoli con Amazon EC2](#roles-usingrole-ec2instance-permissions)
+ [Come si inizia?](#roles-usingrole-ec2instance-get-started)
+ [Informazioni correlate](#roles-usingrole-ec2instance-related-info)

## Funzionamento dei ruoli per le istanze Amazon EC2
<a name="roles-usingrole-ec2instance-roles"></a>

Nella figura di seguito, uno sviluppatore esegue un'applicazione su un'istanza Amazon EC2 che richiede l'accesso al bucket S3 denominato `amzn-s3-demo-bucket-photos`. Un amministratore crea il ruolo di servizio `Get-pics` e lo collega all'istanza Amazon EC2. Il ruolo include una policy di autorizzazione che consente l'accesso in sola lettura al bucket S3 specificato. Include anche una policy di affidabilità che consente all'istanza Amazon EC2 di assumere il ruolo e recuperare le credenziali provvisorie. Quando l'applicazione viene eseguita sull'istanza, può utilizzare le credenziali provvisorie del ruolo per accedere al bucket delle foto. L'amministratore non ha bisogno di concedere allo sviluppatore l'autorizzazione di accedere al bucket delle foto e lo sviluppatore non si trova mai nella necessità di condividere o gestire credenziali.

![\[Applicazione su un'istanza Amazon EC2 che accede a una risorsa AWS\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/roles-usingrole-ec2roleinstance.png)


1. L'amministratore utilizza IAM per creare il ruolo **Get-pics**. Nella policy di affidabilità del ruolo l'amministratore specifica che solo le istanze Amazon EC2 possono assumere quel ruolo. Nella policy di autorizzazione del ruolo l'amministratore specifica autorizzazioni di sola lettura per il bucket `amzn-s3-demo-bucket-photos`.

1. Uno sviluppatore avvia un'istanza Amazon EC2 e assegna il ruolo `Get-pics` all'istanza.
**Nota**  
Se utilizzi la console IAM, il profilo dell'istanza viene gestito in automatico, con un processo quasi completamente trasparente. Tuttavia, se utilizzi l'API AWS CLI or per creare e gestire il ruolo e l'istanza Amazon EC2, devi creare il profilo dell'istanza e assegnargli il ruolo in fasi separate. Quindi, quando avvii l'istanza dovrai specificare il nome del profilo dell'istanza anziché il nome del ruolo.

1. Quando l'applicazione è in esecuzione, raccoglie le credenziali di sicurezza provvisorie dai [metadati dell'istanza](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) Amazon EC2, come descritto in [Recupero delle credenziali di sicurezza dai metadati delle istanze](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#instance-metadata-security-credentials). Si tratta di [credenziali di sicurezza provvisorie](id_credentials_temp.md) che rappresentano il ruolo e hanno un periodo di validità limitato. 

   In alcuni casi [AWS SDKs](https://aws.amazon.com/tools/), lo sviluppatore può utilizzare un provider che gestisce le credenziali di sicurezza temporanee in modo trasparente. (La documentazione per singoli utenti AWS SDKs descrive le funzionalità supportate da tale SDK per la gestione delle credenziali.)

   In alternativa, l'applicazione può ottenere le credenziali provvisorie direttamente dai metadati dell'istanza Amazon EC2. Le credenziali e i valori correlati sono disponibili nella categoria `iam/security-credentials/role-name` (in questo caso `iam/security-credentials/Get-pics`) dei metadati. Se l'applicazione ottiene le credenziali dai metadati dell'istanza, può memorizzarle nella cache.

1. Grazie all'utilizzo delle credenziali provvisorie recuperate, l'applicazione può accedere al bucket delle foto. In virtù della policy collegata al ruolo **Get-pics** (Ottieni foto), l'applicazione dispone di autorizzazioni di sola lettura. 

   Le credenziali di sicurezza temporanee disponibili nell'istanza vengono aggiornate automaticamente prima della scadenza, in modo da avere un set valido sempre disponibile. L'applicazione deve solo assicurarsi di ottenere un nuovo set di credenziali dai metadati dell'istanza prima della scadenza di quelle esistenti. È possibile utilizzare l' AWS SDK per gestire le credenziali in modo che l'applicazione non debba includere logica aggiuntiva per aggiornare le credenziali. Ad esempio, creando istanze di client con provider di credenziali del profilo dell'istanza. Tuttavia, se l'applicazione ottiene le credenziali di sicurezza provvisorie dai metadati dell'istanza e le memorizza nella cache, è necessario fornire un set di credenziali aggiornato ogni ora o almeno 15 minuti prima della scadenza del set corrente. L'ora di scadenza è indicata nelle informazioni restituite nella categoria `iam/security-credentials/role-name`. 

## Autorizzazioni richieste per l'utilizzo dei ruoli con Amazon EC2
<a name="roles-usingrole-ec2instance-permissions"></a>

Per avviare un'istanza con un ruolo, lo sviluppatore deve avere l'autorizzazione per avviare le istanze Amazon EC2 e per passare i ruoli IAM.

La seguente politica di esempio consente agli utenti di utilizzare per Console di gestione AWS avviare un'istanza con un ruolo. La policy include caratteri jolly (`*`) per consentire a un utente di passare qualsiasi ruolo ed eseguire tutte le operazioni di Amazon EC2 elencate. L'operazione `ListInstanceProfiles` consente agli utenti di visualizzare tutti i ruoli disponibili nell' Account AWS.

**Example Esempio di policy che concede a un utente l'autorizzazione di utilizzare la console Amazon EC2 per avviare un'istanza con qualsiasi ruolo**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "IamPassRole",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "ec2.amazonaws.com"
                }
            }
        },
        {
            "Sid": "ListEc2AndListInstanceProfiles",
            "Effect": "Allow",
            "Action": [
                "iam:ListInstanceProfiles",
                "ec2:Describe*",
                "ec2:Search*",
                "ec2:Get*"
            ],
            "Resource": "*"
        }
    ]
}
```

### Limitazione dei ruoli che possono essere passati alle istanze Amazon EC2 (utilizzando) PassRole
<a name="roles-usingrole-ec2instance-passrole"></a>

È possibile utilizzare l'autorizzazione `PassRole` per limitare i ruoli che un utente può passare a un'istanza Amazon EC2 quando avvia l'istanza. In questo modo si impedisce all'utente di eseguire le applicazioni che dispongono di più autorizzazioni rispetto a quelle concesse all'utente (ovvero di ottenere privilegi elevati). Ad esempio, immaginiamo che l'utente Alice disponga solo delle autorizzazioni per avviare le istanze Amazon EC2 e per operare con i bucket di Amazon S3, ma che passi a un'istanza Amazon EC2 un ruolo con autorizzazioni per operare con IAM e Amazon DynamoDB. In questo caso, Alice potrebbe essere in grado di avviare l'istanza, accedere a essa, ottenere credenziali di sicurezza temporanee e quindi eseguire operazioni IAM o DynamoDB per cui non dispone dell'autorizzazione.

Per limitare i ruoli che un utente può passare a un'istanza Amazon EC2, devi creare una policy che consenta l'operazione `PassRole`. A quel punto, puoi collegare la policy all'utente (o a un gruppo IAM a cui l'utente appartiene) che avvierà le istanze Amazon EC2. Nell'elemento `Resource` della policy devi elencare il ruolo o i ruoli che l'utente può passare alle istanze Amazon EC2. Quando l'utente avvia un'istanza e la associa a un ruolo, Amazon EC2 verifica se l'utente è autorizzato a inviare quel ruolo. Ovviamente, devi anche accertarti che il ruolo passato dall'utente non includa un numero di autorizzazioni maggiore di quello consentito all'utente.

**Nota**  
`PassRole` non è un'operazione API pari a `RunInstances` o `ListInstanceProfiles`. Si tratta invece di un'autorizzazione che AWS verifica ogni volta che l'ARN di un ruolo viene passato come parametro a un'API (o la console lo fa per conto dell'utente). In questo modo, un amministratore ha la possibilità di controllare quali ruoli possono essere passati dai vari utenti. In questo caso, garantisce che l'utente abbia l'autorizzazione per collegare un ruolo specifico a un'istanza Amazon EC2.

**Example policy che concede a un utente l'autorizzazione di avviare un'istanza Amazon EC2 con un ruolo specifico**  
Il seguente esempio di policy consente agli utenti di utilizzare l'API Amazon EC2 per avviare un'istanza con un ruolo. L'elemento `Resource` specifica l'Amazon Resource Name (ARN) di un ruolo. Specificando l'ARN, la policy concede all'utente l'autorizzazione di passare solo il ruolo `Get-pics`. Se, all'avvio di un'istanza, l'utente cerca di specificare un ruolo diverso, l'operazione ha esito negativo. L'utente non è autorizzato a eseguire alcuna istanza, indipendentemente dal passaggio di un ruolo.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/Get-pics"
        }
    ]
}
```

### Consentire a un ruolo del profilo dell'istanza di passare a un ruolo in un altro account
<a name="switch-role-ec2-another-account"></a>

Puoi consentire a un'applicazione in esecuzione su un'istanza Amazon EC2 di eseguire comandi in un altro account. A tale scopo, devi consentire al ruolo dell'istanza Amazon EC2 nel primo account di passare a un ruolo nel secondo account.

Immagina di usarne due Account AWS e di voler consentire a un'applicazione in esecuzione su un'istanza Amazon EC2 di eseguire [AWS CLI](https://aws.amazon.com/cli/)comandi in entrambi gli account. Supponiamo che l'istanza Amazon EC2 esista nell'account `111111111111`. Tale istanza include il ruolo del profilo dell'istanza `abcd` che consente all'applicazione di eseguire attività Amazon S3 di sola lettura nel bucket `amzn-s3-demo-bucket1` all'interno dello stesso account `111111111111`. Tuttavia, l'applicazione deve anche poter assumere il ruolo tra account `efgh` per accedere al bucket `amzn-s3-demo-bucket2` di Amazon S3 nell'account `222222222222`.

![\[Il diagramma mostra come uno sviluppatore avvia un'istanza Amazon EC2 con il ruolo per accedere alle foto in un bucket Amazon S3.\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/roles-instance-profile-cross-account.png)


Il ruolo del profilo dell'istanza Amazon EC2 `abcd` deve disporre della policy di autorizzazioni seguente per consentire all'applicazione di accedere al bucket `amzn-s3-demo-bucket1` di Amazon S3:

***Policy di autorizzazioni del ruolo `abcd` 111111111111 dell'account***

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAccountLevelS3Actions",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Sid": "AllowListAndReadS3ActionOnMyBucket",
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1/*",
                "arn:aws:s3:::amzn-s3-demo-bucket1"
            ]
        },
        {
            "Sid": "AllowIPToAssumeCrossAccountRole",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::222222222222:role/efgh"
        }
    ]
}
```

------

Il ruolo `abcd` deve considerare il servizio Amazon EC2 come attendibile ad assumere il ruolo. A tale scopo, il ruolo `abcd` deve disporre della seguente policy di attendibilità:

***Policy di attendibilità del ruolo `abcd` dell'account 111111111111***

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "abcdTrustPolicy",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {"Service": "ec2.amazonaws.com"}
        }
    ]
}
```

------

Supponiamo che il ruolo tra account `efgh` consenta attività Amazon S3 di sola lettura nel bucket `amzn-s3-demo-bucket2` all'interno dello stesso account `222222222222`. A tale scopo, il ruolo tra account `efgh` deve disporre della seguente policy di autorizzazioni:

***Policy di autorizzazioni del ruolo `efgh` 222222222222 dell'account***

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAccountLevelS3Actions",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Sid": "AllowListAndReadS3ActionOnMyBucket",
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket2/*",
                "arn:aws:s3:::amzn-s3-demo-bucket2"
            ]
        }
    ]
}
```

------

Il ruolo `efgh` deve consentire al ruolo del profilo dell'istanza `abcd` di assumerlo. A tale scopo, il ruolo `efgh` deve disporre della seguente policy di attendibilità:

***Policy di attendibilità del ruolo `efgh` dell'account 222222222222***

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "efghTrustPolicy",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {"AWS": "arn:aws:iam::111111111111:role/abcd"}
        }
    ]
}
```

------

## Come si inizia?
<a name="roles-usingrole-ec2instance-get-started"></a>

Per comprendere come funzionano i ruoli nelle istanze Amazon EC2, crea un ruolo con la console IAM, avvia un'istanza Amazon EC2 che usi tale ruolo e quindi osserva l'istanza in esecuzione. Puoi prendere in esame i [metadati dell'istanza](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) per consultare in che modo le credenziali provvisorie del ruolo vengano rese disponibili a un'istanza. Potrai anche consultare il modo in cui un'applicazione eseguita in un'istanza può utilizzare tale ruolo. Per ottenere ulteriori informazioni, usare le risorse indicate di seguito. 
+ [Tutorial di ruoli IAM per istanze Amazon EC2](https://www.youtube.com/watch?v=TlCuOjviOhk). Il video collegato mostra come utilizzare un ruolo IAM con un'istanza Amazon EC2 per controllare ciò che un'applicazione può fare quando viene eseguita nell'istanza. Il video mostra come l'applicazione (scritta nell' AWS SDK) può ottenere credenziali di sicurezza temporanee tramite il ruolo. 
+ Procedure guidate sugli SDK. La documentazione dell' AWS SDK include procedure dettagliate che mostrano un'applicazione in esecuzione su un'istanza Amazon EC2 che utilizza credenziali temporanee per i ruoli per leggere un bucket Amazon S3. Ogni procedura guidata presenta passaggi simili, ma utilizza un linguaggio di programmazione diverso:
  + [Configurazione dei ruoli IAM per Amazon EC2 con SDK per Java](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java-dg-roles.html) nella *Guida per gli sviluppatori di AWS SDK per Java * 
  + [Avvio di un'istanza Amazon EC2 utilizzando SDK per .NET](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/run-instance.html) nella *Guida per gli sviluppatori di AWS SDK per .NET *
  + [Creazione di una istanza Amazon EC2 con SDK for Ruby](https://docs.aws.amazon.com/sdk-for-ruby/latest/developer-guide/ec2-example-create-instance.html) nella *Guida per gli sviluppatori di AWS SDK per Ruby *

## Informazioni correlate
<a name="roles-usingrole-ec2instance-related-info"></a>

Per ulteriori informazioni sulla creazione di ruoli o di ruoli per le istanze Amazon EC2, consulta la seguente documentazione:
+ Per ulteriori informazioni sull'[utilizzo dei ruoli IAM con istanze Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html), consulta la *Guida per l'utente di Amazon EC2*.
+ Per creare un ruolo, consulta [Creazione di ruoli IAM](id_roles_create.md)
+ Per ulteriori informazioni sull'utilizzo delle credenziali di sicurezza provvisorie, vedi [Credenziali di sicurezza temporanee in IAM](id_credentials_temp.md).
+ Se lavori con l'API IAM o la CLI, devi creare e gestire i profili delle istanze IAM. Per ulteriori informazioni sui profili delle istanze, consulta [Usare profili dell'istanza](id_roles_use_switch-role-ec2_instance-profiles.md).
+ Per ulteriori informazioni sulle credenziali di sicurezza provvisorie per i ruoli dei metadati dell'istanza, consulta [Recupero delle credenziali di sicurezza dai metadati delle istanze](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#instance-metadata-security-credentials) nella *Guida per l'utente di Amazon EC2*.

# Usare profili dell'istanza
<a name="id_roles_use_switch-role-ec2_instance-profiles"></a>

Utilizza un profilo dell'istanza per passare un ruolo IAM a un'istanza EC2. Per ulteriori informazioni, consulta [Ruoli IAM per Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) nella *Guida per l'utente di Amazon EC2*.

## Gestione dei profili delle istanze (console)
<a name="instance-profiles-manage-console"></a>

Se utilizzi il per Console di gestione AWS creare un ruolo per Amazon EC2, la console crea automaticamente un profilo di istanza e gli assegna lo stesso nome del ruolo. Successivamente, quando utilizzi la console Amazon EC2 per avviare un'istanza con un ruolo IAM, potrai selezionare un ruolo da associare all'istanza. L'elenco visualizzato nella console è in effetti elenco di nomi di profili delle istanze. La console non crea un profilo dell'istanza per un ruolo non associato ad Amazon EC2.

Puoi utilizzare il Console di gestione AWS per eliminare i ruoli IAM e i profili di istanza per Amazon EC2 se il ruolo e il profilo dell'istanza hanno lo stesso nome. Per ulteriori informazioni sull'eliminazione dei profili di istanza, consulta [Eliminare i ruoli o i profili delle istanze](id_roles_manage_delete.md).

**Nota**  
Per aggiornare le autorizzazioni di un’istanza, sostituisci il suo profilo dell’istanza. Sconsigliamo di rimuovere un ruolo da un profilo dell’istanza, poiché è necessario attendere fino a un’ora prima che la modifica abbia effetto.

## Gestione dei profili di istanza (AWS CLI o AWS API)
<a name="instance-profiles-manage-cli-api"></a>

Se gestisci i tuoi ruoli dall' AWS CLI o dall' AWS API, crei ruoli e profili di istanza come azioni separate. Poiché ruoli e profili delle istanze possono avere nomi diversi, è importante che tu conosca i nomi dei profili e dei ruoli che contengono. In questo modo,sarà più semplice selezionare il corretto profilo all'avvio di un'istanza EC2. 

È possibile collegare tag alle risorse IAM, inclusi i profili dell'istanza, per identificare, organizzare e controllare l'accesso a tali risorse. Puoi etichettare i profili delle istanze solo quando utilizzi l' AWS API AWS CLI o. 

**Nota**  
Un profilo dell'istanza può contenere un solo ruolo IAM, mentre lo stesso ruolo può essere in più profili delle istanze. Non è possibile aumentare il numero di ruoli per profilo dell'istanza. Tuttavia, puoi rimuovere il ruolo esistente nel profilo dell'istanza e aggiungerne uno diverso. È quindi necessario attendere che la modifica appaia ovunque per AWS motivi di [coerenza finale](https://en.wikipedia.org/wiki/Eventual_consistency). Per forzare la modifica, devi [dissociare il profilo dell'istanza](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DisassociateIamInstanceProfile.html) e quindi [associare il profilo dell'istanza](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AssociateIamInstanceProfile.html) oppure arrestare l'istanza e riavviarla.

### Gestione dei profili delle istanze AWS CLI
<a name="instance-profiles-manage-cli"></a>

È possibile utilizzare i seguenti AWS CLI comandi per lavorare con i profili di istanza in un AWS account. 
+ Per creare un profilo dell'istanza: [https://docs.aws.amazon.com/cli/latest/reference/iam/create-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-instance-profile.html)
+ Applicare tag a un profilo dell'istanza: [https://docs.aws.amazon.com/cli/latest/reference/iam/tag-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-instance-profile.html)
+ Elencare i tag per un profilo dell'istanza: [https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profile-tags.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profile-tags.html)
+ Rimuovere i tag da un profilo dell'istanza: [https://docs.aws.amazon.com/cli/latest/reference/iam/untag-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-instance-profile.html)
+ Per aggiungere un ruolo a un profilo dell'istanza: [https://docs.aws.amazon.com/cli/latest/reference/iam/add-role-to-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/iam/add-role-to-instance-profile.html) 
+ Per elencare i profili delle istanze: [https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles.html), [https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles-for-role.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles-for-role.html) 
+ Per ottenere informazioni su un profilo dell'istanza: [https://docs.aws.amazon.com/cli/latest/reference/iam/get-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-instance-profile.html) 
+ Per rimuovere un ruolo da un profilo dell'istanza: [https://docs.aws.amazon.com/cli/latest/reference/iam/remove-role-from-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/iam/remove-role-from-instance-profile.html)
+ Per eliminare un profilo dell'istanza: [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-instance-profile.html) 

È anche possibile collegare un ruolo a un'istanza EC2 già in esecuzione, utilizzando i comandi riportati di seguito. Per ulteriori informazioni, consulta [Ruoli IAM per Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role).
+ Collegare un profilo dell'istanza con ruolo a un'istanza EC2 in funzione o arrestata: [https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-iam-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-iam-instance-profile.html) 
+ Ottenere informazioni su un profilo dell'istanza collegato a un'istanza EC2: [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-iam-instance-profile-associations.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-iam-instance-profile-associations.html) 
+ Distaccare un profilo dell'istanza con ruolo da un'istanza EC2 in funzione o arrestata: [https://docs.aws.amazon.com/cli/latest/reference/ec2/disassociate-iam-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/disassociate-iam-instance-profile.html) 

### Gestione dei profili di istanza (AWS API)
<a name="instance-profiles-manage-api"></a>

È possibile chiamare le seguenti operazioni AWS API per utilizzare i profili di istanza in un file Account AWS.
+ Per creare un profilo dell'istanza: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateInstanceProfile.html) 
+ Applicare tag a un profilo dell'istanza: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagInstanceProfile.html) 
+ Elencare i tag su un profilo dell'istanza: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagInstanceProfile.html) 
+ Rimuovere i tag da un profilo dell'istanza: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagInstanceProfile.html) 
+ Per aggiungere un ruolo a un profilo dell'istanza: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddRoleToInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddRoleToInstanceProfile.html) 
+ Per elencare i profili delle istanze: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfiles.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfiles.html), [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfilesForRole.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfilesForRole.html) 
+ Per ottenere informazioni su un profilo dell'istanza: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetInstanceProfile.html) 
+ Per rimuovere un ruolo da un profilo dell'istanza: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveRoleFromInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveRoleFromInstanceProfile.html) 
+ Per eliminare un profilo dell'istanza: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteInstanceProfile.html) 

È anche possibile collegare un ruolo a un'istanza EC2 già in esecuzione, richiamando le operazioni riportate di seguito. Per ulteriori informazioni, consulta [Ruoli IAM per Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role).
+ Collegare un profilo dell'istanza con ruolo a un'istanza EC2 in funzione o arrestata: [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AssociateIamInstanceProfile.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AssociateIamInstanceProfile.html) 
+ Ottenere informazioni su un profilo dell'istanza collegato a un'istanza EC2: [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeIamInstanceProfileAssociations.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeIamInstanceProfileAssociations.html) 
+ Distaccare un profilo dell'istanza con ruolo da un'istanza EC2 in funzione o arrestata: [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DisassociateIamInstanceProfile.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DisassociateIamInstanceProfile.html) 

# Provider di identità e federazione in AWS
<a name="id_roles_providers"></a>

Come best practice, ti consigliamo di richiedere agli utenti umani di utilizzare la federazione con un provider di identità per accedere alle AWS risorse invece di creare singoli utenti IAM nel tuo Account AWS. Con un provider di identità (IdP), puoi gestire le tue identità utente all'esterno AWS e concedere a queste identità utente esterne le autorizzazioni per utilizzare AWS le risorse del tuo account. Questa funzione è utile se la tua organizzazione dispone già di un proprio sistema di gestione delle identità, come ad esempio una directory aziendale degli utenti. È utile anche se stai creando un'app mobile o un'applicazione web che richiede l'accesso alle risorse. AWS 

**Nota**  
Consigliamo inoltre di gestire gli utenti nel [Centro identità IAM](https://docs.aws.amazon.com//singlesignon/latest/userguide/what-is.html) con un provider di identità SAML esterno anziché utilizzare la federazione SAML in IAM. La federazione di IAM Identity Center con un provider di identità ti offre la possibilità di consentire alle persone di accedere a più AWS account nella tua organizzazione e a più AWS applicazioni. Per informazioni su situazioni specifiche in cui è richiesto un utente IAM, consulta la sezione [Quando creare un utente IAM invece di un ruolo](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html#id_which-to-choose).

Se preferisci utilizzare un singolo AWS account senza abilitare IAM Identity Center, puoi utilizzare IAM con un IdP esterno che fornisce informazioni sull'identità AWS utilizzando OpenID [Connect (OIDC) o [SAML 2.0 (Security Assertion Markup Language 2.0](https://wiki.oasis-open.org/security))](http://openid.net/connect/). OIDC collega applicazioni, come GitHub Actions, che non funzionano su risorse. AWS AWS Tra i gestori dell'identità digitale SAML noti figurano Shibboleth e Active Directory Federation Services.

Quando utilizzi un provider di identità, non devi creare un codice di accesso personalizzato né gestire le tue identità utente. Tale operazione viene eseguita dall'IdP. I tuoi utenti esterni accedono tramite un IdP e puoi concedere a tali identità esterne le autorizzazioni per utilizzare le AWS risorse del tuo account. I provider di identità aiutano a mantenere la tua Account AWS sicurezza perché non devi distribuire o incorporare credenziali di sicurezza a lungo termine, come le chiavi di accesso, nell'applicazione.

Consulta la tabella seguente per determinare quale tipo di federazione IAM è il migliore per il tuo caso d'uso: IAM, Centro identità IAM o Amazon Cognito. I riepiloghi e la tabella seguenti forniscono una panoramica dei metodi che gli utenti possono utilizzare per ottenere l'accesso federato alle risorse. AWS 


| Tipo di federazione IAM | Tipo di account | Gestione degli accessi di... | Origine di identità supportata | 
| --- | --- | --- | --- | 
|  Federazione con il Centro identità IAM  |  Account multipli gestiti da AWS Organizations  |  Utenti umani della forza lavoro  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/id_roles_providers.html)  | 
|  Federazione con IAM  |  Singolo account autonomo  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/id_roles_providers.html)  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/id_roles_providers.html)  | 
|  Federazione con pool di identità Amazon Cognito  |  Qualsiasi  |  Utenti di app che richiedono l'autorizzazione IAM per accedere alle risorse  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/id_roles_providers.html)  | 

## Federazione con il Centro identità IAM
<a name="id_roles_providers_identity-center"></a>

Per una gestione centralizzata degli accessi degli utenti umani, consigliamo di utilizzare [Centro identità IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) per gestire l'accesso ai tuoi account e le autorizzazioni all'interno di questi account. Agli utenti di IAM Identity Center vengono concesse credenziali a breve termine per AWS le tue risorse. Puoi utilizzare Active Directory, un provider di identità (IdP) esterno o una directory IAM Identity Center come origine di identità per utenti e gruppi per assegnare l'accesso alle tue risorse. AWS 

IAM Identity Center supporta la federazione delle identità con SAML (Security Assertion Markup Language) 2.0 per fornire un accesso single sign-on federato agli utenti autorizzati a utilizzare le applicazioni all'interno del portale di accesso. AWS Gli utenti possono quindi accedere ai servizi che supportano SAML, incluse le applicazioni Console di gestione AWS e quelle di terze parti, come Microsoft 365, SAP Concur e Salesforce.

## Federazione con IAM
<a name="id_roles_providers_iam"></a>

Anche se consigliamo vivamente di gestire gli utenti umani nel Centro identità IAM, è possibile abilitare l’accesso ai principali federati con IAM per gli utenti umani impegnati in implementazioni a breve termine su piccola scala. IAM consente di utilizzare SAML 2.0 e Open ID Connect (OIDC) separati IdPs e di utilizzare attributi principali federati per il controllo degli accessi. Con IAM, puoi trasferire gli attributi utente, come centro di costo, titolo o locale, dal tuo IdPs a e implementare autorizzazioni di AWS accesso granulari basate su questi attributi.

Un *carico di lavoro* è una raccolta di risorse e codice che fornisce valore aziendale, ad esempio un’applicazione o un processo di backend. Il tuo carico di lavoro può richiedere un'identità IAM per effettuare richieste a AWS servizi, applicazioni, strumenti operativi e componenti. Queste identità includono macchine in esecuzione nei tuoi AWS ambienti, come EC2 istanze o AWS Lambda funzioni Amazon.

Puoi anche gestire identità computer per soggetti esterni che necessitano di accesso. Per concedere l'accesso alle identità computer, puoi utilizzare i ruoli IAM. I ruoli IAM dispongono di autorizzazioni specifiche e forniscono un modo per accedere AWS affidandosi a credenziali di sicurezza temporanee con una sessione di ruolo. Inoltre, potresti avere macchine esterne AWS che richiedono l'accesso ai tuoi ambienti. AWS Per le macchine che funzionano all'esterno dell' AWS utente, puoi utilizzare [IAM Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html). Per ulteriori informazioni sui ruoli, consulta [Ruoli IAM](id_roles.md). Per i dettagli su come utilizzare i ruoli per delegare l'accesso da una parte all'altra Account AWS, consulta[Tutorial IAM: delega l'accesso tra AWS account utilizzando i ruoli IAM](tutorial_cross-account-with-roles.md).

Per collegare un IdP direttamente a IAM, crei un'entità provider di identità per stabilire una relazione di fiducia tra il tuo Account AWS e l'IdP. Supporti IdPs IAM compatibili con [OpenID Connect (OIDC) o SAML 2.0 (](http://openid.net/connect/)[Security Assertion Markup Language 2.0](https://wiki.oasis-open.org/security)). Per ulteriori informazioni sull'utilizzo di uno di questi IdPs con AWS, consulta le seguenti sezioni:
+ [Federazione OIDC](id_roles_providers_oidc.md)
+ [Federazione SAML 2.0](id_roles_providers_saml.md)

## Federazione con pool di identità Amazon Cognito
<a name="id_roles_providers_cognito"></a>

Amazon Cognito è progettato per gli sviluppatori che desiderano autenticare e autorizzare gli utenti nelle proprie app mobili e Web. I pool di utenti di Amazon Cognito aggiungono funzionalità di accesso e registrazione all'app e i pool di identità forniscono credenziali IAM che consentono agli utenti di accedere alle risorse protette gestite in AWS. I pool di identità acquisiscono le credenziali per le sessioni temporanee tramite il funzionamento dell'operazione API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html).

Amazon Cognito funziona con gestori dell'identità digitale esterni che supportano SAML e OpenID Connect e con gestori di identità social come Facebook, Google e Amazon. L'app può far effettuare l'accesso a un utente con un pool di utenti o un gestore dell'identità digitale esterno e recuperare in seguito le risorse per suo conto con sessioni temporanee personalizzate con un ruolo IAM.

## Risorse aggiuntive
<a name="id_roles_providers_additional_resources"></a>
+ Per una dimostrazione su come creare un proxy federativo personalizzato che abiliti il Single Sign-On (SSO) nell' Console di gestione AWS utilizzo del sistema di autenticazione dell'organizzazione, consulta. [Abilita l'accesso personalizzato del broker di identità alla AWS console](id_roles_providers_enable-console-custom-url.md)

# Scenari comuni
<a name="id_federation_common_scenarios"></a>

**Nota**  
Ti consigliamo di richiedere agli utenti umani di utilizzare credenziali temporanee per l'accesso AWS. Hai preso in considerazione l'idea di utilizzarlo AWS IAM Identity Center? Puoi utilizzare IAM Identity Center per gestire centralmente l'accesso a più account Account AWS e fornire agli utenti un accesso Single Sign-On protetto da MFA a tutti gli account assegnati da un'unica posizione. Con IAM Identity Center puoi creare e gestire le identità degli utenti in IAM Identity Center o connetterti facilmente al tuo attuale gestore dell'identità digitale (IdP) compatibile con SAML 2.0. Per ulteriori informazioni, consulta [Cos'è IAM Identity Center?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) nella *Guida per l'utente di AWS IAM Identity Center *.

Puoi utilizzare un gestore dell’identità digitale (IdP) esterno per gestire le identità degli utenti al di fuori di AWS e dell’IdP esterno. Un IdP esterno può fornire informazioni sull'identità AWS utilizzando OpenID Connect (OIDC) o Security Assertion Markup Language (SAML). L'OIDC viene comunemente utilizzato quando un'applicazione che non funziona richiede l'accesso alle risorse. AWS AWS 

Quando desideri configurare la federazione con un IdP esterno, crei un *provider di identità* IAM per fornire AWS informazioni sull'IdP esterno e sulla sua configurazione. In questo modo si instaura un rapporto di fiducia tra il tuo Account AWS e l'IdP esterno. I seguenti argomenti forniscono scenari comuni per l'utilizzo dei provider di identità IAM.

**Topics**
+ [Amazon Cognito per applicazioni per dispositivi mobili](#id_roles_providers_oidc_cognito)
+ [Federazione OIDC per applicazioni per dispositivi mobili](#id_roles_providers_oidc_manual)

## Amazon Cognito per applicazioni per dispositivi mobili
<a name="id_roles_providers_oidc_cognito"></a>

Il modo migliore per utilizzare la federazione OIDC è utilizzare [Amazon Cognito](https://aws.amazon.com/cognito/). Ad esempio, Adele sta sviluppando un gioco per un dispositivo mobile in cui i dati dell'utente, quali punteggi e profili, vengono memorizzati in Amazon S3 e Amazon DynamoDB. Adele potrebbe archiviare questi dati anche in locale sul dispositivo e utilizzare Amazon Cognito per mantenerli sincronizzati su tutti i dispositivi. Tuttavia, Adele è consapevole che, per motivi di sicurezza e manutenzione, le credenziali di sicurezza AWS a lungo termine non dovrebbero essere distribuite con il gioco. Adele sa anche che il gioco potrebbe avere un gran numero di utenti. Per tutti questi motivi, non desidera creare nuove identità utente in IAM per ciascun giocatore. In alternativa, decide di sviluppare il gioco in modo che gli utenti possano effettuare l’accesso utilizzando un’identità già stabilita con un noto gestore dell’identità digitale (IdP) esterno, ad esempio **Accedi con Amazon**, **Facebook**, **Google** o qualsiasi provider di identità compatibile con **OpenID Connect** (OIDC). Il suo gioco può sfruttare il meccanismo di autenticazione di uno di questi provider per convalidare l'identità dell'utente. 

Per consentire all'app per dispositivi mobili di accedere alle sue AWS risorse, Adele deve innanzitutto registrare un ID sviluppatore presso il suo nome. IdPs Configura anche l'applicazione con ciascuno di questi provider. Nella cartella Account AWS che contiene il bucket Amazon S3 e la tabella DynamoDB per il gioco, Adele utilizza Amazon Cognito per creare ruoli IAM che definiscono con precisione le autorizzazioni di cui il gioco ha bisogno. Se utilizza un IdP OIDC, crea anche un'entità provider di identità IAM OIDC per stabilire un rapporto di fiducia tra il pool di identità di Amazon Cognito che possiede e [l'](https://docs.aws.amazon.com/cognito/latest/developerguide/external-identity-providers.html)IdP. Account AWS 

Nel codice dell'app, Adele chiama l'interfaccia di accesso per il provider di identità che ha configurato in precedenza. L'IdP gestisce tutti i dettagli relativi all'accesso dell'utente e l'app riceve un token di OAuth accesso o un token ID OIDC dal provider. L'app di Adele può scambiare queste informazioni di autenticazione con un set di credenziali di sicurezza temporanee costituite da un ID della chiave di AWS accesso, una chiave di accesso segreta e un token di sessione. L'app può quindi utilizzare queste credenziali per accedere ai servizi web offerti da. AWS L'app è limitata alle autorizzazioni definite nel ruolo che assume.

La figura riportata di seguito mostra un flusso semplificato su come questo processo potrebbe funzionare, usando Login with Amazon come provider di identità. Per la fase 2, l'app può anche utilizzare Facebook, Google o qualsiasi altro IdP compatibile con OIDC, ma ciò non è mostrato qui.

![\[Esempio di flusso di lavoro con utilizzo di Amazon Cognito per effettuare la federazione degli utenti per un'applicazione per dispositivi mobili\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/mobile-app-web-identity-federation.diagram.png)


 

1. Un cliente avvia l'app su un dispositivo mobile. L'app richiede all'utente di effettuare l'accesso.

1. L'app utilizza il login con le risorse di Login with Amazon per accettare le credenziali dell'utente.

1. L'app utilizza le operazioni dell'API Amazon Cognito `GetId` e `GetCredentialsForIdentity` per scambiare il token ID di Login with Amazon con un token di Amazon Cognito. Amazon Cognito, che è stato configurato per rendere attendibile il tuo progetto Login with Amazon, genera un token che scambia con credenziali di sessione temporanee per AWS STS.

1. L'app riceve le credenziali di sicurezza temporanee da Amazon Cognito. La tua app può anche utilizzare il flusso di lavoro Basic (Classic) in Amazon Cognito per recuperare i token da utilizzare. AWS STS `AssumeRoleWithWebIdentity` Per ulteriori informazioni, consulta [Flusso di autenticazione dei pool di identità (identità federate)](https://docs.aws.amazon.com/cognito/latest/developerguide/authentication-flow.html) nella Guida per gli sviluppatori di Amazon Cognito.

1. Le credenziali di sicurezza temporanee possono essere utilizzate dall'app per accedere alle risorse AWS richieste dall'applicazione per funzionare. Il ruolo associato alle credenziali di sicurezza temporanee e alle relative policy assegnate determina a quali elementi è possibile accedere.

Utilizza la seguente procedura per configurare la tua app in modo che utilizzi Amazon Cognito per autenticare gli utenti e consentire all'app di accedere alle risorse. AWS Per le operazioni specifiche per realizzare questo scenario, consulta la documentazione di Amazon Cognito.

1. (Facoltativo) Registrati come sviluppatore con Login with Amazon, Facebook, Google o qualsiasi altro provider di identità compatibile con OpenID Connect (OIDC) e configura una o più app con il provider. Questa fase è facoltativa poiché Amazon Cognito supporta anche l'accesso non autenticato (guest) per gli utenti.

1. Vai ad [Amazon Cognito in](https://console.aws.amazon.com/cognito/home). Console di gestione AWS Utilizza la procedura guidata di Amazon Cognito per creare un pool di identità, ovvero un container che Amazon Cognito utilizza per mantenere le identità degli utenti finali organizzate per le app. Puoi condividere i pool di identità tra le app. Quando configuru un pool di identità, Amazon Cognito crea uno o due ruoli IAM (uno per le identità autenticate e uno per le identità "guest" non autenticate) che definiscono le autorizzazioni per gli utenti di Amazon Cognito. 

1. Integra [AWS](https://docs.amplify.aws) Amplify con l’app e importa i file necessari per utilizzare Amazon Cognito.

1. Crea un'istanza del provider di credenziali di Amazon Cognito, passando l'ID del pool di identità, il numero del tuo Account AWS e l'Amazon Resource Name (ARN) dei ruoli associati al pool di identità. La procedura guidata di Amazon Cognito Console di gestione AWS fornisce un codice di esempio per aiutarti a iniziare.

1. Quando l'app accede a una AWS risorsa, passa l'istanza del provider di credenziali all'oggetto client, che passa le credenziali di sicurezza temporanee al client. Le autorizzazioni per le credenziali si basano sul ruolo o sui ruoli definiti in precedenza.

Per ulteriori informazioni, consulta gli argomenti seguenti:
+ [Accedi (Android) nella](https://docs.amplify.aws/lib/auth/signin/q/platform/android/) documentazione del AWS Amplify Framework. 
+ [Accedi (iOS)](https://docs.amplify.aws/lib/auth/signin/q/platform/ios/) nella documentazione del AWS Amplify Framework.

## Federazione OIDC per applicazioni per dispositivi mobili
<a name="id_roles_providers_oidc_manual"></a>

Per risultati ottimali, utilizza Amazon Cognito come gestore di identità per quasi tutti gli scenari di federazione OIDC. Amazon Cognito è semplice da utilizzare e fornisce funzionalità aggiuntive quali l'accesso anonimo (non autenticato) e la sincronizzazione dei dati degli utenti tra più dispositivi e provider. Tuttavia, se hai già creato un'app che utilizza la federazione OIDC chiamando manualmente l'API `AssumeRoleWithWebIdentity`, puoi continuare a utilizzarla e le app funzioneranno comunque correttamente. 

Il processo per l'utilizzo della federazione OIDC ***senza*** Amazon Cognito segue questa struttura generale: 

1. Effettuare la registrazione come sviluppatore al provider di identità (IdP) esterno e configurare l'app con tale provider, che fornisce un ID univoco per l'app. (Diversi IdPs utilizzano una terminologia diversa per questo processo. Questo schema utilizza il termine *configura* per il processo di identificazione dell'app con l'IdP.) Ogni IdP ti fornisce un ID app univoco per quell'IdP, quindi se configuri la stessa app con più app IdPs, la tua app avrà più app. IDs È possibile configurare più app con ciascun provider. 

   I seguenti link esterni forniscono informazioni sull'utilizzo di alcuni dei provider di identità più utilizzati ()IdPs: 
   + [Centro Sviluppatori di Login with Amazon](https://login.amazon.com/) 
   + [Aggiunta dell'accesso a Facebook a un'app o a un sito Web](https://developers.facebook.com/docs/facebook-login/v2.1) sul sito degli sviluppatori di Facebook. 
   + [Utilizzo della OAuth versione 2.0 per il login (OpenID Connect)](https://developers.google.com/accounts/docs/OAuth2Login) sul sito degli sviluppatori di Google.
**Importante**  
Se utilizzi un provider di identità OIDC di Google, Facebook o Amazon Cognito, non creare un provider di identità IAM separato in. Console di gestione AWS AWS dispone di questi provider di identità OIDC integrati e disponibili per l'uso da parte tua. Ignora la fase seguente e passa direttamente alla creazione di nuovi ruoli utilizzando il provider di identità.

1. Se utilizzi un IdP di identità diverso da Google, Facebook o Amazon Cognito compatibile con OIDC, crea un'entità provider di identità IAM.

1. In IAM, [crea uno o più ruoli](id_roles_create_for-idp.md). Per ogni ruolo, definisci chi può assumere il ruolo (policy di attendibilità) e quali autorizzazioni concedere agli utenti dell'app (policy di autorizzazione). Di solito, è necessario creare un ruolo per ogni provider di identità supportato da un'app. Ad esempio, puoi creare un ruolo che può essere assunto da un'applicazione quando l'utente effettua l'accesso tramite Login with Amazon, un secondo ruolo per la stessa applicazione in cui l'utente effettua l'accesso tramite Facebook e un terzo ruolo per l'applicazione in cui l'utente effettua l'accesso tramite Google. Per la relazione di trust, specificare il provider di identità (ad esempio Amazon.com) come `Principal` (l'entità attendibile) e includere un elemento `Condition` corrispondente all'ID app assegnato dal provider di identità. Esempi di ruoli per diversi provider sono descritti più in [Creazione di un ruolo per un provider di identità di terze parti](id_roles_create_for-idp.md). 

1. Nell'applicazione, autenticare gli utenti con il provider di identità. Le specifiche della procedura variano sia in base al provider di identità in uso (Login with Amazon, Facebook o Google) sia in base alla piattaforma su cui viene eseguita l'app. Ad esempio, il metodo di autenticazione di un'app Android può differire da quello di un'app iOS o di un'app Web JavaScript basata.

   In genere, se l'utente non ha già effettuato l'accesso, il provider di identità si occupa di visualizzare una pagina di accesso. Dopo aver autenticato l'utente, il provider di identità restituisce all'app un token di autenticazione con le informazioni sull'utente. Le informazioni incluse dipendono dagli elementi esposti dal provider di identità e dalle informazioni che l'utente è disposto a condividere. Queste informazioni possono essere utilizzate nell'app.

1. Nell'app, effettuare una chiamata *non firmata* all'operazione `AssumeRoleWithWebIdentity` per richiedere le credenziali di sicurezza provvisorie. Nella richiesta, passi il token di autenticazione dell'IdP e specifichi l'Amazon Resource Name (ARN) per il ruolo IAM che hai creato per quell'IdP. AWS verifica che il token sia affidabile e valido e, in tal caso, restituisce all'app credenziali di sicurezza temporanee che dispongono delle autorizzazioni per il ruolo indicato nella richiesta. La risposta include anche i metadati relativi all'utente forniti dal provider di identità, ad esempio l'ID utente univoco che il provider associa all'utente.

1. Utilizzando le credenziali di sicurezza temporanee della `AssumeRoleWithWebIdentity` risposta, l'app invia richieste firmate alle operazioni API. AWS Le informazioni sull'ID utente fornite dall'IdP possono distinguere gli utenti nella tua app. Ad esempio, è possibile inserire in cartelle Amazon S3 oggetti che includono l'ID utente come prefisso o suffisso. Ciò consente di creare policy di controllo degli accessi che bloccano la cartella in modo che solo l'utente con l'ID specificato possa accedervi. Per ulteriori informazioni, consulta [AWS STS principi utente federati](reference_policies_elements_principal.md#sts-session-principals).

1. L'app dovrebbe memorizzare nella cache le credenziali di sicurezza temporanee in modo da non doverne ottenere di nuove ogni volta che ha bisogno di effettuare una richiesta ad AWS. Come impostazione predefinita, le credenziali sono valide per un'ora. Quando scadono (o prima), devi effettuare un'altra chiamata ad `AssumeRoleWithWebIdentity` per ottenere un nuovo set di credenziali di sicurezza temporanee. A seconda del provider di identità e di come gestisce i token, potrebbe essere necessario aggiornare il token del provider prima di effettuare una nuova chiamata ad `AssumeRoleWithWebIdentity`, dato che anche i token di solito scadono dopo un determinato periodo di tempo. Se utilizzi l' AWS SDK per iOS o l'SDK per Android, puoi utilizzare AWS l'azione [STSCredentialsAmazon](https://aws.amazon.com/blogs/mobile/using-the-amazoncredentialsprovider-protocol-in-the-aws-sdk-for-ios) Provider, che gestisce le credenziali temporanee IAM, incluso l'aggiornamento, se necessario.

# Federazione OIDC
<a name="id_roles_providers_oidc"></a>

Immagina di creare un'applicazione che accede a AWS risorse, come GitHub Actions che utilizza flussi di lavoro per accedere ad Amazon S3 e DynamoDB. 

Quando utilizzi questi flussi di lavoro, effettui richieste ai AWS servizi che devono essere firmate con una chiave di accesso. AWS Tuttavia, consigliamo **vivamente** di **non** archiviare AWS le credenziali a lungo termine in applicazioni esterne. AWS*Configura invece le tue applicazioni per richiedere le credenziali di AWS sicurezza temporanee in modo dinamico quando necessario utilizzando la federazione OIDC.* Le credenziali temporanee fornite sono mappate a un AWS ruolo che dispone solo delle autorizzazioni necessarie per eseguire le attività richieste dall'applicazione.

Con la federazione OIDC, non è necessario creare il codice di accesso personalizzato o gestire le proprie identità utente personalizzate. Puoi invece utilizzare OIDC in applicazioni, come GitHub Actions o qualsiasi altro IdP compatibile con OpenID [Connect (OIDC)](http://openid.net/connect/), con cui effettuare l'autenticazione. AWS Ricevono un token di autenticazione, noto come JSON Web Token (JWT), e quindi lo scambiano con credenziali di sicurezza temporanee in AWS quella mappa con un ruolo IAM con le autorizzazioni per utilizzare risorse specifiche dell'utente. Account AWS L'utilizzo di un IdP ti aiuta a mantenere la tua Account AWS sicurezza perché non devi incorporare e distribuire credenziali di sicurezza a lungo termine con la tua applicazione.

La federazione OIDC supporta sia machine-to-machine l'autenticazione (ad esempio CI/CD pipeline, script automatici e applicazioni serverless) sia l'autenticazione degli utenti umani. Nei casi di autenticazione di utenti umani in cui è necessario gestire la registrazione, l’accesso e i profili dell’utente, valuta l’utilizzo di [Amazon Cognito](https://aws.amazon.com/cognito/) come gestore di identità. Per informazioni dettagliate sull’utilizzo di Amazon Cognito con OIDC, consulta [Amazon Cognito per applicazioni per dispositivi mobili](id_federation_common_scenarios.md#id_roles_providers_oidc_cognito).

**Nota**  
I JSON Web Tokens (JWTs) emessi dai provider di identità OpenID Connect (OIDC) contengono una data di scadenza nell'`exp`attestazione che specifica quando scade il token. IAM offre una finestra di cinque minuti oltre la data di scadenza specificata nel JWT per tenere conto dell'alterazione del clock, come consentito dallo standard [OpenID Connect (OIDC) Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html). Ciò significa che gli OIDC JWTs ricevuti da IAM dopo la data di scadenza, ma entro questo intervallo di cinque minuti vengono accettati per un'ulteriore valutazione ed elaborazione.

**Topics**
+ [Risorse aggiuntive per la federazione OIDC](#id_roles_providers_oidc_resources)
+ [Creare un provider di identità OpenID Connect (OIDC) in IAM](id_roles_providers_create_oidc.md)
+ [Ottenere l'impronta digitale per un provider di identità OpenID Connect](id_roles_providers_create_oidc_verify-thumbprint.md)
+ [Controlli tramite provider di identità per i provider OIDC condivisi](id_roles_providers_oidc_secure-by-default.md)

## Risorse aggiuntive per la federazione OIDC
<a name="id_roles_providers_oidc_resources"></a>

Le risorse seguenti possono fornire ulteriori informazioni sulla federazione OIDC:
+ Usa OpenID Connect nei tuoi GitHub flussi di lavoro configurando [OpenID](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) Connect in Amazon Web Services
+ [Amazon Cognito Identity](https://docs.amplify.aws/lib/auth/advanced/q/platform/android/) nella *Guida alle librerie Amplify per Android* e [Guida all'identità di Amazon Cognito](https://docs.amplify.aws/lib/auth/advanced/q/platform/ios/) nella *Guida alle librerie Amplify per Swift*.
+ [Come usare un ID esterno per concedere l'accesso alle tue AWS risorse](https://aws.amazon.com/blogs/security/how-to-use-external-id-when-granting-access-to-your-aws-resources/) sul *AWS Security Blog* fornisce indicazioni su come configurare in modo sicuro l'accesso tra account e la federazione delle identità esterne.

# Creare un provider di identità OpenID Connect (OIDC) in IAM
<a name="id_roles_providers_create_oidc"></a>

I *provider di identità OIDC IAM* sono entità in IAM che descrivono un servizio del provider di identità (IdP) esterno in grado di supportare lo standard [OpenID Connect](http://openid.net/connect/) (OIDC), come Google o Salesforce. È possibile utilizzare un provider di identità OIDC IAM per stabilire la fiducia tra un provider di identità compatibile con OIDC e il tuo Account AWS. È utile quando si crea un'app mobile o un'applicazione web che richiede l'accesso alle AWS risorse, ma non si desidera creare un codice di accesso personalizzato o gestire le proprie identità utente. Per ulteriori informazioni su questo scenario, consulta [Federazione OIDC](id_roles_providers_oidc.md).

Puoi creare e gestire un provider di identità IAM OIDC utilizzando l' Console di gestione AWS AWS Command Line Interface API Tools for Windows PowerShell o IAM.

Una volta creato un provider di identità OIDC IAM, dovrai creare uno o più ruoli IAM. Un ruolo è un'identità AWS che non ha le proprie credenziali (come invece fa un utente). Tuttavia, in questo contesto, un ruolo viene assegnato in modo dinamico a un principale federato OIDC autenticato dall’IdP dell’organizzazione. Il ruolo consente al provider di identità dell'organizzazione di richiedere credenziali di sicurezza provvisorie per l'accesso a AWS. Le politiche assegnate al ruolo determinano le operazioni consentite agli utenti. AWS Per creare un ruolo per un provider di identità di terze parti, consulta [Creazione di un ruolo per un provider di identità di terze parti](id_roles_create_for-idp.md).

**Importante**  
Quando si configurano politicy basate sull'identità per operazioni che supportano risorse `oidc-provider`, IAM valuta l'URL completo del provider di identità OIDC, inclusi i percorsi specificati. Se l'URL del tuo provider di identità OIDC ha un percorso, devi includere quel percorso nell'ARN `oidc-provider` come valore dell'elemento `Resource`. È inoltre possibile aggiungere una barra in avanti e un carattere jolly (`/*`) al dominio URL o usare caratteri jolly (`*` e `?`) in qualsiasi punto del percorso dell'URL. Se l'URL del provider di identità OIDC nella richiesta non corrisponde al valore impostato nell'elemento `Resource` della policy, la richiesta ha esito negativo.

Per risolvere i problemi più comuni relativi alla federazione IAM OIDC, consulta [Risolvere gli errori relativi a](https://repost.aws/knowledge-center/iam-oidc-idp-federation) OIDC su Re:POST. AWS 

**Topics**
+ [Prerequisiti: convalida la configurazione del tuo provider di identità](#manage-oidc-provider-prerequisites)
+ [Creazione e gestione di un provider OIDC (Console)](#manage-oidc-provider-console)
+ [Creazione e gestione di un provider di identità OIDC IAM (AWS CLI)](#manage-oidc-provider-cli)
+ [Creazione e gestione di un provider di identità (API) OIDC AWS](#manage-oidc-provider-api)

## Prerequisiti: convalida la configurazione del tuo provider di identità
<a name="manage-oidc-provider-prerequisites"></a>

Prima di poter creare un provider di identità OIDC IAM, è necessario disporre delle seguenti informazioni dal proprio IdP. Per ulteriori informazioni su come ottenere le informazioni di configurazione del provider OIDC, consulta la documentazione dell'IdP.

1. Determina l'URL disponibile pubblicamente del tuo provider di identità OIDC. L'URL deve iniziare con i https://. Per the OIDC standard, path com ponenti sono consentiti, ma i parametri di interrogazione no. In genere, l'URL è composto solo da un nome host, ad esempio. https://server.example.org or https://example.com L'URL non deve contenere un numero di porta.

1. Aggiungi **/.well-known/openid-configuration** alla fine dell'URL del tuo provider di identità OIDC per visualizzare il documento di configurazione e i metadati disponibili pubblicamente del provider. È necessario disporre di un documento di rilevamento in formato JSON con il documento di configurazione e i metadati del provider che possono essere recuperati dall'[URL dell'endpoint di rilevamento del provider OpenID Connect](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfig).

1. Verifica che i seguenti valori siano inclusi nelle informazioni di configurazione del tuo provider. Se nella configurazione openid manca uno di questi campi, è necessario aggiornare il documento di rilevamento. Questo processo può variare in base al provider di identità, quindi segui la documentazione del tuo IdP per completare questa attività.
   + emittente: l'URL del dominio.
   + jwks\$1uri: l'endpoint JSON Web Key Set (JWKS) da cui IAM ottiene le chiavi pubbliche. Il provider di identità deve includere un endpoint JSON Web Key Set (JWKS) nella configurazione openid. Questo URI definisce dove ottenere le chiavi pubbliche utilizzate per verificare i token firmati dal provider di identità.
**Nota**  
Il JSON Web Key Set (JWKS) deve contenere almeno una chiave e può avere un massimo di 100 chiavi RSA e 100 chiavi EC. Se il JWKS del tuo provider di identità OIDC contiene più di 100 chiavi RSA o 100 chiavi EC, verrà restituita un'`InvalidIdentityToken`eccezione quando si utilizza l'operazione [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)API con un JWT firmato da un tipo di chiave che supera il limite di 100 chiavi. Ad esempio, se un JWT è firmato con l’algoritmo RSA e nel JWKS del provider sono presenti più di 100 chiavi RSA, verrà restituita un’eccezione `InvalidIdentityToken`.
   + claims\$1supported: informazioni sull'utente che ti aiutano a garantire che le risposte di autenticazione OIDC del tuo IdP contengano gli attributi richiesti AWS utilizzati nelle policy IAM per verificare le autorizzazioni per i principali federati OIDC. Per un elenco delle chiavi di condizione IAM che possono essere utilizzate per le attestazioni, consulta [Chiavi disponibili per la federazione AWS OIDC](reference_policies_iam-condition-keys.md#condition-keys-wif).
     + aud: devi determinare il valore dichiarato del pubblico dal tuo IdP in JSON Web Tokens (). JWTs L'attestazione del pubblico (aud) è specifica dell'applicazione e identifica i destinatari previsti del token. Quando registri un'app mobile o Web con un provider OpenID Connect, viene stabilito un ID client che identifica l'applicazione. L'ID client è un identificatore univoco per l'app passato nell'attestazione aud per l'autenticazione. Quando crei il tuo provider di identità OIDC IAM, l'attestazione aud deve corrispondere al valore Pubblico.
     + iat: le attestazioni devono includere un valore per `iat` che rappresenti l'ora in cui viene emesso il token ID.
     + iss: l'URL del provider di identità. L'URL deve iniziare con https:// and should correspond to the Provider URL provided to IAM. Per the OIDC standard, path com i ponenti sono consentiti, ma i parametri di query no. In genere, l'URL è composto solo da un nome host, ad esempio. https://server.example.org or https://example.com L'URL non deve contenere un numero di porta.
   + response\$1types\$1supported: id\$1token
   + subject\$1types\$1supported: public
   + id\$1token\$1signing\$1alg\$1values\$1supported:,,,, RS256 RS384 RS512 ES256 ES384 ES512
**Nota**  
Puoi includere rivendicazioni aggiuntive come nell'esempio seguente; tuttavia, ignorerà l'affermazione. `my_custom_claim` AWS STS   

   ```
   {
     "issuer": "https://example-domain.com",
     "jwks_uri": "https://example-domain.com/jwks/keys",
     "claims_supported": [
       "aud",
       "iat",
       "iss",
       "name",
       "sub",
       "my_custom_claim"
     ],
     "response_types_supported": [
       "id_token"
     ],
     "id_token_signing_alg_values_supported": [
       "RS256",
       "RS384",
       "RS512",
       "ES256",
       "ES384",
       "ES512"
     ],
     "subject_types_supported": [
       "public"
     ]
   }
   ```

## Creazione e gestione di un provider OIDC (Console)
<a name="manage-oidc-provider-console"></a>

Segui queste istruzioni per creare e gestire un provider di identità OIDC IAM nella Console di gestione AWS.

**Importante**  
Se utilizzi un provider di identità OIDC di Google, Facebook o Amazon Cognito, non creare un provider di identità IAM separato utilizzando questa procedura. Questi provider di identità OIDC sono già integrati AWS e sono disponibili per l'uso da parte dell'utente. Segui invece i passaggi per creare nuovi ruoli per il provider di identità e consulta [Creare un ruolo per la federazione OpenID Connect (console)](id_roles_create_for-idp_oidc.md).

**Come creare un provider di identità OIDC IAM (console)**

1. <a name="idpoidcstep1"></a>Prima di creare un provider di identità OIDC IAM, occorre registrare l'applicazione sul provider di identità per ricevere un *ID client*. L'ID client (noto anche come *destinatario*) è un identificatore univoco per l'app rilasciato durante la registrazione dell'app sul provider di identità. Per ulteriori informazioni su come ottenere un ID client, consulta la documentazione per l'IdP. 
**Nota**  
AWS protegge la comunicazione con i provider di identità OIDC (IdPs) utilizzando la nostra libreria di autorità di certificazione root affidabili (CAs) per verificare il certificato TLS dell'endpoint JSON Web Key Set (JWKS). Se il tuo IdP OIDC si basa su un certificato non firmato da uno di questi provider affidabili CAs, solo allora proteggiamo la comunicazione utilizzando le impronte digitali impostate nella configurazione dell'IdP. AWS ricorreremo alla verifica dell'impronta digitale se non siamo in grado di recuperare il certificato TLS o se è richiesto TLS v1.3.

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

1. Nel riquadro di navigazione, scegli **Provider di identità**, quindi seleziona **Aggiungi provider**.

1. Per **Configura provider**, scegli **OpenID Connect**. 

1. In **Provider URL (URL provider)**, digitare l'URL del provider di identità. L'URL deve soddisfare queste restrizioni:
   + L'URL rileva la distinzione tra lettere maiuscole e minuscole.
   + L'URL deve iniziare con **https://**.
   + L'URL non deve contenere un numero di porta. 
   + All'interno del tuo Account AWS, ogni provider di identità IAM OIDC deve utilizzare un URL univoco. Se provi a inviare un URL che è già stato utilizzato per un provider OpenID Connect in Account AWS, riceverai un errore.

1. Per **Audience**, digita l'ID client dell'applicazione che hai registrato con l'IdP e in cui hai ricevuto e a [Step 1](#idpoidcstep1) cui hai inviato le richieste. AWS Se disponi di client aggiuntivi IDs (noti anche come *audience*) per questo IdP, puoi aggiungerli in un secondo momento nella pagina dei dettagli del provider.
**Nota**  
Se il tuo token IdP JWT include l'attestazione `azp`, inserisci questo valore come valore Pubblico.  
Se il tuo provider di identità OIDC sta impostando entrambi `aud` e le `azp` attestazioni nel token, AWS STS utilizzerà il valore dell'attestazione come `azp` attestazione. `aud`

1. (Facoltativo) Per **Aggiungi tag**, puoi aggiungere coppie chiave-valore per aiutarti a identificare e organizzare le tue. IdPs È inoltre possibile utilizzare i tag per controllare l'accesso alle risorse AWS . Per ulteriori informazioni sul tagging dei provider di identità OIDC IAM, consulta [Aggiungere tag ai provider di identità OpenID Connect (OIDC)](id_tags_oidc.md). Seleziona **Aggiungi tag**. Immetti i valori per ogni coppia chiave-valore del tag. 

1. Controlla le informazioni inserite. Quando hai finito, scegli **Aggiungi provider**. IAM proverà a recuperare e utilizzare l'impronta digitale della CA intermedia del certificato server IdP OIDC per creare il provider di identità OIDC IAM.
**Nota**  
La catena di certificati del provider di identità OIDC deve iniziare con l'URL del dominio o dell'emittente, quindi il certificato intermedio e deve terminare con il certificato root. Se l'ordine della catena di certificati è diverso o se include certificati duplicati o aggiuntivi, riceverai un errore di mancata corrispondenza della firma e STS non riuscirà a convalidare il JSON Web Token (JWT). Correggi l'ordine dei certificati nella catena restituita dal server per risolvere l'errore. Per ulteriori informazioni sugli standard della catena di certificati, consulta [certificate\$1list nella RFC 5246](https://www.rfc-editor.org/rfc/rfc5246#section-7.4.2) sul sito Web della serie RFC.

1. Assegna un ruolo IAM al tuo provider di identità per concedere alle identità degli utenti esterni gestite dal tuo provider di identità le autorizzazioni per accedere AWS alle risorse del tuo account. Per ulteriori informazioni sulla creazione di ruoli per la federazione delle identità, consulta [Creazione di un ruolo per un provider di identità di terze parti](id_roles_create_for-idp.md).
**Nota**  
L'OIDC IdPs utilizzato in una politica di fiducia dei ruoli deve appartenere allo stesso account del ruolo che la considera attendibile.

**Come aggiungere o rimuovere un'identificazione personale per un provider di identità OIDC IAM (console)**
**Nota**  
AWS protegge la comunicazione con i provider di identità OIDC (IdPs) utilizzando la nostra libreria di autorità di certificazione root affidabili (CAs) per verificare il certificato TLS dell'endpoint JSON Web Key Set (JWKS). Se il tuo IdP OIDC si basa su un certificato non firmato da uno di questi provider affidabili CAs, solo allora proteggiamo la comunicazione utilizzando le impronte digitali impostate nella configurazione dell'IdP. AWS ricorreremo alla verifica dell'impronta digitale se non siamo in grado di recuperare il certificato TLS o se è richiesto TLS v1.3.

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

1. Nel pannello di navigazione, scegli **Identity providers** (Provider di identità). Scegli quindi il nome del provider di identità IAM che desideri aggiornare.

1. Scegli la scheda **Verifica dell'endpoint**, quindi nella sezione **Impronte digitali**, scegli **Gestisci**. Per immettere un nuovo valore di identificazione personale, scegli **Aggiungi identificazione personale**. Per rimuovere un'identificazione personale, scegli **Rimuovi** accanto all'elemento che desideri rimuovere.
**Nota**  
Un provider di identità OIDC IAM deve avere un numero di identificazioni personale compreso tra 1 e 5.

    Al termine, scegli **Salva modifiche**.

**Come aggiungere un destinatario per un provider di identità OIDC IAM (console)**

1. Nel pannello di navigazione, scegli **Provider di identità**, quindi scegli il nome del provider di identità IAM che desideri aggiornare.

1. Nella sezione **Destinatari**, scegli **Operazioni** e seleziona **Aggiungi destinatario**. 

1. Digita l'ID client dell'applicazione che hai registrato con l'IdP e in [Step 1](#idpoidcstep1) cui hai ricevuto le richieste. AWS Quindi scegli **Aggiungi destinatari**.
**Nota**  
Un provider di identità OIDC IAM deve avere un numero di audience compreso tra 1 e 100.

**Come rimuovere un destinatario da un provider di identità OIDC IAM (console)**

1. Nel pannello di navigazione, scegli **Provider di identità**, quindi scegli il nome del provider di identità IAM che desideri aggiornare.

1. Nella sezione **Destinatari**, seleziona il pulsante di opzione accanto al destinatario che desideri rimuovere, quindi seleziona **Operazioni**.

1.  Scegli **Rimuovi destinatario**. Viene visualizzata una nuova finestra.

1. Se rimuovi un destinatario, le identità a esso federate non possono assumere ruoli associati al destinatario. Nella finestra, leggi l'avviso e conferma di volere rimuovere il destinatario digitando la parola `remove` nel campo.

1. Scegli **Rimuovi** per rimuovere il destinatario.

**Come eliminare un provider di identità OIDC IAM (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, scegli **Identity providers** (Provider di identità). 

1. Seleziona la casella di controllo accanto al provider di identità IAM che desideri eliminare. Viene visualizzata una nuova finestra.

1. Conferma che desideri eliminare il provider digitando la parola `delete` nel campo. Quindi, scegli **Elimina**.

## Creazione e gestione di un provider di identità OIDC IAM (AWS CLI)
<a name="manage-oidc-provider-cli"></a>

Puoi utilizzare i seguenti AWS CLI comandi per creare e gestire i provider di identità IAM OIDC.

**Come creare un provider di identità OIDC IAM (AWS CLI)**

1. (Facoltativo) Per ottenere un elenco di tutti i provider di identità OIDC IAM nell'account AWS , emetti il seguente comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html)

1. Per creare un nuovo provider di identità OIDC IAM, esegui il comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/create-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-open-id-connect-provider.html)

**Come aggiornare l'elenco di identificazioni personali del certificato del server per un provider di identità OIDC IAM esistente (AWS CLI)**
+ Per aggiornare l'elenco di identificazioni personali del certificato del server per un provider di identità OIDC IAM, esegui il comando:
  + [https://docs.aws.amazon.com/cli/latest/reference/iam/update-open-id-connect-provider-thumbprint.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-open-id-connect-provider-thumbprint.html)

**Come aggiungere i tag a un provider di identità OIDC IAM esistente (AWS CLI)**
+ Per aggiungere i tag a un provider di identità OIDC IAM esistente, esegui il comando:
  + [https://docs.aws.amazon.com/cli/latest/reference/iam/tag-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-open-id-connect-provider.html)

**Come elencare i tag per un provider di identità OIDC IAM esistente (AWS CLI)**
+ Per elencare i tag per un provider di identità OIDC IAM esistente, esegui il comando:
  + [https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-provider-tags.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-provider-tags.html)

**Come rimuovere i tag da un provider di identità OIDC IAM (AWS CLI)**
+ Per rimuovere i tag da un provider di identità OIDC IAM esistente, esegui il comando:
  + [https://docs.aws.amazon.com/cli/latest/reference/iam/untag-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-open-id-connect-provider.html)

**Come aggiungere o rimuovere un ID client da un provider di identità OIDC IAM esistente (AWS CLI)**

1. (Facoltativo) Per ottenere un elenco di tutti i provider di identità OIDC IAM nell'account AWS , emetti il seguente comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html)

1. (Facoltativo) Per ottenere informazioni dettagliate su un provider di identità OIDC IAM, esegui il comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/get-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-open-id-connect-provider.html)

1. Per aggiungere un nuovo ID client a un provider di identità OIDC IAM esistente, esegui il comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/add-client-id-to-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/add-client-id-to-open-id-connect-provider.html)

1. Per rimuovere un client da un provider di identità OIDC IAM esistente, esegui il comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/remove-client-id-from-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/remove-client-id-from-open-id-connect-provider.html)

**Come eliminare un provider di identità OIDC IAM (AWS CLI)**

1. (Facoltativo) Per ottenere un elenco di tutti i provider di identità OIDC IAM nell'account AWS , emetti il seguente comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html)

1. (Facoltativo) Per ottenere informazioni dettagliate su un provider di identità OIDC IAM, esegui il comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/get-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-open-id-connect-provider.html)

1. Per eliminare un provider di identità OIDC IAM, esegui il comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-open-id-connect-provider.html)

## Creazione e gestione di un provider di identità (API) OIDC AWS
<a name="manage-oidc-provider-api"></a>

Puoi utilizzare i seguenti comandi dell'API IAM per creare e gestire provider OIDC.

**Per creare un provider di identità (API) IAM OIDC AWS**

1. (Facoltativo) Per ottenere un elenco di tutti i provider di identità OIDC IAM nell'account AWS , chiama la seguente operazione:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html)

1. Per creare un nuovo provider di identità OIDC IAM, chiama la seguente operazione: 
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateOpenIDConnectProvider.html)

**Per aggiornare l'elenco delle impronte digitali dei certificati server per un provider di identità (API) IAM OIDC esistente AWS**
+ Per aggiornare l'elenco di identificazioni personali del certificato del server per un provider di identità OIDC IAM, chiama la seguente operazione:
  + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateOpenIDConnectProviderThumbprint.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateOpenIDConnectProviderThumbprint.html)

**Per etichettare un provider di identità (API) IAM OIDC esistente AWS**
+ Per aggiungere i tag a un provider di identità OIDC IAM, richiama la seguente operazione:
  + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagOpenIDConnectProvider.html)

**Per elencare i tag per un provider di identità (API) IAM OIDC esistente AWS**
+ Per elencare i tag per un provider di identità OIDC IAM esistente, richiama la seguente operazione:
  + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviderTags.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviderTags.html)

**Per rimuovere i tag su un provider di identità (API) IAM OIDC esistente AWS**
+ Per rimuovere i tag da un provider di identità OIDC IAM esistente, richiama la seguente operazione:
  + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagOpenIDConnectProvider.html)

**Per aggiungere o rimuovere un ID client da un provider di identità (API) IAM OIDC esistente AWS**

1. (Facoltativo) Per ottenere un elenco di tutti i provider di identità OIDC IAM nell'account AWS , chiama la seguente operazione:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html)

1. (Facoltativo) Per ottenere informazioni dettagliate su un provider di identità OIDC IAM, chiama la seguente operazione: 
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOpenIDConnectProvider.html)

1. Per aggiungere un nuovo ID client a un provider di identità OIDC IAM esistente, chiama la seguente operazione: 
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddClientIDToOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddClientIDToOpenIDConnectProvider.html)

1. Per rimuovere un ID client da un provider di identità OIDC IAM esistente, chiama la seguente operazione:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveClientIDFromOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveClientIDFromOpenIDConnectProvider.html)

**Per eliminare un provider di identità (API) IAM OIDC AWS**

1. (Facoltativo) Per ottenere un elenco di tutti i provider di identità OIDC IAM nell'account AWS , chiama la seguente operazione: 
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html)

1. (Facoltativo) Per ottenere informazioni dettagliate su un provider di identità OIDC IAM, chiama la seguente operazione:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOpenIDConnectProvider.html)

1. Per eliminare un provider di identità OIDC IAM, chiama la seguente operazione:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteOpenIDConnectProvider.html)

# Ottenere l'impronta digitale per un provider di identità OpenID Connect
<a name="id_roles_providers_create_oidc_verify-thumbprint"></a>

Durante la [creazione di un provider di identità OpenID Connect (OIDC)](id_roles_providers_create_oidc.md) in IAM, è necessario fornire un'impronta digitale per l'autorità di certificazione (CA) intermedia che ha firmato il certificato utilizzato dal gestore dell'identità digitale esterno. L'identificazione personale è una firma per il certificato della CA che è stato utilizzato per emettere il certificato per il provider di identità compatibile con OIDC. Quando crei un provider di identità IAM OIDC, ti fidi delle identità autenticate da quell'IdP per avere accesso al tuo. Account AWS Utilizzando l'impronta digitale del certificato della CA, si considera attendibile qualsiasi certificato emesso dalla CA con lo stesso nome DNS di quello registrato. Questo elimina la necessità di aggiornare i trust in ogni account quando si rinnova il certificato di firma del provider di identità.

**Importante**  
Nella maggior parte dei casi, il server di federazione utilizza due certificati diversi:  
Il primo stabilisce una connessione HTTPS tra AWS e il tuo IdP. Questo dovrebbe essere emesso da un CA root pubblica nota, ad esempio AWS Certificate Manager. Ciò consente al cliente di verificare l'affidabilità e lo stato del certificato.
Il secondo è usato per crittografare i token e deve essere firmato da un CA *radice* privato o pubblico.

Puoi creare un provider di identità IAM OIDC con [gli AWS Command Line Interface strumenti per Windows PowerShell o l'](id_roles_providers_create_oidc.md#manage-oidc-provider-cli)API IAM. Quando si utilizzano questi metodi, è possibile fornire un'impronta digitale manualmente. Se scegli di non includere un'impronta digitale, IAM recupererà l'impronta della CA intermedia superiore del certificato server IdP OIDC. Se scegli di includere un'impronta digitale, sarà necessario ottenere l'impronta manualmente e fornirla ad AWS.

Quando crei un provider di identità OIDC IAM nella [console IAM](id_roles_providers_create_oidc.md), IAM prova a recuperare l'impronta digitale della CA intermedia del certificato server IdP OIDC per tuo conto. 

Consigliamo di ottenere manualmente anche l'impronta digitale dell'IdP OIDC e di verificare che IAM abbia recuperato l'impronta digitale corretta. Per ulteriori informazioni su come ottenere impronte digitali dei certificati, consulta le seguenti sezioni.

**Nota**  
AWS protegge la comunicazione con i provider di identità OIDC (IdPs) utilizzando la nostra libreria di autorità di certificazione root affidabili (CAs) per verificare il certificato TLS dell'endpoint JSON Web Key Set (JWKS). Se il tuo IdP OIDC si basa su un certificato non firmato da uno di questi provider affidabili CAs, solo allora proteggiamo la comunicazione utilizzando le impronte digitali impostate nella configurazione dell'IdP. AWS ricorreremo alla verifica dell'impronta digitale se non siamo in grado di recuperare il certificato TLS o se è richiesto TLS v1.3.

## Ottenere l'impronta digitale del certificato
<a name="oidc-obtain-thumbprint"></a>

Utilizzare un browser Web e lo strumento a riga di comando OpenSSL per ottenere l'impronta digitale per un provider OIDC. Tuttavia, non è necessario ottenere manualmente l'impronta digitale del certificato per creare un provider di identità OIDC IAM. Puoi utilizzare la procedura seguente per ottenere l'impronta digitale del certificato del provider OIDC.

**Per ottenere l'identificazione personale per un provider di identità OIDC**

1. Prima di poter ottenere l'identificazione personale per un provider di identità OIDC, è necessario ottenere lo strumento a riga di comando OpenSSL. È possibile utilizzare questo strumento per scaricare la catena di certificati del provider di identità OIDC e produrre un'identificazione personale del certificato finale nella catena di certificati. Se è necessario installare e configurare OpenSSL, seguire le istruzioni in [Installare OpenSSL](#oidc-install-openssl) e [Configurare OpenSSL](#oidc-configure-openssl).

1. Inizia con l'URL del provider di identità OIDC (ad esempio, `https://server.example.com`) e quindi aggiungi `/.well-known/openid-configuration` per formare l'URL per il documento di configurazione del provider di identità, nel modo seguente:

   **https://*server.example.com*/.well-known/openid-configuration**

   Apri questo URL in un browser web, sostituendolo *server.example.com* con il nome del tuo server IdP. 

1. <a name="thumbstep2"></a>Nel documento visualizzato, utilizza l'opzione **Trova** del browser Web per individuare il testo `"jwks_uri"`. Subito dopo il testo `"jwks_uri"` sono presenti due punti (:) seguiti da un URL. Copiare il nome di dominio completo dell'URL. Non includere il percorso `https://` o qualsiasi altro percorso dopo il dominio di primo livello. 

   ```
   {
    "issuer": "https://accounts.example.com",
    "authorization_endpoint": "https://accounts.example.com/o/oauth2/v2/auth",
    "device_authorization_endpoint": "https://oauth2.exampleapis.com/device/code",
    "token_endpoint": "https://oauth2.exampleapis.com/token",
    "userinfo_endpoint": "https://openidconnect.exampleapis.com/v1/userinfo",
    "revocation_endpoint": "https://oauth2.exampleapis.com/revoke",
    "jwks_uri": "https://www.exampleapis.com/oauth2/v3/certs",
   ...
   ```

1. Utilizzare lo strumento a riga di comando OpenSSL per eseguire il seguente comando. *keys.example.com*Sostituiscilo con il nome di dominio che hai ottenuto in[Step 3](#thumbstep2).

   ```
   openssl s_client -servername keys.example.com -showcerts -connect keys.example.com:443
   ```

1. Nella finestra di comando, scorrere verso l'alto fino a visualizzare un certificato simile al seguente esempio. Se viene visualizzato più di un certificato, individua l'ultimo certificato visualizzato (nella parte inferiore dell'output di comando). Contiene il certificato della migliore CA intermedia nella catena della certification authority.

   ```
   -----BEGIN CERTIFICATE-----
    MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC
    VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6
    b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd
    BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN
    MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD
    VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z
    b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt
    YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ
    21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T
    rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE
    Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4
    nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb
    FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb
    NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE=
    -----END CERTIFICATE-----
   ```

   Copiare il certificato (incluse le righe `-----BEGIN CERTIFICATE-----` e `-----END CERTIFICATE-----`) e incollarlo in un file di testo. Salvare quindi il file con il nome **certificate.crt**.
**Nota**  
La catena di certificati del provider di identità OIDC deve iniziare con l'URL del dominio o dell'emittente, includere eventuali certificati intermedi (se presenti) e terminare con il certificato root. Se l'ordine della catena di certificati è diverso o se include certificati duplicati o aggiuntivi, riceverai un errore di mancata corrispondenza della firma e STS non riuscirà a convalidare il JSON Web Token (JWT). Correggi l'ordine dei certificati nella catena restituita dal server per risolvere l'errore. Per ulteriori informazioni sugli standard della catena di certificati, consulta [certificate\$1list nella RFC 5246](https://www.rfc-editor.org/rfc/rfc5246#section-7.4.2) sul sito Web della serie RFC.

1. Utilizzare lo strumento a riga di comando OpenSSL per eseguire il seguente comando.

   ```
   openssl x509 -in certificate.crt -fingerprint -sha1 -noout
   ```

   La finestra di comando visualizza l'identificazione personale del certificato, simile a quella dell'esempio seguente:

   ```
   SHA1 Fingerprint=99:0F:41:93:97:2F:2B:EC:F1:2D:DE:DA:52:37:F9:C9:52:F2:0D:9E
   ```

   Rimuovere i due punti (:) da questa stringa per ottenere l'identificazione personale finale, come segue:

   ```
   990F4193972F2BECF12DDEDA5237F9C952F20D9E
   ```

1. Se stai creando il provider di identità IAM OIDC con Tools for Windows o l' AWS CLI API IAM PowerShell, fornire un'impronta personale è facoltativo. Se scegli di non includere un'impronta digitale durante la creazione, IAM recupererà l'impronta della CA intermedia superiore del certificato server IdP OIDC. Dopo aver creato il provider di identità OIDC IAM, potrai confrontare questa impronta digitale con quella recuperata da IAM.

   Se stai creando il provider di identità OIDC IAM nella console IAM, la console prova a recuperare l'impronta digitale della CA intermedia del certificato server IdP OIDC. Puoi confrontare questa impronta digitale con quella recuperata da IAM. Dopo aver creato il provider di identità OIDC IAM, puoi visualizzare l'impronta digitale del provider di identità OIDC IAM nella scheda **Verifica dell'endpoint** nella pagina **Riepilogo** della console del provider OIDC.
**Importante**  
Se l'impronta digitale ottenuta non corrisponde a quella riportata nei dettagli del provider di identità OIDC IAM, il provider OIDC non dovrebbe essere utilizzato. Sarà necessario invece eliminare il provider OIDC creato, quindi riprovare a creare il provider OIDC dopo un po' di tempo. Verifica che le impronte digitali corrispondano prima di utilizzare il provider. Se dopo un secondo tentativo non vi è comunque corrispondenza tra le identificazioni personali, accedere al [forum di IAM](https://forums.aws.amazon.com/forum.jspa?forumID=76) per contattare AWS.

## Installare OpenSSL
<a name="oidc-install-openssl"></a>

Se OpenSSL non è già installato, segui le istruzioni in questa sezione.

**Come installare OpenSSL su Linux e Unix**

1. Passa a [OpenSSL: Source, Tarballs](https://openssl.org/source/) (https://openssl.org/source/).

1. Scarica l'origine più recente e compila il pacchetto.

**Per installare OpenSSL in ambiente Windows**

1. Vai a [OpenSSL: Binary](https://wiki.openssl.org/index.php/Binaries) Distributions (https://wiki.openssl. org/index.php/Binaries) per un elenco di siti da cui è possibile installare la versione per Windows.

1. Segui le istruzioni sul sito selezionato per avviare l'installazione.

1. Se viene richiesto di installare **Microsoft Visual C\$1\$1 2008 Redistributables** e questo non è già installato sul tuo sistema, scegli il link di download appropriato per il tuo ambiente. Segui le istruzioni fornite dalla **Installazione guidata di Microsoft Visual C\$1\$1 2008 Redistributable**.
**Nota**  
Se non sei sicuro che Microsoft Visual C\$1\$1 2008 Redistributables sia già installato nel sistema, puoi provare a installare prima OpenSSL. Il programma di installazione di OpenSSL visualizza un avviso se Microsoft Visual C\$1\$1 2008 Redistributables non è ancora installato. Assicurati di installare l'architettura (32 bit o 64 bit) che corrisponde alla versione di OpenSSL installata.

1. Dopo aver installato Microsoft Visual C\$1\$1 2008 Redistributables, seleziona la versione appropriata dei file binari OpenSSL per l'ambiente e salva il file in locale. Avvia l'**Installazione guidata di OpenSSL**.

1. Segui le istruzioni descritte in **Installazione guidata di OpenSSL**.

## Configurare OpenSSL
<a name="oidc-configure-openssl"></a>

Prima di utilizzare i comandi OpenSSL, è necessario configurare il sistema operativo in modo che contenga le informazioni sulla posizione in cui è installato OpenSSL.

**Come configurare OpenSSL su Linux o Unix**

1. Alla riga di comando, imposta la variabile `OpenSSL_HOME` sulla posizione dell'installazione di OpenSSL:

   ```
   $ export OpenSSL_HOME=path_to_your_OpenSSL_installation
   ```

1. Configura il percorso in modo da includere l'installazione di OpenSSL:

   ```
   $ export PATH=$PATH:$OpenSSL_HOME/bin
   ```
**Nota**  
Eventuali modifiche apportate alle variabili di ambiente con il comando `export` sono valide solo per la sessione corrente. Puoi apportare modifiche permanenti alle variabili di ambiente impostandole nel file di configurazione della shell. Per ulteriori informazioni, consulta la documentazione relativa al sistema operativo in uso.

**Come configurare OpenSSL su Windows**

1. Apri una finestra del **prompt dei comandi**.

1. Configura la variabile `OpenSSL_HOME` sulla posizione dell'installazione di OpenSSL:

   ```
   C:\> set OpenSSL_HOME=path_to_your_OpenSSL_installation
   ```

1. Imposta la variabile `OpenSSL_CONF` sulla posizione del file di configurazione nell'installazione di OpenSSL:

   ```
   C:\> set OpenSSL_CONF=path_to_your_OpenSSL_installation\bin\openssl.cfg
   ```

1. Configura il percorso in modo da includere l'installazione di OpenSSL:

   ```
   C:\> set Path=%Path%;%OpenSSL_HOME%\bin
   ```
**Nota**  
Eventuali modifiche apportate alle variabili di ambiente Windows in una finestra del **prompt dei comandi** sono valide solo per la sessione della riga di comando corrente. È possibile apportare modifiche permanenti alle variabili di ambiente impostandole come proprietà di sistema. Le procedure esatte dipendono dalla versione di Windows in uso. (Ad esempio, su Windows 7, apri **Pannello di controllo**, **Sistema e sicurezza**, **Sistema**. Quindi scegli **Impostazioni di sistema avanzate**, scheda **Avanzate**, **Variabili di ambiente**.) Per ulteriori informazioni, consulta la documentazione di Windows.

# Controlli tramite provider di identità per i provider OIDC condivisi
<a name="id_roles_providers_oidc_secure-by-default"></a>

Per i provider di identità OpenID Connect (OIDC) condivisi riconosciuti, IAM richiede una valutazione esplicita di affermazioni specifiche nelle policy di trust dei ruoli. IdPs Queste attestazioni obbligatorie, chiamate *controlli del provider di identità*, vengono valutate da IAM durante la creazione dei ruoli e gli aggiornamenti delle policy di attendibilità. Se la policy di attendibilità dei ruoli non valuta i controlli richiesti dall’IdP OIDC condiviso, non sarà possibile creare o aggiornare ruoli. Questo garantisce che solo le identità autorizzate dell’organizzazione prevista possano assumere ruoli e accedere alle risorse AWS . Questo controllo di sicurezza è fondamentale quando i provider OIDC sono condivisi tra più clienti AWS .



I controlli dei provider di identità non verranno valutati da IAM per le policy di attendibilità dei ruoli OIDC esistenti. Per qualsiasi modifica alla policy di attendibilità dei ruoli per i ruoli OIDC esistenti, IAM richiederà che i controlli relativi ai provider di identità siano inclusi nella policy stessa.

## Tipi di provider OIDC
<a name="id_roles_providers_oidc_idp_types"></a>

IAM classifica i provider di identità OIDC in due tipi distinti: **privati** e **condivisi**. Un IdP OIDC privato può essere di proprietà e gestito da una singola organizzazione o può essere un tenant di un provider SaaS, con l’URL dell’emittente OIDC che funge da identificatore univoco specifico per tale organizzazione. Al contrario, un IdP OIDC condiviso viene impiegato da più organizzazioni e può avere lo stesso URL dell’emittente OIDC per tutte quelle che lo utilizzano.

La tabella seguente illustra le principali differenze tra i provider OIDC privati e condivisi:


| Caratteristica | Provider OIDC privato | Provider OIDC condiviso | 
| --- | --- | --- | 
|  Emittente  |  Univoco per l’organizzazione  |  Condiviso tra più organizzazioni  | 
|  Informazioni di tenancy  |  Comunicate tramite un emittente unico  |  Comunicate tramite attestazioni nei JWT  | 
|  Requisiti della policy di attendibilità  |  Non è richiesta la valutazione di un’attestazione specifica  |  È richiesta la valutazione di attestazioni specifiche  | 

## Provider di identità OIDC condivisi con controlli dei provider di identità
<a name="id_roles_providers_oidc_idp_shared_oidc_secure_support"></a>

Quando crei o modifichi un provider OIDC in IAM, il sistema identifica e valuta automaticamente le attestazioni richieste per i provider OIDC condivisi e riconosciuti. Se i controlli del provider di identità non sono configurati nella policy di fiducia dei ruoli, la creazione o l'aggiornamento del ruolo avrà esito negativo e verrà generato un errore. MalformedPolicyDocument 

La tabella seguente elenca i provider OIDC condivisi che richiedono i controlli del provider di identità nelle policy di attendibilità dei ruoli e informazioni aggiuntive per aiutarti a configurare i controlli del provider di identità.


| IdP OIDC | URL OIDC | Attestazione di tenancy | Attestazioni obbligatorie | 
| --- | --- | --- | --- | 
| [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html) |  `cognito-identity.amazonaws.com`  | aud |  `cognito-identity.amazonaws.com:aud`  | 
| [Azure Sentinel](https://learn.microsoft.com/en-us/azure/defender-for-cloud/sentinel-connected-aws) |  https://sts.windows.net/33e01921-4d64-4f8c-a055-5bdaffd5e33d  |  sts:RoleSessionName  |  sts:RoleSessionName  | 
| [Buildkite](https://buildkite.com/docs/pipelines/security/oidc/aws) |  https://agent.buildkite.com  |  sub  |  agent.buildkite.com:sub  | 
| [Codefresh SaaS](https://codefresh.io/docs/docs/integrations/oidc-pipelines/) | https://oidc.codefresh.io | sub |  oidc.codefresh.io:sub  | 
| [DVC Studio](https://dvc.org/doc/studio/user-guide/openid-connect) | https://studio.datachain.ai/api | sub |  studio.datachain.ai/api:sub  | 
| [GitHub azioni](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) | https://token.actions.githubusercontent.com | sub |  token.actions.githubusercontent.com:sub  | 
| [GitHub streaming dei registri di controllo](https://docs.github.com/en/enterprise-cloud@latest/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/streaming-the-audit-log-for-your-enterprise) | https://oidc-configuration.audit-log.githubusercontent.com | sub |  oidc-configuration.audit-log.githubusercontent.com:sub  | 
| [GitHub vstoken](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) | https://vstoken.actions.githubusercontent.com | sub |  vstoken.actions.githubusercontent.com:sub  | 
| [GitLab](https://docs.gitlab.com/ci/cloud_services/aws/) | https://gitlab.com | sub |  gitlab.com:sub  | 
| [IBM Turbonomic SaaS\$1](https://www.ibm.com/docs/en/tarm/8.16.x?topic=turbonomic-setting-up-aws-iam-role-saas-deployments) |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/id_roles_providers_oidc_secure-by-default.html)  | sub |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/id_roles_providers_oidc_secure-by-default.html)  | 
| [Pulumi Cloud](https://www.pulumi.com/docs/pulumi-cloud/deployments/oidc/aws/) | https://api.pulumi.com/oidc | aud |  api.pulumi.com/oidc:aud  | 
| [sandboxes.cloud](https://docs.sandboxes.cloud/docs/cloud-resources-setup) | https://sandboxes.cloud | aud |  sandboxes.cloud:aud  | 
| [Scalr](https://docs.scalr.io/docs/aws) | https://scalr.io | sub |  scalr.io:sub  | 
| [Shisho Cloud](https://shisho.dev/docs/g/getting-started/integrate-apps/aws/) | https://tokens.cloud.shisho.dev | sub |  tokens.cloud.shisho.dev:sub  | 
| [Terraform Cloud](https://developer.hashicorp.com/terraform/cloud-docs/workspaces/dynamic-provider-credentials/aws-configuration) | https://app.terraform.io | sub |  app.terraform.io:sub  | 
| [Upbound](https://docs.upbound.io/providers/provider-aws/authentication/) | https://proidc.upbound.io | sub |  proidc.upbound.io:sub  | 
| [Endpoint globale Vercel](https://vercel.com/docs/oidc/reference) | https://oidc.vercel.com | aud |  oidc.vercel.com:aud  | 

\$1 IBM Turbonomic aggiorna periodicamente l’URL dell’emittente OIDC con nuove versioni della piattaforma. Se necessario, aggiungeremo altri emittenti OIDC Turbonomic come provider condiviso.

Per ogni nuovo OIDC IdPs che IAM identifica come condiviso, i controlli richiesti dai provider di identità per le politiche di fiducia dei ruoli verranno documentati e applicati in modo simile.

## Risorse aggiuntive
<a name="concept_additional_resources"></a>

Risorse aggiuntive:
+ Per ulteriori informazioni sulla creazione di un ruolo IAM per la federazione OIDC, consulta [Creare un ruolo per la federazione OpenID Connect (console)](id_roles_create_for-idp_oidc.md).
+ Per un elenco delle chiavi di condizione IAM che possono essere utilizzate per le attestazioni, consulta [Chiavi disponibili per la federazione AWS OIDC](reference_policies_iam-condition-keys.md#condition-keys-wif).

# Federazione SAML 2.0
<a name="id_roles_providers_saml"></a>

AWS supporta la federazione delle identità con [SAML 2.0 (Security Assertion Markup Language 2.0)](https://wiki.oasis-open.org/security), uno standard aperto utilizzato da molti provider di identità (IdPs). Questa funzionalità abilita il single sign-on (SSO) federato, in modo che gli utenti possano accedere Console di gestione AWS o chiamare le operazioni AWS API senza che tu debba creare un utente IAM per tutti i membri dell'organizzazione. [Utilizzando SAML, puoi semplificare il processo di configurazione della federazione AWS, poiché puoi utilizzare il servizio dell'IdP invece di scrivere un codice proxy di identità personalizzato.](https://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingFedTokens.html)

**Nota**  
La federazione delle identità IAM SAML supporta le risposte SAML crittografate dei provider di identità federati basati su SAML (). IdPs Il Centro identità IAM e Amazon Cognito non supportano le asserzioni SAML crittografate dei provider di identità IAM SAML.  
Puoi aggiungere indirettamente il supporto per le asserzioni SAML crittografate alla federazione dei pool di identità di Amazon Cognito con i pool di utenti di Amazon Cognito. I pool di utenti dispongono di una federazione SAML che è indipendente dalla federazione IAM SAML e supporta [la firma e la crittografia SAML](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-SAML-signing-encryption.html). Sebbene questa funzionalità non si estenda direttamente ai pool di identità, i pool di utenti possono riguardare i pool di identità. IdPs Per utilizzare la crittografia SAML con pool di identità, aggiungi un provider SAML con crittografia a un pool di utenti che è un IdP a un pool di identità.  
Il tuo provider SAML deve essere in grado di crittografare le asserzioni SAML con una chiave fornita dal tuo pool di utenti. I pool di utenti non accetteranno asserzioni crittografate con un certificato fornito da IAM.

La federazione IAM supporta i casi d'uso indicati di seguito. 
+ [**Accesso federato per consentire a un utente o a un'applicazione dell'organizzazione di chiamare le operazioni AWS API**](#CreatingSAML-configuring). Questo caso d'uso è discusso nella sezione seguente. viene utilizzata un'asserzione SAML (come parte della risposta di autenticazione) generata nell'organizzazione per ottenere credenziali di sicurezza temporanee. Questo scenario è analogo ad altri scenari di federazione supportati da IAM, come descritto in [Richiedere credenziali di sicurezza temporanee](id_credentials_temp_request.md) e [Federazione OIDC](id_roles_providers_oidc.md). Tuttavia, la soluzione basata su SAML 2.0 dell'organizzazione gestisce molti dettagli IdPs in fase di esecuzione per eseguire il controllo dell'autenticazione e delle autorizzazioni.
+ [**Single Sign-On (SSO) basato sul Web**](id_roles_providers_enable-console-saml.md) da e verso l'organizzazione. Console di gestione AWS Gli utenti possono accedere a un portale dell'organizzazione ospitato da un IdP compatibile con SAML 2.0, selezionare un'opzione a cui accedere ed essere reindirizzati AWS alla console senza dover fornire ulteriori informazioni di accesso. Puoi utilizzare un IdP SAML di terze parti per stabilire l'accesso SSO alla console o creare un IdP personalizzato per consentire l'accesso alla console per utenti esterni. Per ulteriori informazioni sulla creazione di un provider di identità personalizzato, consulta [Abilita l'accesso personalizzato del broker di identità alla AWS console](id_roles_providers_enable-console-custom-url.md).

**Topics**
+ [Utilizzo della federazione basata su SAML per l'accesso tramite API a AWS](#CreatingSAML-configuring)
+ [Panoramica della configurazione della federazione basata su SAML 2.0](#CreatingSAML-configuring-IdP)
+ [Panoramica del ruolo per consentire l'accesso federato SAML alle tue risorse AWS](#CreatingSAML-configuring-role)
+ [Identificazione univoca degli utenti nella federazione basata su SAML](#CreatingSAML-userid)
+ [Creare un provider di identità SAML in IAM](id_roles_providers_create_saml.md)
+ [Configurare il provider di identità SAML 2.0 con una relazione di attendibilità della parte affidabile e aggiunta di attestazioni](id_roles_providers_create_saml_relying-party.md)
+ [Integra fornitori di soluzioni SAML di terze parti con AWS](id_roles_providers_saml_3rd-party.md)
+ [Configurare le asserzioni SAML per la risposta di autenticazione](id_roles_providers_create_saml_assertions.md)
+ [Consentire ai principali federati SAML 2.0 di accedere a Console di gestione AWS](id_roles_providers_enable-console-saml.md)
+ [Visualizzare una risposta SAML nel browser](troubleshoot_saml_view-saml-response.md)

## Utilizzo della federazione basata su SAML per l'accesso tramite API a AWS
<a name="CreatingSAML-configuring"></a>

Supponi di voler fornire ai dipendenti un modo per copiare i dati dai loro computer a una cartella di backup. È possibile creare un'applicazione che gli utenti possono eseguire sui propri computer. Sul backend, l'applicazione legge e scrive oggetti in un bucket Amazon S3. Gli utenti non hanno accesso diretto a. AWS viene utilizzato invece il seguente processo:

![\[Ottenere le credenziali di sicurezza temporanee basate su un'asserzione SAML\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/saml-based-federation-diagram.png)


1. Un utente dell'organizzazione utilizza un'app client per richiedere l'autenticazione dal provider di identità della propria organizzazione.

1. Il provider di identità autentica l'utente rispetto all'archivio identità organizzazione.

1. Il provider di identità crea un'asserzione SAML con informazioni sull'utente e invia l'asserzione all'app client. Quando abiliti la crittografia SAML per il tuo IdP IAM SAML, questa asserzione viene crittografata dal tuo IdP esterno.

1. L'app client chiama l' AWS STS [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)API, passando l'ARN del provider SAML, l'ARN del ruolo da assumere e l'asserzione SAML di IdP. Se la crittografia è abilitata, l'asserzione trasmessa tramite l'app client rimane crittografata durante il transito.

1. (Facoltativo) AWS STS utilizza la chiave privata che hai caricato dal tuo IdP esterno per decrittografare l'asserzione SAML crittografata.

1. La risposta dell'API all'app client include credenziali di sicurezza temporanee.

1. L'app client utilizza le credenziali di sicurezza temporanee per chiamare le operazioni dell'API di Amazon S3. 

## Panoramica della configurazione della federazione basata su SAML 2.0
<a name="CreatingSAML-configuring-IdP"></a>

Prima di poter utilizzare la federazione basata su SAML 2.0 come descritto nello scenario e nel diagramma precedenti, devi configurare l'IdP dell'organizzazione e il tuo in modo che si fidino l'uno dell'altro. Account AWS Di seguito è descritta la procedura generale per la configurazione di questo tipo di attendibilità. All'interno dell'organizzazione, è necessario disporre di un [provider di identità che supporti SAML 2.0](id_roles_providers_saml_3rd-party.md), come Microsoft Active Directory Federation Service (ADFS, parte di Windows Server), Shibboleth o di un altro provider compatibile con SAML 2.0. 

**Nota**  
Per migliorare la resilienza della federazione, ti consigliamo di configurare l'IdP e la federazione AWS per supportare più endpoint di accesso SAML. Per i dettagli, consulta l'articolo del AWS Security Blog [Come utilizzare gli endpoint SAML regionali per il failover](https://aws.amazon.com/blogs//security/how-to-use-regional-saml-endpoints-for-failover).

**Configura l'IdP della tua organizzazione e fidati AWS l'uno dell'altro**

1. Registrati AWS come fornitore di servizi (SP) con l'IdP della tua organizzazione. Utilizzo del documento dei metadati SAML generato da `https://region-code.signin.aws.amazon.com/static/saml-metadata.xml` 

   Per un elenco dei *region-code* valori possibili, consulta la colonna **Regione** negli endpoint di [AWS accesso](https://docs.aws.amazon.com/general/latest/gr/signin-service.html).

   Se lo desideri, puoi utilizzare il documento dei metadati SAML generati da `https://signin.aws.amazon.com/static/saml-metadata.xml` .

1. <a name="createxml"></a>Utilizzando il provider di identità dell’organizzazione, genera un file XML di metadati SAML equivalenti che possono descrivere l’IdP come provider di identità IAM in AWS. Deve includere il nome dell'emittente, una data di creazione, una data di scadenza e le chiavi che AWS possono essere utilizzate per convalidare le risposte di autenticazione (asserzioni) dell'organizzazione. 

   Se consenti l'invio di asserzioni SAML crittografate dal tuo IdP esterno, devi generare un file di chiave privata utilizzando l'IdP della tua organizzazione e caricare questo file nella configurazione IAM SAML in formato file.pem. AWS STS necessita di questa chiave privata per decrittografare le risposte SAML che corrispondono alla chiave pubblica caricata sul tuo IdP.
**Nota**  
Come definito dal [profilo di interoperabilità dei metadati SAML V2.0 versione 1.0](https://docs.oasis-open.org/security/saml/Post2.0/sstc-metadata-iop-os.html), IAM non valuta né interviene in merito alla scadenza dei certificati X.509 nei documenti dei metadati SAML. Se hai preoccupazioni riguardo ai certificati X.509 scaduti, ti consigliamo di monitorare le date di scadenza dei certificati e di ruotarli in base alle policy di governance e sicurezza della tua organizzazione.

1. <a name="samlovrcreateentity"></a>Nella console IAM, crea un'entità provider di identità SAML. Come parte di questo processo, è possibile caricare il documento dei metadati SAML e la chiave di decrittografia privata prodotto dal provider di identità nell'organizzazione in [Step 2](#createxml). Per ulteriori informazioni, consulta [Creare un provider di identità SAML in IAM](id_roles_providers_create_saml.md).

1. <a name="samlovrcreaterole"></a>In IAM, vengono creati uno o più ruoli IAM. Nella politica di fiducia del ruolo, imposti il provider SAML come principale, che stabilisce una relazione di fiducia tra la tua organizzazione e. AWS La policy di autorizzazione del ruolo stabilisce le operazioni che gli utenti dell'organizzazione possono effettuare in AWS. Per ulteriori informazioni, consulta [Creazione di un ruolo per un provider di identità di terze parti](id_roles_create_for-idp.md).
**Nota**  
SAML IDPs utilizzato in una politica di fiducia per i ruoli deve trovarsi nello stesso account in cui si trova il ruolo.

1. Nel provider di identità dell'organizzazione, si definiscono asserzioni che associano utenti o gruppi dell'organizzazione ai ruoli IAM. Nota che i diversi utenti e gruppi dell'organizzazione potrebbero essere mappati a diversi ruoli IAM. La procedura per eseguire la mappatura dipende dal provider di identità che si sta utilizzando. Nello [scenario precedente](#CreatingSAML-configuring) che utilizza una cartella Amazon S3 per gli utenti, è possibile che tutti gli utenti dispongano della mappatura allo stesso ruolo che fornisce le autorizzazioni Amazon S3. Per ulteriori informazioni, consulta [Configurare le asserzioni SAML per la risposta di autenticazione](id_roles_providers_create_saml_assertions.md).

   Se il tuo IdP abilita l'SSO AWS sulla console, puoi configurare la durata massima delle sessioni della console. Per ulteriori informazioni, consulta [Consentire ai principali federati SAML 2.0 di accedere a Console di gestione AWS](id_roles_providers_enable-console-saml.md).

1. Nell'applicazione che stai creando, chiami l' AWS Security Token Service `AssumeRoleWithSAML`API, passandole l'ARN del provider SAML in cui hai creato, [Step 3](#samlovrcreateentity) l'ARN del ruolo da assumere in cui hai creato e l'asserzione SAML sull'utente corrente che ricevi dal tuo IdP. [Step 4](#samlovrcreaterole) AWS si assicura che la richiesta di assunzione del ruolo provenga dall'IdP a cui si fa riferimento nel provider SAML. 

   *Per ulteriori informazioni, consulta [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) nell'API Reference.AWS Security Token Service * 

1. Se la richiesta ha esito positivo, l'API restituisce una serie di credenziali di sicurezza temporanee, che l'applicazione può utilizzare per inviare richieste firmate ad AWS. L'applicazione contiene informazioni sull'utente corrente e può accedere a cartelle specifiche dell'utente in Amazon S3, come descritto nello scenario precedente. 

## Panoramica del ruolo per consentire l'accesso federato SAML alle tue risorse AWS
<a name="CreatingSAML-configuring-role"></a>

I ruoli creati in IAM definiscono ciò che i principali federati SAML dell’organizzazione possono fare in AWS. Quando si creano policy di affidabilità per il ruolo, è necessario specificare il provider SAML creato in precedenza come `Principal`. È inoltre possibile estendere la policy di affidabilità con un elemento `Condition` per permettere solo agli utenti che corrispondono ad alcuni attributi SAML di accedere al ruolo. Ad esempio, è possibile specificare che solo gli utenti con l'affiliazione SAML `staff` (come affermato da https://openidp.feide.no) possono accedere al ruolo, come illustrato dalla seguente policy di esempio:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Principal": {"Federated": "arn:aws:iam::111122223333:saml-provider/ExampleOrgSSOProvider"},
    "Action": "sts:AssumeRoleWithSAML",
    "Condition": {
      "StringEquals": {
        "saml:aud": "https://us-east-1.signin.aws.amazon.com/saml",
        "saml:iss": "https://openidp.feide.no"
      },
      "ForAllValues:StringLike": {"saml:edupersonaffiliation": ["staff"]}
    }
  }]
}
```

------

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws-cn:iam::111122223333:saml-provider/ExampleOrgSSOProvider"
            },
            "Action": "sts:AssumeRoleWithSAML",
            "Condition": {
                "StringEquals": {
                    "saml:aud": "https://ap-east-1.signin.amazonaws.cn/saml",
                    "saml:iss": "https://openidp.feide.no"
                },
                "ForAllValues:StringLike": {
                    "saml:edupersonaffiliation": [
                        "staff"
                    ]
                }
            }
        }
    ]
}
```

------

**Nota**  
SAML IDPs utilizzato in una politica di fiducia dei ruoli deve trovarsi nello stesso account in cui si trova il ruolo.

La chiave di contesto `saml:aud` nella policy specifica l’URL visualizzato dal browser quando si accede alla console. L’URL dell’endpoint di accesso deve corrispondere all’attributo destinatario del provider di identità. Puoi includere l'accesso URLs all'interno di aree geografiche particolari. AWS consiglia di utilizzare gli endpoint regionali anziché l'endpoint globale per migliorare la resilienza della federazione. Se hai configurato un solo endpoint, non potrai effettuare la federazione in AWS nell’improbabile caso in cui l’endpoint diventi non disponibile. [Per un elenco dei *region-code* valori possibili, consulta la colonna **Regione** negli AWS endpoint di accesso.](https://docs.aws.amazon.com/general/latest/gr/signin-service.html)

L’esempio seguente mostra il formato di URL di accesso con il `region-code` facoltativo.

`https://region-code.signin.aws.amazon.com/saml`

Se è richiesta la crittografia SAML, l’URL di accesso deve includere l’identificatore univoco che AWS assegna al provider SAML, che puoi trovare nella pagina dei dettagli del provider di identità. Nell’esempio seguente, l’URL di accesso include l’identificatore univoco dell’IdP, per cui è necessario aggiungere /acs/ al percorso di accesso.

`https://region-code.signin.aws.amazon.com/saml/acs/IdP-ID`

Per la policy di autorizzazione nel ruolo, è necessario specificare le autorizzazioni come per qualsiasi ruolo. **Ad esempio, se gli utenti della tua organizzazione sono autorizzati ad amministrare istanze di Amazon Elastic Compute Cloud, devi consentire esplicitamente le azioni di Amazon EC2 nella politica delle autorizzazioni, come quelle nella policy gestita di Amazon. EC2 FullAccess** 

Per ulteriori informazioni sulle chiavi SAML che è possibile verificare in una policy, consulta [Chiavi disponibili per la federazione basata su SAML AWS STS](reference_policies_iam-condition-keys.md#condition-keys-saml).

## Identificazione univoca degli utenti nella federazione basata su SAML
<a name="CreatingSAML-userid"></a>

Quando si creano policy di accesso in IAM, spesso è utile poter specificare le autorizzazioni in base all'identità degli utenti. Ad esempio, per gli utenti che sono stati federati tramite SAML, un'applicazione potrebbe voler mantenere le informazioni in Amazon S3 utilizzando una struttura come questa: 

```
amzn-s3-demo-bucket/app1/user1
amzn-s3-demo-bucket/app1/user2
amzn-s3-demo-bucket/app1/user3
```

Puoi creare il bucket (`amzn-s3-demo-bucket`) e la cartella (`app1`) tramite la console Amazon S3 o AWS CLI il, poiché si tratta di valori statici. Tuttavia, le cartelle specifiche dell'utente (*user1*,, *user2**user3*, ecc.) devono essere create in fase di esecuzione utilizzando il codice, poiché il valore che identifica l'utente non è noto fino alla prima volta che l'utente accede tramite il processo di federazione. 

Per scrivere policy che fanno riferimento ai dettagli specifici dell'utente come parte di un nome di risorsa, l'identità dell'utente deve essere disponibile nelle chiavi SAML che possono essere utilizzate nelle condizioni di policy. Le seguenti chiavi sono disponibili per la federazione basata su SAML 2.0 da utilizzare nelle policy IAM. È possibile utilizzare i valori restituiti dalle chiavi seguenti per creare identificativi utente univoci per risorse come le cartelle Amazon S3. 
+ `saml:namequalifier`. Un valore hash basato sulla concatenazione del valore della risposta `Issuer` (`saml:iss`) e una stringa con l'ID account `AWS` e il nome descrittivo (l'ultima parte dell'ARN) del provider SAML in IAM. La concatenazione dell'ID account e del nome descrittivo del provider SAML è disponibile per le policy IAM sotto forma di chiave `saml:doc`. L'ID account e il nome del provider devono essere separati da una barra "/" come in "123456789012/provider\$1name". Per ulteriori informazioni, consulta la chiave `saml:doc` in [Chiavi disponibili per la federazione basata su SAML AWS STS](reference_policies_iam-condition-keys.md#condition-keys-saml).

  La combinazione di `NameQualifier` e `Subject` può essere utilizzata per identificare in modo univoco un principale federato SAML. Il seguente pseudocodice mostra come viene calcolato questo valore. In questo pseudocodice `+` indica la concatenazione, `SHA1` rappresenta una funzione che produce un digest del messaggio utilizzando SHA-1 e `Base64` rappresenta una funzione che genera una versione con codificazione Base-64 dell'output hash.

   `Base64 ( SHA1 ( "https://example.com/saml" + "123456789012" + "/MySAMLIdP" ) )` 

   Per ulteriori informazioni sulle chiavi di policy disponibili quando si utilizza la federazione basata su SAML, consulta [Chiavi disponibili per la federazione basata su SAML AWS STS](reference_policies_iam-condition-keys.md#condition-keys-saml).
+ `saml:sub` (Stringa). Questo è l'oggetto della richiesta, che include un valore che identifica in modo univoco un singolo utente in un'organizzazione (ad esempio, `_cbb88bf52c2510eabe00c1642d4643f41430fe25e3`). 
+ `saml:sub_type` (Stringa). Questa chiave può essere `persistent`, `transient` o l'URI `Format` completo degli elementi `Subject` e `NameID` utilizzati nell'asserzione SAML. Il valore `persistent` indica che il valore in `saml:sub` è lo stesso per un utente in tutte le sessioni. Se il valore è `transient`, l'utente dispone di un valore `saml:sub` diverso per ogni sessione. Per ulteriori informazioni sull'attributo `Format` dell'elemento `NameID`, consulta [Configurare le asserzioni SAML per la risposta di autenticazione](id_roles_providers_create_saml_assertions.md). 

L'esempio seguente mostra una policy di autorizzazione che utilizza le chiavi precedenti per concedere le autorizzazioni a una cartella specifica per utente in Amazon S3. La policy presuppone che gli oggetti Amazon S3 vengano identificati utilizzando un prefisso che include sia `saml:namequalifier` che `saml:sub`. Si noti che l'elemento `Condition` include un test per assicurarsi che `saml:sub_type` sia impostato su `persistent`. Se è impostato su `transient`, il valore `saml:sub` per l'utente può essere diverso per ogni sessione e la combinazione di valori non deve essere utilizzata per identificare le cartelle specifiche dell'utente. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "s3:GetObject",
      "s3:PutObject",
      "s3:DeleteObject"
    ],
    "Resource": [
      "arn:aws:s3:::amzn-s3-demo-bucket-org-data/backup/${saml:namequalifier}/${saml:sub}",
      "arn:aws:s3:::amzn-s3-demo-bucket-org-data/backup/${saml:namequalifier}/${saml:sub}/*"
    ],
    "Condition": {"StringEquals": {"saml:sub_type": "persistent"}}
  }
}
```

------

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "s3:GetObject",
      "s3:PutObject",
      "s3:DeleteObject"
    ],
    "Resource": [
      "arn:aws-cn:s3:::amzn-s3-demo-bucket-org-data/backup/${saml:namequalifier}/${saml:sub}",
      "arn:aws-cn:s3:::amzn-s3-demo-bucket-org-data/backup/${saml:namequalifier}/${saml:sub}/*"
    ],
    "Condition": {"StringEquals": {"saml:sub_type": "persistent"}}
  }
}
```

------

Per ulteriori informazioni sulle asserzioni di mappatura dal provider di identità alle chiavi di policy, consulta [Configurare le asserzioni SAML per la risposta di autenticazione](id_roles_providers_create_saml_assertions.md). 

# Creare un provider di identità SAML in IAM
<a name="id_roles_providers_create_saml"></a>

Un provider di identità SAML 2.0 IAM è un'entità in IAM che descrive un servizio del provider di identità (IdP) esterno che supporta lo standard [SAML 2.0 (Security Assertion Markup Language 2.0)](https://wiki.oasis-open.org/security). Utilizzi un provider di identità IAM quando desideri stabilire un rapporto di fiducia tra un IdP compatibile con SAML come Shibboleth o Active Directory Federation Services e consentire agli utenti di accedere alle AWS risorse. AWS I provider di identità SAML IAM vengono utilizzati come principali nelle policy di attendibilità IAM. 

Per ulteriori informazioni su questo scenario, consulta [Federazione SAML 2.0](id_roles_providers_saml.md).

Puoi creare e gestire un provider di identità IAM nelle Console di gestione AWS o con AWS CLI, Tools for Windows o chiamate API. PowerShell AWS 

Una volta creato un provider SAML, dovrai creare uno o più ruoli IAM. Un ruolo è un'identità AWS che non ha le proprie credenziali (come invece fa un utente). Tuttavia, in questo contesto, un ruolo viene assegnato in modo dinamico a un principale federato SAML autenticato dal tuo IdP. Il ruolo consente all'IdP di richiedere credenziali di sicurezza provvisorie per l'accesso a AWS. Le politiche assegnate al ruolo determinano le operazioni consentite agli utenti. AWS Per creare un ruolo per una federazione SAML consultare [Creazione di un ruolo per un provider di identità di terze parti](id_roles_create_for-idp.md). 

Infine, dopo aver creato il ruolo, completi il trust SAML configurando il tuo IdP con le informazioni AWS e i ruoli che desideri vengano utilizzati dai tuoi presidi federati SAML. Questa operazione viene definita configurazione di una relazione di trust fra IdP e AWS. Per configurare una relazione di trust, consultare [Configurare il provider di identità SAML 2.0 con una relazione di attendibilità della parte affidabile e aggiunta di attestazioni](id_roles_providers_create_saml_relying-party.md). 

**Topics**
+ [Prerequisiti](#idp-manage-identityprovider-prerequisites)
+ [Creare e gestire un provider di identità SAML IAM (console)](#idp-manage-identityprovider-console)
+ [Gestire le chiavi di crittografia SAML](#id_federation_manage-saml-encryption)
+ [Creare e gestire un provider di identità SAML IAM (AWS CLI)](#idp-create-identityprovider-CLI)
+ [Crea e gestisci un provider di identità IAM SAML (API)AWS](#idp-create-identityprovider-API)
+ [Fasi successive](#id_roles_create-for-saml-next-steps)

## Prerequisiti
<a name="idp-manage-identityprovider-prerequisites"></a>

Prima di creare un provider di identità SAML, è necessario disporre delle seguenti informazioni dal proprio IdP.
+ Scarica il documento di metadati SAML dal tuo IdP. Questo documento include il nome dell'approvatore, le informazioni sulla scadenza e le chiavi che possono essere utilizzate per convalidare la risposta di autenticazione SAML (asserzioni) che vengono ricevute dal provider di identità. Per generare il documento di metadati, utilizza il software di gestione delle identità fornito dall'IdP esterno.
**Importante**  
Questo file di metadati include il nome dell'approvatore, le informazioni sulla scadenza e le chiavi che possono essere utilizzate per convalidare la risposta di autenticazione SAML (asserzioni) ricevute dal provider di identità. Il file di metadati deve essere codificati in formato UTF-8, senza BOM (Byte Order Mark). Per rimuovere il BOM, codifica i file come UTF-8 utilizzando un editor di testi come ad esempio Notepad\$1\$1.  
Il certificato x.509 incluso come parte del documento di metadati SAML deve utilizzare una chiave di almeno 1.024 bit. Inoltre, il certificato x.509 deve essere privo di eventuali estensioni ripetute. È possibile utilizzare le estensioni, ma possono essere visualizzate una sola volta nel certificato. Se il certificato x.509 non soddisfa nessuna delle due condizioni, la creazione dell’IdP ha esito negativo e restituisce l’errore “Unable to parse metadata”.  
Come definito dal [profilo di interoperabilità dei metadati SAML V2.0 versione 1.0](https://docs.oasis-open.org/security/saml/Post2.0/sstc-metadata-iop-os.html), IAM non valuta né interviene in merito alla scadenza dei certificati X.509 nei documenti dei metadati SAML. Se hai dubbi in merito a certificati X.509 scaduti, ti consigliamo di monitorare le date di scadenza dei certificati e di ruotarli in base alle policy di governance e sicurezza della tua organizzazione.
+ Quando si sceglie di abilitare la crittografia SAML, è necessario generare un file di chiave privata utilizzando l’IdP e caricare questo file nella configurazione SAML di IAM in formato .pem. AWS STS necessita di questa chiave privata per decrittografare le risposte SAML che corrispondono alla chiave pubblica utilizzata dall’IdP. Sono supportati i seguenti algoritmi:
  + Algoritmi di crittografia
    + AES-128
    + AES-256
    + RSA-OAEP
  + Algoritmi di trasporto della chiave
    + AES-CBC
    + AES-GCM

  Consulta la documentazione del provider di identità per le istruzioni sulla generazione di una chiave privata.
**Nota**  
Il Centro identità IAM e Amazon Cognito non supportano le asserzioni SAML crittografate dei provider di identità IAM SAML. Puoi aggiungere indirettamente il supporto per le asserzioni SAML crittografate alla federazione dei pool di identità di Amazon Cognito con i pool di utenti di Amazon Cognito. I pool di utenti dispongono di una federazione SAML che è indipendente dalla federazione IAM SAML e supporta [la firma e la crittografia SAML](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-SAML-signing-encryption.html). Sebbene questa funzionalità non si estenda direttamente ai pool di identità, i pool di utenti possono riguardare i pool IdPs di identità. Per utilizzare la crittografia SAML con pool di identità, aggiungi un provider SAML con crittografia a un pool di utenti che è un IdP a un pool di identità.  
Il tuo provider SAML deve essere in grado di crittografare le asserzioni SAML con una chiave fornita dal tuo pool di utenti. I pool di utenti non accetteranno asserzioni crittografate con un certificato fornito da IAM.

Per istruzioni su come configurare molti dei file disponibili con cui IdPs lavorare AWS, incluso come generare il documento di metadati SAML richiesto, consulta. [Integra fornitori di soluzioni SAML di terze parti con AWS](id_roles_providers_saml_3rd-party.md)

Per assistenza sulla federazione SAML, consulta [Risoluzione dei problemi della federazione SAML](troubleshoot_saml.md).

## Creare e gestire un provider di identità SAML IAM (console)
<a name="idp-manage-identityprovider-console"></a>

Puoi utilizzare il Console di gestione AWS per creare, aggiornare ed eliminare i provider di identità IAM SAML. Per assistenza sulla federazione SAML, consulta [Risoluzione dei problemi della federazione SAML](troubleshoot_saml.md).

**Come creare un provider di identità SAML IAM (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione, scegli **Provider di identità**, quindi seleziona **Aggiungi provider**. 

1. Per **Configura provider**, scegli **SAML**. 

1. Digitare un nome per il provider di identità.

1. In **Documento metadati**, fai clic su **Scegli file** e specifica il documento di metadati SAML scaricato in [Prerequisiti](#idp-manage-identityprovider-prerequisites).
**Nota**  
L’attributo `validUntil` o `cacheDuration` nel documento di metadati SAML definisce la data **Valido fino a** per il provider di identità. Se il documento di metadati SAML non include un attributo relativo al periodo di validità, la data **Valido fino a** non corrisponderà alla data di scadenza del certificato X.509.  
IAM non valuta né interviene sulla scadenza dei certificati X.509 nei documenti di metadati SAML. Se hai dubbi in merito a certificati X.509 scaduti, ti consigliamo di monitorare le date di scadenza dei certificati e di ruotarli in base alle policy di governance e sicurezza della tua organizzazione.

1. (Facoltativo) Per la **Crittografia SAML**, seleziona **Scegli file** e seleziona il file della chiave privata creato in [Prerequisiti](#idp-manage-identityprovider-prerequisites). Scegli **Richiedi crittografia** per accettare solo le richieste crittografate dal tuo IdP.

1. (Facoltativo) Per **Aggiungi tag**, puoi aggiungere coppie chiave-valore per aiutarti a identificare e organizzare le tue. IdPs È inoltre possibile utilizzare i tag per controllare l'accesso alle risorse AWS . Per ulteriori informazioni sull'applicazione di tag ai provider di identità SAML, vedere [Aggiungere tag ai provider di identità SAML per IAM](id_tags_saml.md).

   Seleziona **Aggiungi tag**. Immetti i valori per ogni coppia chiave-valore del tag. 

1. Controlla le informazioni inserite. Quando hai finito, scegli **Aggiungi provider**. 

1. Assegna un ruolo IAM al tuo provider di identità. Questo ruolo fornisce alle identità degli utenti esterni gestite dal tuo provider di identità le autorizzazioni per accedere alle AWS risorse del tuo account. Per ulteriori informazioni sulla creazione di ruoli per la federazione delle identità, consulta [Creazione di un ruolo per un provider di identità di terze parti](id_roles_create_for-idp.md).
**Nota**  
SAML IDPs utilizzato in una politica di fiducia dei ruoli deve trovarsi nello stesso account in cui si trova il ruolo.

**Per eliminare un provider SAML (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, scegli **Identity providers** (Provider di identità).

1. Seleziona la casella di controllo accanto al provider di identità che desideri eliminare.

1. Scegli **Elimina**. Viene visualizzata una nuova finestra.

1. Conferma che desideri eliminare il provider digitando la parola `delete` nel campo. Quindi, scegli **Elimina**.

## Gestire le chiavi di crittografia SAML
<a name="id_federation_manage-saml-encryption"></a>

Puoi configurare i provider SAML IAM per ricevere asserzioni crittografate nella risposta SAML dal tuo IdP esterno. Gli utenti possono assumere un ruolo nelle AWS asserzioni SAML crittografate chiamando. `[sts:AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)`

La crittografia SAML garantisce la sicurezza delle asserzioni quando vengono trasmesse tramite intermediari o terze parti. Inoltre, questa funzionalità consente di soddisfare il FedRAMP o qualsiasi requisito della policy di conformità interna che impone la crittografia delle asserzioni SAML.

Per configurare un provider di identità SAML IAM, consulta [Creare un provider di identità SAML in IAM](#id_roles_providers_create_saml). Per assistenza sulla federazione SAML, consulta [Risoluzione dei problemi della federazione SAML](troubleshoot_saml.md).

### Ruotare la chiave di crittografia SAML
<a name="id_federation_manage-saml-keys-rotate"></a>

IAM utilizza la chiave privata che hai caricato sul provider SAML IAM per decrittografare le asserzioni SAML crittografate del tuo IdP. Puoi salvare fino a due file di chiave privata per ogni provider di identità, consentendoti di ruotare le chiavi private secondo necessità. Quando vengono salvati due file, ogni richiesta tenterà innanzitutto di decrittografare con la data riportata in **Aggiunto il** più recente, quindi IAM proverà a decrittografare la richiesta con la data riportata in **Aggiunto il** più vecchia.

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

1. Nel riquadro di navigazione, scegli **Provider di identità**, quindi seleziona il tuo provider dall'elenco. 

1. Scegli la scheda **Crittografia SAML** e seleziona **Aggiungi nuova chiave**.

1. Seleziona **Scegli file** e carica la chiave privata scaricata dal tuo IdP come file .pem, quindi seleziona **Aggiungi chiave**.

1. Nella sezione **Chiavi private per la decrittografia SAML**, seleziona il file di chiave privata scaduto e scegli **Rimuovi**. Ti consigliamo di rimuovere la chiave privata scaduta dopo aver aggiunto una nuova chiave privata per assicurarti che il primo tentativo di decrittografare l’asserzione abbia esito positivo.

## Creare e gestire un provider di identità SAML IAM (AWS CLI)
<a name="idp-create-identityprovider-CLI"></a>

Puoi utilizzare il AWS CLI per creare, aggiornare ed eliminare i provider SAML. Per assistenza sulla federazione SAML, consulta [Risoluzione dei problemi della federazione SAML](troubleshoot_saml.md).

**Come creare un provider di identità IAM e caricare un documento di metadati (AWS CLI)**
+ Eseguire il comando: [https://docs.aws.amazon.com/cli/latest/reference/iam/create-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-saml-provider.html) 

**Per aggiornare un provider di identità SAML IAM (AWS CLI)**

Puoi aggiornare il file di metadati, le impostazioni di crittografia SAML e ruotare i file di decrittografia a chiave privata per il tuo provider SAML IAM. Per ruotare le chiavi private, aggiungi la tua nuova chiave privata e rimuovi la vecchia chiave in una richiesta separata. Per ulteriori informazioni sulla rotazione delle chiavi private, consulta [Gestire le chiavi di crittografia SAML](#id_federation_manage-saml-encryption).
+ Eseguire il comando: [https://docs.aws.amazon.com/cli/latest/reference/iam/update-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-saml-provider.html) 

**Come aggiungere i tag a un provider di identità IAM esistente (AWS CLI)**
+ Eseguire il comando: [https://docs.aws.amazon.com/cli/latest/reference/iam/tag-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-saml-provider.html) 

**Come elencare i tag per il provider di identità IAM esistente (AWS CLI)**
+ Eseguire il comando: [https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-provider-tags.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-provider-tags.html) 

**Come rimuovere i tag da un provider di identità IAM esistente (AWS CLI)**
+ Eseguire il comando: [https://docs.aws.amazon.com/cli/latest/reference/iam/untag-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-saml-provider.html) 

**Come eliminare un provider di identità SAML IAM (AWS CLI)**

1. (Facoltativo) Per elencare le informazioni di tutti i provider (ad esempio l'ARN, la data di creazione e la scadenza), eseguire il seguente comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-providers.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-providers.html)

1. (Facoltativo) Per ottenere informazioni su un provider specifico (ad esempio l'ARN, la data di creazione, la scadenza, le impostazioni di crittografia e le informazioni sulla chiave privata), esegui il seguente comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/get-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-saml-provider.html)

1. Per eliminare un provider di identità IAM, esegui il comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-saml-provider.html)

## Crea e gestisci un provider di identità IAM SAML (API)AWS
<a name="idp-create-identityprovider-API"></a>

Puoi utilizzare l' AWS API per creare, aggiornare ed eliminare i provider SAML. Per assistenza sulla federazione SAML, consulta [Risoluzione dei problemi della federazione SAML](troubleshoot_saml.md).

**Per creare un provider di identità IAM e caricare un documento di metadati (API)AWS**
+ Richiamare l'operazione: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateSAMLProvider.html)

**Per aggiornare un provider di identità IAM SAML (API)AWS**

Puoi aggiornare il file di metadati, le impostazioni di crittografia SAML e ruotare i file di decrittografia a chiave privata per il tuo provider SAML IAM. Per ruotare le chiavi private, aggiungi la tua nuova chiave privata e rimuovi la vecchia chiave in una richiesta separata. Per ulteriori informazioni sulla rotazione delle chiavi private, consulta [Gestire le chiavi di crittografia SAML](#id_federation_manage-saml-encryption).
+ Richiamare l'operazione: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateSAMLProvider.html)

**Per etichettare un provider di identità IAM (AWS API) esistente**
+ Richiamare l'operazione: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagSAMLProvider.html)

**Per elencare i tag per un provider di identità IAM (AWS API) esistente**
+ Richiamare l'operazione: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviderTags.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviderTags.html)

**Per rimuovere i tag su un provider di identità IAM (AWS API) esistente**
+ Richiamare l'operazione: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagSAMLProvider.html)

**Per eliminare un provider di identità IAM (AWS API)**

1. (Facoltativo) Per elencare le informazioni per tutti IdPs, come l'ARN, la data di creazione e la scadenza, chiamate la seguente operazione:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviders.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviders.html)

1. (Facoltativo) Per ottenere informazioni su un provider specifico (ad esempio l'ARN, la data di creazione, la data di scadenza, le impostazioni di crittografia e le informazioni sulla chiave privata), esegui il seguente comando:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetSAMLProvider.html)

1. Per eliminare un IdP, richiamare la seguente operazione:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteSAMLProvider.html)

## Fasi successive
<a name="id_roles_create-for-saml-next-steps"></a>

Dopo aver creato un provider di identità SAML, configura l'attendibilità della parte con il tuo IdP. È inoltre possibile utilizzare le attestazioni della risposta di autenticazione del tuo IdP nelle policy per controllare l'accesso a un ruolo.
+ Devi informare l'IdP in AWS qualità di fornitore di servizi. Questa relazione è nota come relazione di attendibilità tra il provider di identità e AWS. L'esatto processo per aggiungere una relazione di trust dipende dall'IdP utilizzato. Per informazioni dettagliate, vedi [Configurare il provider di identità SAML 2.0 con una relazione di attendibilità della parte affidabile e aggiunta di attestazioni](id_roles_providers_create_saml_relying-party.md).
+ Quando l'IdP invia la risposta contenente le attestazioni a AWS, molte delle attestazioni in entrata vengono mappate alle AWS chiavi di contesto. Puoi utilizzare queste chiavi di contesto nelle policy IAM utilizzando l'elemento Condition per controllare l'accesso a un ruolo. Per maggiori dettagli, consultare [Configurare le asserzioni SAML per la risposta di autenticazione](id_roles_providers_create_saml_assertions.md).

# Configurare il provider di identità SAML 2.0 con una relazione di attendibilità della parte affidabile e aggiunta di attestazioni
<a name="id_roles_providers_create_saml_relying-party"></a>

Quando crei un provider di identità IAM e un ruolo per l'accesso SAML, indichi ad AWS il provider di identità (IdP) esterno e le operazioni che i rispettivi utenti sono autorizzati a effettuare. Il passaggio successivo consiste nell'informare l'IdP in AWS qualità di fornitore di servizi. Questa relazione è nota come *relazione di trust* tra il provider di identità e AWS. L'esatto processo per aggiungere una relazione di trust dipende dall'IdP utilizzato. Per ulteriori informazioni, consulta la documentazione relativa al tuo software di gestione delle identità. 

Molti IdPs consentono di specificare un URL da cui l'IdP può leggere un documento XML contenente informazioni e certificati del relying party. Per AWS, utilizza l'URL dell'endpoint di accesso. Nell’esempio seguente viene illustrato il formato per l’URL con il `region-code` facoltativo.

`https://region-code.signin.aws.amazon.com/static/saml-metadata.xml`

Se è richiesta la crittografia SAML, l'URL deve includere l'identificatore univoco AWS assegnato al provider SAML, che puoi trovare nella pagina dei dettagli del provider di identità. L’esempio seguente mostra un URL di accesso regionale che include un identificatore univoco.

`https://region-code.signin.aws.amazon.com/static/saml/IdP-ID/saml-metadata.xml`

[Per un elenco dei *region-code* valori possibili, consulta la colonna **Regione** negli endpoint di accesso.AWS](https://docs.aws.amazon.com/general/latest/gr/signin-service.html) Per il AWS valore, puoi anche utilizzare l'endpoint non regionale. `https://signin.aws.amazon.com/saml`

Se non è possibile specificare direttamente un URL, scaricare il documento XML dall'URL precedente e importarlo nel software dell'IdP. 

Inoltre, devi creare regole di reclamo appropriate nel tuo IdP che specifichino AWS come controparte. *Quando l'IdP invia una risposta SAML all' AWS endpoint, include un'*asserzione* SAML che contiene una o più attestazioni.* Un'attestazione consiste in un set di informazioni sull'utente e sui rispettivi gruppi. Una regola di attestazione mappa tali informazioni negli attributi SAML. Ciò ti consente di assicurarti che le risposte di autenticazione SAML del tuo IdP contengano gli attributi AWS necessari utilizzati nelle policy IAM per verificare le autorizzazioni per i principali federati SAML. Per ulteriori informazioni, consulta i seguenti argomenti:
+  [Panoramica del ruolo per consentire l'accesso federato SAML alle tue risorse AWS](id_roles_providers_saml.md#CreatingSAML-configuring-role). In questo argomento viene descritto l’uso di chiavi specifiche SAML nelle policy IAM e le modalità di utilizzo per limitare le autorizzazioni per i principali federati SAML.
+ [Configurare le asserzioni SAML per la risposta di autenticazione](id_roles_providers_create_saml_assertions.md). In questo argomento viene descritto come configurare le attestazioni SAML che includono informazioni sull'utente. Le attestazioni sono raggruppate in un'asserzione SAML e incluse nella risposta SAML inviata ad AWS. Devi assicurarti che le informazioni necessarie alle AWS policy siano incluse nell'asserzione SAML in un formato riconoscibile e utilizzabile. AWS 
+  [Integra fornitori di soluzioni SAML di terze parti con AWS](id_roles_providers_saml_3rd-party.md). Questo argomento fornisce collegamenti alla documentazione fornita da organizzazioni di terze parti su come integrare soluzioni di identità con AWS. 

**Nota**  
Per migliorare la resilienza della federazione, ti consigliamo di configurare l'IdP e la federazione AWS per supportare più endpoint di accesso SAML. Per i dettagli, consulta l'articolo del AWS Security Blog [Come utilizzare gli endpoint SAML regionali per](https://aws.amazon.com/blogs//security/how-to-use-regional-saml-endpoints-for-failover) il failover.

# Integra fornitori di soluzioni SAML di terze parti con AWS
<a name="id_roles_providers_saml_3rd-party"></a>

**Nota**  
Ti consigliamo di richiedere agli utenti umani di utilizzare credenziali temporanee per l'accesso. AWS Hai preso in considerazione l'idea di utilizzarlo AWS IAM Identity Center? Puoi utilizzare IAM Identity Center per gestire centralmente l'accesso a più account Account AWS e fornire agli utenti un accesso Single Sign-On protetto da MFA a tutti gli account assegnati da un'unica posizione. Con IAM Identity Center puoi creare e gestire le identità degli utenti in IAM Identity Center o connetterti facilmente al tuo attuale gestore dell'identità digitale (IdP) compatibile con SAML 2.0. Per ulteriori informazioni, consulta [Cos'è IAM Identity Center?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) nella *Guida per l'utente di AWS IAM Identity Center *.

I seguenti collegamenti consentono di configurare soluzioni di provider di identità (IdP) SAML 2.0 di terze parti in modo che AWS funzionino con la federazione. Rivolgiti al tuo provider di identità per determinare se supporta la crittografia con token SAML. Per i requisiti di crittografia SAML, consulta [Gestire le chiavi di crittografia SAML](id_roles_providers_create_saml.md#id_federation_manage-saml-encryption).

**Suggerimento**  
AWS I tecnici dell'assistenza possono assistere i clienti che dispongono di piani di supporto aziendali e aziendali con alcune attività di integrazione che coinvolgono software di terze parti. Per un elenco aggiornato delle piattaforme e delle applicazioni supportate, vedi [Quali software di terze parti sono supportati?](https://aws.amazon.com/premiumsupport/faqs/#what3rdParty) nel *AWS Support FAQs*.


****  

| Soluzione | Ulteriori informazioni | 
| --- | --- | 
| Auth0 |  [Integrazione con Amazon Web Services](https://auth0.com/docs/integrations/aws): questa pagina del sito Web di documentazione Auth0 contiene collegamenti a risorse che descrivono come configurare il Single Sign-On (SSO) con Console di gestione AWS e include un esempio. JavaScript È possibile configurare Auth0 per passare i [tag di sessione](id_session-tags.md). Per ulteriori informazioni, consulta [Auth0 annuncia una partnership](https://auth0.com/blog/auth0-partners-with-aws-for-iam-session-tags/) con i tag di sessione IAM. AWS  | 
| Microsoft Entra |  [Tutorial: integrazione SSO di Microsoft Entra con AWS Single-Account Access](https://learn.microsoft.com/en-us/azure/active-directory/saas-apps/amazon-web-service-tutorial) — Questo tutorial sul sito Web di Microsoft descrive come configurare Microsoft Entra (precedentemente noto come Azure AD) come provider di identità (IdP) utilizzando la federazione SAML. | 
| Centrify | [Configura Centrify e usa SAML per SSO AWS: questa pagina del sito Web di Centrify spiega come configurare](https://docs.centrify.com/Content/Applications/AppsWeb/AmazonSAML.htm) Centrify per utilizzare SAML per SSO. AWS | 
| CyberArk | Configura [CyberArk](https://docs.cyberark.com/Product-Doc/OnlineHelp/Idaptive/Latest/en/Content/Applications/AppsWeb/AmazonSAML.htm)per fornire l'accesso ad Amazon Web Services (AWS) agli utenti che accedono tramite SAML Single Sign-On (SSO) dal portale utenti. CyberArk  | 
| ForgeRock | [La ForgeRock piattaforma Identity si integra con.](https://backstage.forgerock.com/docs/am/6.5/saml2-guide/#saml2-create-hosted-idp) AWS Puoi configurare ForgeRock per passare i [tag di sessione](id_session-tags.md). Per ulteriori informazioni, consulta [Attribute Based Access Control for Amazon Web Services](https://www.forgerock.com/blog/attribute-based-access-control-amazon-web-services). | 
| Google Workspace | [Applicazione cloud Amazon Web Services](https://support.google.com/a/answer/6194963): questo articolo sul sito di assistenza per amministratori di Google Workspace descrive come configurare Google Workspace come IdP SAML 2.0 e come fornitore di AWS servizi. | 
| IBM | È possibile configurare IBM per passare i [tag di sessione](id_session-tags.md). Per ulteriori informazioni, consulta [IBM Cloud Identity IDaa S, uno dei primi a supportare i tag di sessione](https://community.ibm.com/community/user/security/blogs/adam-case/2019/11/25/ibm-cloud-identity-idaas-one-of-first-to-support-aws-session-tags). AWS  | 
| JumpCloud |  [Concessione dell'accesso tramite IAM Roles for Single Sign On (SSO) con Amazon AWS](https://support.jumpcloud.com/support/s/article/Granting-Access-via-IAM-Roles-for-Single-Sign-On-SSO-with-Amazon-AWS): questo articolo sul JumpCloud sito Web descrive come configurare e abilitare l'SSO basato sui ruoli IAM per. AWS | 
| Matrix42 | MyWorkspace Guida [introduttiva: questa guida](https://myworkspace.matrix42.com/documents/MyWorkspace-Getting-Started-with-AWS.pdf) descrive come integrare i servizi di AWS identità con Matrix42. MyWorkspace | 
| Microsoft Active Directory Federation Services (AD FS) |  [Note sul campo: Integrazione di Active Directory Federation Service con AWS IAM Identity Center](https://aws.amazon.com/blogs/architecture/field-notes-integrating-active-directory-federation-service-with-aws-single-sign-on/) — Questo post sul blog di AWS architettura spiega il flusso di autenticazione tra AD FS e AWS IAM Identity Center (IAM Identity Center). IAM Identity Center supporta la federazione delle identità con SAML 2.0, consentendo l'integrazione con le soluzioni AD FS. Gli utenti possono accedere al portale di IAM Identity Center con le proprie credenziali aziendali, riducendo il sovraccarico amministrativo dovuto al mantenimento di credenziali separate. Inoltre, puoi configurare AD FS per passare i [tag di sessione](id_session-tags.md). Per ulteriori informazioni, consulta [Utilizzo del controllo accessi basato sugli attributi con AD FS per semplificare la gestione delle autorizzazioni IAM](https://aws.amazon.com/blogs/security/attribute-based-access-control-ad-fs-simplify-iam-permissions-management/).  | 
| miniOrange | [SSO per AWS](http://miniorange.com/amazon-web-services-%28aws%29-single-sign-on-%28sso%29): questa pagina del sito Web MiniOrange descrive come stabilire un accesso sicuro AWS per le aziende e il pieno controllo sull'accesso alle AWS applicazioni.  | 
| Okta |  [Integrazione dell'interfaccia a riga di comando di Amazon Web Services tramite Okta](https://support.okta.com/help/Documentation/Knowledge_Article/Integrating-the-Amazon-Web-Services-Command-Line-Interface-Using-Okta): da questa pagina del sito del supporto di Okta è possibile ottenere informazioni su come configurare Okta per l'utilizzo con AWS. È possibile configurare Okta per passare i [tag di sessione](id_session-tags.md). Per ulteriori informazioni, [consulta Okta and AWS Partner to Simplify Access Tramite](https://www.okta.com/blog/2019/11/okta-and-aws-partner-to-simplify-access-via-session-tags/) Session Tags. | 
| Okta | [AWS Account Federation](https://help.okta.com/oie/en-us/Content/Topics/DeploymentGuides/AWS/aws-deployment.htm): questa sezione del sito Web di Okta descrive come configurare e abilitare IAM Identity Center per. AWS | 
| OneLogin | Nella [OneLoginKnowledgebase](https://onelogin.service-now.com/support), SAML AWS cerca un elenco di articoli che spiegano come configurare la funzionalità di IAM Identity Center tra OneLogin e AWS per scenari a ruolo singolo e multiruolo. [È possibile configurare il passaggio dei tag di sessione. OneLogin ](id_session-tags.md) Per ulteriori informazioni, consulta [OneLogin e Tag di sessione: controllo degli accessi alle risorse basato sugli attributi](https://www.onelogin.com/blog/aws-session-tags-integration). AWS  | 
| Identità Ping |  [PingFederate AWS Connettore](https://support.pingidentity.com/s/marketplace-integration-details?recordId=a7i1W0000004HBwQAM): visualizza i dettagli sul PingFederate AWS Connector, un modello di connessione rapida per configurare facilmente una connessione Single Sign-On (SSO) e di provisioning. Leggi la documentazione e scarica la versione più recente di PingFederate AWS Connector per le integrazioni con. AWSÈ possibile configurare Ping Identity per passare i [tag di sessione](id_session-tags.md). Per ulteriori informazioni, consulta [Announcing Ping Identity Support for Attribute-Based Access Control in AWS](https://support.pingidentity.com/s/document-item?bundleId=integrations&topicId=pon1571779451105.html).  | 
| RadiantLogic | [Radiant Logic Technology Partners](http://www.radiantlogic.com/about/partners/technology-partners/): il RadiantOne Federated Identity Service di Radiant Logic si integra con AWS per fornire un hub di identità per SSO basato su SAML.  | 
| RSA | [Amazon Web Services - Guida all'implementazione di RSA Ready](https://community.rsa.com/s/article/Amazon-Web-Services-RSA-Ready-Implementation-Guide) fornisce linee guida per l'integrazione di AWS e RSA. Per ulteriori informazioni sulla configurazione di SAML, consulta [Amazon Web Services - Configurazione SSO della mia pagina SAML - Guida all'implementazione di RSA Ready](https://community.rsa.com/s/article/Amazon-Web-Services-SAML-My-Page-SSO-Configuration-RSA-Ready-Implementation-Guide). | 
| Salesforce.com |  [Come configurare l'SSO da Salesforce a AWS](https://developer.salesforce.com/page/Configuring-SAML-SSO-to-AWS): questo articolo pratico sul sito per sviluppatori Salesforce.com descrive come configurare un provider di identità (IdP) in Salesforce e configurarlo come provider di servizi. AWS  | 
| SecureAuth |  [AWS - SecureAuth SAML SSO](https://docs.secureauth.com/2104/en/amazon-web-services--aws---idp-initiated--integration-guide.html): questo articolo sul sito Web descrive come configurare l'integrazione SAML con per un'appliance. SecureAuth AWS SecureAuth  | 
| Shibboleth |  [Come utilizzare Shibboleth per SSO su Console di gestione AWS: questo articolo del](https://aws.amazon.com/blogs/security/how-to-use-shibboleth-for-single-sign-on-to-the-aws-management-console) AWS Security Blog fornisce un step-by-step tutorial su come configurare Shibboleth e configurarlo come provider di identità per. AWSÈ possibile configurare Shibboleth per passare i [tag di sessione](id_session-tags.md). | 

[Per maggiori dettagli, consulta la pagina IAM Partners sul sito Web.](https://aws.amazon.com/iam/partners/) AWS 

# Configurare le asserzioni SAML per la risposta di autenticazione
<a name="id_roles_providers_create_saml_assertions"></a>

Dopo aver verificato l'identità di un utente nell'organizzazione, il provider di identità esterno (IdP) invia una risposta di autenticazione all'URL dell'endpoint di AWS accesso. Questa risposta è una richiesta POST che include un token SAML che aderisce al [binding POST HTTP per lo standard SAML 2.0](http://docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf) e che contiene i seguenti elementi o *attestazioni*. È possibile configurare queste affermazioni nell'IDP compatibile con SAML. Per ulteriori informazioni, consulta la documentazione del provider di identità per istruzioni su come inserire queste attestazioni.

Quando l'IdP invia la risposta contenente le attestazioni a AWS, molte delle attestazioni in entrata vengono mappate alle AWS chiavi di contesto. Queste chiavi di contesto possono essere controllate nelle policy IAM utilizzando l'elemento `Condition`. L'elenco delle mappature disponibili è incluso nella sezione [Mappatura degli attributi SAML per considerare attendibili le chiavi contestuali delle AWS politiche](#saml-attribute-mapping).

## `Subject` e `NameID`
<a name="saml_subject-name-id"></a>

La risposta deve includere esattamente un elemento `SubjectConfirmation` con un elemento `SubjectConfirmationData` che include sia l’attributo `NotOnOrAfter` sia l’attributo `Recipient`. L'attributo Recipient deve includere un valore che corrisponda all'URL dell'endpoint di AWS accesso. Il tuo IdP può utilizzare il termine `ACS`, `Recipient` o `Target` per fare riferimento a questo attributo.

Se è richiesta la crittografia SAML, l’URL di accesso deve includere l’identificatore univoco assegnato da AWS al provider SAML e consultabile nella pagina dei dettagli del provider di identità. L’esempio seguente mostra il formato di URL di accesso con il `region-code` facoltativo.

`https://region-code.signin.aws.amazon.com/saml`

Nell’esempio seguente, l’URL di accesso include un identificatore univoco, per cui è necessario aggiungere /acs/ al percorso di accesso.

`https://region-code.signin.aws.amazon.com/saml/acs/IdP-ID`

Per un elenco dei *region-code* valori possibili, consulta la colonna **Regione** negli endpoint di [AWS accesso](https://docs.aws.amazon.com/general/latest/gr/signin-service.html). Per il AWS valore, puoi anche utilizzare l'endpoint di accesso globale. `https://signin.aws.amazon.com/saml`

Gli elementi `NameID` possono avere il valore persistente, transitorio o oppure possono essere costituiti dall'URI formato completo, come fornito dalla soluzione IdP. Un valore permanente indica che il valore in `NameID` è lo stesso per un utente da una sessione all'altra. Se il valore è transitorio, l'utente dispone di un valore `NameID` diverso per ogni sessione. Le interazioni Single Sign-on supportano i seguenti tipi di identificatori:
+ `urn:oasis:names:tc:SAML:2.0:nameid-format:persistent`
+ `urn:oasis:names:tc:SAML:2.0:nameid-format:transient`
+ `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress`
+ `urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified`
+ `urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName`
+ `urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName`
+ `urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos`
+ `urn:oasis:names:tc:SAML:2.0:nameid-format:entity`

Di seguito viene riportato un estratto di esempio. Sostituire con i propri valori i valori contrassegnati.

```
<Subject>
  <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">_cbb88bf52c2510eabe00c1642d4643f41430fe25e3</NameID>
  <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
    <SubjectConfirmationData NotOnOrAfter="2013-11-05T02:06:42.876Z" Recipient="https://region-code.signin.aws.amazon.com/saml/SAMLSP4SHN3UIS2D558H46"/>
  </SubjectConfirmation>
</Subject>
```

**Importante**  
Al contrario, la chiave di contesto `saml:aud` proviene dall'attributo *recipient* SAML perché è l'equivalente SAML del campo del destinatario OIDC, ad esempio, `accounts.google.com:aud`.

## Attributo SAML `PrincipalTag`
<a name="saml_role-session-tags"></a>

(Facoltativo) Puoi utilizzare un elemento `Attribute` con l'attributo `Name` impostato su `https://aws.amazon.com/SAML/Attributes/PrincipalTag:{TagKey}`. Questo elemento consente di passare attributi come tag di sessione nell'asserzione SAML. Per ulteriori informazioni sui tag di sessione, consultare [Passa i tag di sessione AWS STS](id_session-tags.md).

Per passare gli attributi come tag di sessione, includi l'elemento `AttributeValue` che specifica il valore del tag. Ad esempio, per passare la coppia chiave-valore del tag `Project` = `Marketing` e `CostCenter` = `12345`, utilizza il seguente attributo. Includi un elemento `Attribute` separato per ogni tag.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:Project">
  <AttributeValue>Marketing</AttributeValue>
</Attribute>
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:CostCenter">
  <AttributeValue>12345</AttributeValue>
</Attribute>
```

Per impostare i tag sopra elencati come transitivi, includere un altro elemento `Attribute` con l'attributo `Name` impostato a `https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys`. Questo è un attributo con più valori opzionale che imposta i tag di sessione come transitivi. I tag transitivi persistono quando utilizzi la sessione SAML per assumere un altro ruolo in AWS. Questo è noto come [concatenazione del ruolo](id_roles.md#iam-term-role-chaining). Ad esempio, per impostare entrambi i tag `CostCenter` e `Principal` come transitivi, utilizza il seguente attributo per specificare le chiavi.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys">
  <AttributeValue>Project</AttributeValue>
  <AttributeValue>CostCenter</AttributeValue>
</Attribute>
```

## Attributo SAML `Role`
<a name="saml_role-attribute"></a>

Puoi utilizzare un elemento `Attribute` con l'attributo `Name` impostato su `https://aws.amazon.com/SAML/Attributes/Role` Questo elemento contiene uno o più elementi `AttributeValue` che elencano il ruolo e il provider di identità IAM a cui l'utente è mappato dall'IdP. [Il ruolo IAM e il provider di identità IAM sono specificati come coppia delimitata da virgole nello stesso formato dei `PrincipalArn` parametri `RoleArn` and passati ARNs a SAML. AssumeRoleWith](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) Questo elemento deve contenere almeno una coppia ruolo-provider (elemento `AttributeValue`) e può contenere più coppie. Se l'elemento contiene più coppie, all'utente viene chiesto di scegliere il ruolo da assumere quando utilizza WebSSO per accedere alla Console di gestione AWS.

**Importante**  
Il valore dell'attributo `Name` nel tag `Attribute` è sensibile alla distinzione tra maiuscolo/minuscolo. Il valore deve essere impostato esattamente su `https://aws.amazon.com/SAML/Attributes/Role`.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/Role">
  <AttributeValue>arn:aws:iam::account-number:role/role-name1,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue>
  <AttributeValue>arn:aws:iam::account-number:role/role-name2,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue>
  <AttributeValue>arn:aws:iam::account-number:role/role-name3,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue>
</Attribute>
```

## Attributo SAML `RoleSessionName`
<a name="saml_role-session-attribute"></a>

Puoi utilizzare un elemento `Attribute` con l'attributo `Name` impostato su `https://aws.amazon.com/SAML/Attributes/RoleSessionName` Questo elemento contiene un elemento `AttributeValue` che fornisce un identificatore per le credenziali temporanee emesse quando viene assunto il ruolo. È possibile utilizzare questa opzione per associare le credenziali temporanee all'utente che utilizza l'applicazione. Questo elemento viene utilizzato per visualizzare le informazioni sull'utente in. Console di gestione AWS Il valore nell'elemento `AttributeValue` deve contenere tra 2 e 64 caratteri, può contenere solo caratteri alfanumerici, caratteri di sottolineatura e i seguenti caratteri: **. , \$1 = @ -** (trattino). Non può contenere spazi. Il valore è in genere un ID utente (`john`) o un indirizzo e-mail (`johndoe@example.com`). Non deve essere un valore che include uno spazio, ad esempio il nome di visualizzazione di un utente (`John Doe`).

**Importante**  
Il valore dell'attributo `Name` nel tag `Attribute` è sensibile alla distinzione tra maiuscolo/minuscolo. Il valore deve essere impostato esattamente su `https://aws.amazon.com/SAML/Attributes/RoleSessionName`.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/RoleSessionName">
  <AttributeValue>user-id-name</AttributeValue>
</Attribute>
```

## Attributo SAML `SessionDuration`
<a name="saml_role-session-duration"></a>

(Facoltativo) Puoi utilizzare un elemento `Attribute` con l'attributo `Name` impostato su `https://aws.amazon.com/SAML/Attributes/SessionDuration"`. Questo elemento contiene un `AttributeValue` elemento che specifica per quanto tempo l'utente può accedere Console di gestione AWS prima di dover richiedere nuove credenziali temporanee. Il valore è un numero intero che rappresenta il numero di secondi per la sessione. Il valore può variare da 900 secondi (15 minuti) a 43.200 secondi (12 ore). Se questo attributo non è presente, la credenziale dura per un'ora (il valore predefinito del parametro `DurationSeconds` dell'API `AssumeRoleWithSAML`).

Per utilizzare questo attributo, devi configurare il provider SAML in modo che fornisca l'accesso Single Sign-On all'endpoint web di accesso Console di gestione AWS tramite console all'indirizzo. `https://region-code.signin.aws.amazon.com/saml` [Per un elenco dei *region-code* valori possibili, consulta la colonna **Regione negli endpoint di accesso.**AWS](https://docs.aws.amazon.com/general/latest/gr/signin-service.html) Facoltativamente, puoi utilizzare il seguente URL: `https://signin.aws.amazon.com/static/saml`. Si noti che questo attributo estende le sessioni solo alla Console di gestione AWS. Non può estendere la durata di altre credenziali. Tuttavia, se è presente in una chiamata API `AssumeRoleWithSAML`, può essere utilizzato per *abbreviare* la durata della sessione. La durata predefinita delle credenziali restituite dalla chiamata è di 60 minuti. 

Si noti inoltre che, se viene definito anche un attributo `SessionNotOnOrAfter`, il valore ***inferiore*** dei due attributi, `SessionDuration` o `SessionNotOnOrAfter`, stabilisce la durata massima della sessione della console.

Quando si abilitano le sessioni della console con una durata estesa, aumenta il rischio di compromissione delle credenziali. Per mitigare questo rischio, è possibile disabilitare immediatamente le sessioni della console attiva per tutti i ruoli, scegliendo **Revoca sessioni** nella pagina **Riepilogo ruolo** della console IAM. Per ulteriori informazioni, consulta [Revocare le credenziali di sicurezza temporanee per i ruoli IAM](id_roles_use_revoke-sessions.md). 

**Importante**  
Il valore dell'attributo `Name` nel tag `Attribute` è sensibile alla distinzione tra maiuscolo/minuscolo. Il valore deve essere impostato esattamente su `https://aws.amazon.com/SAML/Attributes/SessionDuration`.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/SessionDuration">
  <AttributeValue>1800</AttributeValue>
</Attribute>
```

## Attributo SAML `SourceIdentity`
<a name="saml_sourceidentity"></a>

(Facoltativo) Puoi utilizzare un elemento `Attribute` con l'attributo `Name` impostato su `https://aws.amazon.com/SAML/Attributes/SourceIdentity`. Questo elemento contiene un elemento `AttributeValue` che fornisce un identificatore per la persona o l'applicazione che utilizza un ruolo IAM. [Il valore dell'identità di origine persiste quando utilizzi la sessione SAML per assumere un altro ruolo, AWS noto come concatenamento dei ruoli.](id_roles.md#iam-term-role-chaining) Il valore per l'identità di origine è presente nella richiesta per ogni operazione eseguita durante la sessione del ruolo. Il valore impostato non può essere modificato durante la sessione del ruolo. Gli amministratori possono quindi utilizzare AWS CloudTrail i log per monitorare e controllare le informazioni sull'identità di origine per determinare chi ha eseguito azioni con ruoli condivisi.

Il valore nell'elemento `AttributeValue` deve contenere tra 2 e 64 caratteri, può contenere solo caratteri alfanumerici, caratteri di sottolineatura e i seguenti caratteri: **. , \$1 = @ -** (trattino). Non può contenere spazi. Il valore è in genere un attributo associato all'utente, ad esempio un ID utente (`john`) o un indirizzo e-mail (`johndoe@example.com`). Non deve essere un valore che include uno spazio, ad esempio il nome di visualizzazione di un utente (`John Doe`). Per ulteriori informazioni sull'utilizzo dell'identità di origine, consulta [Monitoraggio e controllo delle operazioni intraprese con i ruoli assunti](id_credentials_temp_control-access_monitor.md).

**Importante**  
Se l'asserzione SAML è configurata per utilizzare l'attributo [`SourceIdentity`](#saml_sourceidentity), allora la policy di attendibilità del ruolo deve includere anche l'operazione `sts:SetSourceIdentity` altrimenti l'operazione di assunzione del ruolo avrà esito negativo. Per ulteriori informazioni sull'utilizzo dell'identità di origine, consulta [Monitoraggio e controllo delle operazioni intraprese con i ruoli assunti](id_credentials_temp_control-access_monitor.md).

Per inviare un attributo dell'identità di origine, includi l'elemento `AttributeValue` che specifica il valore dell'identità di origine. Ad esempio, per inviare `Diego` dell'identità di origine, utilizza il seguente attributo.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/SourceIdentity">
  <AttributeValue>Diego</AttributeValue>
```

## Mappatura degli attributi SAML per considerare attendibili le chiavi contestuali delle AWS politiche
<a name="saml-attribute-mapping"></a>

Le tabelle in questa sezione elencano gli attributi SAML comunemente usati e il modo in cui sono mappati alle chiavi di contesto delle condizioni delle policy in AWS. Puoi utilizzare queste chiavi per controllare l'accesso a un ruolo. A tale scopo, confronta le chiavi con i valori che sono inclusi nelle asserzioni incluse in una richiesta di accesso SAML.

**Importante**  
Queste chiavi sono disponibili solo nelle policy di affidabilità IAM (policy che determinano chi può assumere un ruolo) e non sono applicabili alle policy di autorizzazione.

Nella tabella degli attributi eduPerson e eduOrg, i valori vengono digitati come stringhe o come elenchi di stringhe. Per i valori di stringa, puoi testare questi valori nelle policy di attendibilità IAM utilizzando le condizioni `StringEquals` o `StringLike`. Per i valori che contengono un elenco di stringhe, è possibile utilizzare gli `ForAnyValue`operatori del set di policy`ForAllValues` [ e ](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys) per un test dei valori delle policy di attendibilità.

**Nota**  
Dovresti includere solo un claim per chiave di AWS contesto. Se ne include più di una, verrà mappata una sola attestazione. 

La tabella riportata di seguito mostra gli attributi eduPerson ed eduOrg.


| Attributo eduPerson o eduOrg (chiave `Name`) | Si associa a questa chiave di AWS contesto (`FriendlyName`chiave) | Tipo | 
| --- | --- | --- | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.1`   |   `eduPersonAffiliation`   |  Elenco di stringhe  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.2`   |   `eduPersonNickname`   |  Elenco di stringhe  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.3`   |   `eduPersonOrgDN`   |  Stringa  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.4`   |   `eduPersonOrgUnitDN`   |  Elenco di stringhe  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.5`   |   `eduPersonPrimaryAffiliation`   |  Stringa  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.6`   |   `eduPersonPrincipalName`   |  Stringa  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.7`   |   `eduPersonEntitlement`   |  Elenco di stringhe  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.8`   |   `eduPersonPrimaryOrgUnitDN`   |  Stringa  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.9`   |   `eduPersonScopedAffiliation`   |  Elenco di stringhe  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.10`   |   `eduPersonTargetedID`   |  Elenco di stringhe  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.11`   |   `eduPersonAssurance`   |  Elenco di stringhe  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.2`   |   `eduOrgHomePageURI`   |  Elenco di stringhe  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.3`   |   `eduOrgIdentityAuthNPolicyURI`   |  Elenco di stringhe  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.4`   |   `eduOrgLegalName`   |  Elenco di stringhe  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.5`   |   `eduOrgSuperiorURI`   |  Elenco di stringhe  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.6`   |   `eduOrgWhitePagesURI`   |  Elenco di stringhe  | 
|   `urn:oid:2.5.4.3`   |   `cn`   |  Elenco di stringhe  | 

La tabella riportata di seguito mostra gli attributi di Active Directory.


| Attributo AD | Si associa a questa chiave di AWS contesto | Tipo | 
| --- | --- | --- | 
|  `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name`  |  `name`  |  Stringa  | 
|  `http://schemas.xmlsoap.org/claims/CommonName`  |  `commonName`  |  Stringa  | 
|  `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname`  |  `givenName`  |  Stringa  | 
|  `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname`  |  `surname`  |  Stringa  | 
|  `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`  |  `mail`  |  Stringa  | 
|  `http://schemas.microsoft.com/ws/2008/06/identity/claims/primarygroupsid`  |  `uid`  |  Stringa  | 

La tabella riportata di seguito mostra gli attributi X.500.


| Attributo X.500 | Si associa a questa chiave di AWS contesto | Tipo | 
| --- | --- | --- | 
|  `2.5.4.3`  |  `commonName`  |  Stringa  | 
|  `2.5.4.4`  |  `surname`  |  Stringa  | 
|  `2.4.5.42`  |  `givenName`  |  Stringa  | 
|  `2.5.4.45`  |  `x500UniqueIdentifier`  |  Stringa  | 
|  `0.9.2342.19200300100.1.1`  |  `uid`  |  Stringa  | 
|  `0.9.2342.19200300100.1.3`  |  `mail`  |  Stringa  | 
|  `0.9.2342.19200300.100.1.45`  |  `organizationStatus`  |  Stringa  | 

# Consentire ai principali federati SAML 2.0 di accedere a Console di gestione AWS
<a name="id_roles_providers_enable-console-saml"></a>

Puoi utilizzare un ruolo per configurare il tuo provider di identità (IdP) conforme a SAML 2.0 e consentire AWS ai principali federati SAML di accedere a. Console di gestione AWS Il ruolo concede all'utente le autorizzazioni per eseguire attività nella console. Se desideri offrire ai responsabili federati SAML altri modi di accesso, consulta uno di questi argomenti: AWS
+ AWS CLI: [Passaggio a un ruolo IAM (AWS CLI)](id_roles_use_switch-role-cli.md)
+ Strumenti per Windows: PowerShell [Passare a un ruolo IAM (Tools for Windows PowerShell)](id_roles_use_switch-role-twp.md)
+ AWS API: [Passa a un ruolo IAM (AWS API)](id_roles_use_switch-role-api.md)

## Panoramica di
<a name="enable-console-saml-overview"></a>

Il seguente diagramma mostra il flusso per il Single Sign-On abilitato per SAML. 

**Nota**  
Questo uso specifico di SAML differisce da quello più generale illustrato in precedenza [Federazione SAML 2.0](id_roles_providers_saml.md) perché questo flusso di lavoro lo apre per Console di gestione AWS conto dell'utente. In questo caso occorre utilizzare l'endpoint di accesso ad AWS anziché richiamare direttamente l'API `AssumeRoleWithSAML`. L'endpoint richiama l'API per l'utente e restituisce un'URL che reindirizza automaticamente il browser dell'utente alla Console di gestione AWS.

![\[Accesso Single Sign-On (SSO) alla console di gestione tramite SAML AWS\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/saml-based-sso-to-console.diagram.png)


Il diagramma illustra i passaggi seguenti:

1. L'utente accede al portale dell'organizzazione e seleziona l'opzione che consente di accedere alla Console di gestione AWS. Nella tua organizzazione, il portale è in genere una funzione del tuo IdP che gestisce lo scambio di fiducia tra l'organizzazione e. AWS Ad esempio, in Active Directory Federation Services, l'URL del portale è: `https://ADFSServiceName/adfs/ls/IdpInitiatedSignOn.aspx` 

1. Il portale verifica l'identità dell'utente nell'organizzazione.

1. Il portale genera una risposta di autenticazione SAML che include asserzioni che identificano l'utente e includono gli attributi dell'utente. È anche possibile configurare il provider di identità per includere un attributo di asserzione SAML chiamato `SessionDuration` che specifica la durata della validità della sessione della console. È anche possibile configurare il provider di identità per passare gli attributi come [tag di sessione](id_session-tags.md). Il portale invia questa risposta al browser del client.

1. Il browser del client viene reindirizzato all'endpoint AWS Single Sign-On e pubblica l'asserzione SAML. 

1. L'endpoint richiede le credenziali di sicurezza provvisorie per conto dell'utente e crea una URL di accesso alla console che utilizza tali credenziali. 

1. AWS invia l'URL di accesso al client come reindirizzamento.

1. Il browser del client è reindirizzato alla Console di gestione AWS. Se la risposta di autenticazione SAML include attributi mappati a più ruoli IAM, all'utente viene chiesto di selezionare il ruolo per l'accesso alla console. 

Dal punto di vista dell'utente, il processo avviene in modo trasparente: l'utente inizia dal portale interno dell'organizzazione e finisce al Console di gestione AWS, senza mai dover fornire alcuna credenziale. AWS 

Consulta le seguenti sezioni per una panoramica della configurazione di questo comportamento insieme ai collegamenti alla procedura dettagliata.

## Configura la tua rete come provider SAML per AWS
<a name="fedconsole-config-network-as-saml"></a>

All'interno della rete aziendale, è possibile configurare l'archivio identità (ad esempio Windows Active Directory) per l'utilizzo con un IdP basato su SAML come, ad esempio, Windows Active Directory Federation Services e Shibboleth. Utilizzando il provider di identità, si genera un documento di metadati che descrive l'organizzazione come un IdP e include le chiavi di autenticazione. Inoltre, configuri il portale della tua organizzazione per indirizzare le richieste degli utenti Console di gestione AWS all'endpoint AWS SAML per l'autenticazione utilizzando le asserzioni SAML. Il modo in cui è possibile configurare il provider di identità per la produzione del file metadata.xml dipende dal provider di identità. Per ulteriori informazioni, consulta la documentazione del provider di identità, oppure consulta [Integra fornitori di soluzioni SAML di terze parti con AWS](id_roles_providers_saml_3rd-party.md) per i collegamenti alla documentazione Web per molti dei fornitori di SAML supportati.

## Creazione di un provider SAML in IAM
<a name="fedconsole-create-saml-provider"></a>

Successivamente, accedi Console di gestione AWS e vai alla console IAM. Qui si crea un nuovo provider SAML, ovvero un'entità in IAM che contiene informazioni sul provider di identità dell'organizzazione. Come parte di questo processo, è possibile caricare il documento di metadati prodotto dal software IdP nella propria organizzazione nella sezione precedente. Per informazioni dettagliate, vedi [Creare un provider di identità SAML in IAM](id_roles_providers_create_saml.md). 

## Configura le autorizzazioni AWS per i principali federati SAML
<a name="fedconsole-grantperms"></a>

La fase successiva consiste nel creare un ruolo IAM che stabilisca una relazione di attendibilità tra IAM e il provider di identità dell'organizzazione. Questo ruolo deve identificare il tuo provider di identità come un principale (entità attendibile) ai fini della federazione. Il ruolo definisce anche le operazioni consentite agli utenti autenticati dall'IdP dell'organizzazione. AWSÈ possibile utilizzare la console IAM per creare questo ruolo. Quando si crea la policy di attendibilità che indica chi può assumere il ruolo, specifica il provider SAML creato in precedenza in IAM. È inoltre possibile specificare uno o più attributi SAML a cui un utente deve corrispondere per poter assumere quel ruolo. Ad esempio, è possibile specificare che solo gli utenti il cui valore SAML `[eduPersonOrgDN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#ck_edupersonorgdn)` è `ExampleOrg` sono autorizzati ad accedere. La procedura guidata relativa al ruolo aggiunge automaticamente una condizione per testare l'attributo `saml:aud` per assicurarsi che il ruolo venga assunto solo per l'accesso alla Console di gestione AWS.

Se è richiesta la crittografia SAML, l’URL di accesso deve includere l’identificatore univoco assegnato da AWS al provider SAML e consultabile nella pagina dei dettagli del provider di identità. La policy di affidabilità potrebbe apparire come segue:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::111122223333:saml-provider/ExampleOrgSSOProvider"
            },
            "Action": "sts:AssumeRoleWithSAML",
            "Condition": {
                "StringEquals": {
                    "saml:edupersonorgdn": "ExampleOrg",
                    "saml:aud": "https://region-code.signin.aws.amazon.com/saml/acs/SAMLSP4SHN3UIS2D558H46"
                }
            }
        }
    ]
}
```

------

**Nota**  
SAML IDPs utilizzato in una politica di fiducia dei ruoli deve trovarsi nello stesso account in cui si trova il ruolo.

Ti consigliamo di utilizzare gli endpoint regionali per l’attributo `saml:aud` all’indirizzo `https://region-code.signin.aws.amazon.com/static/saml-metadata.xml`. Per un elenco dei *region-code* valori possibili, consulta la colonna **Regione** negli endpoint di [AWS accesso](https://docs.aws.amazon.com/general/latest/gr/signin-service.html).

Per la [policy di autorizzazione](access_policies.md) nel ruolo, è necessario specificare le autorizzazioni come per qualsiasi utente, gruppo o ruolo. Ad esempio, se gli utenti dell'organizzazione sono autorizzati ad amministrare le istanze Amazon EC2, consenti esplicitamente le operazioni Amazon EC2 nella policy di autorizzazione. A tale scopo, puoi assegnare una [policy gestita](access_policies_manage-attach-detach.md), ad esempio la policy di **accesso completo di Amazon EC2**. 

Per ulteriori informazioni sulla creazione di un ruolo per un provider di identità SAML, consulta [Creare un ruolo per una federazione SAML 2.0 (console)](id_roles_create_for-idp_saml.md). 

## Fine della configurazione e creazione di asserzioni SAML
<a name="fedconsole-configassertions"></a>

Informa il tuo IdP SAML AWS che è il tuo fornitore di servizi installando `saml-metadata.xml` il file disponibile `https://region-code.signin.aws.amazon.com/static/saml-metadata.xml` in o. `https://signin.aws.amazon.com/static/saml-metadata.xml` Se è richiesta la SAMl crittografia, il file si trova in. `https://region-code.signin.aws.amazon.com/static/saml/SAMLSP4SHN3UIS2D558H46/saml-metadata.xml`

Per un elenco dei *region-code* valori possibili, consulta la colonna **Regione** negli [endpoint di AWS accesso](https://docs.aws.amazon.com/general/latest/gr/signin-service.html). 

Il modo in cui installare tale file dipende dal provider di identità. Alcuni provider danno la possibilità di digitare l'URL, dopodiché il provider di identità ottiene e installa il file per conto dell'utente. Altri richiedono di scaricare il file dall'URL e quindi fornirlo come file locale. Per ulteriori informazioni, consulta la documentazione del provider di identità, oppure consulta [Integra fornitori di soluzioni SAML di terze parti con AWS](id_roles_providers_saml_3rd-party.md) per i collegamenti alla documentazione Web per molti dei fornitori di SAML supportati.

È anche possibile configurare le informazioni che si desidera che il provider di identità passi come attributi SAML per AWS come parte della risposta di autenticazione. La maggior parte di queste informazioni viene visualizzata AWS come chiavi di contesto delle condizioni che puoi valutare nelle tue politiche. Queste chiavi di condizione garantiscono che solo agli utenti autorizzati nei giusti contesti vengono concesse le autorizzazioni per accedere alle risorse AWS . È possibile specificare le finestre di tempo che limitano l'utilizzo della console. È inoltre possibile specificare il tempo massimo (fino a 12 ore) durante il quale gli utenti possono accedere alla console prima di dover aggiornare le proprie credenziali. Per informazioni dettagliate, vedi [Configurare le asserzioni SAML per la risposta di autenticazione](id_roles_providers_create_saml_assertions.md).

# Visualizzare una risposta SAML nel browser
<a name="troubleshoot_saml_view-saml-response"></a>

Le procedure seguenti descrivono come visualizzare nel browser la risposta SAML del proprio provider di servizi durante la risoluzione di un problema relativo a SAML 2.0. 

Per tutti i browser, passare alla pagina in cui è possibile riprodurre il problema. Quindi seguire i passaggi per il browser appropriato:

**Topics**
+ [Google Chrome](#chrome)
+ [Mozilla Firefox](#firefox)
+ [Apple Safari](#safari)
+ [Operazioni da effettuare con la risposta SAML codificata Base64](#whatnext)

## Google Chrome
<a name="chrome"></a>

**Per visualizzare una risposta SAML in Chrome**

Questi passaggi sono stati testati utilizzando la versione 106.0.5249.103 (versione ufficiale) (arm64) di Google Chrome. Se si utilizza una versione diversa, potrebbe essere necessario modificare i passaggi di conseguenza.

1. Premere **F12** per avviare la console **Strumenti per sviluppatori**.

1. Selezionare la scheda **Netowrk** (Rete), quindi selezionare **Preserve log** (Conserva registro) nella parte superiore sinistra della finestra **Developer Tools** (Strumenti per sviluppatori).

1. Riprodurre il problema.

1. (Facoltativo) Se la colonna **Method** (Metodo) non è visibile nel pannello di registrazione **Developer Tools** (Strumenti per sviluppatori) **Network** (Rete), fare clic con il pulsante destro del mouse su qualsiasi etichetta di colonna e scegliere **Method** (Metodo) per aggiungere la colonna

1. Cercare un **SAML Post** (Post SAML) nel pannello di registrazione **Developer Tools** (Strumenti per sviluppatori) **Network** (Rete). Selezionare la riga e quindi visualizzare la scheda **Payload** (Carico utile) nella parte superiore. Cerca l'**SAMLResponse**elemento che contiene la richiesta codificata. Il valore associato è la risposta codificata Base64.

## Mozilla Firefox
<a name="firefox"></a>

**Per visualizzare una risposta SAML in Firefox**

Questa procedura è stata testata con la versione 105.0.3 (64 bit) di Mozilla Firefox. Se si utilizza una versione diversa, potrebbe essere necessario modificare i passaggi di conseguenza.

1. Premere **F12** per avviare la console **Strumenti per sviluppatori Web**.

1. Selezionare la scheda **Network (Rete)**. 

1. In alto a destra nella finestra **Web Developer Tools **(Strumenti per sviluppatori Web), fare clic sull'icona delle opzioni (il piccolo ingranaggio). Selezionare **Persist logs** (Preserva registri). 

1. Riprodurre il problema.

1. (Facoltativo) Se la colonna **Method** (Metodo) non è visibile nel pannello di registrazione **Developer Tools** (Strumenti per sviluppatori Web) **Network** (Rete), fare clic con il pulsante destro del mouse su qualsiasi etichetta di colonna e scegliere **Method** (Metodo) per aggiungere la colonna

1. Cercare un **MESSAGGIO** **SAML** nella tabella. Seleziona quella riga, quindi visualizza la scheda **Richiesta** e trova l'**SAMLResponse**elemento. Il valore associato è la risposta codificata Base64.

## Apple Safari
<a name="safari"></a>

**Per visualizzare una risposta Safari**

Questi passaggi sono stati testati utilizzando la versione 16.0 (17614.1.25.9.10, 17614) di Apple Safari. Se si utilizza una versione diversa, potrebbe essere necessario modificare i passaggi di conseguenza.

1. Abilitare Web Inspector in Safari. Aprire la finestra delle **preferenze** selezionare la scheda delle impostazioni **avanzate** e quindi selezionare l'opzione per **mostrare il menu Sviluppo nella barra dei menu**.

1. Ora è possibile aprire Web Inspector. Scegliere **Develop** (Sviluppo) nella barra dei menu, quindi selezionare **Show Web Inspector** (Mostra Web Inspector).

1. Selezionare la scheda **Network (Rete)**.

1. Nella parte superiore sinistra della finestra **Web Inspector**, fare clic sull'icona delle opzioni (il piccolo cerchio con tre linee orizzontali). Selezionare **Preserve Logs** (Conserva registri).

1. (Facoltativo) Se la colonna **Method** (Metodo) non è visibile nel pannello di registrazione **Web Inspector** **Network** (Rete), fare clic con il pulsante destro del mouse su qualsiasi etichetta di colonna e scegliere **Method** (Metodo) per aggiungere la colonna

1. Riprodurre il problema.

1. Cercare un **MESSAGGIO** **SAML** nella tabella. Selezionare la riga e quindi visualizzare la scheda Headers (Intestazioni).

1. Cerca l'**SAMLResponse**elemento che contiene la richiesta codificata. Scorrere per trovare l'elemento `Request Data` con nome `SAMLResponse`. Il valore associato è la risposta codificata Base64.

## Operazioni da effettuare con la risposta SAML codificata Base64
<a name="whatnext"></a>

Una volta trovato l'elemento di risposta SAML con codifica Base64 nel browser, copiarlo e utilizzare lo strumento di decodifica Base-64 preferito per estrarre la risposta con tag XML.

**Suggerimento per la sicurezza**  
Poiché i dati di risposta SAML visualizzati potrebbero contenere dati di sicurezza sensibili, si consiglia di non utilizzare un decodificatore *base64*. Utilizzare invece uno strumento installato sul computer locale che non invia i dati SAML sulla rete.

**Opzione integrata per i sistemi Windows (PowerShell):**

```
PS C:\> [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("base64encodedtext"))
```

**Opzione integrata per sistemi MacOS e Linux:**

```
$ echo "base64encodedtext" | base64 --decode
```

**Rivedere i valori nel file decodificato**  
Rivedi i valori nel file di risposta SAML decodificato. 
+ Verifica che il valore dell'attributo saml:NameID corrisponda al nome utente dell'utente autenticato.
+ Esamina il valore di https://aws.amazon.com/SAML/ Attributi/Ruolo. I provider ARN e SAML fanno distinzione tra maiuscole e minuscole e l'[ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) deve corrispondere alla risorsa del tuo account.
+ Controlla il valore di Attributes/. https://aws.amazon.com/SAML/ RoleSessionName Il valore deve corrispondere al valore nella [regola di rivendicazione](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_relying-party.html).
+ Se configuri il valore dell'attributo per un indirizzo e-mail o un nome di account, assicurati che i valori siano corretti. I valori devono corrispondere all'indirizzo e-mail o al nome dell'account dell'utente autenticato.

**Verificare la presenza di errori e confermare la configurazione**  
Controlla se i valori contengono errori e conferma che le seguenti configurazioni siano corrette.
+ Le regole relative ai reclami soddisfano gli elementi richiesti e sono tutte ARNs corrette. Per ulteriori informazioni, consulta [Configurare il provider di identità SAML 2.0 con una relazione di attendibilità della parte affidabile e aggiunta di attestazioni](id_roles_providers_create_saml_relying-party.md).
+ Hai caricato il file di metadati più recente dal tuo IdP AWS nel tuo provider SAML. Per ulteriori informazioni, consulta [Consentire ai principali federati SAML 2.0 di accedere a Console di gestione AWS](id_roles_providers_enable-console-saml.md).
+ La policy di attendibilità del ruolo IAM sia stata configurata correttamente. Per ulteriori informazioni, consulta [Metodi per assumere un ruolo](id_roles_manage-assume.md).

# Federazione delle AWS identità a servizi esterni
<a name="id_roles_providers_outbound"></a>

La federazione delle identità in uscita IAM consente ai AWS carichi di lavoro di accedere in modo sicuro ai servizi esterni senza archiviare credenziali a lungo termine. I tuoi AWS carichi di lavoro possono richiedere JSON Web Tokens (JWTs) di breve durata da AWS Security Token Service () chiamando l'API.AWS STS[GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) Questi token sono firmati crittograficamente, verificabili pubblicamente e contengono una serie completa di attestazioni che confermano l'identità del carico di lavoro ai servizi esterni. AWS Puoi utilizzare questi token con un'ampia gamma di provider cloud di terze parti, piattaforme SaaS e applicazioni ospitate autonomamente. I servizi esterni verificano l'autenticità del token utilizzando le chiavi AWS di verifica pubblicate su endpoint noti e utilizzano le informazioni contenute nei token per prendere decisioni di autenticazione e autorizzazione.

La federazione delle identità in uscita elimina la necessità di archiviare credenziali a lungo termine come chiavi API o password nel codice dell'applicazione o nelle variabili di ambiente, migliorando il livello di sicurezza. Puoi controllare l'accesso alla generazione di token e applicare le proprietà dei token come gli algoritmi di firma, i destinatari consentiti e la durata utilizzando le policy IAM. Tutte le richieste di token vengono registrate AWS , fornendo percorsi di controllo completi per il monitoraggio della sicurezza e la segnalazione della conformità. Puoi anche personalizzare i token con tag che appaiono come attestazioni personalizzate, consentendo ai servizi esterni di implementare un controllo degli accessi granulare e basato sugli attributi.

## Casi di utilizzo comune
<a name="outbound-federation-use-cases"></a>

Utilizzando la federazione delle identità in uscita, i carichi di lavoro possono: AWS 
+ Accedi a risorse e servizi in provider cloud esterni. Ad esempio, una funzione Lambda che elabora i dati può scrivere risultati sul servizio di archiviazione di un provider cloud esterno o interrogare il relativo database.
+ Integrazione con provider esterni software-as-a-service (SaaS) per analisi, elaborazione dati, monitoraggio ecc. Ad esempio, le funzioni Lambda possono inviare metriche a piattaforme di osservabilità.
+ Effettua l'autenticazione con le tue applicazioni ospitate su provider cloud esterni o data center locali AWS, abilitando architetture ibride e multi-cloud sicure. Ad esempio, i AWS carichi di lavoro possono interagire con le applicazioni containerizzate in esecuzione nel cluster Kubernetes locale.

## Come funziona
<a name="outbound-federation-how-it-works"></a>

![\[alt text not found\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/outbound-use-cases.png)


1. La funzione Lambda chiama l'[GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html)API per richiedere un token Web JSON (JWT) da AWS Security Token Service ().AWS STS

1. AWS STS convalida la richiesta e restituisce un JWT firmato alla funzione Lambda.

1. La funzione Lambda invia il JWT al servizio esterno.

1. Il servizio esterno estrae l'URL dell'emittente dal token, verifica che corrisponda a un emittente affidabile noto e recupera le chiavi di verifica e i metadati AWS dell'endpoint di rilevamento OIDC.

1. Il servizio esterno utilizza le chiavi di verifica per verificare la firma del token e convalida affermazioni quali ora di scadenza, oggetto e pubblico.

1. Dopo una convalida riuscita, il servizio esterno concede l'accesso alla funzione Lambda.

# Guida introduttiva alla federazione delle identità in uscita
<a name="id_roles_providers_outbound_getting_started"></a>

Questa guida mostra come abilitare la federazione delle identità in uscita per il tuo AWS account e ottenere il tuo primo JSON Web Token (JWT) (utilizzando l'API). [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) Attiverai la funzionalità, stabilirai una relazione di fiducia con un servizio esterno, configurerai le autorizzazioni IAM e richiederai un token utilizzando AWS CLI AWS o SDK for Python (Boto3).

## Prerequisiti
<a name="outbound-federation-prerequisites"></a>

Prima di iniziare, assicurati di disporre dei seguenti elementi:
+ Ultima versione della AWS CLI o Python 3.8 (o successiva) e Boto3 installata (per esempi SDK) AWS 
+ Un account di servizio esterno in cui è possibile configurare relazioni di fiducia (ad esempio un provider cloud esterno, un provider SaaS o un'applicazione di test)

**Nota**  
L'`GetWebIdentityToken`API non è disponibile sull'endpoint STS Global.
I JSON Web Tokens (JWTs) generati dall'`GetWebIdentityToken`API non possono essere utilizzati per la federazione di OpenID Connect (OIDC) in AWS (tramite l'API). [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)

## Abilita la federazione delle identità in uscita per il tuo account
<a name="enable-outbound-federation"></a>

È necessario abilitare la federazione delle identità in uscita prima di poter richiedere i token. È possibile abilitare la funzionalità utilizzando la console di AWS gestione o utilizzando l'API a livello di codice. [EnableOutboundWebIdentityFederation](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableOutboundWebIdentityFederation.html)

### Utilizzo della AWS CLI
<a name="enable-using-cli"></a>

```
aws iam enable-outbound-web-identity-federation
```

### Usare AWS SDK per Python
<a name="enable-using-sdk"></a>

```
import boto3

# Create IAM client
iam_client = boto3.client('iam')

# Enable outbound identity federation
response = iam_client.enable_outbound_web_identity_federation()
print(f"Feature enabled. Issuer URL: {response['IssuerUrl']}")
print(f"Status: {response['Status']}")
```

### Utilizzo della console AWS
<a name="enable-using-console"></a>

Accedi a IAM e seleziona **Impostazioni account** nella sezione **Gestione degli accessi** del menu di navigazione a sinistra

![\[alt text not found\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/outbound-screen-1.png)


Dopo aver abilitato la funzione, prendi nota dell'URL emittente specifico del tuo account. Utilizzerai questo URL per configurare le relazioni di fiducia nei servizi esterni. È inoltre possibile recuperare l'URL dell'emittente, se necessario, utilizzando l'API. [GetOutboundWebIdentityFederationInfo](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOutboundWebIdentityFederationInfo.html)

![\[alt text not found\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/outbound-screen-2.png)


## Stabilisci una relazione di fiducia in un servizio esterno
<a name="establish-trust-relationship"></a>

Configura il servizio esterno in modo che consideri attendibili e accetti i token emessi dal tuo AWS account. I passaggi specifici variano in base al servizio, ma generalmente comportano:
+ Registrazione dell'URL AWS dell'emittente dell'account come provider di identità affidabile
+ Configurazione delle affermazioni da convalidare (pubblico, modelli tematici)
+ Il token di mappatura rivendica le autorizzazioni nel servizio esterno

Per istruzioni di configurazione dettagliate, consulta la documentazione del servizio esterno.

## Configurazione delle autorizzazioni IAM
<a name="configure-iam-permissions"></a>

Crea una policy IAM che conceda l'autorizzazione a chiamare l'[GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html)API e collega la policy a un ruolo IAM che deve generare token.

Questa policy di esempio concede l'accesso alla generazione di token con restrizioni specifiche. Consente di richiedere token solo per "https://api.example.com" come destinatari e impone una durata massima del token di 5 minuti (300 secondi). [chiavi contestuali IAM e AWS STS condition](reference_policies_iam-condition-keys.md)Per un elenco delle chiavi di condizione che è possibile utilizzare per applicare le proprietà dei token, fare riferimento a.

### Policy IAM di esempio
<a name="example-iam-policy"></a>

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:GetWebIdentityToken",
            "Resource": "*",
            "Condition": {
                "ForAllValues:StringEquals": {
                    "sts:IdentityTokenAudience": "https://api.example.com"
                },
                "NumericLessThanEquals": {
                    "sts:DurationSeconds": 300
                }
            }
        }
    ]
}
```

## Richiedi il tuo primo JSON Web Token (JWT)
<a name="request-first-jwt"></a>

Puoi richiedere un token Web JSON utilizzando l'API. [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) È possibile specificare i seguenti parametri quando si chiama l'API:
+ **Pubblico (obbligatorio):** il destinatario previsto del token. Questo valore compila l'attestazione «aud» nel JWT. I servizi esterni convalidano questa affermazione per garantire che il token fosse destinato a loro.
+ **SigningAlgorithm (obbligatorio):** L'algoritmo crittografico utilizzato per firmare il token. I valori validi sono ES384 e. RS256 ES384 Utilizzateli per garantire sicurezza e prestazioni ottimali o RS256 per una maggiore compatibilità con i sistemi che non supportano l'ECDSA.
+ **DurationSeconds (opzionale):** la durata del token in secondi. I valori validi vanno da 60 a 3600. Il valore predefinito è 300 (5 minuti). Consigliamo una durata più breve dei token per una maggiore sicurezza.
+ **Tag (opzionale):** un elenco di coppie chiave-valore da includere come attestazioni personalizzate nel token. I servizi esterni possono utilizzare queste attestazioni per un'autorizzazione dettagliata.

L'API restituisce i seguenti campi:
+ **IdentityToken:** Il JWT firmato come stringa con codifica base64url. Includi questo token nelle richieste a servizi esterni.
+ **Scadenza:** il timestamp UTC di scadenza del token.

### Utilizzo della AWS CLI
<a name="using-aws-cli"></a>

```
aws sts get-web-identity-token \
    --audience "https://api.example.com" \
    --signing-algorithm ES384 \
    --duration-seconds 300 \
    --tags Key=team,Value=data-engineering \
           Key=environment,Value=production \
           Key=cost-center,Value=analytics
```

### Usare AWS SDK per Python
<a name="using-aws-sdk-python"></a>

```
import boto3

sts_client = boto3.client('sts')

response = sts_client.get_web_identity_token(
    Audience=['https://api.example.com'],
    DurationSeconds=300,
    SigningAlgorithm='RS256',
    Tags=[
        {'Key': 'team', 'Value': 'data-engineering'},
        {'Key': 'environment', 'Value': 'production'},
        {'Key': 'cost-center', 'Value': 'analytics'}
    ]
)

token = response['WebIdentityToken']
```

Puoi anche decodificare il JWT per ispezionarne il contenuto utilizzando librerie JWT standard come PyJWT, Python-JOSE per Python, Nimbus JOSE\$1JWT per Java o debugger come jwt.io. Per ulteriori informazioni sulle attestazioni incluse nel token, consulta. [Comprendere le dichiarazioni relative ai token](id_roles_providers_outbound_token_claims.md)

## Utilizza il token con un servizio esterno
<a name="use-token-with-external-service"></a>

Dopo aver ricevuto il token, includilo nelle richieste al servizio esterno. Il metodo varia in base al servizio, ma la maggior parte dei servizi accetta i token nell'intestazione di autorizzazione. Il servizio esterno deve implementare una logica di convalida dei token che recuperi le chiavi JWKS dall'endpoint noto dell'emittente, verifichi la firma del token e convalidi le richieste essenziali prima di concedere l'accesso ai carichi di lavoro. AWS 

## Recupera chiavi di verifica e metadati dagli endpoint OpenID Connect (OIDC)
<a name="fetch-verification-keys"></a>

L'URL emittente univoco del tuo AWS account ospita gli endpoint di rilevamento OpenID Connect (OIDC) che contengono le chiavi di verifica e i metadati necessari per la verifica dei token.

L'URL dell'endpoint di rilevamento OIDC contiene i metadati utilizzati da alcuni provider per verificare i token. È disponibile all'indirizzo:

```
{issuer_url}/.well-known/openid-configuration
```

L'endpoint JWKS (JSON Web Key Set) contiene le chiavi utilizzate per verificare le firme dei token. È disponibile all'indirizzo:

```
{issuer_url}/.well-known/jwks.json
```

### Recupera JWKS usando curl
<a name="fetch-jwks-curl"></a>

```
curl https://{issuer_url}/.well-known/jwks.json
```

Risposta:

```
{
  "keys": [
    {
      "kty": "EC",
      "use": "sig",
      "kid": "key-id-1",
      "alg": "ES384",
      "crv": "P-384",
      "x": "base64-encoded-x-coordinate",
      "y": "base64-encoded-y-coordinate"
    },
    {
      "kty": "RSA",
      "use": "sig",
      "kid": "key-id-2",
      "n": "base64-encoded-modulus",
      "e": "AQAB"
    }
  ]
}
```

### Usare AWS SDK per Python
<a name="fetch-using-sdk"></a>

```
import requests

# Fetch Openid Configuration
open_id_config_response = requests.get("https://{issuer_url}/.well-known/openid-configuration")
open_id_config = open_id_config_response.json()

# Fetch JWKS
jwks_response = requests.get("https://{issuer_url}/.well-known/jwks.json")
jwks = jwks_response.json()
```

Ti consigliamo di memorizzare queste chiavi nella cache per evitare di recuperarle per ogni verifica del token.

### Convalide essenziali dei reclami
<a name="essential-claim-validations"></a>
+ **Oggetto (secondario):** verifica che la rivendicazione relativa all'oggetto contenga il pattern ARN principale IAM previsto.
+ **Scadenza (exp):** assicurati che il token non sia scaduto. Le librerie JWT in genere lo gestiscono automaticamente.
+ **Pubblico (aud):** verifica che il pubblico corrisponda al valore previsto. Ciò impedisce che i token destinati ad altri servizi vengano utilizzati con i tuoi.
+ **Emittente/i:** verifica che l'emittente corrisponda agli AWS account di cui ti fidi. Mantieni un elenco di emittenti affidabili. URLs

Ove possibile, è necessario convalidare ulteriori attestazioni AWS specifiche per implementare un controllo granulare degli accessi nel servizio esterno. Ad esempio, convalida l'attestazione org\$1id per limitare l'accesso ai principali IAM nella tua AWS organizzazione, seleziona principal\$1tags per imporre il controllo degli accessi basato sugli attributi (ad esempio consentire solo ambienti di produzione o team specifici) o verifica le dichiarazioni relative al contesto della sessione come lambda\$1source\$1function\$1arn o ec2\$1instance\$1source\$1vpc per limitare l'accesso in base alla risorsa di calcolo. Per un elenco completo [delle attestazioni incluse nel token](id_roles_providers_outbound_token_claims.md), consulta Comprendere le attestazioni relative ai token.

# Comprendere le dichiarazioni relative ai token
<a name="id_roles_providers_outbound_token_claims"></a>

Quando chiami l'[GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html)API, AWS Security Token Service restituisce un token Web JSON (JWT) firmato che contiene una serie di attestazioni che rappresentano l'identità del principale IAM. [Questi token sono conformi alla RFC 7519.](https://datatracker.ietf.org/doc/html/rfc7519) La comprensione della struttura e del contenuto di questi token consente di implementare flussi di autenticazione sicuri, configurare le convalide appropriate delle dichiarazioni nei servizi esterni e utilizzare efficacemente le attestazioni personalizzate per un controllo granulare degli accessi.

Il JWT include dichiarazioni OpenID Connect (OIDC) standard come subject («sub»), audience («aud»), issuer («iss») per facilitare l'interoperabilità tra diversi servizi esterni. AWS STS compila il token con affermazioni AWS specifiche sull'identità (come l'ID AWS account e i tag Principal) e affermazioni relative al contesto della sessione (come l'istanza), se applicabile. EC2 ARNs Puoi anche aggiungere attestazioni personalizzate al token passandole come tag di richiesta all'API. [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) Le attestazioni AWS specifiche dell'identità, le attestazioni relative al contesto della sessione e le attestazioni personalizzate sono annidate nello spazio dei nomi "https://sts.amazonaws.com/» del token.

Fai riferimento al token di esempio riportato di seguito per un elenco delle attestazioni incluse nel token. Tieni presente che tutte queste affermazioni potrebbero non essere presenti contemporaneamente in un token. 

```
{
  "iss": "https://abc123-def456-ghi789-jkl012.tokens.sts.global.api.aws",
  "aud": "https://api.example.com",
  "sub": "arn:aws:iam::123456789012:role/DataProcessingRole",
  "iat": 1700000000,
  "exp": 1700000900,
  "jti": "xyz123-def456-ghi789-jkl012",
  "https://sts.amazonaws.com/": {
    "aws_account": "123456789012",
    "source_region": "us-east-1",
    "org_id": "o-abc1234567",
    "ou_path": "o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/",
    "principal_tags": {
      "environment": "production",
      "team": "data-engineering",
      "cost-center": "engineering"
    },
    "lambda_source_function_arn": "arn:aws:lambda:us-east-1:123456789012:function:process-data",
    "request_tags": {
        "job-id": "job-2024-001",
        "priority": "high",
        "data-classification": "sensitive"
    }
  }
}
```

## Reclami standard
<a name="standard-claims"></a>

Le affermazioni OIDC standard presenti nei token facilitano l'interoperabilità con un'ampia gamma di servizi esterni. Queste affermazioni possono essere convalidate utilizzando la maggior parte delle librerie JWT.


| Richiedi | Nome | Description | Valore di esempio | 
| --- | --- | --- | --- | 
| è | Emittente | L'URL dell'emittente specifico del tuo account. I servizi esterni convalidano questa dichiarazione per garantire che corrisponda all'emittente di fiducia. | https://abc123-def456-ghi789-jkl012.tokens.sts.global.api.aws | 
| aud | Destinatari | Il destinatario previsto per il token specificato nella [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html)richiesta. | https://api.example.com | 
| sub | Subject | L'ARN del principale IAM che ha richiesto il token. | arn:aws:iam: :123456789012:role/ DataProcessingRole | 
| iat | Rilasciato a | NumericDate valore che identifica il momento in cui è stato emesso il JWT. | 1700000000 | 
| exp | Scadenza | NumericDate valore che identifica l'ora di scadenza a partire dalla quale il JWT NON DEVE essere accettato per l'elaborazione. | 1700000900 | 
| jit | JET È | Identificatore univoco per questa istanza di token. | xyz123-def456-ghi789-jkl012 | 

## Reclami personalizzati
<a name="custom-claims"></a>

Oltre alle attestazioni OIDC standard, AWS STS aggiunge affermazioni relative all'identità e al contesto della sessione, se applicabile. Puoi anche aggiungere le tue rivendicazioni al token passandole come tag di richiesta. Le attestazioni personalizzate sono annidate nello spazio dei nomi https://sts.amazonaws.com /.

### AWS affermazioni di identità
<a name="aws-identity-claims"></a>

Queste affermazioni forniscono informazioni dettagliate sull' AWS account, sulla struttura organizzativa e sul responsabile IAM.


| Richiedi | Description | Maps to Condition Key | Valore di esempio | 
| --- | --- | --- | --- | 
| aws\$1account | L'ID del tuo account AWS  | [leggi: PrincipalAccount](reference_policies_condition-keys.md#condition-keys-principalaccount) | 123456789012 | 
| source\$1region | La AWS regione in cui è stato richiesto il token | [leggi: RequestedRegion](reference_policies_condition-keys.md#condition-keys-requestedregion) | us-east-1 | 
| org\$1id | Il tuo ID AWS Organizations (se il tuo account fa parte di un'organizzazione) | [Aws: PrincipalOrg ID](reference_policies_condition-keys.md#condition-keys-principalorgid) | o-abc1234567 | 
| il nostro percorso | Il percorso dell'unità organizzativa (se applicabile) | [leggi: PrincipalOrgPaths](reference_policies_condition-keys.md#condition-keys-principalorgpaths) | o-a1b2c3d4e5/r-ab12/ou-ab12-th/ou-ab12-22222222/ | 
| tag\$1principali | Tag allegati alla sessione di ruolo principale o presunta di IAM. Quando viene richiesto un token in cui il principale IAM richiedente ha sia tag principali che tag di sessione, i tag di sessione saranno presenti nel JWT. | [leggi:/PrincipalTag](reference_policies_condition-keys.md#condition-keys-principaltag)<tag-key> | \$1"environment»: «produzione», «team»: «ingegneria dei dati», «cost-center» :"ingegneria "\$1 | 

### Dichiarazioni relative al contesto della sessione
<a name="session-context-claims"></a>

Queste affermazioni forniscono informazioni sull'ambiente di calcolo e sulla sessione da cui ha avuto origine la richiesta del token. AWS AWS STS include automaticamente queste attestazioni quando applicabile in base al contesto di sessione del principale richiedente.


| Richiedi | Description | Maps to Condition Key | Valore di esempio | 
| --- | --- | --- | --- | 
| original\$1session\$1exp | Quando scadranno le credenziali della sessione di ruolo originale (per i ruoli presunti) | N/D | 2024-01-15H 10:00:00 Z | 
| provider federato | Il nome del provider di identità per le sessioni federate | [leggi: FederatedProvider](reference_policies_condition-keys.md#condition-keys-federatedprovider) | arn:aws:iam: :111122223333:oidc-provider/your\$1oidc\$1provider | 
| identity\$1store\$1user\$1id | ID utente IAM Identity Center | [archivio di identità: UserId](reference_policies_condition-keys.md#condition-keys-identity-store-user-id) | utente abc123def456 | 
| identity\$1store\$1arn | ARN dell'archivio di identità di Identity Center | [archivio di identità: IdentityStoreArn](https://docs.aws.amazon.com/singlesignon/latest/userguide/condition-context-keys-sts-idc.html#condition-keys-identity-store-arn) | arn:aws:identitystore: :123456789012:identitystore/d-abc1234567 | 
| ec2\$1source\$1instance\$1arn | ARN dell'istanza richiedente EC2  | [ec2: SourceInstanceArn](reference_policies_condition-keys.md#condition-keys-ec2-source-instance-arn) | arn:aws:ec2:us-east- 1:123456789012:instance/i-abc123def456 | 
| ec2\$1instance\$1source\$1vpc | ID VPC in cui sono state fornite le credenziali del EC2 ruolo | [AWS: EC2 InstanceSourceVpc](reference_policies_condition-keys.md#condition-keys-ec2instancesourcevpc) | vpc-abc123def456 | 
| ec2\$1instance\$1source\$1private\$1ipv4 | Indirizzo privato dell'istanza IPv4 EC2  | [AWS: EC2 InstanceSourcePrivate IPv4](reference_policies_condition-keys.md#condition-keys-ec2instancesourceprivateip4) | 10.0.1.25 | 
| ec2\$1role\$1delivery | Versione del servizio di metadati dell'istanza | [ec2: RoleDelivery](reference_policies_condition-keys.md#condition-keys-ec2-role-delivery) | 2 | 
| identità\$1fonte | Identità di origine impostata dal principale | [leggi: SourceIdentity](reference_policies_condition-keys.md#condition-keys-sourceidentity) | utente-amministratore | 
| lambda\$1source\$1function\$1arn | ARN della funzione Lambda chiamante | [lambda: SourceFunctionArn](reference_policies_condition-keys.md#condition-keys-lambda-source-function-arn) | arn:aws:lambda:us-east- 1:123456789012: funzione:mia-funzione | 
| glue\$1credential\$1issuing\$1service | AWS Identificatore del servizio Glue per i lavori Glue | [colla: CredentialIssuingService](reference_policies_condition-keys.md#condition-keys-glue-credential-issuing) | colla.amazonaws.com | 

### Richiedi tag
<a name="request-tags"></a>

Puoi aggiungere attestazioni personalizzate ai token specificando i tag nella richiesta [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html)API. Queste attestazioni vengono visualizzate nel campo request\$1tags del token e consentono di trasmettere informazioni specifiche che i servizi esterni possono utilizzare per decisioni di autorizzazione dettagliate. Puoi specificare fino a 50 tag per richiesta.

Richiesta di esempio:

```
response = sts_client.get_web_identity_token(
    Audience=['https://api.example.com'],
    SigningAlgorithm='ES384'
    Tags=[
        {'Key': 'team', 'Value': 'data-engineering'},
        {'Key': 'cost-center', 'Value': 'analytics'},
        {'Key': 'environment', 'Value': 'production'}
    ]
)
```

Reclami risultanti in token:

```
{
  "request_tags": {
    "team": "data-engineering",
    "cost-center": "analytics",
    "environment": "production"
  }
}
```

# Controllo dell'accesso con le policy IAM
<a name="id_roles_providers_outbound_policies"></a>

IAM fornisce diversi tipi di policy per controllare l'accesso alla funzionalità di federazione delle identità in uscita. Puoi utilizzare [policy basate sull'identità](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html) per controllare quali responsabili IAM possono richiedere token e applicare proprietà specifiche dei token come audience, durate e algoritmi di firma. [Le politiche di controllo dei servizi](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) (SCPs) ti consentono di applicare restrizioni a livello di organizzazione sulla generazione di token su tutti gli account delle tue Organizations. AWS [Le politiche di controllo delle risorse](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) (RCPs) controllano l'accesso a livello di risorsa. Puoi anche utilizzare [le policy degli endpoint VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html) per limitare i principali che possono accedere all'API AWS STS `GetWebIdentityToken` tramite i tuoi endpoint VPC, aggiungendo controlli a livello di rete al tuo livello di sicurezza. Questa sezione spiega come implementare controlli di accesso granulari utilizzando questi tipi di policy e chiavi di condizione.

Per richiedere i token di identità, un principale IAM deve disporre dell'autorizzazione. `sts:GetWebIdentityToken` Concedi questa autorizzazione tramite le politiche di identità allegate agli utenti o ai ruoli IAM. Per consentire il passaggio dei tag (coppie di chiavi e valori) alla GetWebIdentityToken chiamata, il principale IAM deve disporre dell'`sts:TagGetWebIdentityToken`autorizzazione.
+ Usa la chiave [sts: IdentityTokenAudience](reference_policies_iam-condition-keys.md#ck_identitytokenaudience) condition per limitare i servizi esterni che possono ricevere token.
+ Usa la chiave [sts: DurationSeconds](reference_policies_iam-condition-keys.md#ck_durationseconds) condition per imporre la durata massima dei token.
+ Usa la chiave [sts: SigningAlgorithm](reference_policies_iam-condition-keys.md#ck_signingalgorithm) condition per richiedere algoritmi crittografici specifici.
+ Usa la chiave [aws: RequestTag](reference_policies_condition-keys.md#condition-keys-requesttag) condition confronta la coppia chiave-valore del tag che è stata passata nella richiesta con la coppia di tag specificata nella policy.
+ Usa la chiave [aws: TagKeys](reference_policies_condition-keys.md#condition-keys-tagkeys) condition per confrontare le chiavi dei tag in una richiesta con le chiavi specificate nella policy.

Fai riferimento a [IAM e](reference_policies_iam-condition-keys.md) alle chiavi di AWS STS condizione per saperne di più sulle chiavi di condizione disponibili nelle politiche IAM.

Questo esempio di policy di identità combina più chiavi di condizione:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowTokenGenerationWithRestrictions",
            "Effect": "Allow",
            "Action": "sts:GetWebIdentityToken",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "sts:IdentityTokenAudience": [
                        "https://api1.example.com",
                        "https://api2.example.com"
                    ]
                },
                "NumericLessThanEquals": {
                    "sts:DurationSeconds": 300
                },
                "StringEquals": {
                    "sts:SigningAlgorithm": "ES384"
                }
            }
        }
    ]
}
```

## Best practice
<a name="outbound-best-practices"></a>

Segui questi consigli per federare in modo sicuro le tue AWS identità con servizi esterni.
+ **Usa una durata dei token breve: richiedi token con la durata** più breve che soddisfi le tue esigenze operative.
+ **Implementa l'accesso con privilegi minimi e limita le proprietà dei token con le policy IAM:** concedi l'`sts:GetWebIdentityToken`autorizzazione solo ai principali IAM che la richiedono. Utilizza le chiavi condizionali per specificare gli algoritmi di firma, i destinatari di token consentiti e la durata massima dei token in base alle tue esigenze.
+ **Convalida le attestazioni nei servizi esterni:** per motivi di sicurezza, convalida sempre le attestazioni pertinenti come soggetto («sub»), pubblico («aud») ecc. per assicurarti che corrispondano ai valori previsti. Convalida le attestazioni personalizzate quando possibile per consentire decisioni di autorizzazione dettagliate nei servizi esterni.

# Credenziali di sicurezza temporanee in IAM
<a name="id_credentials_temp"></a>

Puoi utilizzare il AWS Security Token Service (AWS STS) per creare e fornire a utenti affidabili credenziali di sicurezza temporanee in grado di controllare l'accesso alle tue AWS risorse. Le credenziali di sicurezza temporanee funzionano quasi esattamente come le credenziali delle chiavi di accesso a lungo termine, con le seguenti differenze:
+ Le credenziali di sicurezza provvisorie sono *a breve termine*, come implica il nome. Possono essere configurate per durare ovunque per pochi minuti o diverse ore. Una volta scadute, le credenziali AWS non le riconosce più né consente alcun tipo di accesso alle richieste API effettuate con esse.
+ Le credenziali di sicurezza temporanee non sono archiviate con l'utente, ma vengono generate dinamicamente e fornite all'utente quando richiesto. Quando (o anche prima) le credenziali di sicurezza temporanee scadono, l'utente può richiedere nuove credenziali, purché l'utente che le richiede abbia ancora le autorizzazioni per farlo.

Di conseguenza, le credenziali temporanee presentano i seguenti vantaggi rispetto alle credenziali a lungo termine:
+ Non è necessario distribuire o incorporare credenziali di AWS sicurezza a lungo termine in un'applicazione.
+ È possibile fornire l'accesso alle AWS risorse agli utenti senza dover definire un' AWS identità per loro. Le credenziali provvisorie sono la base dei [ruoli](id_roles.md) e della [federazione delle identità](id_roles_providers.md).
+ Le credenziali di sicurezza temporanee hanno una durata limitata, perciò non è necessario aggiornarle o revocarle in modo esplicito quando non sono più necessarie. Dopo che le credenziali di sicurezza temporanee scadono, non possono essere riutilizzate. È possibile specificare quando scadono le credenziali, fino a un limite massimo. 

## AWS STS e AWS regioni
<a name="sts-regionalization"></a>

Le credenziali di sicurezza temporanee sono generate da AWS STS. Per impostazione predefinita, AWS STS è un servizio globale con un unico endpoint su`https://sts.amazonaws.com`. Tuttavia, puoi anche scegliere di effettuare chiamate AWS STS API verso endpoint in qualsiasi altra regione supportata. Ciò può ridurre la latenza (server lag) effettuando le richieste a server in una regione geograficamente più vicina a te. Indipendentemente dalla regione dalla quale provengono, le credenziali funzionano a livello globale. Per ulteriori informazioni, consulta [Gestisci AWS STS in un Regione AWS](id_credentials_temp_enable-regions.md).

## Scenari comuni per le credenziali temporanee
<a name="sts-introduction"></a>

Le credenziali temporanee sono utili in scenari che interessano la federazione delle identità, la delega, l'accesso tra account e i ruoli IAM.

### Federazione delle identità
<a name="id-federation"></a>

Puoi gestire le tue identità utente in un sistema esterno esterno AWS e concedere agli utenti che accedono da tali sistemi l'accesso per eseguire AWS attività e accedere alle tue AWS risorse. IAM supporta due tipi di federazione delle identità. In entrambi i casi, le identità vengono archiviate all'esterno di. AWS La differenza è dove risiede il sistema esterno: nel data center o una parte terza sul Web. Per confrontare le funzionalità delle credenziali di sicurezza temporanee per la federazione delle identità, consulta [Confronta le AWS STS credenziali](id_credentials_sts-comparison.md).

Per ulteriori informazioni sui provider di identità esterni, consultare [Provider di identità e federazione in AWS](id_roles_providers.md).
+ **Federazione OpenID Connect (OIDC)**: puoi consentire agli utenti di effettuare l'accesso tramite un provider di identità di terze parti noto, come Login with Amazon, Facebook, Google o qualsiasi provider compatibile con OpenID Connect (OIDC) 2.0 per l'applicazione mobile o Web, non è necessario creare un codice di accesso personalizzato o gestire le proprie identità utente. L'utilizzo della federazione OIDC aiuta a mantenere la Account AWS sicurezza, in quanto non è necessario distribuire credenziali di sicurezza a lungo termine, come le chiavi di accesso utente IAM, con l'applicazione. Per ulteriori informazioni, consulta [Federazione OIDC](id_roles_providers_oidc.md).

  AWS STS La federazione OIDC supporta Login with Amazon, Facebook, Google e qualsiasi provider di identità compatibile con OpenID Connect (OIDC).
**Nota**  
Per le applicazioni mobili, consigliamo di utilizzare Amazon Cognito. Puoi utilizzare questo servizio per lo sviluppo mobile AWS SDKs per creare identità uniche per gli utenti e autenticarle per un accesso sicuro alle tue risorse. AWS Amazon Cognito supporta gli stessi provider di identità e supporta anche l'accesso non autenticato (guest) e consente di migrare i dati degli utenti quando un utente accede. AWS STS Amazon Cognito fornisce inoltre operazioni API per la sincronizzazione dei dati utente in modo che vengano conservati quando gli utenti passano da un dispositivo all'altro. Per ulteriori informazioni, consulta [Autenticazione con Amplify](https://docs.amplify.aws/lib/auth/getting-started/q/platform/js/#authentication-with-amplify) nella *documentazione di Amplify*.
+ **Federazione SAML**: puoi autenticare gli utenti nella rete della tua organizzazione e quindi fornire loro l'accesso AWS senza creare nuove AWS identità per loro e richiedere loro di accedere con credenziali di accesso diverse. Questo è noto come approccio *Single Sign-On all'accesso temporaneo*. AWS STS supporta standard aperti come Security Assertion Markup Language (SAML) 2.0, con cui è possibile utilizzare Microsoft AD FS per sfruttare Microsoft Active Directory. È inoltre possibile utilizzare SAML 2.0 per gestire la soluzione per la federazione delle identità dell'utente. Per ulteriori informazioni, consulta [Federazione SAML 2.0](id_roles_providers_saml.md).
  + **Broker federativo personalizzato**: puoi utilizzare il sistema di autenticazione della tua organizzazione per concedere l'accesso alle risorse. AWS Per uno scenario di esempio, consultare [Abilita l'accesso personalizzato del broker di identità alla AWS console](id_roles_providers_enable-console-custom-url.md).
  + **Federazione tramite SAML 2.0**: puoi utilizzare SAML e il sistema di autenticazione dell'organizzazione per concedere l'accesso alle risorse AWS . Per ulteriori informazioni e uno scenario di esempio, consultare [Federazione SAML 2.0](id_roles_providers_saml.md).

### Ruoli per l'accesso tra account
<a name="role_cross-account"></a>

Molte organizzazioni mantengono più di un Account AWS. Utilizzando ruoli e l'accesso tra account, è possibile definire le identità degli utenti in un account e utilizzare tali identità per accedere alle risorse AWS in altri account che appartengono all'organizzazione. Questo approccio è noto come *delega* all'accesso temporaneo. Per ulteriori informazioni sulla creazione di ruoli tra account, consulta la sezione [Creazione di un ruolo per fornire le autorizzazioni a un utente IAM](id_roles_create_for-user.md). Per capire se i principali negli account esterni alla zona di attendibilità (organizzazione o account attendibile) dispongono dell'accesso per assumere i ruoli, consulta [Cos'è IAM Access Analyzer?](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html).

### Ruoli per Amazon EC2
<a name="role_ec2"></a>

Se esegui applicazioni sulle istanze Amazon EC2 e tali applicazioni devono accedere alle risorse AWS , puoi fornire le credenziali di sicurezza temporanee alle istanze al momento dell'avvio. Queste credenziali di sicurezza temporanee sono disponibili a tutte le applicazioni che vengono eseguite sull'istanza, perciò non è necessario archiviare nessuna delle credenziali a lungo termine sull'istanza. Per ulteriori informazioni, consulta [Utilizzare un ruolo IAM per concedere autorizzazioni alle applicazioni in esecuzione su istanze Amazon EC2](id_roles_use_switch-role-ec2.md).

Per ulteriori informazioni sulle credenziali del ruolo IAM di Amazon EC2, consulta [Ruoli IAM per Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) nella *Guida per l'utente di Elastic Compute Cloud*.

### Altri AWS servizi
<a name="other-services"></a>

È possibile utilizzare credenziali di sicurezza temporanee per accedere alla maggior parte dei AWS servizi. Per un elenco dei servizi che accettano le credenziali di sicurezza temporanee, consultare [AWS servizi che funzionano con IAM](reference_aws-services-that-work-with-iam.md).

## Applicazioni di esempio che usano credenziali temporanee
<a name="id_credentials_temp_sample-apps"></a>

Puoi usare AWS Security Token Service (AWS STS) per creare e fornire a utenti affidabili credenziali di sicurezza temporanee in grado di controllare l'accesso alle tue AWS risorse. Per ulteriori informazioni su AWS STS, vedere[Credenziali di sicurezza temporanee in IAM](#id_credentials_temp). Per scoprire come gestire le credenziali AWS STS di sicurezza temporanee, è possibile scaricare le seguenti applicazioni di esempio che implementano scenari di esempio completi:
+ [Abilitazione della federazione all' AWS utilizzo di Windows Active Directory, ADFS e SAML 2.0](https://aws.amazon.com/blogs/security/enabling-federation-to-aws-using-windows-active-directory-adfs-and-saml-2-0/). Dimostra come delegare l'accesso tramite la federazione aziendale all'utilizzo di Windows Active Directory (AD), Active Directory Federation Services (ADFS) 2.0 e SAML (Security Assertion Markup Language) 2.0. AWS 
+ [Abilita l'accesso personalizzato del broker di identità alla AWS console](id_roles_providers_enable-console-custom-url.md). Dimostra come creare un proxy di federazione personalizzato che abilita l'autenticazione unica (SSO) in modo che gli utenti esistenti di Active Directory possano accedere alla Console di gestione AWS.
+ [Come usare Shibboleth per il Single Sign-On su. Console di gestione AWS](https://aws.amazon.com/blogs/security/how-to-use-shibboleth-for-single-sign-on-to-the-aws-management-console/) . Mostra come utilizzare [Shibboleth](http://shibboleth.net/) e [SAML](id_roles_providers_saml.md) per fornire agli utenti l'accesso Single Sign-On (SSO) alla Console di gestione AWS.

### Esempi per la federazione OIDC
<a name="sts-sample-apps-wif"></a>

Le seguenti applicazioni di esempio illustrano come utilizzarle OIDCfederation con provider come Login with Amazon, Amazon Cognito, Facebook o Google. Puoi scambiare l'autenticazione di questi provider con credenziali di AWS sicurezza temporanee per accedere ai servizi. AWS 
+ [Tutorial Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/tutorials.html): ti consigliamo di utilizzare Amazon Cognito con lo sviluppo per dispositivi mobili. AWS SDKs Amazon Cognito offre il modo più semplice per gestire l'identità per le applicazioni per dispositivi mobili e offre funzionalità aggiuntive come la sincronizzazione e l'identità tra più dispositivi. Per ulteriori informazioni su Amazon Cognito, consulta [Autenticazione con Amplify](https://docs.amplify.aws/lib/auth/getting-started/q/platform/js/#authentication-with-amplify) nella *documentazione di Amplify*.

## Risorse aggiuntive per le credenziali di sicurezza temporanee
<a name="id_credentials_temp_related-topics"></a>

I seguenti scenari e applicazioni possono essere utili per l'utilizzo di credenziali di sicurezza temporanee: 
+ [Come effettuare l'integrazione AWS STS SourceIdentity con il tuo provider di identità](https://aws.amazon.com/blogs/security/how-to-integrate-aws-sts-sourceidentity-with-your-identity-provider/). Questo post mostra come configurare l' AWS STS `SourceIdentity`attributo quando usi Okta, Ping o OneLogin come IdP.
+  [Federazione OIDC](id_roles_providers_oidc.md). In questa sezione viene descritto come configurare i ruoli IAM quando si utilizza la federazione OIDC e l'API `AssumeRoleWithWebIdentity`. 
+ [Accesso sicuro alle API con MFA](id_credentials_mfa_configure-api-require.md). In questo argomento viene descritto come utilizzare i ruoli per richiedere l'autenticazione a più fattori (MFA) per proteggere le operazioni API sensibili nel tuo account.

Per ulteriori informazioni sulle politiche e le autorizzazioni, AWS consulta i seguenti argomenti:
+ [Gestione degli accessi AWS alle risorse](access.md)
+ [Logica di valutazione delle policy](reference_policies_evaluation-logic.md).
+ [Gestione delle autorizzazioni di accesso alle risorse di Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html) in *Guida per l'utente di Amazon Simple Storage Service*.
+  Per capire se i principali negli account esterni alla zona di attendibilità (organizzazione o account attendibile) dispongono dell'accesso per assumere i ruoli, consulta [Cos'è IAM Access Analyzer?](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html).

# Confronta le AWS STS credenziali
<a name="id_credentials_sts-comparison"></a>

La tabella seguente confronta le funzionalità delle operazioni API AWS STS che restituiscono credenziali di sicurezza temporanee. Per informazioni sui diversi metodi che si possono utilizzare per richiedere le credenziali di sicurezza temporanee assumendo un ruolo, consultare [Metodi per assumere un ruolo](id_roles_manage-assume.md). Per ulteriori informazioni sulle diverse operazioni AWS STS API che consentono di passare i tag di sessione, consulta. [Passa i tag di sessione AWS STS](id_session-tags.md)

**Nota**  
Puoi inviare chiamate AWS STS API a un endpoint globale o a uno degli endpoint regionali. Se si seleziona un endpoint vicino, è possibile ridurre la latenza e migliorare le prestazioni delle chiamate API. Se non è più possibile comunicare con l'endpoint originale è anche possibile scegliere di indirizzare le chiamate verso un endpoint regionale alternativo. Se utilizzi uno dei vari AWS SDKs, utilizza il metodo SDK per specificare una regione prima di effettuare la chiamata API. Se costruiscono manualmente richieste API HTTP, è necessario indirizzare la richiesta all'endpoint corretto. Per ulteriori informazioni, consulta la [sezione AWS STS relativa alle *regioni e agli endpoint*](https://docs.aws.amazon.com/general/latest/gr/rande.html#sts_region) e la sezione [Gestisci AWS STS in un Regione AWS](id_credentials_temp_enable-regions.md).


|  **AWS STS API**  |  **Chi può chiamare**  |  **Ciclo di vita delle credenziali (minimo \$1 massimo \$1 predefinito)**  |  **Supporto MFA**¹  |  **Supporto di policy di sessione**²  |  **Restrizioni per le credenziali provvisorie risultanti**  | 
| --- | --- | --- | --- | --- | --- | 
|  [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)  | Utente IAM o ruolo IAM con credenziali di sicurezza temporanee esistenti  | 15 min \$1 Impostazione durata massima della sessione³ \$1 1 ora  | Sì  | Sì |  Non è possibile chiamare `GetFederationToken` o `GetSessionToken`.  | 
|  [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)  | Qualsiasi intermediario utente deve passare una risposta di autenticazione SAML che indica l'autenticazione da un provider di identità noto | 15 min \$1 Impostazione durata massima della sessione³ \$1 1 ora  | No | Sì |  Non è possibile chiamare `GetFederationToken` o `GetSessionToken`.  | 
|  [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)  | Qualsiasi utente; il chiamante deve passare un token JWT conforme a OIDC che indica l'autenticazione da un provider di identità noto | 15 min \$1 Impostazione durata massima della sessione³ \$1 1 ora  | No | Sì |  Non è possibile chiamare `GetFederationToken` o `GetSessionToken`.  | 
| [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) | Utente IAM o Utente root dell'account AWS |  Utente IAM: 15 m \$1 36 ore \$1 12 ore Utente root: 15 m \$1 1 ora \$1 1 ora  | No  | Sì  |  Impossibile chiamare le operazioni IAM utilizzando l' AWS API AWS CLI o. Questa limitazione non si applica alle sessioni della console. Impossibile chiamare AWS STS le operazioni ad eccezione di `GetCallerIdentity` .4 L'accesso SSO alla console è consentito.⁵  | 
| [GetSessionToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) | Utente IAM o Utente root dell'account AWS |  Utente IAM: 15 m \$1 36 ore \$1 12 ore Utente root: 15 m \$1 1 ora \$1 1 ora  | Sì  | No  |  Impossibile chiamare le operazioni API IAM a meno che le informazioni di MFA siano incluse con la richiesta. Impossibile chiamare le operazioni AWS STS API tranne `AssumeRole` o`GetCallerIdentity`. L'accesso SSO alla console non è consentito.⁶  | 

 ¹ **Supporto MFA**. Puoi includere informazioni su un dispositivo di autenticazione a più fattori (MFA) quando chiami AssumeRole le operazioni GetSessionToken e API. In questo modo le credenziali di sicurezza provvisorie risultanti dalla chiamata API possono essere utilizzate solo dagli utenti autenticati con un dispositivo MFA. Per ulteriori informazioni, consulta [Accesso sicuro alle API con MFA](id_credentials_mfa_configure-api-require.md). 

 ² **Supporto per la policy di sessione**. I criteri di sessione sono criteri che vengono passati come parametro quando si crea a livello di codice una sessione temporanea per un ruolo o AWS STS una sessione utente federata. Questa policy limita le autorizzazioni dalla policy basata su identità del ruolo o dell'utente che sono assegnate alla sessione. Le autorizzazioni della sessione risultanti sono l'intersezione delle policy basate sull'identità dell'entità e delle policy di sessione. Le policy di sessione non possono essere utilizzate per concedere autorizzazioni maggiori rispetto a quelle consentite dalla policy basata sull'identità del ruolo che viene assunto. Per ulteriori informazioni sulle autorizzazioni della sessione del ruolo, consulta [Policy di sessione](access_policies.md#policies_session).

³ **Impostazione della durata massima della sessione**. Utilizzare il parametro `DurationSeconds` per specificare la durata della sessione del ruolo da 900 secondi (15 minuti) fino all'impostazione di durata massima della sessione per il ruolo. Per informazioni su come visualizzare il valore massimo per il ruolo, consulta [Aggiornamento della durata massima della sessione per un ruolo](id_roles_update-role-settings.md#id_roles_update-session-duration).

3. **GetCallerIdentity** Non sono necessarie autorizzazioni per eseguire questa operazione. Se un amministratore aggiunge una policy al tuo utente o ruolo IAM che nega esplicitamente l'accesso all'operazione `sts:GetCallerIdentity`, puoi comunque eseguire questa operazione. Le autorizzazioni non sono necessarie perché le stesse informazioni vengono restituite quando a un utente o ruolo IAM viene negato l'accesso. Per visualizzare un esempio di risposta, consulta [Non sono autorizzato a eseguire: iam: DeleteVirtual MFADevice](troubleshoot.md#troubleshoot_general_access-denied-delete-mfa).

⁵ **Accesso Single Sign-On (SSO) alla console**. Per supportare l'SSO, AWS consente di chiamare un endpoint di federazione (`https://signin.aws.amazon.com/federation`) e passare credenziali di sicurezza temporanee. L'endpoint restituisce un token che è possibile utilizzare per creare un URL che effettua l'accesso di un utente direttamente nella console senza richiedere una password. Per ulteriori informazioni, consulta [Consentire ai principali federati SAML 2.0 di accedere a Console di gestione AWS](id_roles_providers_enable-console-saml.md) e [Come abilitare l'accesso tra più account alla console di AWS gestione nel blog](https://aws.amazon.com/blogs/security/how-to-enable-cross-account-access-to-the-aws-management-console) sulla sicurezza. AWS 

⁶ Dopo aver recuperato le credenziali provvisorie, non è possibile accedere alla Console di gestione AWS inoltrando le credenziali all'endpoint Single Sign-On della federazione. Per ulteriori informazioni, consulta [Abilita l'accesso personalizzato del broker di identità alla AWS console](id_roles_providers_enable-console-custom-url.md).

# Token di connessione al servizio
<a name="id_credentials_bearer"></a>

Alcuni AWS servizi richiedono l'autorizzazione per ottenere un token AWS STS service bearer prima di poter accedere alle loro risorse a livello di programmazione. Questi servizi supportano un protocollo che richiede l'utilizzo di un token di connessione invece di utilizzare un [AWS Signature Version 4 per richieste API](reference_sigv.md) tradizionale. Quando esegui AWS CLI o esegui operazioni AWS API che richiedono token al portatore, il AWS servizio richiede un token al portatore per tuo conto. Il servizio fornisce il token, che è possibile utilizzare per eseguire le operazioni successive in tale servizio. 

AWS STS i service bearer token includono informazioni relative all'autenticazione principale originale che potrebbero influire sulle autorizzazioni dell'utente. Queste informazioni possono includere tag del principale, tag di sessione e policy di sessione. L'ID chiave di accesso del token inizia con il prefisso `ABIA`. Ciò consente di identificare le operazioni eseguite utilizzando i token di connessione al servizio nei log CloudTrail.

**Importante**  
Il token di connessione può essere utilizzato solo per le chiamate al servizio che lo genera e nella regione in cui è stato generato. Non è possibile utilizzare il token di connessione per eseguire operazioni in altri servizi o regioni.

Un esempio di servizio che supporta i bearer token è. AWS CodeArtifact Prima di poter interagire AWS CodeArtifact utilizzando un gestore di pacchetti come NPM, Maven o PIP, è necessario chiamare l'operazione. `aws codeartifact get-authorization-token` Questa operazione restituisce un token portatore che è possibile utilizzare per eseguire operazioni. AWS CodeArtifact In alternativa, è possibile utilizzare il comando `aws codeartifact login` che completa la stessa operazione e quindi configura automaticamente il client. 

Se esegui un'azione in un AWS servizio che genera un token bearer per te, devi disporre delle seguenti autorizzazioni nella tua politica IAM:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowServiceBearerToken",
            "Effect": "Allow",
            "Action": "sts:GetServiceBearerToken",
            "Resource": "*"
        }
    ]
}
```

------

Per un esempio di token portatore di servizi, consulta [Utilizzo di policy basate sulle identità per AWS CodeArtifact](https://docs.aws.amazon.com/codeartifact/latest/ug/auth-and-access-control-iam-identity-based-access-control.html) nella *Guida per l'utente di AWS CodeArtifact*.

# Richiedere credenziali di sicurezza temporanee
<a name="id_credentials_temp_request"></a>

Per richiedere credenziali di sicurezza temporanee, puoi utilizzare le operazioni AWS Security Token Service (AWS STS) nell' AWS API. Queste includono operazioni per creare e fornire a utenti affidabili credenziali di sicurezza temporanee in grado di controllare l'accesso alle AWS risorse. Per ulteriori informazioni su AWS STS, vedere[Credenziali di sicurezza temporanee in IAM](id_credentials_temp.md). Per informazioni sui diversi metodi che si possono utilizzare per richiedere credenziali di sicurezza temporanee assumendo un ruolo, consultare [Metodi per assumere un ruolo](id_roles_manage-assume.md).

Per chiamare le operazioni API, puoi utilizzare uno dei [AWS SDKs](https://aws.amazon.com/tools/). SDKs Sono disponibili per una varietà di linguaggi e ambienti di programmazione, tra cui Java, .NET, Python, Ruby, Android e iOS. SDKs Si occupano di attività come firmare crittograficamente le richieste, riprovare le richieste se necessario e gestire le risposte agli errori. [Puoi anche utilizzare l'API AWS STS Query, descritta nell'API Reference.AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/) Infine, due strumenti da riga di comando supportano i AWS STS comandi: the [AWS Command Line Interface](https://aws.amazon.com/documentation/cli), e the [AWS Tools for Windows PowerShell](https://aws.amazon.com/documentation/powershell). 

Le operazioni AWS STS API creano una nuova sessione con credenziali di sicurezza temporanee che includono una coppia di chiavi di accesso e un token di sessione. La coppia di chiavi di accesso è composta da un ID chiave di accesso e da una chiave segreta. Gli utenti (o un'applicazione che l'utente esegue) possono utilizzare queste credenziali per accedere alle risorse. È possibile creare una sessione di ruolo e passare policy di sessione e tag di sessione in modo programmatico utilizzando AWS STS le operazioni API. Le autorizzazioni della sessione risultanti sono l'intersezione tra le policy basate sull'identità del ruolo e le policy di sessione. Per ulteriori informazioni sulle policy di sessione, consulta [Policy di sessione](access_policies.md#policies_session). Per ulteriori informazioni sui tag di sessione, consultare [Passa i tag di sessione AWS STS](id_session-tags.md).

**Nota**  
La dimensione del token di sessione restituito dalle operazioni AWS STS API non è fissa. È consigliabile di non effettuare alcuna supposizione sulle dimensioni massime. La dimensione tipica dei token è inferiore a 4.096 byte, ma essa può variare.

## Utilizzo AWS STS con AWS le regioni
<a name="using_sts_regions"></a>

Puoi inviare chiamate AWS STS API a un endpoint globale o a uno degli endpoint regionali. Se si seleziona un endpoint vicino, è possibile ridurre la latenza e migliorare le prestazioni delle chiamate API. Se non è più possibile comunicare con l'endpoint originale è anche possibile scegliere di indirizzare le chiamate verso un endpoint regionale alternativo. Se utilizzi uno dei vari AWS SDKs, utilizza il metodo SDK per specificare una regione prima di effettuare la chiamata API. Se costruiscono manualmente richieste API HTTP, è necessario indirizzare la richiesta all'endpoint corretto. Per ulteriori informazioni, consulta la [sezione AWS STS relativa alle *regioni e agli endpoint*](https://docs.aws.amazon.com/general/latest/gr/rande.html#sts_region) e la sezione [Gestisci AWS STS in un Regione AWS](id_credentials_temp_enable-regions.md).

Di seguito sono elencate le operazioni API che è possibile utilizzare per acquisire credenziali temporanee da utilizzare nell' AWS ambiente e nelle applicazioni.

## Richiesta di credenziali per la delega tra account e federazione tramite un gestore di identità personalizzato
<a name="api_assumerole"></a>

L'operazione [https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRole.html)API è utile per consentire agli utenti IAM esistenti di accedere a AWS risorse a cui non hanno già accesso. Ad esempio, l'utente potrebbe aver bisogno di accedere alle risorse in un altro Account AWS. Inoltre, è utile come strumento per ottenere temporaneamente l'accesso privilegiato, ad esempio per fornire l'autenticazione a più fattori (MFA). È necessario chiamare questa API utilizzando le credenziali attive. Per sapere chi può chiamare questa operazione, vedere [Confronta le AWS STS credenziali](id_credentials_sts-comparison.md). Per ulteriori informazioni, consultare [Creazione di un ruolo per fornire le autorizzazioni a un utente IAM](id_roles_create_for-user.md) e [Accesso sicuro alle API con MFA](id_credentials_mfa_configure-api-require.md).

**Per richiedere credenziali di sicurezza temporanee per la delega tra account e federazione tramite un gestore di identità personalizzato**

1. Effettua l'autenticazione con le tue credenziali AWS di sicurezza. Questa chiamata deve essere effettuata utilizzando le credenziali di sicurezza AWS .

1. Chiama [https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRole.html)l'operazione.

L'esempio seguente mostra una richiesta di esempio e la risposta utilizzando `AssumeRole`. Questa richiesta di esempio assume il ruolo `demo` per la durata specificata, inclusi [policy di sessione](access_policies.md#policies_session), [tag di sessione](id_session-tags.md), [ID esterno](id_roles_common-scenarios_third-party.md) e [identità di origine](id_credentials_temp_control-access_monitor.md). La sessione risultante è denominata `John-session`. 

**Example Richiesta di esempio**  

```
https://sts.amazonaws.com/
?Version=2011-06-15
&Action=AssumeRole
&RoleSessionName=John-session
&RoleArn=arn:aws::iam::123456789012:role/demo
&Policy=%7B%22Version%22%3A%222012-10-17		 	 	 %22%2C%22Statement%22%3A%5B%7B%22Sid%22%3A%20%22Stmt1%22%2C%22Effect%22%3A%20%22Allow%22%2C%22Action%22%3A%20%22s3%3A*%22%2C%22Resource%22%3A%20%22*%22%7D%5D%7D
&DurationSeconds=1800
&Tags.member.1.Key=Project
&Tags.member.1.Value=Pegasus
&Tags.member.2.Key=Cost-Center
&Tags.member.2.Value=12345
&ExternalId=123ABC
&SourceIdentity=DevUser123
&AUTHPARAMS
```

Il valore della policy illustrato nell'esempio precedente è la versione di codifica URL della policy seguente:

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

****  

```
{"Version":"2012-10-17",		 	 	 "Statement":[{"Sid":"Stmt1","Effect":"Allow","Action":"s3:*","Resource":"*"}]}
```

------

Il parametro `AUTHPARAMS` nell'esempio è un segnaposto per la propria *firma*. Una firma è l'informazione di autenticazione che devi includere nelle richieste API AWS HTTP. Ti consigliamo di utilizzarla [AWS SDKs](https://aws.amazon.com/tools/)per creare richieste API e uno dei vantaggi di questa operazione è che SDKs gestirà la firma delle richieste al posto tuo. Se devi creare e firmare le richieste API manualmente, consulta [Firmare AWS le richieste utilizzando la versione 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) della *Riferimenti generali di Amazon Web Services*pagina per scoprire come firmare una richiesta.

Oltre alle credenziali di sicurezza temporanee, la risposta include l'Amazon Resource Name (ARN) per l'utente federato e il periodo di scadenza delle credenziali.

**Example Esempio di risposta**  

```
<AssumeRoleResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<AssumeRoleResult>
<SourceIdentity>DevUser123</SourceIdentity>
<Credentials>
  <SessionToken>
   AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW
   LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd
   QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU
   9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz
   +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA==
  </SessionToken>
  <SecretAccessKey>
   wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY
  </SecretAccessKey>
  <Expiration>2019-07-15T23:28:33.359Z</Expiration>
  <AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId>
</Credentials>
<AssumedRoleUser>
  <Arn>arn:aws:sts::123456789012:assumed-role/demo/John</Arn>
  <AssumedRoleId>ARO123EXAMPLE123:John</AssumedRoleId>
</AssumedRoleUser>
<PackedPolicySize>8</PackedPolicySize>
</AssumeRoleResult>
<ResponseMetadata>
<RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId>
</ResponseMetadata>
</AssumeRoleResponse>
```

**Nota**  
Una AWS conversione comprime le politiche di sessione e i tag di sessione passati in un formato binario compresso con un limite separato. La richiesta può non essere eseguita correttamente a causa di questo limite anche se il testo in chiaro soddisfa gli altri requisiti. L'elemento della risposta `PackedPolicySize` indica in percentuale la consistenza di policy e tag della richiesta rispetto al limite di dimensione superiore.

## Richiesta di credenziali tramite un provider OIDC
<a name="api_assumerolewithwebidentity"></a>

L'operazione API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) restituisce un set di credenziali di sicurezza AWS temporanee in cambio di un JSON Web Token (JWT). Ciò include provider di identità pubblici, come Login with Amazon, Facebook, Google, e provider JWTs che rilasciano problemi compatibili con il rilevamento di OpenID Connect (OIDC), come GitHub actions o Azure Devops. Per ulteriori informazioni, consulta [Federazione OIDC](id_roles_providers_oidc.md).

**Nota**  
Le richieste `AssumeRoleWithWebIdentity` non sono firmate e non richiedono credenziali AWS .

**Richiesta di credenziali tramite un provider OIDC**

1. Chiama [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)l'operazione.

   Quando chiami`AssumeRoleWithWebIdentity`, AWS convalida il token presentato verificando la firma digitale utilizzando le chiavi pubbliche rese disponibili tramite il keyset web JSON (JWKS) del tuo IdP. Se il token è valido e tutte le condizioni stabilite nella policy di fiducia dei ruoli IAM sono soddisfatte, AWS ti restituisce le seguenti informazioni:
   + Un set di credenziali di sicurezza temporanee. Consistono in un ID chiave di accesso, in una Secret Access Key e in un token di sessione.
   + l'ID del ruolo e l'ARN del ruolo assunto.
   + Un valore `SubjectFromWebIdentityToken` che contiene l'ID utente univoco.

1. L'applicazione può quindi utilizzare le credenziali di sicurezza temporanee restituite nella risposta alle chiamate AWS API. Si tratta dello stesso processo utilizzato per effettuare una chiamata AWS API con credenziali di sicurezza a lungo termine. La differenza è che è necessario includere il token di sessione, che consente di AWS verificare che le credenziali di sicurezza temporanee siano valide.

L'applicazione deve memorizzare nella cache le credenziali restituite da AWS STS e aggiornarle secondo necessità. Se l'applicazione è stata creata utilizzando un AWS SDK, l'SDK dispone di provider di credenziali in grado di gestire le chiamate `AssumeRoleWithWebIdentity` e l'aggiornamento AWS delle credenziali prima della scadenza. *Per ulteriori informazioni, consulta i provider di [credenziali standardizzati AWS SDKs e Tools](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html) nella Guida di riferimento agli strumenti.AWS SDKs *

## Richiesta di credenziali tramite un gestore di identità SAML 2.0
<a name="api_assumerolewithsaml"></a>

L’operazione API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) restituisce un set di credenziali di sicurezza temporanee per i principali federati SAML che sono autenticati dal sistema di identità esistente dell’organizzazione. Gli utenti devono utilizzare inoltre [SAML](https://www.oasis-open.org/standards#samlv2.0) 2.0 (Security Assertion Markup Language) per inoltrare le informazioni di autenticazione e autorizzazione ad AWS. Questa operazione di API è utile in organizzazioni che hanno integrato i propri sistemi di identità (ad esempio Windows Active Directory o OpenLDAP) con software che è in grado di produrre asserzioni SAML. Tale integrazione fornisce informazioni sulle autorizzazioni e identità dell'utente (ad esempio Active Directory Federation Services o Shibboleth). Per ulteriori informazioni, consulta [Federazione SAML 2.0](id_roles_providers_saml.md).

1. Chiama [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)l'operazione.

   Si tratta di una chiamata non firmata, il che significa che non è necessario autenticare le credenziali di AWS sicurezza prima di effettuare la richiesta.
**Nota**  
Una chiamata a `AssumeRoleWithSAML` non è firmata (crittografata). Pertanto, è opportuno includere le policy di sessione facoltative solo se la richiesta viene trasmessa attraverso un intermediario affidabile. In questo caso, qualcuno potrebbe modificare la policy per rimuovere le limitazioni.

1. Quando chiami`AssumeRoleWithSAML`, AWS verifica l'autenticità dell'asserzione SAML. Supponendo che il provider di identità convalidi l'asserzione, AWS ti restituisce le seguenti informazioni:
   + Un set di credenziali di sicurezza temporanee. Consistono in un ID chiave di accesso, in una Secret Access Key e in un token di sessione. 
   + l'ID del ruolo e l'ARN del ruolo assunto. 
   + Un valore `Audience` che contiene il valore dell'attributo `Recipient` dell'elemento `SubjectConfirmationData` dell'asserzione SAML.
   + Un valore `Issuer` che contiene il valore dell'attributo `Issuer` dell'elemento dell'asserzione SAML.
   + Un `NameQualifier` elemento che contiene un valore hash creato a partire dal `Issuer` valore, dall' Account AWS ID e dal nome descrittivo del provider SAML. In combinazione con l’elemento `Subject`, permette di identificare in modo univoco il principale federato SAML.
   + Un elemento `Subject` che contiene il valore dell'elemento `NameID` nell'elemento `Subject` dell'asserzione SAML.
   + Un elemento `SubjectType` che indica il formato dell'elemento `Subject`. Il valore può essere `persistent`, `transient` o il pieno `Format` URI dagli elementi `Subject` e `NameID` utilizzati nell'asserzione SAML. Per ulteriori informazioni sull'attributo `Format` dell'elemento `NameID`, consulta [Configurare le asserzioni SAML per la risposta di autenticazione](id_roles_providers_create_saml_assertions.md). 

1. Utilizza le credenziali di sicurezza temporanee restituite nella risposta per effettuare AWS chiamate API. Questa è la stessa procedura utilizzata per effettuare una chiamata AWS API con credenziali di sicurezza a lungo termine. La differenza è che è necessario includere il token della sessione, che consente ad AWS di verificare che le credenziali di sicurezza provvisorie siano valide.

L'app deve memorizzare le credenziali. Come impostazione predefinita, le credenziali scadono dopo un'ora. Se non utilizzi l'azione [Amazon STSCredentials Provider](https://aws.amazon.com/blogs/mobile/using-the-amazoncredentialsprovider-protocol-in-the-aws-sdk-for-ios) nell' AWS SDK, spetta a te e alla tua app effettuare `AssumeRoleWithSAML` nuovamente la chiamata. Chiamare questa operazione per ottenere un nuovo set di credenziali di sicurezza provvisorie prima che i vecchi scadere.

## Richiesta di credenziali tramite un gestore di identità personalizzato
<a name="api_getfederationtoken"></a>

L'operazione [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html)API restituisce un set di credenziali di sicurezza temporanee per i principali utenti AWS STS federati. Questa API differisce da `AssumeRole` per il fatto che il periodo di scadenza predefinito è notevolmente più lungo (12 ore invece di un'ora). Inoltre, è possibile utilizzare il parametro `DurationSeconds` per specificare una durata per le credenziali di sicurezza temporanee perché rimanga valido. Le credenziali risultanti sono valide per la durata specificata, da 900 secondi (15 minuti) a un massimo di 129.600 secondi (36 ore). Il periodo di scadenza più lungo può aiutare a ridurre il numero di chiamate AWS perché non è necessario ottenere nuove credenziali con la stessa frequenza.

1. Effettua l'autenticazione con le credenziali di AWS sicurezza del tuo utente IAM specifico. Questa chiamata deve essere effettuata utilizzando credenziali di AWS sicurezza valide.

1. Chiama [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html)l'operazione.

La chiamata `GetFederationToken` restituisce le credenziali di sicurezza temporanee che consistono nel token di sessione, nella chiave di accesso, nella chiave segreta e nella scadenza. È possibile utilizzare `GetFederationToken` se si desidera gestire le autorizzazioni nella propria organizzazione (ad esempio, utilizzando l'applicazione proxy per assegnare le autorizzazioni).

L'esempio seguente mostra una richiesta di esempio e la risposta che utilizza `GetFederationToken`. Questa richiesta di esempio consente di federare l'utente chiamante per la durata specificata tramite l'ARN della [policy di sessione](access_policies.md#policies_session) e i [tag di sessione](id_session-tags.md). La sessione risultante è denominata `Jane-session`.

**Example Richiesta di esempio**  

```
https://sts.amazonaws.com/
?Version=2011-06-15
&Action=GetFederationToken
&Name=Jane-session
&PolicyArns.member.1.arn==arn%3Aaws%3Aiam%3A%3A123456789012%3Apolicy%2FRole1policy
&DurationSeconds=1800
&Tags.member.1.Key=Project
&Tags.member.1.Value=Pegasus
&Tags.member.2.Key=Cost-Center
&Tags.member.2.Value=12345
&AUTHPARAMS
```

L'ARN della policy illustrato nell'esempio precedente include i seguenti ARN URL-encoded: 

`arn:aws:iam::123456789012:policy/Role1policy`

Inoltre, si noti che il parametro `&AUTHPARAMS` nell'esempio è inteso come segnaposto per le informazioni di autenticazione. Questa è la *firma*, che devi includere nelle richieste API AWS HTTP. Ti consigliamo di utilizzarla [AWS SDKs](https://aws.amazon.com/tools/)per creare richieste API e uno dei vantaggi di questa operazione è che SDKs gestirà la firma delle richieste al posto tuo. Se devi creare e firmare le richieste API manualmente, vai a [Firmare AWS le richieste utilizzando la versione 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) della pagina *Riferimenti generali di Amazon Web Services*per scoprire come firmare una richiesta.

Oltre alle credenziali di sicurezza temporanee, la risposta include l'Amazon Resource Name (ARN) per l'utente federato e il periodo di scadenza delle credenziali.

**Example Esempio di risposta**  

```
<GetFederationTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<GetFederationTokenResult>
<Credentials>
  <SessionToken>
   AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW
   LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd
   QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU
   9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz
   +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCEXAMPLE==
  </SessionToken>
  <SecretAccessKey>
  wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY
  </SecretAccessKey>
  <Expiration>2019-04-15T23:28:33.359Z</Expiration>
  <AccessKeyId>AKIAIOSFODNN7EXAMPLE;</AccessKeyId>
</Credentials>
<FederatedUser>
  <Arn>arn:aws:sts::123456789012:federated-user/Jean</Arn>
  <FederatedUserId>123456789012:Jean</FederatedUserId>
</FederatedUser>
<PackedPolicySize>4</PackedPolicySize>
</GetFederationTokenResult>
<ResponseMetadata>
<RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId>
</ResponseMetadata>
</GetFederationTokenResponse>
```

**Nota**  
Una AWS conversione comprime le politiche di sessione e i tag di sessione passati in un formato binario compresso con un limite separato. La richiesta può non essere eseguita correttamente a causa di questo limite anche se il testo in chiaro soddisfa gli altri requisiti. L'elemento della risposta `PackedPolicySize` indica in percentuale la consistenza di policy e tag della richiesta rispetto al limite di dimensione superiore.

AWS consiglia di concedere le autorizzazioni a livello di risorsa (ad esempio, si allega una policy basata sulle risorse a un bucket Amazon S3), è possibile omettere il parametro. `Policy` Tuttavia, se non includi una policy per il principale utente AWS STS federato, le credenziali di sicurezza temporanee non concederanno alcuna autorizzazione. In questo caso, è *necessario* utilizzare le policy delle risorse per concedere all'utente federato l'accesso alle risorse AWS .

Ad esempio, supponiamo che il tuo Account AWS numero sia 111122223333 e che tu disponga di un bucket Amazon S3 a cui desideri consentire l'accesso a Susan. Le credenziali di sicurezza temporanee di Susan non includono una policy per il bucket. In questo caso, è necessario accertarsi che il bucket disponga di una policy con un ARN corrisponda all'ARN di Susan, ad esempio `arn:aws:sts::111122223333:federated-user/Susan`. 

## Richiesta di credenziali per gli utenti in ambienti non attendibili
<a name="api_getsessiontoken"></a>

L’operazione API [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) restituisce un set di credenziali di sicurezza temporanee a un utente IAM esistente. Ciò è utile per fornire una maggiore sicurezza, ad esempio consentire le AWS richieste solo quando l'MFA è abilitata per l'utente IAM. Poiché le credenziali sono temporanee, forniscono maggiore sicurezza quando hai un utente IAM che accede alle risorse tramite un ambiente meno sicuro. Esempi di ambienti meno protetti includono dispositivi mobili o browser web.

1. Effettua l'autenticazione con le credenziali di AWS sicurezza del tuo utente IAM specifico. Questa chiamata deve essere effettuata utilizzando credenziali di AWS sicurezza valide.

1. Chiama [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html)l'operazione.

1. `GetSessionToken` restituisce le credenziali di sicurezza temporanee, ossia un token di sessione, l'ID chiave di accesso e una chiave di accesso segreta.

Per impostazione predefinita, le credenziali di sicurezza temporanee per un utente IAM sono valide per un massimo di 12 ore. Tuttavia, è possibile richiedere una durata di soli 15 minuti o fino a 36 ore utilizzando il parametro `DurationSeconds`. Per motivi di sicurezza, un token per un Utente root dell'account AWS è limitato a una durata di un'ora.

L'esempio seguente mostra una richiesta di esempio e la risposta utilizzando `GetSessionToken`. La risposta include inoltre il periodo di scadenza delle credenziali di sicurezza temporanee. 

**Example Richiesta di esempio**  

```
https://sts.amazonaws.com/
?Version=2011-06-15
&Action=GetSessionToken
&DurationSeconds=1800
&AUTHPARAMS
```

Il parametro `AUTHPARAMS` nell'esempio è un segnaposto per la propria *firma*. Una firma è l'informazione di autenticazione che è necessario includere nelle richieste API AWS HTTP. Ti consigliamo di utilizzarla [AWS SDKs](https://aws.amazon.com/tools/)per creare richieste API e uno dei vantaggi di questa operazione è che SDKs gestirà la firma delle richieste al posto tuo. Se devi creare e firmare le richieste API manualmente, vai a [Firmare AWS le richieste utilizzando la versione 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) della pagina *Riferimenti generali di Amazon Web Services*per scoprire come firmare una richiesta.

**Example Esempio di risposta**  

```
<GetSessionTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<GetSessionTokenResult>
<Credentials>
  <SessionToken>
   AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/L
   To6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3z
   rkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtp
   Z3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE
  </SessionToken>
  <SecretAccessKey>
  wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY
  </SecretAccessKey>
  <Expiration>2011-07-11T19:55:29.611Z</Expiration>
  <AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId>
</Credentials>
</GetSessionTokenResult>
<ResponseMetadata>
<RequestId>58c5dbae-abef-11e0-8cfe-09039844ac7d</RequestId>
</ResponseMetadata>
</GetSessionTokenResponse>
```

Facoltativamente, la `GetSessionToken` richiesta può includere `TokenCode` valori per `SerialNumber` la verifica dell' AWS autenticazione a più fattori (MFA). Se i valori forniti sono validi, AWS STS fornisce credenziali di sicurezza temporanee che includono lo stato dell'autenticazione MFA. Le credenziali di sicurezza temporanee possono quindi essere utilizzate per accedere alle operazioni o ai AWS siti Web dell'API protetti da MFA finché l'autenticazione MFA è valida. 

L'esempio seguente mostra una richiesta `GetSessionToken`, che include un codice di verifica MFA e il numero di serie del dispositivo. 

```
https://sts.amazonaws.com/
?Version=2011-06-15
&Action=GetSessionToken
&DurationSeconds=7200
&SerialNumber=YourMFADeviceSerialNumber
&TokenCode=123456
&AUTHPARAMS
```

**Nota**  
La chiamata a AWS STS può essere diretta all'endpoint globale o a uno qualsiasi degli endpoint regionali su cui attivi. Account AWS Per ulteriori informazioni, consulta la [sezione di AWS STS relativa alle *regioni e agli endpoint*](https://docs.aws.amazon.com/general/latest/gr/rande.html#sts_region).  
Il parametro `AUTHPARAMS` nell'esempio è un segnaposto per la propria *firma*. Una firma è l'informazione di autenticazione che devi includere nelle richieste API AWS HTTP. Ti consigliamo di utilizzarla [AWS SDKs](https://aws.amazon.com/tools/)per creare richieste API e uno dei vantaggi di questa operazione è che SDKs gestirà la firma delle richieste al posto tuo. Se devi creare e firmare le richieste API manualmente, consulta [Firmare AWS le richieste utilizzando la versione 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) della *Riferimenti generali di Amazon Web Services*pagina per scoprire come firmare una richiesta.

# Usa credenziali temporanee con le risorse AWS
<a name="id_credentials_temp_use-resources"></a>

Puoi utilizzare credenziali di sicurezza temporanee per effettuare richieste programmatiche di AWS risorse utilizzando l' AWS API AWS CLI o (utilizzando la). [AWS SDKs](https://aws.amazon.com/tools/) Le credenziali temporanee forniscono le stesse autorizzazioni delle credenziali di sicurezza a lungo termine, come ad esempio le credenziali degli utenti IAM. Tuttavia, ci sono alcune differenze:
+ Quando si effettua una chiamata utilizzando credenziali di sicurezza temporanee, la chiamata deve includere un token di sessione, che viene restituito insieme a tali credenziali temporanee. AWS utilizza il token di sessione per convalidare le credenziali di sicurezza temporanee. 
+ Le credenziali temporanee scadono dopo un intervallo di tempo specificato. Dopo che le credenziali temporanee scadono, tutte le chiamate effettuate con tali credenziali verranno respinte, pertanto dovrai generare un nuovo set di credenziali temporanee. Le credenziali temporanee non possono essere prorogate o aggiornate oltre l'intervallo specificato in origine.
+ Quando si utilizzano credenziali temporanee per effettuare una richiesta, l'entità potrebbe includere un set di tag. Questi tag provengono da tag di sessione e tag associati al ruolo assunto. Per ulteriori informazioni sui tag di sessione, consultare [Passa i tag di sessione AWS STS](id_session-tags.md).

Se si utilizza il [AWS SDKs](https://aws.amazon.com/tools), the [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/)(AWS CLI) o [gli strumenti per Windows PowerShell, il modo per](https://aws.amazon.com/powershell) ottenere e utilizzare le credenziali di sicurezza temporanee varia a seconda del contesto. Se esegui codice o PowerShell comandi Tools for Windows all'interno di un'istanza EC2, puoi sfruttare i ruoli per Amazon EC2. AWS CLI Altrimenti, puoi richiamare un'[API AWS STS](https://docs.aws.amazon.com/STS/latest/APIReference/) per ottenere le credenziali provvisorie e utilizzarle in modo esplicito per effettuare chiamate ai servizi AWS .

**Nota**  
Puoi usare AWS Security Token Service (AWS STS) per creare e fornire a utenti affidabili credenziali di sicurezza temporanee in grado di controllare l'accesso alle tue risorse. AWS Per ulteriori informazioni su AWS STS, vedere[Credenziali di sicurezza temporanee in IAM](id_credentials_temp.md). AWS STS è un servizio globale con un endpoint predefinito in`https://sts.amazonaws.com`. Questo endpoint si trova nella regione Stati Uniti orientali (Virginia settentrionale), sebbene le credenziali ottenute da questo e da altri endpoint siano valide a livello globale. Queste credenziali funzionano con servizi e risorse in qualsiasi regione. Puoi anche scegliere di effettuare chiamate AWS STS API verso gli endpoint in una qualsiasi delle regioni supportate. Ciò può ridurre la latenza effettuando le richieste da server in una regione geograficamente più vicina a te. Indipendentemente dalla regione dalla quale provengono, le credenziali funzionano a livello globale. Per ulteriori informazioni, consulta [Gestisci AWS STS in un Regione AWS](id_credentials_temp_enable-regions.md).

**Contents**
+ [Utilizzo delle credenziali temporanee nelle istanze Amazon EC2](#using-temp-creds-sdk-ec2-instances)
+ [Utilizzo di credenziali di sicurezza temporanee con AWS SDKs](#using-temp-creds-sdk)
+ [Utilizzo di credenziali di sicurezza temporanee con AWS CLI](#using-temp-creds-sdk-cli)
+ [Utilizzo delle credenziali di sicurezza temporanee con le operazioni API](#RequestWithSTS)
+ [Ulteriori informazioni](#using-temp-creds-more-info)

## Utilizzo delle credenziali temporanee nelle istanze Amazon EC2
<a name="using-temp-creds-sdk-ec2-instances"></a>

Se desideri eseguire AWS CLI comandi o codice all'interno di un'istanza EC2, il metodo consigliato per ottenere le credenziali consiste nell'utilizzare [i ruoli per Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html). È possibile creare un ruolo IAM che specifichi le autorizzazioni che si desidera concedere alle applicazioni che vengono eseguite sulle istanze EC2. Quando si avvia l'istanza, si associa il ruolo all'istanza.

Le applicazioni e AWS CLI i PowerShell comandi Tools for Windows eseguiti sull'istanza possono quindi ottenere credenziali di sicurezza temporanee automatiche dai metadati dell'istanza. Non è necessario ottenere esplicitamente le credenziali di sicurezza temporanee. I AWS SDKs AWS CLI, e Tools for Windows ottengono PowerShell automaticamente le credenziali dall'EC2 Instance Metadata Service (IMDS) e le utilizzano. Le credenziali temporanee hanno le autorizzazioni che si definiscono per il ruolo associato all'istanza.

Per maggiori informazioni ed esempi, consultare quanto segue:
+  [Utilizzo dei ruoli IAM per concedere l'accesso alle AWS risorse su Amazon Elastic Compute Cloud](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java-dg-roles.html) — AWS SDK per Java
+  [Concessione dell'accesso utilizzando un ruolo IAM](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-hosm.html) — AWS SDK per .NET 
+  [Creazione di un ruolo](https://docs.aws.amazon.com/sdk-for-ruby/latest/developer-guide/iam-example-create-role.html): AWS SDK per Ruby

## Utilizzo di credenziali di sicurezza temporanee con AWS SDKs
<a name="using-temp-creds-sdk"></a>

Per utilizzare credenziali di sicurezza temporanee nel codice, chiamate a livello di codice un' AWS STS API simile a un'API `AssumeRole` ed estraete le credenziali e il token di sessione risultanti. Questi valori vengono quindi utilizzati come credenziali per le chiamate successive a. AWS L'esempio seguente mostra lo pseudocodice su come utilizzare le credenziali di sicurezza temporanee se utilizzi un SDK: AWS 

```
assumeRoleResult = AssumeRole(role-arn);
tempCredentials = new SessionAWSCredentials(
   assumeRoleResult.AccessKeyId, 
   assumeRoleResult.SecretAccessKey, 
   assumeRoleResult.SessionToken);
s3Request = CreateAmazonS3Client(tempCredentials);
```

Per un esempio scritto in Python (usando [AWS SDK per Python (Boto)](https://aws.amazon.com/sdk-for-python/)), consultare [Passa a un ruolo IAM (AWS API)](id_roles_use_switch-role-api.md). In questo esempio viene illustrato come richiamare `AssumeRole` per ottenere le credenziali di sicurezza temporanee e quindi utilizzare tali credenziali per effettuare una chiamata ad Amazon S3.

Per dettagli su come richiamare `AssumeRole`, `GetFederationToken` e altre operazioni API, consulta la [Documentazione di riferimento delle API AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/). Per informazioni su come ottenere le credenziali di sicurezza provvisorie e il token di sessione dal risultato, consulta la documentazione dell'SDK in uso. **Puoi trovare la documentazione per tutti nella [pagina di AWS documentazione](https://aws.amazon.com/documentation) principale, nella sezione e Toolkits. AWS SDKs SDKs **

È necessario accertarsi che sia possibile ottenere un nuovo set di credenziali prima della scadenza. In alcuni SDKs, puoi utilizzare un provider che gestisca il processo di aggiornamento delle credenziali al tuo posto; consulta la documentazione dell'SDK che stai utilizzando. 

## Utilizzo di credenziali di sicurezza temporanee con AWS CLI
<a name="using-temp-creds-sdk-cli"></a>

È possibile utilizzare le credenziali di sicurezza temporanee con AWS CLI Questo può essere utile per testare le policy. 

Tramite la [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/), puoi richiamare un'[API AWS STS](https://docs.aws.amazon.com/STS/latest/APIReference/) come `AssumeRole` o `GetFederationToken` e acquisire l'output risultante. L'esempio seguente mostra una chiamata a `AssumeRole` che invia l'output a un file. Nell'esempio, si presume che il `profile` parametro sia un profilo nel file di AWS CLI configurazione. Si presume inoltre di fare riferimento alle credenziali di un utente IAM che disponga delle autorizzazioni per assumere il ruolo.

```
aws sts assume-role --role-arn arn:aws:iam::123456789012:role/role-name --role-session-name "RoleSession1" --profile IAM-user-name > assume-role-output.txt
```

Quando il comando viene completato, è possibile estrarre l'ID della chiave di accesso, la chiave di accesso segreta e il token di sessione da qualunque posto sia stato instradato. È possibile farlo manualmente o utilizzando uno script. È possibile assegnare questi valori alle variabili di ambiente. 

Quando AWS CLI esegui i comandi, AWS CLI cerca le credenziali in un ordine specifico, prima nelle variabili di ambiente e poi nel file di configurazione. Pertanto, dopo aver inserito le credenziali temporanee nelle variabili di ambiente, AWS CLI utilizza tali credenziali per impostazione predefinita. (Se specificate un `profile` parametro nel comando, AWS CLI salta le variabili di ambiente. Al contrario, viene AWS CLI visualizzato nel file di configurazione, che consente di sovrascrivere le credenziali nelle variabili di ambiente, se necessario.) 

L'esempio seguente mostra come impostare le variabili di ambiente per le credenziali di sicurezza temporanee e quindi chiamare un comando. AWS CLI Poiché nel AWS CLI comando non è incluso alcun `profile` parametro, AWS CLI cerca le credenziali prima nelle variabili di ambiente e quindi utilizza le credenziali temporanee. 

**Linux**

```
$ export AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
$ export AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of session token>
$ aws ec2 describe-instances --region us-west-1
```

**Windows**

```
C:\> SET AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE
C:\> SET AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
C:\> SET AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of token> 
C:\> aws ec2 describe-instances --region us-west-1
```

## Utilizzo delle credenziali di sicurezza temporanee con le operazioni API
<a name="RequestWithSTS"></a>

Se stai effettuando richieste API HTTPS dirette a AWS, puoi firmare tali richieste con le credenziali di sicurezza temporanee che ottieni da (). AWS Security Token Service AWS STS A tale scopo, utilizzate l'ID della chiave di accesso e la chiave di accesso segreta da AWS STS cui ricevete. Utilizzare l'ID della chiave di accesso e la chiave di accesso segreta nello stesso modo in cui si utilizzano le credenziali a lungo termine per firmare una richiesta. Inoltre, aggiungi alla tua richiesta API il token di sessione da cui ricevi AWS STS. Aggiungere il token della sessione a un'intestazione HTTP o a un parametro della stringa di query denominato `X-Amz-Security-Token`. Aggiungi il token di sessione all'intestazione HTTP *o* il parametro della stringa di query, ma non entrambi. Per ulteriori informazioni sulla firma delle richieste API HTTPS, consulta [Firmare le richieste AWS API](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html) in *Riferimenti generali di AWS*.

## Ulteriori informazioni
<a name="using-temp-creds-more-info"></a>

Per ulteriori informazioni sull'utilizzo AWS STS con altri AWS servizi, consulta i seguenti collegamenti:
+ **Amazon S3**. Consulta [Esecuzione di richieste mediante le credenziali temporanee per gli utenti IAM](https://docs.aws.amazon.com/AmazonS3/latest/userguide/AuthUsingTempSessionToken.html) o [Esecuzione di richieste mediante le credenziali temporanee per gli utenti federati](https://docs.aws.amazon.com/AmazonS3/latest/userguide/AuthUsingTempFederationToken.html) nella *Guida per l'utente di Amazon Simple Storage Service*.
+ **Amazon SNS** Consulta [Utilizzo di policy basate su identità con Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/UsingIAMwithSNS.html#UsingTemporarySecurityCredentials_SNS) nella *Guida per gli sviluppatori di Amazon Simple Notification Service*.
+ **Amazon SQS** Consulta [Identity and Access Management in Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/UsingIAM.html#UsingTemporarySecurityCredentials_SQS) nella *Guida per gli sviluppatori di Amazon Simple Queue Service*
+ **Amazon SimpleDB** Consulta [Utilizzo di credenziali di sicurezza temporanee](https://docs.aws.amazon.com/AmazonSimpleDB/latest/DeveloperGuide/index.html?UsingTemporarySecurityCredentials_SDB.html) nella *Guida per gli sviluppatori di Amazon SimpleDB*.

# Autorizzazioni per le credenziali di sicurezza temporanee
<a name="id_credentials_temp_control-access"></a>

Puoi usare AWS Security Token Service (AWS STS) per creare e fornire a utenti affidabili credenziali di sicurezza temporanee in grado di controllare l'accesso alle tue AWS risorse. Per ulteriori informazioni su AWS STS, vedere[Credenziali di sicurezza temporanee in IAM](id_credentials_temp.md). Le credenziali di sicurezza temporanee emesse da AWS STS sono valide fino al periodo di scadenza e non possono essere revocate. Tuttavia, le autorizzazioni assegnate a tali credenziali vengono valutate ogni volta che viene effettuata una richiesta che utilizza le credenziali stesse, pertanto è possibile ottenere l'effetto di revoca delle credenziali modificando i relativi diritti di accesso dopo che sono state emesse. 

Negli argomenti seguenti si presuppone che tu abbia una conoscenza pratica delle AWS autorizzazioni e delle politiche. Per ulteriori informazioni su questi argomenti, consultare [Gestione degli accessi AWS alle risorse](access.md). 

**Topics**
+ [Autorizzazioni per AssumeRole, AssumeRoleWith SAML e AssumeRoleWithWebIdentity](id_credentials_temp_control-access_assumerole.md)
+ [Monitoraggio e controllo delle operazioni intraprese con i ruoli assunti](id_credentials_temp_control-access_monitor.md)
+ [Autorizzazioni per GetFederationToken](id_credentials_temp_control-access_getfederationtoken.md)
+ [Autorizzazioni per GetSessionToken](id_credentials_temp_control-access_getsessiontoken.md)
+ [Disabilitazione delle autorizzazioni per le credenziali di sicurezza temporanee](id_credentials_temp_control-access_disable-perms.md)
+ [Concessione delle autorizzazioni per creare credenziali di sicurezza temporanee](id_credentials_temp_control-access_enable-create.md)
+ [Concessione delle autorizzazioni per l’utilizzo di sessioni di console rafforzate con l’identità](id_credentials_temp_control-access_sts-setcontext.md)

# Autorizzazioni per AssumeRole, AssumeRoleWith SAML e AssumeRoleWithWebIdentity
<a name="id_credentials_temp_control-access_assumerole"></a>

La policy di autorizzazione del ruolo assunto determina le autorizzazioni per le credenziali di sicurezza temporanee restituite da `AssumeRole`, `AssumeRoleWithSAML` e `AssumeRoleWithWebIdentity`. Puoi definire queste autorizzazioni quando crei o aggiorni il ruolo. 

Facoltativamente, puoi trasferire le [policy di sessione](access_policies.md#policies_session) inline o gestite come parametri delle operazioni API `AssumeRole`, `AssumeRoleWithSAML` o `AssumeRoleWithWebIdentity`. Le policy di sessione limitano le autorizzazioni per la sessione con credenziali temporanee del ruolo. Le autorizzazioni della sessione risultante sono l'intersezione della policy basata sull'identità del ruolo e delle policy di sessione. Puoi utilizzare le credenziali temporanee del ruolo nelle successive chiamate AWS API per accedere alle risorse dell'account proprietario del ruolo. Non puoi utilizzare policy di sessione per concedere autorizzazioni maggiori rispetto a quelle consentite dalla policy basata su identità del ruolo che viene assunto. Per ulteriori informazioni su come AWS determina le autorizzazioni valide di un ruolo, consulta [Logica di valutazione delle policy](reference_policies_evaluation-logic.md).

![\[PermissionsWhenPassingRoles_Diagramma\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/role_passed_policy_permissions.png)


Le politiche allegate alle credenziali a cui è stata effettuata la chiamata originale non `AssumeRole` vengono valutate AWS quando si prende la decisione di autorizzazione «consentire» o «negare». L'utente rinuncia temporaneamente alle autorizzazioni originali a favore delle autorizzazioni assegnate dal ruolo assunto. Nel caso delle operazioni `AssumeRoleWithSAML` e dell'`AssumeRoleWithWebIdentity`API, non ci sono policy da valutare perché il chiamante dell'API non è un'identità. AWS 

## Esempio: assegnazione di autorizzazioni utilizzando AssumeRole
<a name="permissions-assume-role-example"></a>

È possibile usare l'operazione API `AssumeRole` con diversi tipi di policy. Di seguito sono illustrati alcuni esempi.

### Policy di autorizzazione di un ruolo
<a name="permissions-assume-role-example-role-access-policy"></a>

In questo esempio chiami l'operazione API `AssumeRole` senza specificare la policy di sessione nel parametro `Policy` facoltativo. Le autorizzazioni assegnate alle credenziali temporanee sono determinate dalla policy di autorizzazione del ruolo assunto. La policy di autorizzazioni di esempio seguente concede al ruolo l'autorizzazione per elencare tutti gli oggetti contenuti in un bucket S3 denominato `productionapp`. Consente inoltre al ruolo di ottenere, inserire ed eliminare gli oggetti all'interno del bucket.

**Example Policy di autorizzazione di un ruolo di esempio**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::productionapp"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::productionapp/*"
    }
  ]
}
```

### Policy di sessione passata come parametro
<a name="permissions-assume-role-example-passed-policy"></a>

Immaginiamo di voler consentire a un utente di assumere lo stesso ruolo dell'esempio precedente. In questo caso però il ruolo della sessione deve avere l'autorizzazione solo per ottenere e mettere oggetti nel bucket S3 `productionapp`. Non desideri permettere all'utente di eliminare gli oggetti. Un metodo per raggiungere questo scopo consiste nel creare un nuovo ruolo e specificare le autorizzazioni desiderate nella policy di autorizzazione di tale ruolo. Un altro metodo per raggiungere lo scopo consiste nel chiamare l'API `AssumeRole` e includere una policy di sessione nel parametro `Policy` facoltativo come parte dell'operazione API. Le autorizzazioni della sessione risultanti sono l'intersezione tra le policy basate sull'identità del ruolo e le policy di sessione. Le policy di sessione non possono essere utilizzate per concedere autorizzazioni maggiori rispetto a quelle consentite dalla policy basata sull'identità del ruolo che viene assunto. Per ulteriori informazioni sulle autorizzazioni della sessione del ruolo, consulta [Policy di sessione](access_policies.md#policies_session). 

Dopo aver recuperato le credenziali temporanee della nuova sessione, puoi passarle all'utente che deve disporre di tali autorizzazioni.

Immagina, ad esempio, che la policy seguente venga passata come parametro della chiamata API. L'utente che utilizza la sessione dispone di autorizzazioni per eseguire solo le seguenti azioni: 
+ Elencare tutti gli oggetti nel bucket `productionapp`.
+ Ottenere e inserire gli oggetti nel bucket `productionapp`.

Nella policy di sessione seguente, l'autorizzazione `s3:DeleteObject` viene esclusa e alla sessione assunta non viene concessa l'autorizzazione `s3:DeleteObject`. La policy imposta il numero massimo di autorizzazioni per la sessione del ruolo, in modo che sostituisca qualsiasi policy di autorizzazione esistente su quel ruolo.

**Example Esempio di policy di sessione passata con la chiamata API `AssumeRole`**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::productionapp"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::productionapp/*"
    }
  ]
}
```

### Politica basata sulle risorse
<a name="permissions-assume-role-example-resource-based-policy"></a>

Alcune AWS risorse supportano politiche basate sulle risorse e queste politiche forniscono un altro meccanismo per definire le autorizzazioni che influiscono sulle credenziali di sicurezza temporanee. Solo alcune risorse, come i bucket Amazon S3, gli argomenti Amazon SNS e le code Amazon SQS, supportano le policy basate sulle risorse. L'esempio seguente fornisce ulteriori informazioni sugli esempi precedenti, utilizzando un bucket S3, denominato `productionapp`. La policy seguente è collegata al bucket. 

Quando colleghi la seguente policy basata su risorse al bucket `productionapp`, a *tutti* gli utenti viene negata l'autorizzazione per eliminare gli oggetti dal bucket. (Consulta l'elemento `Principal` nella policy). Ciò include tutti gli utenti che assumono il ruolo, anche se la policy di autorizzazione del ruolo concede l'autorizzazione `DeleteObject`. Un'istruzione `Deny` esplicita ha sempre la precedenza su un'istruzione `Allow`.

**Example Esempio di policy di bucket**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Principal": {"AWS": "*"},
    "Effect": "Deny",
    "Action": "s3:DeleteObject",
    "Resource": "arn:aws:s3:::productionapp/*"
  }
}
```

Per ulteriori informazioni su come più tipi di policy vengono combinati e valutati da. AWS[Logica di valutazione delle policy](reference_policies_evaluation-logic.md)

# Monitoraggio e controllo delle operazioni intraprese con i ruoli assunti
<a name="id_credentials_temp_control-access_monitor"></a>

Un [ruolo IAM](id_roles.md) è un oggetto in IAM a cui sono assegnate delle [autorizzazioni](access_policies.md). Quando [assumi quel ruolo](id_roles_manage-assume.md) utilizzando un'identità IAM o un'identità esterna AWS, ricevi una sessione con le autorizzazioni assegnate al ruolo. 

Quando esegui azioni in AWS, le informazioni sulla sessione possono essere registrate AWS CloudTrail per essere monitorate dall'amministratore dell'account. Gli amministratori possono configurare i ruoli in modo da richiedere alle identità di inviare una stringa personalizzata che identifichi la persona o l'applicazione che esegue operazioni in AWS. Queste informazioni di identità vengono archiviate come *identità di origine* in AWS CloudTrail. Quando l'amministratore esamina l'attività in CloudTrail, può visualizzare le informazioni sull'identità di origine per determinare chi o cosa ha eseguito le azioni nelle sessioni di ruolo assunte.

Una volta impostata, l'identità di origine è presente nelle richieste di qualsiasi AWS azione intrapresa durante la sessione di ruolo. Il valore impostato persiste quando un ruolo viene utilizzato per assumere un altro ruolo tramite l' AWS API AWS CLI o, nota come [concatenamento dei ruoli](id_roles.md#iam-term-role-chaining). Il valore impostato non può essere modificato durante la sessione del ruolo. Gli amministratori possono configurare autorizzazioni granulari in base alla presenza o al valore dell'identità di origine per controllare ulteriormente AWS le azioni intraprese con ruoli condivisi. È possibile decidere se l'attributo dell'identità di origine può essere utilizzato, se è obbligatorio e quale valore può essere utilizzato.



Il modo in cui si utilizza l'identità di origine differisce dal nome della sessione di ruolo e dai tag di sessione in modo importante. Il valore dell'identità di origine non può essere modificato dopo l'impostazione e persiste per eventuali operazioni aggiuntive eseguite con la sessione del ruolo. Ecco come utilizzare i tag di sessione e il nome della sessione del ruolo: 
+ **Tag di sessione**: puoi passare i tag di sessione quando assumi un ruolo o federi un utente. I tag di sessione sono presenti quando si assume un ruolo. È possibile definire policy che utilizzano le chiavi condizionali sui tag per concedere autorizzazioni ai principali sulla base dei relativi tag. Quindi puoi utilizzarle CloudTrail per visualizzare le richieste fatte per assumere ruoli o federare gli utenti. Per ulteriori informazioni sui tag di sessione, consulta [Passa i tag di sessione AWS STS](id_session-tags.md).
+ **Nome sessione del ruolo**: puoi utilizzare la chiave di condizione `sts:RoleSessionName` in una policy di attendibilità del ruolo per richiedere che gli utenti forniscano un nome di sessione specifico quando assumono un ruolo. Il nome della sessione del ruolo può essere utilizzato per distinguere le sessioni del ruolo quando un ruolo viene utilizzato da principali diversi. Per saperne di più sul nome della sessione di ruolo, vedi [sts: RoleSessionName](reference_policies_iam-condition-keys.md#ck_rolesessionname).

Si consiglia di utilizzare l'identità di origine quando si desidera controllare l'identità che assume un ruolo. L'identità di origine è utile anche per CloudTrail i log di mining per determinare chi ha utilizzato il ruolo per eseguire azioni. 

**Topics**
+ [Configurazione per l'uso dell'identità di origine](#id_credentials_temp_control-access_monitor-setup)
+ [Cose da sapere sull'identità di origine](#id_credentials_temp_control-access_monitor-know)
+ [Autorizzazioni necessarie per impostare l'identità di origine](#id_credentials_temp_control-access_monitor-perms)
+ [Specifica di un'identità di origine quando si assume un ruolo](#id_credentials_temp_control-access_monitor-specify-sourceid)
+ [Utilizzo dell'identità di origine con AssumeRole](#id_credentials_temp_control-access_monitor-assume-role)
+ [Utilizzo dell'identità di origine con SAML AssumeRoleWith](#id_credentials_temp_control-access_monitor-assume-role-saml)
+ [Utilizzo dell'identità di origine con AssumeRoleWithWebIdentity](#id_credentials_temp_control-access_monitor-assume-role-web-id)
+ [Controllo dell'accesso tramite le informazioni sull'identità di origine](#id_credentials_temp_control-access_monitor-control-access)
+ [Visualizzazione dell'identità di origine in CloudTrail](#id_credentials_temp_control-access_monitor-ct)

## Configurazione per l'uso dell'identità di origine
<a name="id_credentials_temp_control-access_monitor-setup"></a>

Il modo in cui si imposta l'utilizzo dell'identità di origine dipende dal metodo utilizzato quando si assumono i ruoli. Ad esempio, gli utenti IAM potrebbero assumere ruoli direttamente utilizzando l'operazione `AssumeRole`. Se disponi di identità aziendali, note anche come identità della forza lavoro, queste potrebbero accedere alle tue risorse utilizzando. AWS `AssumeRoleWithSAML` Se gli utenti finali accedono alle tue applicazioni per dispositivi mobile o Web, potrebbero farlo utilizzando `AssumeRoleWithWebIdentity`. Di seguito è riportata una panoramica di alto livello del flusso di lavoro che consente di comprendere come impostare l'utilizzo delle informazioni sull'identità di origine nell'ambiente esistente.

1. **Configurazione di utenti e ruoli di test**: in un ambiente di preproduzione, configura utenti e ruoli di prova e configura le relative policy per consentire l'impostazione di un'identità di origine.

   Se utilizzi un provider di identità (IdP) per le identità federate, configura l'IdP per inviare un attributo utente a scelta per l'identità di origine nell'asserzione o nel token.

1. **Assunzione del ruolo**: verifica l'assunzione di ruoli e l'invio di un'identità di origine con gli utenti e i ruoli impostati per il test.

1. **Revisione CloudTrail**: rivedi le informazioni sull'identità di origine per i ruoli di test nei tuoi registri. CloudTrail 

1. **Formazione degli utenti**: dopo aver eseguito il test nell'ambiente di preproduzione, assicurati che gli utenti sappiano come inviare le informazioni sull'identità di origine, se necessario. Imposta una scadenza per il momento in cui sarà richiesto agli utenti di fornire un'identità di origine nell'ambiente di produzione.

1. **Configurazione delle policy di produzione**: configura le policy per l'ambiente di produzione e quindi aggiungile agli utenti e ai ruoli di produzione.

1. **Monitora l'attività**: monitora l'attività del ruolo di produzione utilizzando i CloudTrail log.

## Cose da sapere sull'identità di origine
<a name="id_credentials_temp_control-access_monitor-know"></a>

Quando si utilizza un'identità di origine, tieni presente quanto segue.
+ Le policy di attendibilità per tutti i ruoli connessi a un provider di identità (IdP) devono disporre dell'autorizzazione `sts:SetSourceIdentity`. Per i ruoli che non dispongono di questa autorizzazione nella policy di attendibilità, l'operazione `AssumeRole*` avrà esito negativo. Se non desideri aggiornare la policy di attendibilità del ruolo per ogni ruolo, puoi utilizzare un'istanza IdP separata per passare l'identità di origine. Quindi, aggiungere l'autorizzazione `sts:SetSourceIdentity` solo ai ruoli connessi all'IdP separato.
+ Quando un'identità imposta un'identità di origine, la chiave `sts:SourceIdentity` è presente nella richiesta. Per le azioni successive intraprese durante la sessione di ruolo, la chiave `aws:SourceIdentity` è presente nella richiesta. AWS non controlla il valore dell'identità di origine nelle chiavi `sts:SourceIdentity` o `aws:SourceIdentity`. Se decidi di richiedere un'identità di origine, è necessario scegliere un attributo che sia fornito dagli utenti o dall'IdP. Per motivi di sicurezza, è necessario assicurarsi di poter controllare il modo in cui tali valori vengono forniti.
+ Il valore dell'identità di origine deve contenere tra 2 e 64 caratteri, può contenere solo caratteri alfanumerici, caratteri di sottolineatura e i seguenti caratteri: **. , \$1 = @ -** (trattino). Non è possibile utilizzare un valore che inizia con il testo **aws:**. Questo prefisso è riservato all'uso AWS interno.
+ Le informazioni sull'identità di origine non vengono acquisite CloudTrail quando un AWS servizio o un ruolo collegato al servizio esegue un'azione per conto di un'identità federata o della forza lavoro. 

**Importante**  
Non è possibile passare a un ruolo Console di gestione AWS che richiede l'impostazione di un'identità di origine al momento dell'assunzione del ruolo. Per assumere un ruolo di questo tipo, è possibile utilizzare l' AWS API AWS CLI or per richiamare l'`AssumeRole`operazione e specificare il parametro source identity.

## Autorizzazioni necessarie per impostare l'identità di origine
<a name="id_credentials_temp_control-access_monitor-perms"></a>

Oltre a quella sull'operazione che corrisponde all'operazione API, è necessario disporre nella policy dell'autorizzazione per le seguenti operazioni: 

```
sts:SetSourceIdentity
```
+ Per specificare un'identità di origine, i principali (utenti e ruoli IAM) devono disporre delle autorizzazioni per`sts:SetSourceIdentity`. In qualità di amministratore, puoi configurarlo nella policy di attendibilità del ruolo e nella policy di autorizzazione del principale.
+ Quando si assume un ruolo con un altro ruolo, secondo la funzione denominata [concatenamento dei ruoli](id_roles.md#iam-term-role-chaining), le autorizzazioni per `sts:SetSourceIdentity` sono necessarie sia nella policy di autorizzazione del principale che assume il ruolo sia nella policy di attendibilità del ruolo del ruolo di destinazione. In caso contrario, l'operazione di assunzione del ruolo avrà esito negativo.
+ Quando si utilizza l'identità di origine, le policy di attendibilità dei ruoli per tutti i ruoli connessi a un provider di identità (IdP) devono disporre dell'autorizzazione `sts:SetSourceIdentity`. L'operazione `AssumeRole*` avrà esito negativo per qualsiasi ruolo connesso a un IdP senza questa autorizzazione. Se non desideri aggiornare la policy di attendibilità del ruolo per ogni ruolo, puoi utilizzare un'istanza IdP separata per inviare l'identità di origine e aggiungere l'autorizzazione `sts:SetSourceIdentity` solo ai ruoli connessi all'IdP separato.
+ Per impostare un'identità di origine oltre i limiti dell'account, è necessario includere l'autorizzazione `sts:SetSourceIdentity` in due posti. Deve trovarsi nella policy di autorizzazione del principale nell'account di origine e nella policy di attendibilità del ruolo del ruolo nell'account di destinazione. Questa operazione potrebbe essere necessaria, ad esempio, quando un ruolo viene utilizzato per assumere un ruolo in un altro account con il [concatenamento dei ruoli](id_roles.md#iam-term-role-chaining).

Come amministratore dell'account, immagina di voler consentire all'utente IAM `DevUser` nel tuo account per assumere il `Developer_Role` nello stesso account. Tuttavia, si desidera consentire questa operazione solo se l'utente ha impostato l'identità di origine sul proprio nome utente IAM. La seguente policy può essere collegata a un utente IAM.

**Example Esempio di politica basata sull'identità allegata a DevUser**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AssumeRole",
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::123456789012:role/Developer_Role"
    },
    {
      "Sid": "SetAwsUserNameAsSourceIdentity",
      "Effect": "Allow",
      "Action": "sts:SetSourceIdentity",
      "Resource": "arn:aws:iam::123456789012:role/Developer_Role",
      "Condition": {
        "StringLike": {
          "sts:SourceIdentity": "${aws:username}"
        }
      }
    }
  ]
}
```

Per applicare i valori di identità di origine accettabili, è possibile configurare la policy di attendibilità del ruolo riportata di seguito. La policy fornisce all'utente IAM le autorizzazioni `DevUser`per assumere il ruolo e impostare un'identità di origine. La chiave di condizione `sts:SourceIdentity` definisce il valore di identità di origine accettabile.

**Example Esempio di policy di attendibilità dei ruoli dell'identità di origine**  

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowDevUserAssumeRole",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:user/DevUser"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:SetSourceIdentity"
      ],
      "Condition": {
        "StringEquals": {
          "sts:SourceIdentity": "DevUser"
        }
      }
    }
  ]
}
```

------

Utilizzando le credenziali per l'utente IAM`DevUser`, l'utente tenta di presumere l'`DeveloperRole`utilizzo della seguente richiesta. AWS CLI 

**Example Richiesta AssumeRole CLI di esempio**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/Developer_Role \
--role-session-name Dev-project \ 
--source-identity DevUser \
```

Quando AWS valuta la richiesta, il contesto della richiesta contiene il `sts:SourceIdentity` comando di. `DevUser`

## Specifica di un'identità di origine quando si assume un ruolo
<a name="id_credentials_temp_control-access_monitor-specify-sourceid"></a>

È possibile specificare un'identità di origine quando si utilizza una delle operazioni AWS STS `AssumeRole*` API per ottenere credenziali di sicurezza temporanee per un ruolo. L'operazione API che usi è diversa a seconda del caso d'uso. Ad esempio, se utilizzi i ruoli IAM per consentire agli utenti IAM di accedere a AWS risorse a cui normalmente non hanno accesso, potresti utilizzare l'`AssumeRole`operazione. Se utilizzi la federazione delle identità aziendali per gestire gli utenti della forza lavoro, puoi utilizzare l'operazione `AssumeRoleWithSAML`. Se utilizzi la federazione OIDC per consentire agli utenti finali di accedere alle applicazioni mobili o Web, puoi utilizzare l'operazione `AssumeRoleWithWebIdentity`. Nelle sezioni seguenti viene illustrato come utilizzare l'identità di origine per ogni operazione. Per ulteriori informazioni sugli scenari comuni per le credenziali temporanee, consulta [Scenari comuni per le credenziali temporanee](id_credentials_temp.md#sts-introduction).

## Utilizzo dell'identità di origine con AssumeRole
<a name="id_credentials_temp_control-access_monitor-assume-role"></a>

L'`AssumeRole`operazione restituisce un set di credenziali temporanee che è possibile utilizzare per accedere alle AWS risorse. È possibile utilizzare le credenziali dell'utente o del ruolo IAM per chiamare `AssumeRole`. Per passare l'identità di origine mentre assumi un ruolo, utilizzate l'`-–source-identity` AWS CLI opzione o il parametro `SourceIdentity` AWS API. L'esempio seguente illustra come specificare l'identità di origine utilizzando la AWS CLI.

**Example Richiesta AssumeRole CLI di esempio**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/developer \
--role-session-name Audit \ 
--source-identity Admin \
```

## Utilizzo dell'identità di origine con SAML AssumeRoleWith
<a name="id_credentials_temp_control-access_monitor-assume-role-saml"></a>

Il principale che richiama l'operazione `AssumeRoleWithSAML` viene autenticato utilizzando la federazione basata su SAML. Questa operazione restituisce un set di credenziali temporanee che puoi utilizzare per accedere AWS alle risorse. Per ulteriori informazioni sull'utilizzo della federazione basata su SAML per Console di gestione AWS l'accesso, consulta. [Consentire ai principali federati SAML 2.0 di accedere a Console di gestione AWS](id_roles_providers_enable-console-saml.md) Per dettagli sull'accesso alle AWS CLI nostre AWS API, consulta. [Federazione SAML 2.0](id_roles_providers_saml.md) Per un tutorial sulla configurazione della federazione SAML per gli utenti di Active Directory, consulta [AWS Federated Authentication with Active Directory Federation Services (ADFS)](https://aws.amazon.com/blogs/security/aws-federated-authentication-with-active-directory-federation-services-ad-fs/) nel AWS Security Blog. 

In qualità di amministratore, puoi consentire ai membri della tua directory aziendale di unirsi AWS per utilizzare l'operazione. AWS STS `AssumeRoleWithSAML` A tale scopo, è necessario completare le seguenti attività:

1. [Configura un provider SAML nella tua organizzazione](id_roles_providers_saml_3rd-party.md).

1. [Creazione di un provider SAML in IAM](id_roles_providers_create_saml.md).

1. [Configura un ruolo e le relative autorizzazioni AWS per i tuoi responsabili federati SAML.](id_roles_create_for-idp_saml.md)

1. [Fine della configurazione del provider di identità SAML e creazione di asserzioni per la risposta di autenticazione SAML](id_roles_providers_create_saml_assertions.md)

Per impostare un attributo SAML per l'identità di origine, includi l'elemento `Attribute` con l'attributo `Name` impostato su `https://aws.amazon.com/SAML/Attributes/SourceIdentity`. Utilizza l'elemento `AttributeValue` per specificare il valore dell'identità di origine. Ad esempio, si supponga di voler passare i seguenti attributi di identità come identità di origine: 

`SourceIdentity:DiegoRamirez`

Per passare questi attributi, includi i seguenti elementi nell'asserzione SAML.

**Example Esempio di frammento di un'asserzione SAML**  

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/SourceIdentity">
<AttributeValue>DiegoRamirez</AttributeValue>
</Attribute>
```

## Utilizzo dell'identità di origine con AssumeRoleWithWebIdentity
<a name="id_credentials_temp_control-access_monitor-assume-role-web-id"></a>

Il principale che richiama l'operazione `AssumeRoleWithWebIdentity` viene autenticato utilizzando la federazione compatibile con OpenID Connect (OIDC). Questa operazione restituisce un insieme di credenziali temporanee che è possibile utilizzare per accedere alle risorse di AWS . Per ulteriori informazioni sull'utilizzo della federazione OIDC per l'accesso alla Console di gestione AWS , consulta [Federazione OIDC](id_roles_providers_oidc.md).

Per passare l'identità di origine da OpenID Connect (OIDC), è necessario includere l'identità di origine nel Token Web JSON (JWT). Includi l’identità di origine nel namespace `[https://aws.amazon.com/](https://aws.amazon.com/)source_identity` nel token quando si invia la richiesta `AssumeRoleWithWebIdentity`. Per ulteriori informazioni sui token e le registrazioni OIDC, consultare [Utilizzo di token con pool di utenti](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html) nella *Guida per gli sviluppatori Amazon Cognito *.

Ad esempio, il seguente JWT decodificato è un token utilizzato per chiamare `AssumeRoleWithWebIdentity` con l'identità di origine `Admin`.

**Example Esempio di token Web JSON decodificato**  

```
{
    "sub": "john",
    "aud": "ac_oic_client",
    "jti": "ZYUCeRMQVtqHypVPWAN3VB",
    "iss": "https://xyz.com",
    "iat": 1566583294,
    "exp": 1566583354,
    "auth_time": 1566583292,
    "https://aws.amazon.com/source_identity":"Admin"
}
```

## Controllo dell'accesso tramite le informazioni sull'identità di origine
<a name="id_credentials_temp_control-access_monitor-control-access"></a>

Quando viene inizialmente impostata un'identità di origine, la SourceIdentity chiave [sts:](reference_policies_iam-condition-keys.md#ck_sourceidentity) è presente nella richiesta. Dopo aver impostato un'identità di origine, la SourceIdentity chiave [aws:](reference_policies_condition-keys.md#condition-keys-sourceidentity) è presente in tutte le richieste successive effettuate durante la sessione di ruolo. In qualità di amministratore, puoi scrivere politiche che concedano l'autorizzazione condizionale per eseguire AWS azioni in base all'esistenza o al valore dell'attributo di identità di origine.

Immagina di voler richiedere ai tuoi sviluppatori di impostare un'identità di origine per assumere un ruolo fondamentale con il permesso di scrivere su una AWS risorsa fondamentale per la produzione. Immaginate inoltre di concedere AWS l'accesso alle identità della vostra forza lavoro utilizzando. `AssumeRoleWithSAML` Desideri solo che gli sviluppatori senior Saanvi e Diego abbiano accesso al ruolo, in modo che possano creare le seguenti policy di attendibilità per il ruolo.

**Example Esempio di policy di attendibilità dei ruoli dell'identità di origine (SAML)**  

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "SAMLProviderAssumeRoleWithSAML",
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::111122223333:saml-provider/name-of-identity-provider"
      },
      "Action": [
        "sts:AssumeRoleWithSAML"
      ],
      "Condition": {
        "StringEquals": {
          "SAML:aud": "https://signin.aws.amazon.com/saml"
        }
      }
    },
    {
      "Sid": "SetSourceIdentitySrEngs",
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::111122223333:saml-provider/name-of-identity-provider"
      },
      "Action": [
        "sts:SetSourceIdentity"
      ],
      "Condition": {
        "StringLike": {
          "sts:SourceIdentity": [
            "Saanvi",
            "Diego"
          ]
        }
      }
    }
  ]
}
```

------

La policy di attendibilità contiene una condizione per `sts:SourceIdentity` che richiede un'identità di origine impostata su Saanvi o Diego per assumere il ruolo critico.

In alternativa, se si utilizza un provider OIDC per la federazione e gli utenti sono autenticati con `AssumeRoleWithWebIdentity`, la tua policy di attendibilità del ruolo potrebbe avere un aspetto simile al seguente.

**Example Esempio di policy di attendibilità dei ruoli dell'identità di origine (provider OIDC)**  

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::111122223333:oidc-provider/server.example.com"
      },
      "Action": [
        "sts:AssumeRoleWithWebIdentity",
        "sts:SetSourceIdentity"
      ],
      "Condition": {
        "StringEquals": {
          "server.example.com:aud": "oidc-audience-id"
        },
        "StringLike": {
          "sts:SourceIdentity": [
            "Saanvi",
            "Diego"
          ]
        }
      }
    }
  ]
}
```

------

### Concatenamento dei ruoli e requisiti tra account
<a name="id_credentials_temp_control-access_monitor-chain"></a>

Immagina di voler consentire agli utenti che hanno assunto il ruolo `CriticalRole` di assumere un ruolo `CriticalRole_2` in un altro account. Le credenziali della sessione del ruolo ottenute per assumere `CriticalRole` sono utilizzate per il [concatenamento dei ruoli](id_roles.md#iam-term-role-chaining) per un secondo ruolo, `CriticalRole_2`, in un account diverso. Il ruolo viene assunto oltre un limite di account. Pertanto, l'autorizzazione `sts:SetSourceIdentity` deve essere concessa in entrambe le policy di autorizzazione su `CriticalRole` e nella policy di attendibilità del ruolo su `CriticalRole_2`.

**Example Esempio di politica di autorizzazione su CriticalRole**  

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AssumeRoleAndSetSourceIdentity",
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole",
        "sts:SetSourceIdentity"
      ],
      "Resource": "arn:aws:iam::222222222222:role/CriticalRole_2"
    }
  ]
}
```

------

Per proteggere l'impostazione dell'identità di origine attraverso il limite dell'account, la seguente policy di attendibilità del ruolo considera attendibile solo il principale del ruolo per `CriticalRole` per impostare l'identità di origine.

**Example Esempio di politica di fiducia dei ruoli su \$12 CriticalRole**  

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111111111111:role/CriticalRole"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:SetSourceIdentity"
      ],
      "Condition": {
        "StringLike": {
          "aws:SourceIdentity": ["Saanvi","Diego"]
        }
      }
    }
  ]
}
```

------

L'utente effettua la chiamata seguente utilizzando le credenziali della sessione di ruolo ottenute da assumendo. CriticalRole L'identità di origine è stata impostata durante l'assunzione di CriticalRole, quindi non è necessario impostarla nuovamente in modo esplicito. Se l'utente prova a impostare un'identità di origine diversa dal set di valori quando è stato assunto `CriticalRole`, la richiesta di assumere il ruolo verrà rifiutata.

**Example Richiesta AssumeRole CLI di esempio**  

```
aws sts assume-role \ 
--role-arn arn:aws:iam::222222222222:role/CriticalRole_2 \
--role-session-name Audit \
```

Quando il principale chiamante assume il ruolo, l'identità di origine nella richiesta persiste dalla prima sessione del ruolo assunto. Pertanto, entrambe le chiavi `aws:SourceIdentity` e `sts:SourceIdentity` sono presenti nel contesto della richiesta.

## Visualizzazione dell'identità di origine in CloudTrail
<a name="id_credentials_temp_control-access_monitor-ct"></a>

È possibile utilizzare CloudTrail per visualizzare le richieste fatte per assumere ruoli o federare gli utenti. È inoltre possibile visualizzare le richieste di ruoli o utenti per eseguire operazioni in AWS. Il file di CloudTrail registro include informazioni sull'identità di origine impostata per il ruolo assunto o la sessione utente federata. Per ulteriori informazioni, consulta [Registrazione delle chiamate IAM e AWS STS API con AWS CloudTrail](cloudtrail-integration.md)

Ad esempio, supponiamo che un utente effettui una AWS STS `AssumeRole` richiesta e imposti un'identità di origine. Puoi trovare le `sourceIdentity` informazioni nella `requestParameters` chiave del tuo CloudTrail registro.

**Example Esempio di sezione RequestParameters in un registro AWS CloudTrail**  

```
"eventVersion": "1.05",
    "userIdentity": {
        "type": "AWSAccount",
        "principalId": "AIDAJ45Q7YFFAREXAMPLE",
        "accountId": "111122223333"
    },
    "eventTime": "2020-04-02T18:20:53Z",
    "eventSource": "sts.amazonaws.com",
    "eventName": "AssumeRole",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "203.0.113.64",
    "userAgent": "aws-cli/1.16.96 Python/3.6.0 Windows/10 botocore/1.12.86",
    "requestParameters": {
        "roleArn": "arn:aws:iam::123456789012:role/DevRole",
        "roleSessionName": "Dev1",
        "sourceIdentity": "source-identity-value-set"
    }
```

Se l'utente utilizza la sessione di ruolo presunta per eseguire un'azione, le informazioni sull'identità di origine sono presenti nella `userIdentity` chiave del CloudTrail registro.

**Example Esempio di chiave UserIdentity in un registro AWS CloudTrail**  

```
{
  "eventVersion": "1.08",
  "userIdentity": {
    "type": "AssumedRole",
    "principalId": "AROAJ45Q7YFFAREXAMPLE:Dev1",
    "arn": "arn:aws:sts::123456789012:assumed-role/DevRole/Dev1",
    "accountId": "123456789012",
    "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
    "sessionContext": {
      "sessionIssuer": {
        "type": "Role",
        "principalId": "AROAJ45Q7YFFAREXAMPLE",
        "arn": "arn:aws:iam::123456789012:role/DevRole",
        "accountId": "123456789012",
        "userName": "DevRole"
      },
      "webIdFederationData": {},
      "attributes": {
        "mfaAuthenticated": "false",
        "creationDate": "2021-02-21T23:46:28Z"
      },
      "sourceIdentity": "source-identity-value-present"
    }
  }
}
```

Per vedere esempi di eventi AWS STS API nei CloudTrail log, consulta. [Esempi di eventi dell'API IAM nel registro CloudTrail](cloudtrail-integration.md#cloudtrail-integration_examples-iam-api) Per maggiori dettagli sulle informazioni contenute nei file di CloudTrail registro, consulta [CloudTrail Event Reference](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/eventreference.html) nella *Guida per l'AWS CloudTrail utente*.

# Autorizzazioni per GetFederationToken
<a name="id_credentials_temp_control-access_getfederationtoken"></a>

L'operazione `GetFederationToken` viene chiamata da un utente IAM e restituisce le credenziali temporanee per tale utente. Questa operazione *consolida* l'utente. Le autorizzazioni assegnate a una sessione utente AWS STS federata sono definite in una delle due posizioni seguenti: 
+ Le policy di sessione passate come un parametro della chiamata API `GetFederationToken`. (Questo è più comune).
+ Una politica basata sulle risorse che nomina esplicitamente la sessione utente AWS STS federata nell'elemento della politica. `Principal` (Questo è meno comune).

Le policy di sessione sono policy avanzate che vengono passate come parametri quando si crea una sessione temporanea a livello di programma. Quando si crea una sessione utente AWS STS federata e si passano i criteri di sessione, le autorizzazioni della sessione risultanti sono l'intersezione tra la politica basata sull'identità dell'utente e le politiche di sessione. Non puoi utilizzare la policy di sessione per concedere autorizzazioni maggiori rispetto a quelle consentite dalla policy basata su identità dell'utente che viene federato.

Nella maggior parte dei casi, se non si passa una policy con la chiamata API `GetFederationToken`, le credenziali di sicurezza temporanee risultanti non dispongono di autorizzazioni. Tuttavia, una policy basata sulle risorse è in grado di fornire ulteriori autorizzazioni per la sessione. Puoi accedere a una risorsa con una policy basata sulle risorse che specifica la sessione come l'entità principale consentita. 

Le seguenti immagini mostrano una rappresentazione visiva di come le policy interagiscono per determinare le autorizzazioni per le credenziali di sicurezza provvisorie restituite da una chiamata a `GetFederationToken`.

![\[Utente IAM Le seguenti illustrazioni mostrano i segni di spunta per indicare che le autorizzazioni di sessione sono l'intersezione della policy basata sull'identità dell'utente e le policy di sessione. Le autorizzazioni di sessione possono inoltre essere l'intersezione delle policy basate sulle identità e delle policy basate sulle risorse dell'utente.\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/getfederationtoken-permissions.diagram.png)


## Esempio: assegnazione di autorizzazioni tramite GetFederationToken
<a name="permissions-get-federation-token-example"></a>

È possibile utilizzare l'operazione API `GetFederationToken` con diversi tipi di policy. Di seguito sono illustrati alcuni esempi.

### Policy collegata all'utente IAM
<a name="permissions-get-federation-token-example-iam-user"></a>

In questo esempio, disponi di un'applicazione client basata sul browser che si avvale di due servizi Web di backend. Un servizio di backend è il tuo server di autenticazione che utilizza un sistema di identità per autenticare l'applicazione client. L'altro servizio di backend è un servizio AWS che fornisce alcune delle funzionalità dell'applicazione client. L'applicazione client viene autenticata mediante il tuo server, il quale crea o recupera la policy di autorizzazione appropriata. Il server chiama l'API `GetFederationToken` per ottenere le credenziali di sicurezza provvisorie e restituisce tali credenziali all'applicazione client. L'applicazione client può quindi effettuare richieste direttamente al AWS servizio con le credenziali di sicurezza temporanee. Questa architettura consente all'applicazione client di effettuare AWS richieste senza incorporare credenziali a lungo termine AWS .

Il tuo server di autenticazione chiama l'API `GetFederationToken` con le credenziali di sicurezza a lungo termine di un utente IAM denominato `token-app`. Tuttavia, le credenziali utente IAM a lungo termine rimangono nel server e non vengono mai distribuite al client. La seguente policy di esempio è allegata all'utente `token-app` IAM e definisce il set più ampio di autorizzazioni di cui avranno bisogno gli utenti AWS STS federati (client). Tieni presente che l'`sts:GetFederationToken`autorizzazione è necessaria affinché il servizio di autenticazione ottenga credenziali di sicurezza temporanee per gli utenti federati. AWS STS 

**Example Esempio di policy collegata all'utente IAM `token-app` che chiama `GetFederationToken`**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:GetFederationToken",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "dynamodb:ListTables",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "sqs:ReceiveMessage",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "sns:ListSubscriptions",
      "Resource": "*"
    }
  ]
}
```

La policy precedente concede diverse autorizzazioni all'utente IAM. Tuttavia, questa politica da sola non concede alcuna autorizzazione all'utente federato AWS STS . Se questo utente IAM chiama `GetFederationToken` e non passa una policy come parametro della chiamata API, l'utente AWS STS federato risultante non dispone di autorizzazioni valide. 

### Policy di sessione passata come parametro
<a name="permissions-get-federation-token-example-passed-policy"></a>

Il modo più comune per garantire che all'utente AWS STS federato venga assegnata l'autorizzazione appropriata consiste nel trasmettere le politiche di sessione nella `GetFederationToken` chiamata API. Sulla base dell'esempio precedente, immagina che `GetFederationToken` venga chiamato con le credenziali dell'utente IAM `token-app`. Quindi, immagina che la policy di sessione seguente venga passata come un parametro della chiamata API. L’utente federato AWS STS risultante dispone dell’autorizzazione per elencare i contenuti del bucket Amazon S3 denominato `productionapp`. L'utente non può eseguire le operazioni `GetObject`, `PutObject` e `DeleteObject` di Amazon S3 su elementi nel bucket `productionapp`.

All'utente federato vengono assegnate queste autorizzazioni perché le autorizzazioni sono l'intersezione delle policy utente IAM e delle policy di sessione che vengono passate.

L'utente AWS STS federato non poteva eseguire azioni in Amazon SNS, Amazon SQS, Amazon DynamoDB o in nessun bucket S3 tranne. `productionapp` Queste operazioni sono rifiutate anche se tali autorizzazioni sono concesse all'utente IAM associato alla chiamata `GetFederationToken`.

**Example Esempio di policy di sessione passata come parametro della chiamata API `GetFederationToken`.**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::productionapp"]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": ["arn:aws:s3:::productionapp/*"]
    }
  ]
}
```

### Policy basate sulle risorse
<a name="permissions-get-federation-token-resource-based-policy"></a>

Alcune AWS risorse supportano politiche basate sulle risorse e queste politiche forniscono un altro meccanismo per concedere le autorizzazioni direttamente a un utente federato. AWS STS Solo alcuni servizi supportano politiche basate sulle risorse AWS . Ad esempio, Amazon S3 ha i bucket, Amazon SNS ha gli argomenti e Amazon SQS ha le code, tutti elementi ai quali è possibile collegare le policy. Per un elenco di tutti i servizi che supportano le policy basate su risorse, consulta [AWS servizi che funzionano con IAM](reference_aws-services-that-work-with-iam.md) e analizza la colonna "Policy basate su risorse" delle tabelle. È possibile utilizzare politiche basate sulle risorse per assegnare le autorizzazioni direttamente a un utente federato. AWS STS A tale scopo, specifica l'Amazon Resource Name (ARN) dell' AWS STS utente federato nell'elemento della policy basata `Principal` sulle risorse. Ciò viene illustrato nell'esempio seguente espandendo gli esempi precedenti e utilizzando un bucket S3 denominato `productionapp`. 

La policy basata sulle risorse riportata di seguito è collegata al bucket. Questa policy sui bucket consente a un utente AWS STS federato di nome Carol di accedere al bucket. Quando la policy di esempio descritta in precedenza viene allegata all'utente `token-app` IAM, l'utente AWS STS federato di nome Carol è autorizzato a eseguire le azioni e `s3:DeleteObject` le azioni sul `s3:GetObject` `s3:PutObject` bucket denominato. `productionapp` Questo vale anche quando nessuna policy di sessione viene passata come parametro della chiamata API `GetFederationToken`. Questo perché in questo caso all'utente AWS STS federato di nome Carol sono state concesse esplicitamente le autorizzazioni dalla seguente politica basata sulle risorse. 

***Ricorda che a un utente AWS STS federato vengono concesse le autorizzazioni solo quando tali autorizzazioni sono concesse esplicitamente sia all'utente IAM che all'utente federato.*** AWS STS Possono anche essere concesse (all'interno dell'account) da una policy basata sulle risorse che nomina esplicitamente l'utente AWS STS federato nell'`Principal`elemento della policy, come nell'esempio seguente.

**Example Esempio di policy del bucket che consente l'accesso all'utente federato**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Principal": {
            "AWS": "arn:aws:sts::111122223333:federated-user/Carol"
        },
        "Effect": "Allow",
        "Action": [
            "s3:GetObject",
            "s3:PutObject",
            "s3:DeleteObject"
        ],
        "Resource": [
            "arn:aws:s3:::productionapp/*"
        ]
    }
}
```

Per ulteriori informazioni su come vengono valutate le policy, consulta la sezione [Logica di valutazione delle policy](reference_policies_evaluation-logic.md).

# Autorizzazioni per GetSessionToken
<a name="id_credentials_temp_control-access_getsessiontoken"></a>

La principale occasione per chiamare l'operazione API `GetSessionToken` o il comando CLI `get-session-token` è quando un utente deve essere autenticato tramite Multi-Factor Authentication (MFA). È possibile scrivere una policy che permette determinate operazioni solo quando tali operazioni vengono richieste da un utente autenticato con MFA. Per superare i controlli di autorizzazione MFA, un utente deve prima chiamare `GetSessionToken` e includere i parametri facoltativi `SerialNumber` e `TokenCode`. Se l'utente è stato autenticato con un dispositivo MFA, le credenziali restituite dall'operazione API `GetSessionToken` includono il contesto MFA. Tale contesto indica che l'utente viene autenticato con MFA ed è autorizzato per le operazioni API che richiedono l'autenticazione MFA.

## Autorizzazioni richieste per GetSessionToken
<a name="getsessiontoken-permissions-required"></a>

Non è richiesta all'utente alcuna autorizzazione per ottenere un token di sessione. Lo scopo dell'operazione `GetSessionToken` è autenticare l'utente tramite MFA. Non è possibile utilizzare le policy per controllare le operazioni di autenticazione.

Per concedere le autorizzazioni necessarie per eseguire la maggior parte AWS delle operazioni, è necessario aggiungere l'azione con lo stesso nome a una policy. Ad esempio, per creare un utente, occorre utilizzare l'operazione API `CreateUser`, il comando della CLI `create-user` o la Console di gestione AWS. Per eseguire queste operazioni, è necessario disporre di una policy che consenta di accedere all'operazione `CreateUser`.

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

****  

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

------

È possibile includere l'operazione `GetSessionToken` nella policy, ma questo non incide sulla capacità di un utente di eseguire l'operazione `GetSessionToken`.

## Autorizzazioni concesse da GetSessionToken
<a name="getsessiontoken-permissions-granted"></a>

Se la chiamata a `GetSessionToken` viene eseguita con le credenziali di un utente IAM, le credenziali di sicurezza temporanee avranno le stesse autorizzazioni dell'utente IAM. Allo stesso modo, se `GetSessionToken` viene chiamata con Utente root dell'account AWS credenziali, le credenziali di sicurezza temporanee dispongono dei permessi di utente root.

**Nota**  
È consigliabile non chiamare `GetSessionToken` con credenziali dell'utente root Segui invece le [best practice](best-practices-use-cases.md) e crea utenti IAM con le autorizzazioni necessarie. Quindi usa questi utenti IAM per l'interazione quotidiana con. AWS

Le credenziali temporanee ottenute chiamando `GetSessionToken` hanno le funzionalità e le limitazioni seguenti:
+ Puoi utilizzare le credenziali per accedere a passando le credenziali all' Console di gestione AWS endpoint Single Sign-On della federazione all'indirizzo. `https://signin.aws.amazon.com/federation` Per ulteriori informazioni, consulta [Abilita l'accesso personalizzato del broker di identità alla AWS console](id_roles_providers_enable-console-custom-url.md).
+ **Non puoi** utilizzare le credenziali per richiamare le operazioni API IAM o AWS STS . È **possibile** utilizzarle per chiamare le operazioni API per altri servizi. AWS 

Per un confronto tra questa operazione API e i relativi limiti e funzionalità con le altre operazioni API che creano credenziali di sicurezza temporanee, consulta [Confronta le AWS STS credenziali](id_credentials_sts-comparison.md)

Per ulteriori informazioni sull'accesso API protetto da MFA con `GetSessionToken`, consulta [Accesso sicuro alle API con MFA](id_credentials_mfa_configure-api-require.md).

# Disabilitazione delle autorizzazioni per le credenziali di sicurezza temporanee
<a name="id_credentials_temp_control-access_disable-perms"></a>

Le credenziali di sicurezza provvisorie sono valide finché non scadono. Queste credenziali sono valide per la durata specificata, da 900 secondi (15 minuti) a un massimo di 129.600 secondi (36 ore). La durata predefinita della sessione è di 43.200 secondi (12 ore). Puoi revocare queste credenziali, ma devi anche modificare le autorizzazioni per il ruolo o l'utente IAM per bloccare l'uso di credenziali compromesse che consentirebbero attività dannose per l'account. Le autorizzazioni assegnate alle credenziali di sicurezza temporanee vengono valutate ogni volta che vengono utilizzate per effettuare una richiesta. AWS Una volta rimosse tutte le autorizzazioni dalle credenziali, le AWS richieste che le utilizzano hanno esito negativo.

Potrebbero essere necessari alcuni minuti prima che gli aggiornamenti delle politicy siano applicati. Per le sessioni del ruolo IAM, puoi revocare le credenziali di sicurezza temporanee del ruolo per obbligare tutti gli utenti che assumono il ruolo a riautenticarsi e richiedere nuove credenziali. Per ulteriori informazioni, consulta [Revoca delle credenziali di sicurezza provvisorie del ruolo](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_revoke-sessions.html).

Non è possibile modificare le autorizzazioni per un. Utente root dell'account AWS Analogamente, non puoi modificare le autorizzazioni relative alle credenziali di sicurezza temporanee create richiamando `GetFederationToken` o `GetSessionToken` mentre sei collegato come utente root. Per questo motivo, consigliamo di non effettuare la chiamata a `GetFederationToken` o `GetSessionToken` come utente root.

Per le procedure su come modificare le autorizzazioni per un ruolo IAM, consulta [Modificare le autorizzazioni per un utente IAM](id_users_change-permissions.md).

Per le procedure su come modificare le autorizzazioni per un ruolo IAM, consulta [Aggiornamento delle autorizzazioni per un ruolo](id_roles_update-role-permissions.md).

**Importante**  
Non è possibile modificare i ruoli in IAM creati dai set di autorizzazioni del Centro identità IAM. È necessario revocare la sessione attiva del set di autorizzazioni per un utente nel Centro identità IAM. Per ulteriori informazioni, consulta [Revocare le sessioni attive di un ruolo IAM create dai set di autorizzazioni](https://docs.aws.amazon.com/singlesignon/latest/userguide/useraccess.html#revoke-user-permissions) nella *Guida per l'utente del Centro identità IAM*.

**Topics**
+ [Negare l'accesso a tutte le sessioni del ruolo IAM associate a un ruolo](#deny-access-to-all-sessions)
+ [Negare l'accesso a una sessione specifica del ruolo IAM](#deny-access-to-specific-session)
+ [Negare l'accesso alle sessioni delle credenziali di sicurezza temporanee con chiavi di contesto della condizione](#deny-access-to-specific-session-condition-key)
+ [Negare l'accesso a uno specifico principale con policy basate sulle risorse](#deny-access-with-resource-based)

## Negare l'accesso a tutte le sessioni del ruolo IAM associate a un ruolo
<a name="deny-access-to-all-sessions"></a>

Questa procedura nega le autorizzazioni a **tutte** le sessioni del ruolo IAM associate a un ruolo. Usa questo approccio quando hai il dubbio che sia stato effettuato un accesso sospetto da:


+ Principali di un altro account utilizzando l'accesso multi-account
+ Identità di utenti esterni con autorizzazioni per accedere alle AWS risorse del tuo account
+ Utenti che sono stati autenticati in un'applicazione Web o mobile con un provider OIDC

Per modificare o rimuovere le autorizzazioni assegnate alle credenziali di sicurezza provvisorie ottenute richiamando `AssumeRole`, `AssumeRoleWithSAML` o `AssumeRoleWithWebIdentity`, `GetFederationToken` o `GetSessionToken`, puoi modificare o eliminare la policy basata sulle identità che definisce le autorizzazioni per il ruolo.

**Importante**  
Se esiste una policy basata sulle risorse che consente l'accesso principale, devi anche aggiungere un rifiuto esplicito per quella risorsa. Per informazioni dettagliate, vedi [Negare l'accesso a uno specifico principale con policy basate sulle risorse](#deny-access-with-resource-based).

**Per negare l'accesso a **tutte** le sessioni del ruolo IAM associate a un ruolo**

1. Accedi Console di gestione AWS e apri la console IAM.

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

1. Scegli il nome del ruolo da modificare. Puoi utilizzare la casella di ricerca per filtrare l'elenco.

1. Scegli la scheda **Autorizzazioni**.

1. Seleziona la policy pertinente da modificare. Prima di modificare una policy gestita dal cliente, consulta la scheda **Entità collegate** per evitare di interrompere l'accesso ad altre identità che potrebbero avere la stessa policy associata.

1. Scegli la scheda **JSON** e aggiorna la policy per negare tutte le risorse e le azioni.
**Nota**  
Queste autorizzazioni sono le stesse della policy AWS gestita [AWSDenyAll](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSDenyAll.html). Puoi allegare questa policy AWS gestita a qualsiasi utente o ruolo IAM a cui desideri negare qualsiasi accesso.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "DenyAll",
               "Effect": "Deny",
               "Action": [
                   "*"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Nella pagina **Review (Esamina)** controllare **Summary (Riepilogo)** e selezionare **Save changes (Salva modifiche)** per salvare.

Quando si modifica o si elimina la policy, le modifiche riguardano le autorizzazioni di tutte le credenziali di sicurezza provvisorie associate a tale ruolo, tra cui credenziali che sono state rilasciate prima di aver modificato la policy di autorizzazione del ruolo. 

Dopo aver aggiornato la policy, è possibile [revocare le credenziali di sicurezza temporanee del ruolo](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_revoke-sessions.html) per revocare immediatamente tutte le autorizzazioni alle credenziali emesse per il ruolo.

## Negare l'accesso a una sessione specifica del ruolo IAM
<a name="deny-access-to-specific-session"></a>

Quando aggiorni i ruoli IAM con una policy di negazione totale o elimini completamente il ruolo, tutti gli utenti che hanno accesso al ruolo vengono scollegati. Puoi negare l'accesso senza influire sulle autorizzazioni di tutte le altre sessioni associate al ruolo.

Ai `Principal` possono essere negate le autorizzazioni usando [chiavi di contesto delle condizioni](#deny-access-to-specific-session-condition-key) o [policy basate sulle risorse](#deny-access-with-resource-based).

**Suggerimento**  
Puoi trovare gli utenti ARNs federati utilizzando AWS CloudTrail i log. Per ulteriori informazioni, consulta [Come identificare facilmente gli utenti federati utilizzando](https://aws.amazon.com/blogs/security/how-to-easily-identify-your-federated-users-by-using-aws-cloudtrail/). AWS CloudTrail

## Negare l'accesso alle sessioni delle credenziali di sicurezza temporanee con chiavi di contesto della condizione
<a name="deny-access-to-specific-session-condition-key"></a>

Puoi usare le chiavi di contesto della condizione nelle policy basate sulle identità in situazioni in cui vuoi negare l'accesso a sessioni specifiche con credenziali di sicurezza temporanee senza compromettere le autorizzazioni dell'utente IAM o del ruolo che ha creato le credenziali. Per i ruoli IAM, dopo aver aggiornato la policy, puoi anche [revocare le credenziali di sicurezza temporanee del ruolo](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_revoke-sessions.html) per revocare immediatamente tutte le credenziali emesse.

Per ulteriori informazioni su queste chiavi di contesto della condizione, consulta [AWS chiavi di contesto della condizione globale](reference_policies_condition-keys.md).

### leggi: PrincipalArn
<a name="deny-access-condition-key-principalarn"></a>

Puoi usare la chiave di contesto della condizione [aws:PrincipalArn](reference_policies_condition-keys.md#condition-keys-principalarn) in una policy basata sull'identità per negare l'accesso a uno specifico principale tramite il relativo nome della risorsa Amazon (ARN). A tale scopo, specificate l'ARN dell'utente, del ruolo AWS STS o della sessione utente federata IAM a cui sono associate le credenziali di sicurezza temporanee nell'elemento Condition di una policy.

**Per negare l'accesso a uno specifico principale tramite il relativo ARN**

1. Nel riquadro di navigazione della console IAM, scegli **Utenti** o **Ruoli**.

1. Scegli il nome dell'utente IAM o del ruolo da modificare. Puoi utilizzare la casella di ricerca per filtrare l'elenco.

1. Scegli la scheda **Autorizzazioni**.

1. Seleziona la policy pertinente da modificare. Prima di modificare una policy gestita dal cliente, consulta la scheda **Entità collegate** per evitare di interrompere l'accesso ad altre identità che potrebbero avere la stessa policy associata.

1. Scegli la scheda **JSON** e aggiungi un'istruzione di negazione per l'ARN principale, come mostrato nell'esempio seguente.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Deny",
         "Action": "*",
         "Resource": "*",
         "Condition": {
           "ArnEquals": {
             "aws:PrincipalArn": [
               "arn:aws:iam::222222222222:role/ROLENAME",
               "arn:aws:iam::222222222222:user/USERNAME",
               "arn:aws:iam::222222222222:federated-user/USERNAME" 
             ]
           }
         }
       }
     ]
   }
   ```

------

1. Nella pagina **Review (Esamina)** controllare **Summary (Riepilogo)** e selezionare **Save changes (Salva modifiche)** per salvare.

### Leggi: SourceIdentity
<a name="deny-access-condition-key-sourceidentity"></a>

Puoi usare la chiave di contesto della condizione [aws:SourceIdentity](reference_policies_condition-keys.md#condition-keys-sourceidentity) in una policy basata sull'identità per negare l'accesso a un'identità di origine specifica associata a una sessione di ruolo IAM. Ciò vale a condizione che la sessione del ruolo sia stata emessa impostando il parametro di `SourceIdentity` richiesta quando il principale ha assunto un ruolo utilizzando qualsiasi AWS STS `assume-role` comando\$1 CLI AWS STS `AssumeRole` o\$1 operazioni API. A tale scopo, devi specificare l'identità di origine a cui sono associate le credenziali di sicurezza temporanee nell'elemento `Condition` di una policy. 

A differenza della chiave di contesto [sts:RoleSessionName](reference_policies_iam-condition-keys.md#ck_rolesessionname), dopo aver impostato l'identità di origine, il valore non può essere modificato. La chiave `aws:SourceIdentity` è presente nel contesto della richiesta di tutte le operazioni intraprese dal ruolo. L'identità di origine persiste nelle sessioni di ruolo successive quando si utilizzano le credenziali di sessione per assumere un altro ruolo. L'assunzione di un ruolo partendo da un altro si chiama [concatenamento del ruolo](id_roles.md#iam-term-role-chaining).

La seguente policy mostra un esempio di come puoi negare l'accesso a sessioni con credenziali di sicurezza temporanee utilizzando la chiave di contesto della condizione.`aws:SourceIdentity`. Se specifichi l'identità di origine associata a una sessione del ruolo, verranno negate le sessioni di ruolo con l'identità di origine specificata senza influire sulle autorizzazioni del ruolo che ha creato le credenziali. Per questo esempio, l'identità di origine impostata dal principale al momento dell'emissione della sessione di ruolo è `nikki_wolf@example.com`. Qualsiasi richiesta effettuata da una sessione di ruolo con l'identità di origine `nikki_wolf@example.com` verrà rifiutata perché l'identità di origine è inclusa nella condizione della policy e la policy Effect è impostata su `Deny`.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "aws:SourceIdentity": [
            "nikki_wolf@example.com",
            "<source identity value>"
          ]
        }
      }
    }
  ]
}
```

------

### aws:userid
<a name="deny-access-condition-key-userid"></a>

Puoi usare la chiave di contesto della condizione [aws:userid](reference_policies_condition-keys.md#condition-keys-userid) in una policy basata sulle identità per negare l'accesso a tutte o a specifiche sessioni con credenziali di sicurezza temporanee associate all'utente o al ruolo IAM. A tale scopo, è necessario specificare l'identificatore univoco (ID) dell'utente, del ruolo o della sessione utente AWS STS federata IAM a cui sono associate le credenziali di sicurezza temporanee nell'`Condition`elemento di una policy.

La seguente policy mostra un esempio di come puoi negare l'accesso a sessioni con credenziali di sicurezza temporanee utilizzando la chiave di contesto della condizione.`aws:userid`.
+ `AIDAXUSER1` rappresenta l'ID univoco per un utente IAM. Specificando l'ID univoco di un utente IAM come valore per la chiave di contesto `aws:userid`verrà negato l'accesso all'utente IAM. Ciò include tutte le sessioni di credenziali di sicurezza temporanee create chiamando l'API `GetSessionToken`.
+ `AROAXROLE1:*` rappresenta l'ID univoco per tutte le sessioni associate al ruolo IAM. Specificando l'ID univoco di un ruolo IAM e un carattere jolly (\$1) nella parte caller-specified-role-session -name come valore per la chiave di contesto `aws:userid` verranno negate tutte le sessioni associate al ruolo.
+ `AROAXROLE2:<caller-specified-role-session-name>` rappresenta l'ID univoco per una sessione del ruolo assunto. Nella parte caller-specified-role-session -name dell'ID univoco del ruolo assunto è possibile specificare un nome di sessione del ruolo o un carattere jolly se viene utilizzato l'operatore condition. StringLike Se specifichi il nome di sessione del ruolo, verrà negata la sessione di ruolo denominata senza influire sulle autorizzazioni del ruolo che ha creato le credenziali. Se specifichi un carattere jolly per il nome della sessione del ruolo, verranno negate tutte le sessioni associate al ruolo.
**Nota**  
Il nome della sessione di ruolo specificato dal chiamante, che fa parte dell'identificatore univoco di una sessione del ruolo assunto, può cambiare durante il concatenamento dei ruoli. Il concatenamento dei ruoli si verifica quando un ruolo assume un altro ruolo. Il nome della sessione di ruolo viene impostato utilizzando il parametro `RoleSessionName` request quando il principale assume un ruolo utilizzando l'operazione API. AWS STS `AssumeRole`
+ `account-id:<federated-user-caller-specified-name>`rappresenta l'ID univoco per una sessione utente AWS STS federata. Un utente IAM crea questa sessione chiamando l'API `GetFederationToken`. Se specifichi l’ID univoco per una sessione dell’utente federato AWS STS , la sessione federata denominata verrà negata senza influire sulle autorizzazioni dell’utente IAM che ha creato le credenziali.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "aws:userId": [
            "AIDAXUSER1",
            "AROAXROLE1:*",
            "AROAXROLE2:<caller-specified-role-session-name>",
            "123456789012:<federated-user-caller-specified-name>"
          ]
        }
      }
    }
  ]
}
```

------

Per esempi specifici di valori chiave del principale, consulta [Valori della chiave dell'entità principale](reference_policies_variables.md#principaltable). Per ulteriori informazioni sugli identificatori univoci IAM e su come ottenerli, consulta[Identificatori univoci](reference_identifiers.md#identifiers-unique-ids).

## Negare l'accesso a uno specifico principale con policy basate sulle risorse
<a name="deny-access-with-resource-based"></a>

Per limitare l'accesso a un principale specifico con una policy basata sulle risorse, puoi utilizzare le chiavi di contesto delle condizioni [aws:PrincipalArn](reference_policies_condition-keys.md#condition-keys-principalarn) o [aws:SourceIdentity](reference_policies_condition-keys.md#condition-keys-sourceidentity) nell'elemento `Condition`. Una policy basata sulle risorse è una policy di autorizzazione collegata a una risorsa che controlla chi può accedere alla risorsa e quali azioni è possibile eseguire su di essa. 

Quando utilizzi la chiave di `aws:PrincipalARN` contesto, specifica l'ARN dell'utente, del ruolo o della sessione utente AWS STS federata IAM associata alle credenziali di sicurezza temporanee nell'elemento Condition di una policy. Il seguente esempio di policy mostra come utilizzare la chiave di contesto `aws:PrincipalARN` in una policy basata sulle risorse:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Principal": "*",
    "Effect": "Deny",
    "Action": "s3:*",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
    "Condition": {
      "ArnEquals": {
        "aws:PrincipalArn": [
          "arn:aws:iam::222222222222:role/ROLENAME",
          "arn:aws:iam::222222222222:user/USERNAME",
          "arn:aws:sts::222222222222:federated-user/USERNAME"
        ]
      }
    }
  }
}
```

------

Quando si utilizza la chiave di contesto `aws:SourceIdentity`, specifica il valore di identità di origine associato alle credenziali di sicurezza temporanee del ruolo nell'elemento `Condition` di una policy. Ciò vale a condizione che la sessione del ruolo sia stata emessa impostando il parametro di `SourceIdentity` richiesta quando il principale ha assunto un ruolo utilizzando qualsiasi AWS STS `assume-role` comando\$1 CLI AWS STS `AssumeRole` o\$1 operazioni API. Il seguente esempio di policy mostra come utilizzare la chiave di contesto `aws:SourceIdentity` in una policy basata sulle risorse:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Principal": "*",
    "Effect": "Deny",
    "Action": "s3:*",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
    "Condition": {
      "StringLike": {
        "aws:SourceIdentity": [
          "nikki_wolf@example.com",
          "<source identity value>"
        ]
      }
    }
  }
}
```

------

Se aggiorni solo la policy basata sull'identità per un principale, questo può comunque eseguire le azioni consentite nella policy basata sulle risorse, a meno che tali azioni siano negate esplicitamente nella policy basata sull'identità.

**Per negare l'accesso a uno specifico principale con una policy basata sulle risorse**

1. Fai riferimento a [AWS servizi che funzionano con IAM](reference_aws-services-that-work-with-iam.md) per verificare se il servizio supporta policy basate sulle risorse.

1. Accedi Console di gestione AWS e apri la console per il servizio. Ogni servizio ha una posizione diversa nella console per allegare le policy.

1. Modifica la policy basata sulle risorse. Aggiungi un'istruzione di negazione della policy per specificare le informazioni identificative delle credenziali:

   1. Nell'elemento `Principal`, inserisci un carattere jolly (\$1). Il principale sarà limitato nell'elemento `Condition`.

   1. Nell'elemento `Effect`, inserisci "Nega".

   1. In `Action`, inserisci il namespace del servizio e il nome dell’azione da rifiutare. Per negare tutte le azioni, usa il carattere jolly (\$1). Ad esempio: `"s3:*"`.

   1. Nell'elemento `Resource`, inserisci l'ARN della risorsa di destinazione. Ad esempio: `"arn:aws:s3:::amzn-s3-demo-bucket"`.

   1. Nell'elemento `Condition`, specifica la chiave di contesto `aws:PrincipalARN` o `aws:SourceIdentity`.

      Se si utilizza la chiave di contesto `aws:PrincipalARN`, immetti l'ARN del principale a cui negare l'accesso.

      Se utilizzi la chiave di contesto `aws:SourceIdentity`, inserisci il valore dell'identità di origine impostato nella sessione del ruolo a cui negare l'accesso.

1. Salva il tuo lavoro.

# Concessione delle autorizzazioni per creare credenziali di sicurezza temporanee
<a name="id_credentials_temp_control-access_enable-create"></a>

Per impostazione predefinita, gli utenti IAM non dispongono dell’autorizzazione per creare credenziali di sicurezza temporanee per ruoli e sessioni di utenti federati AWS STS . È necessario utilizzare una policy per fornire queste autorizzazioni agli utenti. Anche se è possibile concedere le autorizzazioni direttamente a un utente, ti consigliamo caldamente di assegnarle a un gruppo. In questo modo la gestione delle autorizzazioni risulta molto più semplice. Quando un utente non ha più bisogno di eseguire le operazioni associate alle autorizzazioni, non dovrai fare altro che rimuoverlo dal gruppo. Se un'altra persona si trova nella necessità di eseguire tale operazione, sarà sufficiente aggiungerla al gruppo per concederle le autorizzazioni.

Per concedere a un gruppo IAM l’autorizzazione per creare credenziali di sicurezza temporanee per ruoli o sessioni di utenti federati AWS STS , puoi collegare una policy che conceda uno o entrambi i seguenti privilegi:
+ Affinché i principali federati OIDC e SAML possano accedere a un ruolo IAM, concedi l'accesso a. AWS STS `AssumeRole`
+ <a name="para_gsy_hxg_1t"></a>Per gli utenti AWS STS federati che non necessitano di un ruolo, concedi l'accesso a. AWS STS `GetFederationToken`

 Per informazioni sulle differenze fra le operazioni API `AssumeRole` e `GetFederationToken`, consultare [Richiedere credenziali di sicurezza temporanee](id_credentials_temp_request.md).

Per creare le credenziali di sicurezza temporanee, gli utenti IAM possono chiamare anche [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html). Non sono necessarie autorizzazioni perché un utente possa chiamare `GetSessionToken`. Lo scopo dell'operazione è autenticare l'utente tramite MFA. Non è possibile utilizzare le policy per controllare l'autenticazione. Ciò significa che non puoi impedire agli utenti IAM di chiamare `GetSessionToken` per creare le credenziali temporanee.

**Example Esempio di policy che concede autorizzazioni per assumere un ruolo**  
La politica di esempio seguente concede l'autorizzazione a `AssumeRole` richiedere il `UpdateApp` ruolo in. Account AWS `123123123123` Quando si usa `AssumeRole`, l'utente (o l'applicazione) che crea le credenziali di sicurezza per conto di un utente federato non è in grado di delegare autorizzazioni che non siano già state specificate nella policy di autorizzazione del ruolo.     
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Action": "sts:AssumeRole",
    "Resource": "arn:aws:iam::123123123123:role/UpdateAPP"
  }]
}
```

**Example Esempio di policy che concede l'autorizzazione per creare credenziali di sicurezza temporanee per un utente federato.**  
La policy dell'esempio seguente concede l'autorizzazione per l'accesso a `GetFederationToken`.    
****  

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

**Importante**  
Quando si autorizzano utenti IAM a creare credenziali di sicurezza temporanee per gli utenti federati AWS STS con `GetFederationToken`, tieni a mente che tali utenti avranno la possibilità di delegare le proprie autorizzazioni. Per ulteriori informazioni sulla delega delle autorizzazioni tra utenti IAM e Account AWS, consulta. [Esempi di policy per la delega dell'accesso](id_roles_create_policy-examples.md) Per informazioni sul controllo delle autorizzazioni nelle credenziali di sicurezza provvisorie, vedi [Autorizzazioni per le credenziali di sicurezza temporanee](id_credentials_temp_control-access.md). 

**Example Esempio di policy che concede a un utente autorizzazioni limitate per creare credenziali di sicurezza temporanee per utenti federati.**  
Quando si consente a un utente IAM di chiamare `GetFederationToken`, una best practice consiste nel limitare le autorizzazioni che l'utente IAM può delegare. *Ad esempio, la seguente policy mostra come consentire a un utente IAM di creare credenziali di sicurezza temporanee solo per gli utenti AWS STS federati i cui nomi iniziano con Manager.*    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Action": "sts:GetFederationToken",
    "Resource": ["arn:aws:sts::123456789012:federated-user/Manager*"]
  }]
}
```

# Concessione delle autorizzazioni per l’utilizzo di sessioni di console rafforzate con l’identità
<a name="id_credentials_temp_control-access_sts-setcontext"></a>

Le sessioni di console con identità migliorata consentono di includere AWS IAM Identity Center utenti e sessioni nelle sessioni della AWS console degli utenti IDs al momento dell'accesso. Ad esempio, Amazon Q Developer Pro utilizza sessioni di console rafforzate con l’identità per personalizzare l’esperienza del servizio. Per ulteriori informazioni sulle sessioni di console rafforzate con l’identità, consulta [Enabling identity-enhanced console sessions](https://docs.aws.amazon.com/singlesignon/latest/userguide/identity-enhanced-sessions.html) nella *Guida per l’utente di AWS IAM Identity Center *. Per informazioni sulla configurazione di Amazon Q Developer, consulta [Configurazione di Amazon Q Developer](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/setting-up.html) nella *Guida per l'utente di Amazon Q Developer*.

Affinché le sessioni di console rafforzate con l’identità siano disponibili per un utente, è necessario utilizzare una policy basata sull’identità per concedere al principale IAM l’autorizzazione `sts:SetContext` per la risorsa che rappresenta la propria sessione di console. 

**Importante**  
Per impostazione predefinita, gli utenti non dispongono dell’autorizzazione per impostare il contesto per le sessioni di console rafforzate con l’identità. Per consentire ciò, è necessario concedere al principale IAM l'autorizzazione `sts:SetContext` in una policy basata sull'identità, come illustrato nell'esempio di policy riportato di seguito.

L'esempio seguente di policy basata sull'identità concede l'`sts:SetContext`autorizzazione a un principale IAM, che consente al principale di impostare un contesto di sessione di console con identità migliorata per le proprie sessioni di console. AWS La risorsa policy,, `arn:aws:sts::account-id:self` rappresenta la sessione del chiamante. AWS Il segmento dell'ARN di `account-id` può essere sostituito con un carattere jolly `*` nei casi in cui la stessa policy di autorizzazione viene implementata su più account, ad esempio quando questa policy viene implementata utilizzando i set di autorizzazioni del Centro identità IAM.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:SetContext",
            "Resource": "arn:aws:sts::111122223333:self"
        }
    ]
}
```

------

# Gestisci AWS STS in un Regione AWS
<a name="id_credentials_temp_enable-regions"></a>

Un endpoint regionale è l'URL del punto di ingresso all'interno di una particolare regione per un servizio AWS Web. AWS consiglia di utilizzare gli endpoint Regional AWS Security Token Service (AWS STS) anziché l'endpoint globale per ridurre la latenza, aumentare la ridondanza e aumentare la validità dei token di sessione. Sebbene l' AWS STS endpoint globale (legacy) sia altamente disponibile, `https://sts.amazonaws.com` è ospitato in un'unica AWS regione, Stati Uniti orientali (Virginia settentrionale) e, come altri endpoint, non fornisce il failover automatico sugli endpoint di altre regioni.
+ **Riduzione della latenza**: effettuando AWS STS chiamate verso un endpoint geograficamente più vicino ai servizi e alle applicazioni, è possibile accedere AWS STS a servizi con una latenza inferiore e tempi di risposta migliori.
+ **Progetta in ridondanza**: puoi limitare gli effetti di un guasto all'interno di un carico di lavoro a un numero limitato di componenti con un ambito prevedibile di contenimento degli impatti. L'utilizzo AWS STS degli endpoint regionali consente di allineare l'ambito dei componenti con quello dei token di sessione. Per ulteriori informazioni su questo pilastro di affidabilità, consulta [Uso dell'isolamento dei guasti per proteggere il carico di lavoro](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/use-fault-isolation-to-protect-your-workload.html) in *Framework AWS  Well-Architected*.
+ **Aumenta la validità dei token** di sessione: i token di sessione degli AWS STS endpoint regionali sono validi in tutti. Regioni AWS I token di sessione dell'endpoint STS globale sono validi solo se sono abilitati per Regioni AWS impostazione predefinita. Se intendi abilitare una nuova regione per il tuo account, puoi utilizzare i token di sessione dagli endpoint regionali. AWS STS Se scegli di utilizzare l'endpoint globale, devi modificare la compatibilità regionale dei token di AWS STS sessione per l'endpoint globale. In questo modo si garantisce che i token siano validi in tutti. Regioni AWS

Per un elenco delle AWS STS regioni e dei relativi endpoint, consulta. [AWS STS Regioni ed endpoint](id_credentials_temp_region-endpoints.md)

**Nota**  
AWS ha apportato modifiche all'endpoint globale AWS Security Token Service (AWS STS`https://sts.amazonaws.com`) nelle Regioni [abilitate di default](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) per migliorarne la resilienza e le prestazioni. AWS STS le richieste all'endpoint globale vengono servite automaticamente nello stesso Regione AWS modo in cui vengono servite i tuoi carichi di lavoro. Queste modifiche non verranno implementate nelle Regioni con attivazione facoltativa. Ti consigliamo di utilizzare gli endpoint AWS STS regionali appropriati. Per ulteriori informazioni, consulta [AWS STS cambiamenti globali degli endpoint](id_credentials_temp_region-endpoints.md#reference_sts_global_endpoint_changes).

**Topics**
+ [Attivazione e disattivazione in un AWS STS Regione AWS](#sts-regions-activate-deactivate)
+ [Scrittura di codice per utilizzare le regioni AWS STS](#id_credentials_temp_enable-regions_writing_code)
+ [Gestione dei token di sessione emessi dall'endpoint globale](#sts-regions-manage-tokens)

## Attivazione e disattivazione in un AWS STS Regione AWS
<a name="sts-regions-activate-deactivate"></a>

Quando attivi gli AWS STS endpoint per una regione, AWS STS puoi emettere credenziali temporanee agli utenti e ai ruoli del tuo account che effettuano una richiesta. AWS STS Queste credenziali possono essere utilizzate in qualsiasi regione abilitata di default o manualmente. Per le regioni abilitate per impostazione predefinita, è necessario attivare l' AWS STS endpoint regionale nell'account in cui vengono generate le credenziali temporanee. Al momento di effettuare la richiesta, non importa se un utente è autenticato sullo stesso account o su un altro account. Quando si richiedono credenziali temporanee per un ruolo in un altro Account AWS utilizzando una regione abilitata manualmente, l'account di destinazione (l'account contenente il ruolo) deve abilitare tale regione per le operazioni. AWS STS Ciò garantisce che le credenziali di sicurezza temporanee possano essere generate correttamente.

Immagina, ad esempio, che un utente nell’account A desideri inviare una richiesta API `sts:AssumeRole` all’[endpoint regionale AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_region-endpoints.html) `https://sts.ap-southeast-3.amazonaws.com`. La richiesta si riferisce a delle credenziali temporanee per il ruolo denominato `Developer` nell’account B. Poiché la richiesta è di creare le credenziali per un’entità nell’account B, l’account B deve avere la Regione `ap-southeast-3` abilitata. Gli utenti dell'account A (o di qualsiasi altro account) possono chiamare l'endpoint `ap-southeast-3` AWS STS per richiedere le credenziali per l'account B, che la regione sia attivata o meno nel loro account. Per ulteriori informazioni, consulta [Abilita o disabilita Regioni AWS nel tuo account](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html).

**Nota**  
Le regioni attive sono disponibili per tutti gli utenti che utilizzano credenziali provvisorie in tale account. Per controllare quali utenti o ruoli IAM possono accedere alla regione, utilizza la chiave di condizione `aws:RequestedRegion` nelle tue policy di autorizzazione.

**Per attivarlo o disattivarlo AWS STS in una regione abilitata per impostazione predefinita (console)**

1. Accedi come utente root o come utente con le autorizzazioni per eseguire attività di amministrazione di IAM.

1. Apri la [console IAM](https://console.aws.amazon.com/iam/home?#home) e, nel pannello di navigazione, seleziona [https://console.aws.amazon.com/iam/home?#account_settings](https://console.aws.amazon.com/iam/home?#account_settings).

1. Nella sezione **Endpoint** di **Security Token Service (STS)**, trova la Regione che desideri configurare, quindi scegli **Attiva** o **Inattiva** nella colonna **Stato STS**.

1. Nella finestra di dialogo visualizzata, scegli **Activate** (Attiva) o **Deactivate** (Disattiva).

Per le regioni che devono essere abilitate, ci attiviamo AWS STS automaticamente quando abiliti la regione. Dopo aver abilitato una regione, AWS STS è sempre attiva per la regione e non è possibile disattivarla. Per ulteriori informazioni sull'attivazione delle aree che sono disabilitate per impostazione predefinita, consulta [Specificazione delle aree che Regioni AWS il proprio account può utilizzare](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) nella Guida *Gestione dell'account AWS di riferimento*.

## Scrittura di codice per utilizzare le regioni AWS STS
<a name="id_credentials_temp_enable-regions_writing_code"></a>

Dopo aver attivato una regione, puoi indirizzare le chiamate AWS STS API verso quella regione. Il frammento di codice Java seguente mostra come configurare un oggetto `AWSSecurityTokenService` affinché effettui richieste alla regione Europa (Milano) (eu-south-1).

```
EndpointConfiguration regionEndpointConfig = new EndpointConfiguration("https://sts.eu-south-1.amazonaws.com", "eu-south-1");
AWSSecurityTokenService stsRegionalClient = AWSSecurityTokenServiceClientBuilder.standard()
.withCredentials(credentials)
.withEndpointConfiguration(regionEndpointConfig)
.build();
```

AWS STS consiglia di effettuare chiamate verso un endpoint regionale. Per scoprire come abilitare manualmente una regione, consulta [Specificare le Regioni AWS che il tuo account può utilizzare](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) nella *Guida di riferimento a Gestione dell'account AWS *.

Nell'esempio, la prima riga crea un'istanza di un oggetto `EndpointConfiguration` chiamata `regionEndpointConfig`, passando l'URL dell'endpoint e la Regione AWS come parametri.

*Per informazioni su come impostare gli endpoint AWS STS regionali utilizzando una variabile di ambiente per AWS SDKs, consulta [Endpoint AWS STS regionalizzati](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sts-regionalized-endpoints.html) nella and Tools Reference Guide.AWS SDKs *

Per tutte le altre combinazioni di linguaggio e ambiente di programmazione, consulta la [documentazione dell'SDK pertinente](https://aws.amazon.com/tools/).

## Gestione dei token di sessione emessi dall'endpoint globale
<a name="sts-regions-manage-tokens"></a>

Per impostazione predefinita, la Regioni AWS maggior parte di esse è abilitata al funzionamento. Servizi AWS Queste regioni vengono attivate automaticamente per essere utilizzate con AWS STS. Alcune regioni, ad esempio Asia Pacifico (Hong Kong), devono essere abilitate manualmente. Per ulteriori informazioni sull'abilitazione e la disabilitazione di Regioni AWS, consulta [Specificare le Regioni AWS che il tuo account può utilizzare](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) nella *Guida di riferimento a Gestione dell'account AWS *. Quando si abilitano queste AWS regioni, vengono automaticamente attivate per l'uso con AWS STS. Non è possibile attivare l' AWS STS endpoint per una regione disattivata. I token di sessione validi in tutte le aree Regioni AWS includono più caratteri rispetto ai token validi nelle regioni abilitate per impostazione predefinita. La modifica di questa impostazione potrebbe influenzare i sistemi esistenti in cui vengono memorizzati temporaneamente i token.

È possibile modificare questa impostazione utilizzando l'API Console di gestione AWS, AWS CLI, o AWS .

**Modificare le regioni compatibili con i token di sessione l'endpoint globale (console)**

1. Accedi come utente root o come utente con le autorizzazioni per eseguire attività di amministrazione di IAM. Per modificare la compatibilità dei token di sessione, è necessario disporre di una policy che consente l'operazione `iam:SetSecurityTokenServicePreferences`.

1. Apri la [console IAM](https://console.aws.amazon.com/iam/home?#home). Nel riquadro di navigazione, scegliere **Account settings (Impostazioni account)**.

1. Nella sezione **Security Token Service (STS)** **Token di sessione dagli endpoint STS**. L'**endpoint globale** indica `Valid only in Regioni AWS enabled by default`. Scegliere **Change (Cambia)**.

1. Nella finestra di dialogo **Modifica compatibilità dell'area**, seleziona **Tutto Regioni AWS**. Selezionare quindi **Save changes (Salva modifiche)**.
**Nota**  
I token di sessione validi in tutte le aree Regione AWS includono più caratteri rispetto ai token validi nelle regioni abilitate per impostazione predefinita. La modifica di questa impostazione potrebbe influenzare i sistemi esistenti in cui vengono memorizzati temporaneamente i token.

**Modificare le regioni compatibili con i token di sessione l'endpoint globale (AWS CLI)**  
Imposta la versione del token di sessione. I token della versione 1 sono validi solo se sono disponibili per impostazione predefinita. Regioni AWS Questi token non funzionano nelle regioni abilitate manualmente, ad esempio Asia Pacifico (Hong Kong). I token Versione 2 sono validi in tutte le regioni. Tuttavia, i token versione 2 sono composti da un numero maggiore di caratteri e ciò può influire sui sistemi in cui vengono memorizzati temporaneamente i token.
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/set-security-token-service-preferences.html](https://docs.aws.amazon.com/cli/latest/reference/iam/set-security-token-service-preferences.html)

**Per modificare la compatibilità regionale dei token di sessione per l'endpoint globale (API)AWS**  
Imposta la versione del token di sessione. I token della versione 1 sono validi solo se sono disponibili per impostazione predefinita. Regioni AWS Questi token non funzionano nelle regioni abilitate manualmente, ad esempio Asia Pacifico (Hong Kong). I token Versione 2 sono validi in tutte le regioni. Tuttavia, i token versione 2 sono composti da un numero maggiore di caratteri e ciò può influire sui sistemi in cui vengono memorizzati temporaneamente i token.
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_SetSecurityTokenServicePreferences.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_SetSecurityTokenServicePreferences.html) 

# AWS STS Regioni ed endpoint
<a name="id_credentials_temp_region-endpoints"></a>

**Nota**  
AWS ha apportato modifiche all'endpoint globale AWS Security Token Service (AWS STS`https://sts.amazonaws.com`) nelle Regioni [abilitate di default](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) per migliorarne la resilienza e le prestazioni. AWS STS le richieste all'endpoint globale vengono servite automaticamente Regione AWS come i tuoi carichi di lavoro. Queste modifiche non verranno implementate nelle Regioni con attivazione facoltativa. Ti consigliamo di utilizzare gli endpoint AWS STS regionali appropriati. Per ulteriori informazioni, consulta [AWS STS cambiamenti globali degli endpoint](#reference_sts_global_endpoint_changes).

La seguente tabella elenca le regioni e i relativi endpoint. Indica quali sono attivate per default e quali possono essere attivate o disattivate.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/id_credentials_temp_region-endpoints.html)

¹È necessario [abilitare la regione](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html) per utilizzarla. Ciò attiva automaticamente AWS STS. Non è possibile attivare o disattivare manualmente AWS STS in queste regioni.

²Per utilizzarlo AWS in Cina, sono necessari un account e credenziali specifici per la AWS Cina.

## AWS STS cambiamenti globali degli endpoint
<a name="reference_sts_global_endpoint_changes"></a>

AWS ha apportato modifiche all'endpoint globale AWS Security Token Service (AWS STS`https://sts.amazonaws.com`) nelle Regioni [abilitate di default](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) per migliorarne la resilienza e le prestazioni. In precedenza, tutte le richieste all'endpoint AWS STS globale venivano servite da un unico dispositivo Regione AWS, gli Stati Uniti orientali (Virginia settentrionale). Ora, nelle regioni [abilitate per impostazione predefinita](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html), le richieste all'endpoint AWS STS globale vengono servite automaticamente nella stessa regione da cui proviene la richiesta, anziché nella regione degli Stati Uniti orientali (Virginia settentrionale). Queste modifiche non verranno implementate nelle Regioni con attivazione facoltativa.

Con questa modifica, AWS STS elaborerà la richiesta in base alla regione di origine e al resolver DNS utilizzati. Le richieste all'endpoint AWS STS globale vengono servite nella stessa regione del carico di lavoro AWS distribuito se la richiesta DNS per l'endpoint AWS STS globale viene gestita dal server Amazon DNS nelle regioni abilitate per impostazione predefinita. Le richieste all’endpoint globale AWS STS continueranno a essere servite nella Regione Stati Uniti orientali (Virginia settentrionale) se la richiesta proviene da Regioni con attivazione facoltativa o se la richiesta è stata risolta utilizzando un resolver DNS diverso dal server Amazon DNS. Per ulteriori informazioni su Amazon DNS, consulta [Server DNS Amazon](https://docs.aws.amazon.com/vpc/latest/userguide/AmazonDNS-concepts.html#AmazonDNS) nella *Guida per l’utente di Amazon Virtual Private Cloud*.

La tabella seguente mostra come le richieste verso l'endpoint AWS STS globale vengono instradate in base al provider DNS.


| Resolver DNS | Le richieste all'endpoint AWS STS globale vengono instradate verso il locale? Regione AWS | 
| --- | --- | 
|  Resolver DNS Amazon in un Amazon VPC in una Regione abilitata per impostazione predefinita  |  Sì  | 
|  Resolver DNS Amazon in un Amazon VPC in una Regione con attivazione facoltativa  |  No, la richiesta verrà instradata nella Regione Stati Uniti orientali (Virginia settentrionale)  | 
|  Resolver DNS fornito dal tuo ISP, da un provider DNS pubblico o da qualsiasi altro provider DNS  |  No, la richiesta verrà instradata nella Regione Stati Uniti orientali (Virginia settentrionale)  | 

Per garantire un'interruzione minima dei processi esistenti, AWS ha implementato le seguenti misure:
+ AWS CloudTrail i registri delle richieste effettuate all'endpoint AWS STS globale vengono inviati nella regione Stati Uniti orientali (Virginia settentrionale). CloudTrail i registri delle richieste servite dagli endpoint AWS STS regionali continueranno a essere registrati nella rispettiva regione. CloudTrail
+ CloudTrail i registri per le operazioni eseguite dall'endpoint AWS STS globale e dagli endpoint regionali contengono campi aggiuntivi e indicano quale endpoint `endpointType` e `awsServingRegion` regione hanno fornito la richiesta. Per esempi di CloudTrail log, vedere. [Esempio di evento AWS STS API che utilizza l'endpoint globale nel file di registro CloudTrail](cloudtrail-integration.md#stscloudtrailexample-assumerole-sts-global-endpoint)
+ Le richieste effettuate all'endpoint AWS STS globale hanno un valore pari a `us-east-1` for the `aws:RequestedRegion` condition key, indipendentemente dalla regione che ha fornito la richiesta.
+ Le richieste gestite dall'endpoint AWS STS globale non condividono una quota di richieste al secondo con gli endpoint regionali. AWS STS 

Se disponi di carichi di lavoro in una regione opzionale e stai ancora utilizzando l'endpoint AWS STS globale, ti consigliamo di effettuare la migrazione agli endpoint AWS STS regionali per migliorare la resilienza e le prestazioni. *Per ulteriori informazioni sulla configurazione degli endpoint regionali, consulta AWS STS Endpoint regionali nella and Tools Reference [AWS STS Guide](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sts-regionalized-endpoints.html).AWS SDKs *

## AWS CloudTrail e endpoint regionali
<a name="sts-regions-cloudtrail"></a>

Le chiamate agli endpoint regionali e globali vengono registrate sul campo `tlsDetails` in  AWS CloudTrail. Le chiamate verso gli endpoint regionali, ad esempio`us-east-2.amazonaws.com`, vengono registrate nella regione CloudTrail appropriata. Le chiamate all'endpoint globale, `sts.amazonaws.com`, vengono registrate come chiamate a un servizio globale. Gli eventi per gli AWS STS endpoint globali vengono registrati su us-east-1.

**Nota**  
 `tlsDetails` può essere visualizzato solo per i servizi che supportano questo campo. *Vedi [i dettagli sui servizi che supportano TLS](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-supported-tls-details.html) nella Guida per l'utente CloudTrail AWS CloudTrail *  
Per ulteriori informazioni, consulta [Registrazione delle chiamate IAM e AWS STS API con AWS CloudTrail](cloudtrail-integration.md).

# Abilita l'accesso personalizzato del broker di identità alla AWS console
<a name="id_roles_providers_enable-console-custom-url"></a>

Puoi scrivere ed eseguire codice per creare un URL che permette agli utenti che accedono alla rete dell'organizzazione di accedere in modo sicuro alla Console di gestione AWS. L'URL include un token di accesso che ottieni AWS e che consente di autenticare l'utente. AWS La sessione console risultante potrebbe includere una distinta `AccessKeyId` a causa della federazione. [Per tracciare l'utilizzo delle chiavi di accesso per l'accesso alla federazione tramite CloudTrail eventi correlati, vedi [Registrazione delle chiamate IAM e AWS STS API con AWS CloudTrail](cloudtrail-integration.md) e accedi agli eventi.Console di gestione AWS](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-aws-console-sign-in-events.html) 

**Nota**  
Se la tua organizzazione usa un provider di identità (IdP) compatibile con SAML, puoi configurare l'accesso alla console senza la necessità di scrivere codice. Ciò è possibile con provider come Microsoft Active Directory Federation Services oppure Shibboleth open source. Per informazioni dettagliate, vedi [Consentire ai principali federati SAML 2.0 di accedere a Console di gestione AWS](id_roles_providers_enable-console-saml.md). 

Per consentire agli utenti dell'organizzazione di accedere a Console di gestione AWS, è possibile creare un *broker di identità* personalizzato che esegua i seguenti passaggi:

1. Verifica che l'utente sia autenticato dal sistema di identità locale.

1. Chiamate le operazioni AWS Security Token Service [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)(AWS STS) (consigliato) o [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html)API per ottenere credenziali di sicurezza temporanee per l'utente. Per informazioni sui diversi metodi che si possono utilizzare per assumere un ruolo, consulta [Metodi per assumere un ruolo](id_roles_manage-assume.md). Per informazioni su come passare i tag di sessione facoltativi quando si ottengono le credenziali di sicurezza, consulta [Passa i tag di sessione AWS STS](id_session-tags.md).
   + Se usi una delle operazioni API `AssumeRole*` per ottenere credenziali di sicurezza temporanee per un ruolo, puoi includere il parametro `DurationSeconds` nella chiamata. Questo parametro specifica la durata della sessione del ruolo, da 900 secondi (15 minuti) fino all'impostazione di durata massima della sessione per il ruolo. Quando si utilizza `DurationSeconds` in un'operazione `AssumeRole*`, è necessario chiamarlo come un utente IAM con credenziali a lungo termine. In caso contrario, la chiamata all'endpoint di federazione nella fase 3 ha esito negativo. Per informazioni su come visualizzare o modificare il valore massimo per un ruolo, consulta [Aggiornamento della durata massima della sessione per un ruolo](id_roles_update-role-settings.md#id_roles_update-session-duration).
   + Se usi l'operazione API `GetFederationToken` per ottenere le credenziali, puoi includere il parametro `DurationSeconds` nella chiamata. Questo parametro specifica la durata della sessione del ruolo. Il valore può variare da 900 secondi (15 minuti) a 129.600 secondi (36 ore). Puoi effettuare questa chiamata API solo utilizzando le credenziali di AWS sicurezza a lungo termine di un utente IAM. Puoi anche effettuare queste chiamate utilizzando Utente root dell'account AWS le credenziali, ma non è consigliabile. Se effettui la chiamata come utente root, la sessione di default dura un'ora. In alternativa, puoi specificare una sessione con durata compresa tra 900 secondi (15 minuti) e 3.600 secondi (un'ora). 

1. Chiama l'endpoint AWS della federazione e fornisci le credenziali di sicurezza temporanee per richiedere un token di accesso.

1. Crea un URL per la console che include il token:
   + Se usi una delle operazioni API `AssumeRole*` nell'URL, puoi includere il parametro HTTP `SessionDuration`. Questo parametro specifica la durata della sessione della console, da 900 secondi (15 minuti) a 43.200 secondi (12 ore).
   + Se usi l'operazione API `GetFederationToken` nell'URL, puoi includere il parametro `DurationSeconds`. Questo parametro specifica la durata della sessione della console federata. Il valore può variare da 900 secondi (15 minuti) a 129.600 secondi (36 ore). 
**Nota**  
`SessionDuration` non può essere maggiore o uguale alla durata massima della sessione impostata per il ruolo che stai assumendo. Ad esempio, si assuma di aver impostato la durata massima della sessione per il ruolo che desideri assumere su 5 ore. Il parametro `SessionDuration` può essere 16.524 secondi o 4 ore e 59 secondi.
Non usare il parametro HTTP `SessionDuration` quando ottieni le credenziali temporanee con `GetFederationToken`. L’operazione avrà esito negativo.
L'utilizzo delle credenziali perché un ruolo assuma un ruolo diverso viene chiamato [*concatenamento dei ruoli*](id_roles.md#iam-term-role-chaining). Quando si utilizza il concatenamento dei ruoli, le nuove credenziali sono limitate a una durata massima di un'ora. Quando si utilizzano i ruoli per [concedere autorizzazioni alle applicazioni eseguite su istanze EC2](id_roles_use_switch-role-ec2.md), tali applicazioni non sono soggette a questa limitazione.
Non usare il parametro HTTP `SessionDuration` quando ottieni le credenziali temporanee tramite la concatenazione dei ruoli. L’operazione avrà esito negativo.

1. Fornisce l'URL all'utente o richiama l'URL per conto dell'utente.

L'URL fornito dall'endpoint di federazione è valido per 15 minuti dopo la creazione. Questo intervallo di tempo è diverso dalla durata (in secondi) della sessione delle credenziali di sicurezza temporanee associata all'URL. Queste credenziali sono valide per la durata specificata al momento della creazione, a partire dal momento in cui sono state create.

**Importante**  
L'URL concede l'accesso alle tue AWS risorse tramite, Console di gestione AWS se hai abilitato le autorizzazioni nelle credenziali di sicurezza temporanee associate. Per questo motivo, devi trattare l'URL come segreto. Ti consigliamo di restituire l'URL attraverso un reindirizzamento sicuro, ad esempio usando un codice di stato della risposta HTTP 302 in una connessione SSL. Per ulteriori informazioni sul codice di stato della risposta HTTP 302, consulta [RFC 2616, sezione 10.3.3](https://datatracker.ietf.org/doc/html/rfc2616#section-10.3.3).

Per completare queste attività, puoi utilizzare l'[API di query HTTPS per AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/APIReference/) e [AWS Security Token Service (AWS STS)](https://docs.aws.amazon.com/STS/latest/APIReference/). In alternativa, puoi utilizzare linguaggi di programmazione come Java, Ruby o C \$1 con l'[SDK AWS](https://aws.amazon.com/tools/) appropriato. Ognuno di questi metodi è descritto negli argomenti seguenti.

**Topics**
+ [Codice di esempio per l'uso delle operazioni API di query IAM](#STSConsoleLink_manual)
+ [Codice di esempio con Python](#STSConsoleLink_programPython)
+ [Esempio di codice con Java](#STSConsoleLink_programJava)
+ [Esempio ci creazione dell'URL (Ruby)](#STSConsoleLink_programRuby)

## Codice di esempio per l'uso delle operazioni API di query IAM
<a name="STSConsoleLink_manual"></a>

Puoi creare un URL che concede ai ruoli e ai principali federati l’accesso diretto alla Console di gestione AWS. Questa attività utilizza le API di interrogazione IAM e AWS STS HTTPS. Per ulteriori informazioni su come effettuare richieste di query, consulta [Effettuare richieste di query](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAM_UsingQueryAPI.html).

**Nota**  
La procedura seguente contiene esempi di stringhe di testo. Per migliorare la leggibilità, sono state aggiunte interruzioni di riga in alcuni degli esempi più lunghi. Quando crei queste stringhe per l'uso, ometti le interruzioni di riga.

**Per consentire ai ruoli e ai responsabili federati di accedere alle tue risorse dal Console di gestione AWS**

1. Autentica l'utente nel sistema di identità e autorizzazione.

1. Ottieni credenziali di sicurezza temporanee per l'utente. Le credenziali temporanee sono costituite da un ID chiave di accesso, una chiave di accesso segreta e un token di sessione. Per ulteriori informazioni sulla creazione di credenziali temporanee, consulta [Credenziali di sicurezza temporanee in IAM](id_credentials_temp.md).

   Per ottenere credenziali temporanee, chiamate l' AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API (scelta consigliata) o l'API. [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) Per ulteriori informazioni sulle differenze tra queste operazioni API, consulta [Comprendere le opzioni API per delegare in modo sicuro l'accesso al tuo AWS account nel blog](https://aws.amazon.com/blogs/security/understanding-the-api-options-for-securely-delegating-access-to-your-aws-account) sulla AWS sicurezza.
**Importante**  
Quando utilizzi l'[GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html)API per creare credenziali di sicurezza temporanee, devi specificare le autorizzazioni che le credenziali concedono all'utente che assume il ruolo. Per le operazioni API che iniziano con `AssumeRole*`, è necessario usare un ruolo IAM per assegnare le autorizzazioni. Per le altre operazioni API, il meccanismo varia a seconda dell'API. Per ulteriori dettagli, consultare [Autorizzazioni per le credenziali di sicurezza temporanee](id_credentials_temp_control-access.md). Inoltre, se usi le operazioni API `AssumeRole*`, devi chiamarle come utente IAM con credenziali a lungo termine. In caso contrario, la chiamata all'endpoint di federazione nella fase 3 ha esito negativo.  


1. Dopo aver ottenuto le credenziali di sicurezza temporanee, integrale in una stringa di sessione JSON per scambiarle con un token di accesso. Nell'esempio seguente viene illustrato come codificare le credenziali. Sostituisci il testo segnaposto con i valori appropriati delle credenziali ricevute nella fase precedente.

   ```
   {"sessionId":"*** temporary access key ID ***",
   "sessionKey":"*** temporary secret access key ***",
   "sessionToken":"*** session token ***"}
   ```

1. Effettuare la [codifica tramite URL](https://en.wikipedia.org/wiki/Percent-encoding) della stringa di sessione della fase precedente. Poiché le informazioni codificate sono informazioni sensibili, ti consigliamo di evitare l'uso di un servizio Web per la codifica. Usa invece una funzione o una caratteristica installata in locale nel kit di strumenti di sviluppo per codificare queste informazioni in modo sicuro. Puoi usare la funzione `urllib.quote_plus` in Python, la funzione `URLEncoder.encode` in Java o la funzione `CGI.escape` in Ruby. Consulta gli esempi più avanti in questo argomento.

1. <a name="STSConsoleLink_manual_step5"></a>
**Nota**  
AWS supporta le richieste POST qui.

   Invia la tua richiesta all'endpoint della AWS federazione:

   `https://region-code.signin.aws.amazon.com/federation` 

   Per un elenco dei *region-code* valori possibili, consulta la colonna **Regione** negli endpoint di [AWS accesso](https://docs.aws.amazon.com/general/latest/gr/signin-service.html). Facoltativamente, puoi utilizzare l'endpoint federativo di AWS accesso predefinito:

   `https://signin.aws.amazon.com/federation` 

   La richiesta deve includere i parametri `Action` e `Session` e, facoltativamente, se è stata utilizzata un'operazione API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html), un parametro HTTP `SessionDuration` come illustrato nell'esempio seguente.

   ```
   Action = getSigninToken
   SessionDuration = time in seconds
   Session = *** the URL encoded JSON string created in steps 3 & 4 ***
   ```
**Nota**  
Le seguenti istruzioni in questa fase funzionano solo con le richieste GET.

   Il parametro HTTP `SessionDuration` specifica la durata della sessione della console. Si tratta di un valore diverso rispetto alla durata delle credenziali temporanee specificato usando il parametro `DurationSeconds`. Puoi specificare un valore massimo di `SessionDuration` pari a 43.200 (12 ore). Se il `SessionDuration` parametro non è presente, la sessione utilizza per impostazione predefinita la durata delle credenziali recuperate AWS STS nel passaggio 2 (che per impostazione predefinita è un'ora). Consultare la [documentazione per l'API `AssumeRole`](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) per informazioni dettagliate su come specificare una durata tramite il parametro `DurationSeconds`. La possibilità di creare una sessione della console più lunga di un'ora è intrinseca nell'operazione `getSigninToken` dell'endpoint di federazione.
**Nota**  
`SessionDuration` non può essere maggiore o uguale alla durata massima della sessione impostata per il ruolo che stai assumendo. Ad esempio, si assuma di aver impostato la durata massima della sessione per il ruolo che desideri assumere su 5 ore. Il parametro `SessionDuration` può essere 16.524 secondi o 4 ore e 59 secondi.
Non usare il parametro HTTP `SessionDuration` quando ottieni le credenziali temporanee con `GetFederationToken`. L’operazione avrà esito negativo.
L'utilizzo delle credenziali perché un ruolo assuma un ruolo diverso viene chiamato [*concatenamento dei ruoli*](id_roles.md#iam-term-role-chaining). Quando si utilizza il concatenamento dei ruoli, le nuove credenziali sono limitate a una durata massima di un'ora. Quando si utilizzano i ruoli per [concedere autorizzazioni alle applicazioni eseguite su istanze EC2](id_roles_use_switch-role-ec2.md), tali applicazioni non sono soggette a questa limitazione.
Non usare il parametro HTTP `SessionDuration` quando ottieni le credenziali temporanee tramite la concatenazione dei ruoli. L’operazione avrà esito negativo.

   Quando abiliti le sessioni della console con una durata estesa, aumenti il rischio di esposizione delle credenziali. Per mitigare questo rischio, è possibile disabilitare immediatamente le sessioni della console attive per tutti i ruoli, scegliendo **Revoca sessioni** nella pagina **Riepilogo ruolo** nella console IAM. Per ulteriori informazioni, consulta [Revocare le credenziali di sicurezza temporanee per i ruoli IAM](id_roles_use_revoke-sessions.md). 

    Di seguito è riportato un esempio di richiesta. Per le righe è impostato il ritorno a capo per semplificare la lettura, ma devi inviare la richiesta come stringa su un'unica riga.

   ```
   https://signin.aws.amazon.com/federation
   ?Action=getSigninToken
   &SessionDuration=1800
   &Session=%7B%22sessionId%22%3A+%22ASIAJUMHIZPTOKTBMK5A%22%2C+%22sessionKey%22
   %3A+%22LSD7LWI%2FL%2FN%2BgYpan5QFz0XUpc8s7HYjRsgcsrsm%22%2C+%22sessionToken%2
   2%3A+%22FQoDYXdzEBQaDLbj3VWv2u50NN%2F3yyLSASwYtWhPnGPMNmzZFfZsL0Qd3vtYHw5A5dW
   AjOsrkdPkghomIe3mJip5%2F0djDBbo7SmO%2FENDEiCdpsQKodTpleKA8xQq0CwFg6a69xdEBQT8
   FipATnLbKoyS4b%2FebhnsTUjZZQWp0wXXqFF7gSm%2FMe2tXe0jzsdP0O12obez9lijPSdF1k2b5
   PfGhiuyAR9aD5%2BubM0pY86fKex1qsytjvyTbZ9nXe6DvxVDcnCOhOGETJ7XFkSFdH0v%2FYR25C
   UAhJ3nXIkIbG7Ucv9cOEpCf%2Fg23ijRgILIBQ%3D%3D%22%7D
   ```

   La risposta dell'endpoint di federazione è un documento JSON con un valore `SigninToken`. L'aspetto sarà simile all'esempio seguente.

   ```
   {"SigninToken":"*** the SigninToken string ***"}
   ```

1. 
**Nota**  
AWS supporta le richieste POST qui.

   Infine, crea l’URL che gli utenti possono usare per accedere alla Console di gestione AWS. L'URL corrisponde all'URL dell'endpoint di federazione usato in [Step 5](#STSConsoleLink_manual_step5), con l'aggiunta dei parametri seguenti:

   ```
   ?Action = login
   &Issuer = *** the form-urlencoded URL for your internal sign-in page ***
   &Destination = *** the form-urlencoded URL to the desired AWS console page ***
   &SigninToken = *** the value of SigninToken received in the previous step ***
   ```
**Nota**  
Le seguenti istruzioni in questa fase funzionano solo con utilizzando l'API GET.

   L'esempio seguente mostra l'aspetto dell'URL finale. L'URL è valido per 15 minuti dal momento della creazione. Le credenziali di sicurezza temporanee e la sessione della console incorporate nell'URL sono valide per la durata specificata nel parametro HTTP `SessionDuration` al momento della richiesta iniziale. 

   ```
   https://signin.aws.amazon.com/federation
   ?Action=login
   &Issuer=https%3A%2F%2Fexample.com
   &Destination=https%3A%2F%2Fconsole.aws.amazon.com%2F
   &SigninToken=VCQgs5qZZt3Q6fn8Tr5EXAMPLEmLnwB7JjUc-SHwnUUWabcRdnWsi4DBn-dvC
   CZ85wrD0nmldUcZEXAMPLE-vXYH4Q__mleuF_W2BE5HYexbe9y4Of-kje53SsjNNecATfjIzpW1
   WibbnH6YcYRiBoffZBGExbEXAMPLE5aiKX4THWjQKC6gg6alHu6JFrnOJoK3dtP6I9a6hi6yPgm
   iOkPZMmNGmhsvVxetKzr8mx3pxhHbMEXAMPLETv1pij0rok3IyCR2YVcIjqwfWv32HU2Xlj471u
   3fU6uOfUComeKiqTGX974xzJOZbdmX_t_lLrhEXAMPLEDDIisSnyHGw2xaZZqudm4mo2uTDk9Pv
   9l5K0ZCqIgEXAMPLEcA6tgLPykEWGUyH6BdSC6166n4M4JkXIQgac7_7821YqixsNxZ6rsrpzwf
   nQoS14O7R0eJCCJ684EXAMPLEZRdBNnuLbUYpz2Iw3vIN0tQgOujwnwydPscM9F7foaEK3jwMkg
   Apeb1-6L_OB12MZhuFxx55555EXAMPLEhyETEd4ZulKPdXHkgl6T9ZkIlHz2Uy1RUTUhhUxNtSQ
   nWc5xkbBoEcXqpoSIeK7yhje9Vzhd61AEXAMPLElbWeouACEMG6-Vd3dAgFYd6i5FYoyFrZLWvm
   0LSG7RyYKeYN5VIzUk3YWQpyjP0RiT5KUrsUi-NEXAMPLExMOMdoODBEgKQsk-iu2ozh6r8bxwC
   RNhujg
   ```

## Codice di esempio con Python
<a name="STSConsoleLink_programPython"></a>

Gli esempi seguenti mostrano come usare Python a livello di programmazione per creare un URL che concede agli utenti l’accesso diretto alla Console di gestione AWS. Gli esempi sono due:
+ Federa tramite richieste GET a AWS
+ Federate tramite richieste POST a AWS

Entrambi gli esempi utilizzano l'[AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API [AWS SDK per Python (Boto3)](https://aws.amazon.com/tools/)and per ottenere credenziali di sicurezza temporanee.

Non includere `SessionDuration` se le credenziali `AssumeRoleSession` provengono dalla concatenazione dei ruoli. Se si include `SessionDuration`, l’operazione avrà esito negativo.

### Utilizzo delle richieste GET
<a name="post-api-py-example"></a>

```
import urllib, json, sys
import requests # 'pip install requests'
import boto3 # AWS SDK for Python (Boto3) 'pip install boto3'

# Step 1: Authenticate user in your own identity system.

# Step 2: Using the access keys for an IAM user in your Account AWS,
# call "AssumeRole" to get temporary access keys for the role or federated principal

# Note: Calls to AWS STS AssumeRole must be signed using the access key ID 
# and secret access key of an IAM user or using existing temporary credentials.
# The credentials can be in Amazon EC2 instance metadata, in environment variables, 
# or in a configuration file, and will be discovered automatically by the 
# client('sts') function. For more information, see the Python SDK docs:
# http://boto3.readthedocs.io/en/latest/reference/services/sts.html
# http://boto3.readthedocs.io/en/latest/reference/services/sts.html#STS.Client.assume_role
sts_connection = boto3.client('sts')

assumed_role_object = sts_connection.assume_role(
    RoleArn="arn:aws:iam::account-id:role/ROLE-NAME",
    RoleSessionName="AssumeRoleSession",
)

# Step 3: Format resulting temporary credentials into JSON
url_credentials = {}
url_credentials['sessionId'] = assumed_role_object.get('Credentials').get('AccessKeyId')
url_credentials['sessionKey'] = assumed_role_object.get('Credentials').get('SecretAccessKey')
url_credentials['sessionToken'] = assumed_role_object.get('Credentials').get('SessionToken')
json_string_with_temp_credentials = json.dumps(url_credentials)

# Step 4. Make request to AWS federation endpoint to get sign-in token. Construct the parameter string with
# the sign-in action request, a 12-hour session duration, and the JSON document with temporary credentials 
# as parameters.
request_parameters = "?Action=getSigninToken"
request_parameters += "&SessionDuration=43200"
if sys.version_info[0] < 3:
    def quote_plus_function(s):
        return urllib.quote_plus(s)
else:
    def quote_plus_function(s):
        return urllib.parse.quote_plus(s)
request_parameters += "&Session=" + quote_plus_function(json_string_with_temp_credentials)
request_url = "https://signin.aws.amazon.com/federation" + request_parameters
r = requests.get(request_url)
# Returns a JSON document with a single element named SigninToken.
signin_token = json.loads(r.text)

# Step 5: Create URL where users can use the sign-in token to sign in to 
# the console. This URL must be used within 15 minutes after the
# sign-in token was issued.
request_parameters = "?Action=login" 
request_parameters += "&Issuer=Example.org" 
request_parameters += "&Destination=" + quote_plus_function("https://console.aws.amazon.com/")
request_parameters += "&SigninToken=" + signin_token["SigninToken"]
request_url = "https://signin.aws.amazon.com/federation" + request_parameters

# Send final URL to stdout
print (request_url)
```

### Utilizzo delle richieste POST
<a name="get-api-py-example-1"></a>

```
import urllib, json, sys
import requests # 'pip install requests'
import boto3 # AWS SDK for Python (Boto3) 'pip install boto3'
import os
from selenium import webdriver # 'pip install selenium', 'brew install chromedriver'

# Step 1: Authenticate user in your own identity system.

# Step 2: Using the access keys for an IAM user in your A Account AWS,
# call "AssumeRole" to get temporary access keys for the role or federated principal

# Note: Calls to AWS STS AssumeRole must be signed using the access key ID 
# and secret access key of an IAM user or using existing temporary credentials.
# The credentials can be in Amazon EC2 instance metadata, in environment variables, 

# or in a configuration file, and will be discovered automatically by the 
# client('sts') function. For more information, see the Python SDK docs:
# http://boto3.readthedocs.io/en/latest/reference/services/sts.html
# http://boto3.readthedocs.io/en/latest/reference/services/sts.html#STS.Client.assume_role
if sys.version_info[0] < 3:
    def quote_plus_function(s):
        return urllib.quote_plus(s)
else:
    def quote_plus_function(s):
        return urllib.parse.quote_plus(s)

sts_connection = boto3.client('sts')

assumed_role_object = sts_connection.assume_role(
    RoleArn="arn:aws:iam::account-id:role/ROLE-NAME",
    RoleSessionName="AssumeRoleDemoSession",
)

# Step 3: Format resulting temporary credentials into JSON
url_credentials = {}
url_credentials['sessionId'] = assumed_role_object.get('Credentials').get('AccessKeyId')
url_credentials['sessionKey'] = assumed_role_object.get('Credentials').get('SecretAccessKey')
url_credentials['sessionToken'] = assumed_role_object.get('Credentials').get('SessionToken')
json_string_with_temp_credentials = json.dumps(url_credentials)

# Step 4. Make request to AWS federation endpoint to get sign-in token. Construct the parameter string with
# the sign-in action request, a 12-hour session duration, and the JSON document with temporary credentials 
# as parameters.
request_parameters = {}
request_parameters['Action'] = 'getSigninToken'
request_parameters['SessionDuration'] = '43200'
request_parameters['Session'] = json_string_with_temp_credentials

request_url = "https://signin.aws.amazon.com/federation"
r = requests.post( request_url, data=request_parameters)

# Returns a JSON document with a single element named SigninToken.
signin_token = json.loads(r.text)

# Step 5: Create a POST request where users can use the sign-in token to sign in to 
# the console. The POST request must be made within 15 minutes after the
# sign-in token was issued.
request_parameters = {}
request_parameters['Action'] = 'login'
request_parameters['Issuer']='Example.org'
request_parameters['Destination'] = 'https://console.aws.amazon.com/'
request_parameters['SigninToken'] =signin_token['SigninToken']

jsrequest = '''
var form = document.createElement('form');
form.method = 'POST';
form.action = '{request_url}';
request_parameters = {request_parameters}
for (var param in request_parameters) {{
    if (request_parameters.hasOwnProperty(param)) {{
        const hiddenField = document.createElement('input');
        hiddenField.type = 'hidden';
        hiddenField.name = param;
        hiddenField.value = request_parameters[param];
        form.appendChild(hiddenField);
    }}
}}
document.body.appendChild(form);
form.submit();
'''.format(request_url=request_url, request_parameters=request_parameters)

driver = webdriver.Chrome()
driver.execute_script(jsrequest)
input("Press Enter to close the browser window...")
```

## Esempio di codice con Java
<a name="STSConsoleLink_programJava"></a>

L’esempio seguente mostra come usare Java a livello di programmazione per creare un URL che concede agli utenti l’accesso diretto alla Console di gestione AWS. Nel frammento di codice seguente viene utilizzato [AWS SDK for Java](https://aws.amazon.com/documentation/sdkforjava/).

```
import java.net.URLEncoder;
import java.net.URL;
import java.net.URLConnection;
import java.io.BufferedReader;
import java.io.InputStreamReader;
// Available at http://www.json.org/java/index.html
import org.json.JSONObject;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClient;
import com.amazonaws.services.securitytoken.model.Credentials;
import com.amazonaws.services.securitytoken.model.GetFederationTokenRequest;
import com.amazonaws.services.securitytoken.model.GetFederationTokenResult;


/* Calls to AWS STS API operations must be signed using the access key ID 
   and secret access key of an IAM user or using existing temporary 
   credentials. The credentials should not be embedded in code. For 
   this example, the code looks for the credentials in a 
   standard configuration file.
*/
AWSCredentials credentials = 
  new PropertiesCredentials(
         AwsConsoleApp.class.getResourceAsStream("AwsCredentials.properties"));

AWSSecurityTokenServiceClient stsClient = 
  new AWSSecurityTokenServiceClient(credentials);

GetFederationTokenRequest getFederationTokenRequest = 
  new GetFederationTokenRequest();
getFederationTokenRequest.setDurationSeconds(1800);
getFederationTokenRequest.setName("UserName");

// A sample policy for accessing Amazon Simple Notification Service (Amazon SNS) in the console.

String policy = "{\"Version\":\"2012-10-17\",		 	 	 \"Statement\":[{\"Action\":\"sns:*\"," +
  "\"Effect\":\"Allow\",\"Resource\":\"*\"}]}";

getFederationTokenRequest.setPolicy(policy);

GetFederationTokenResult federationTokenResult = 
  stsClient.getFederationToken(getFederationTokenRequest);

Credentials federatedCredentials = federationTokenResult.getCredentials();

// The issuer parameter specifies your internal sign-in
// page, for example https://mysignin.internal.mycompany.com/.
// The console parameter specifies the URL to the destination console of the
// AWS Management Console. This example goes to Amazon SNS. 
// The signin parameter is the URL to send the request to.

String issuerURL = "https://mysignin.internal.mycompany.com/";
String consoleURL = "https://console.aws.amazon.com/sns";
String signInURL = "https://signin.aws.amazon.com/federation";
  
// Create the sign-in token using temporary credentials,
// including the access key ID,  secret access key, and session token.
String sessionJson = String.format(
  "{\"%1$s\":\"%2$s\",\"%3$s\":\"%4$s\",\"%5$s\":\"%6$s\"}",
  "sessionId", federatedCredentials.getAccessKeyId(),
  "sessionKey", federatedCredentials.getSecretAccessKey(),
  "sessionToken", federatedCredentials.getSessionToken());
              
// Construct the sign-in request with the request sign-in token action, a
// 12-hour console session duration, and the JSON document with temporary 
// credentials as parameters.

String getSigninTokenURL = signInURL + 
                           "?Action=getSigninToken" +
                           "&DurationSeconds=43200" + 
                           "&SessionType=json&Session=" + 
                           URLEncoder.encode(sessionJson,"UTF-8");

URL url = new URL(getSigninTokenURL);

// Send the request to the AWS federation endpoint to get the sign-in token
URLConnection conn = url.openConnection ();

BufferedReader bufferReader = new BufferedReader(new 
  InputStreamReader(conn.getInputStream()));  
String returnContent = bufferReader.readLine();

String signinToken = new JSONObject(returnContent).getString("SigninToken");

String signinTokenParameter = "&SigninToken=" + URLEncoder.encode(signinToken,"UTF-8");

// The issuer parameter is optional, but recommended. Use it to direct users
// to your sign-in page when their session expires.

String issuerParameter = "&Issuer=" + URLEncoder.encode(issuerURL, "UTF-8");

// Finally, present the completed URL for the AWS console session to the user

String destinationParameter = "&Destination=" + URLEncoder.encode(consoleURL,"UTF-8");
String loginURL = signInURL + "?Action=login" +
                     signinTokenParameter + issuerParameter + destinationParameter;
```

## Esempio ci creazione dell'URL (Ruby)
<a name="STSConsoleLink_programRuby"></a>

L’esempio seguente mostra come usare Ruby a livello di programmazione per creare un URL che concede agli utenti l’accesso diretto alla Console di gestione AWS. In questo frammento di codice viene utilizzato [AWS SDK for Ruby](https://aws.amazon.com/documentation/sdkforruby/). 

```
require 'rubygems'
require 'json'
require 'open-uri'
require 'cgi'
require 'aws-sdk'

# Create a new STS instance
# 
# Note: Calls to AWS STS API operations must be signed using an access key ID 
# and secret access key. The credentials can be in EC2 instance metadata 
# or in environment variables and will be automatically discovered by
# the default credentials provider in the AWS Ruby SDK. 
sts = Aws::STS::Client.new()

# The following call creates a temporary session that returns 
# temporary security credentials and a session token.
# The policy grants permissions to work
# in the AWS SNS console.

session = sts.get_federation_token({
  duration_seconds: 1800,
  name: "UserName",
  policy: "{\"Version\":\"2012-10-17\",		 	 	 \"Statement\":{\"Effect\":\"Allow\",\"Action\":\"sns:*\",\"Resource\":\"*\"}}",
})

# The issuer value is the URL where users are directed (such as
# to your internal sign-in page) when their session expires.
#
# The console value specifies the URL to the destination console.
# This example goes to the Amazon SNS console.
#
# The sign-in value is the URL of the AWS STS federation endpoint.
issuer_url = "https://mysignin.internal.mycompany.com/"
console_url = "https://console.aws.amazon.com/sns"
signin_url = "https://signin.aws.amazon.com/federation"

# Create a block of JSON that contains the temporary credentials
# (including the access key ID, secret access key, and session token).
session_json = {
  :sessionId => session.credentials[:access_key_id],
  :sessionKey => session.credentials[:secret_access_key],
  :sessionToken => session.credentials[:session_token]
}.to_json

# Call the federation endpoint, passing the parameters
# created earlier and the session information as a JSON block. 
# The request returns a sign-in token that's valid for 15 minutes.
# Signing in to the console with the token creates a session 
# that is valid for 12 hours.
get_signin_token_url = signin_url + 
                       "?Action=getSigninToken" + 
                       "&SessionType=json&Session=" + 
                       CGI.escape(session_json)

returned_content = URI.parse(get_signin_token_url).read

# Extract the sign-in token from the information returned
# by the federation endpoint.
signin_token = JSON.parse(returned_content)['SigninToken']
signin_token_param = "&SigninToken=" + CGI.escape(signin_token)

# Create the URL to give to the user, which includes the
# sign-in token and the URL of the console to open.
# The "issuer" parameter is optional but recommended.
issuer_param = "&Issuer=" + CGI.escape(issuer_url)
destination_param = "&Destination=" + CGI.escape(console_url)
login_url = signin_url + "?Action=login" + signin_token_param + 
  issuer_param + destination_param
```

# Tag per AWS Identity and Access Management le risorse
<a name="id_tags"></a>

Un *tag* è un'etichetta di attributi personalizzata assegnata a una risorsa AWS . Ogni tag è costituito da due parti:
+ Una *chiave di tag* (ad esempio, `CostCenter`, `Environment`, `Project` o `Purpose`).
+ Un campo facoltativo noto come *valore del tag* (ad esempio, `111122223333`, `Production` o un nome di team). Non specificare il valore del tag equivale a utilizzare una stringa vuota.

Tutti questi sono noti come coppie chiave-valore. Per i limiti sul numero di tag che è possibile avere sulle risorse IAM, consulta [IAM e AWS STS quote](reference_iam-quotas.md).

**Nota**  
Per dettagli sulla distinzione tra maiuscole e minuscole per le chiavi dei tag e i valori delle chiavi dei tag, consulta [Case sensitivity](#case-sensitivity).

I tag ti aiutano a identificare e organizzare AWS le tue risorse. Molti AWS servizi supportano l'etichettatura, quindi puoi assegnare lo stesso tag a risorse di servizi diversi per indicare che le risorse sono correlate. Ad esempio, è possibile assegnare lo stesso tag a un ruolo IAM che si assegna a un bucket Amazon S3. Per ulteriori informazioni sulle strategie di tagging, consulta la Guida per l'utente delle risorse di *[etichettatura AWS](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html)*.

Oltre a identificare, organizzare e monitorare le risorse IAM con i tag, puoi usare i tag nelle policy IAM per controllare chi può visualizzare e interagire con le risorse. Per ulteriori informazioni sull'uso dei tag per controllare l'accesso, consulta [Controllo dell'accesso a e per utenti e ruoli IAM mediante i tag](access_iam-tags.md).

Puoi anche utilizzare i tag AWS STS per aggiungere attributi personalizzati quando assumi un ruolo o federi un utente. Per ulteriori informazioni, consulta [Passa i tag di sessione AWS STS](id_session-tags.md).

**Topics**
+ [Scegli una convenzione di denominazione dei AWS tag](#id_tags_naming)
+ [Regole per l'etichettatura in IAM e AWS STS](#id_tags_rules)
+ [Aggiungere tag agli utenti IAM](id_tags_users.md)
+ [Aggiungere tag ai ruoli IAM](id_tags_roles.md)
+ [Aggiungere tag alle policy gestite dal cliente](id_tags_customer-managed-policies.md)
+ [Aggiungere tag ai provider di identità OpenID Connect (OIDC)](id_tags_oidc.md)
+ [Aggiungere tag ai provider di identità SAML per IAM](id_tags_saml.md)
+ [Aggiunta di tag ai profili dell'istanza per i ruoli Amazon EC2](id_tags_instance-profiles.md)
+ [Aggiungere tag ai certificati server](id_tags_server-certificates.md)
+ [Aggiungere tag ai dispositivi MFA virtuali](id_tags_virtual-mfa.md)
+ [Passa i tag di sessione AWS STS](id_session-tags.md)

## Scegli una convenzione di denominazione dei AWS tag
<a name="id_tags_naming"></a>

Quando si inizia a collegare tag alle risorse IAM, scegli attentamente la convenzione di denominazione dei tag. Applica la stessa convenzione a tutti i AWS tag. Ciò è particolarmente importante se si utilizzano i tag nelle politiche per controllare l'accesso alle AWS risorse. Se utilizzi già tag in AWS, rivedi la convenzione di denominazione e modificala di conseguenza.

**Nota**  
Se il tuo account è membro di AWS Organizations, consulta [le politiche relative ai tag](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_tag-policies.html) nella guida per l' AWS Organizations utente per ulteriori informazioni sull'utilizzo dei tag in AWS Organizations.

### Best practice per la denominazione dei tag
<a name="id_tags_naming_best_practices"></a>

Di seguito sono riportate alcune best practice e convenzioni di denominazione per i tag.

Assicurati che i nomi dei tag vengano utilizzati in modo coerente. Ad esempio, i tag `CostCenter` e `costcenter` sono diversi, pertanto uno potrebbe essere configurato come tag di allocazione dei costi per l'analisi e il report finanziario mentre l'altro no. Analogamente, il `Name` tag viene visualizzato nella AWS Console per molte risorse, ma non lo è. `name` Per dettagli sulla distinzione tra maiuscole e minuscole per le chiavi dei tag e i valori delle chiavi dei tag, consulta [Case sensitivity](#case-sensitivity).

Alcuni tag sono predefiniti AWS o creati automaticamente da vari AWS servizi. Molti nomi AWS di tag definiti utilizzano solo lettere minuscole, con trattini che separano le parole nel nome e prefissi per identificare il servizio di origine del tag. Esempio: 
+ `aws:ec2spot:fleet-request-id`identifica l'Amazon EC2 Spot Instance Request che ha avviato l'istanza.
+ `aws:cloudformation:stack-name`identifica lo CloudFormation stack che ha creato la risorsa. 
+ `elasticbeanstalk:environment-name` identifica l'applicazione che ha creato la risorsa.

Prendi in considerazione la possibilità di assegnare un nome ai tag utilizzando tutte lettere minuscole, con trattini che separano le parole e un prefisso che identifichi il nome dell'organizzazione o il nome abbreviato. Ad esempio, per una società fittizia denominata *AnyCompany*, è possibile definire tag come:
+ `anycompany:cost-center` per identificare il codice interno del centro di costo 
+ `anycompany:environment-type` per identificare se l'ambiente è in fase di sviluppo, test o produzione
+ `anycompany:application-id` per identificare l'applicazione per cui è stata creata la risorsa 

Il prefisso garantisce che i tag siano chiaramente identificati come definiti dall'organizzazione e non da AWS uno strumento di terze parti che potreste utilizzare. L'uso di tutte le lettere minuscole con i trattini per i separatori evita confusione su come scrivere il nome di un tag. Ad esempio, `anycompany:project-id` è più semplice da ricordare rispetto `ANYCOMPANY:ProjectID`, `anycompany:projectID` oppure `Anycompany:ProjectId`.

## Regole per l'etichettatura in IAM e AWS STS
<a name="id_tags_rules"></a>

Un certo numero di convenzioni regola la creazione e l'applicazione di tag in IAM e AWS STS.

### Denominazione di tag
<a name="id_tags_rules_creating"></a>

Osserva le seguenti convenzioni quando formuli una convenzione di denominazione dei tag per risorse IAM, sessioni di assunzione di AWS STS ruoli e sessioni utente federate: AWS STS 

**Requisiti per i caratteri**: chiavi e valori di tag possono includere qualsiasi combinazione di lettere, numeri, spazi e simboli \$1 . : / = \$1 - @.

**Distinzione tra maiuscole e minuscole**: la distinzione tra maiuscole e minuscole per le chiavi di tag varia a seconda del tipo di risorsa IAM taggata. I valori chiave dei tag per utenti e ruoli IAM non distingue tra maiuscole e minuscole, anche se questi caratteri vengono mantenuti. Questo significa che non è possibile avere le chiavi di tag **Department** e **department** separate. Se hai assegnato a un utente il tag **Department=finance** e aggiungi il tag **department=hr**, quest'ultimo sostituirà il primo tag. Non viene aggiunto un secondo tag.

Per gli altri tipi di risorse IAM, i valori della chiave di tag fanno distinzione tra maiuscole e minuscole. Questo significa che è possibile avere chiavi di tag **Costcenter** e **costcenter** separate. Ad esempio, se sono stati applicati i tag a una policy gestita dal cliente con il tag **Costcenter = 1234** e si aggiunge il tag **costcenter = 5678**, il criterio avrà entrambe le chiavi di tag **Costcenter** e **costcenter**.

Come best practice, si consiglia di evitare l'uso di tag simili con un'applicazione di maiuscole e minuscole non coerente. Consigliamo di definire una strategia per l'uso delle lettere maiuscole e minuscole nei tag e implementarla in modo coerente per tutti i tipi di risorse. [Per ulteriori informazioni sulle migliori pratiche per l'etichettatura, consulta Tagging Resources in. AWS](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) Riferimenti generali di AWS

Negli elenchi seguenti vengono illustrate le differenze nella distinzione tra maiuscole e minuscole per le chiavi di tag associate alle risorse IAM.

I valori delle chiavi tag **non** fanno distinzione tra maiuscole e minuscole:
+ Ruoli IAM
+ Utenti IAM

Le chiavi e i valori fanno distinzione tra maiuscole e minuscole.
+ Policy gestite dal cliente
+ Profili delle istanze
+ Provider di identità OpenID Connect
+ Provider di identità SAML
+ Certificati server
+ Dispositivi MFA virtuali

Inoltre, valgono le seguenti regole:
+ Non è possibile creare una chiave o un valore di tag che inizi con il testo **aws:**. Questo prefisso di tag è riservato per AWS uso interno.
+ È possibile creare un tag con un valore vuoto, ad esempio **phoneNumber = **. Non è possibile creare una chiave di tag vuota.
+ Non è possibile specificare più valori in un singolo tag, ma è possibile creare una struttura multivalore personalizzata nel singolo valore. Ad esempio, supponiamo che l'utente Zhang lavori nel team di progettazione e nel team di QA. Se colleghi il tag **team = Engineering** e poi colleghi il tag **team = QA**, modifichi il valore del tag da **Engineering** a **QA**. Al contrario, è possibile includere più valori in un singolo tag con un separatore personalizzato. In questo esempio, è possibile collegare il tag **team = Engineering:QA** a Zhang.
**Nota**  
Per controllare l'accesso al team di progettazione in questo esempio utilizzando il tag **team**, è necessario creare una policy che consenta ogni configurazione che potrebbe includere **Engineering**, tra cui **Engineering:QA**. Per ulteriori informazioni sull'utilizzo dei tag nelle policy, consulta [Controllo dell'accesso a e per utenti e ruoli IAM mediante i tag](access_iam-tags.md).

### Applicazione e modifica di tag
<a name="id_tags_rules_applying"></a>

Osserva le seguenti convenzioni quando applichi i tag alle risorse IAM:
+ Puoi applicare tag alla maggior parte delle risorse IAM, ma non a gruppi, ruoli assunti, report di accesso o dispositivi MFA basati su hardware.
+ Non è possibile utilizzare l'editor di tag per applicare i tag alle risorse IAM. L'editor di tag non supporta i tag IAM. Per ulteriori informazioni sull'utilizzo dell'editor di tag con altri servizi, consulta l'articolo relativo all'[utilizzo dell'editor di tag](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/tag-editor.html) nella *Guida per l'utente della AWS Resource Groups *.
+ Per aggiungere i tag a una risorsa IAM, devi disporre di autorizzazioni specifiche. Per applicare o rimuovere i tag dalle risorse, è necessario disporre anche dell'autorizzazione per elencare i tag. Per ulteriori informazioni, consulta l'elenco degli argomenti relativi a ciascuna risorsa IAM alla fine di questa pagina. 
+ Il numero e la dimensione delle risorse IAM in un AWS account sono limitati. Per ulteriori informazioni, consulta [IAM e AWS STS quote](reference_iam-quotas.md).
+ Puoi applicare lo stesso tag a più risorse IAM. Ad esempio, si supponga di avere un reparto denominato `AWS_Development` con 12 membri. È possibile avere 12 utenti e un ruolo con **department** come chiave del tag e **awsDevelopment** come valore (**department = awsDevelopment**). Puoi inoltre utilizzare lo stesso tag su risorse in altri [servizi che supportano il tagging](reference_aws-services-that-work-with-iam.md).
+ Le entità IAM (utenti o ruoli) non possono avere più istanze della stessa chiave di tag. Ad esempio, se disponi di un utente con la coppia chiave-valore del tag **costCenter = 1234**, puoi collegare la coppia chiave-valore del tag **costCenter = 5678**. IAM aggiorna il valore del tag **costCenter** a **5678**.
+ Per modificare un tag collegato a un'entità IAM (utente o ruolo), collega un tag con un nuovo valore per sovrascrivere il tag esistente. Ad esempio, supponiamo che tu disponga di un utente con la coppia chiave-valore del tag **department = Engineering**. Se devi spostare l'utente nel reparto QA, puoi collegare la coppia chiave-valore del tag **department = QA** all'utente. In questo modo il valore **Engineering** della chiave di tag **department** viene sostituito con il valore **QA**.

# Aggiungere tag agli utenti IAM
<a name="id_tags_users"></a>

Puoi utilizzare coppie chiave-valore di tag IAM per aggiungere attributi personalizzati a un utente IAM. Ad esempio, per aggiungere informazioni sulla posizione per un utente, puoi aggiungere la chiave di tag **location** e il valore di tag **us\$1wa\$1seattle**. In alternativa, puoi utilizzare tre coppie chiave-valore del tag per la posizione separate: **loc-country = us**, **loc-state = wa** e **loc-city = seattle**. È possibile usare i tag per controllare l'accesso di un utente alle risorse o per controllare quali tag possono essere collegati a un utente. Per ulteriori informazioni sull'uso dei tag per controllare l'accesso, consulta [Controllo dell'accesso a e per utenti e ruoli IAM mediante i tag](access_iam-tags.md).

Puoi anche utilizzare i tag AWS STS per aggiungere attributi personalizzati quando assumi un ruolo o federi un utente. Per ulteriori informazioni, consulta [Passa i tag di sessione AWS STS](id_session-tags.md).

## Autorizzazioni necessarie per il tagging degli utenti IAM
<a name="id_tags_users_permissions"></a>

Per consentire a un utente IAM di aggiungere tag ad altri utenti, è necessario configurare le autorizzazioni relative. Puoi specificare una o tutte le seguenti operazioni del tag IAM in una policy IAM:
+ `iam:ListUserTags`
+ `iam:TagUser`
+ `iam:UntagUser`

**Come consentire a un utente IAM di aggiungere, elencare o rimuovere un tag per un utente specifico**  
Aggiungi l'istruzione seguente alla policy di autorizzazione per l'utente IAM che deve gestire i tag. Usa il tuo numero di account e sostituiscilo *<username>* con il nome dell'utente i cui tag devono essere gestiti. Per ulteriori informazioni su come creare una policy utilizzando questo esempio di documento di policy JSON, consultare [Creazione di policy utilizzando l'editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListUserTags",
        "iam:TagUser",
        "iam:UntagUser"
    ],
    "Resource": "arn:aws:iam::<account-number>:user/<username>"
}
```

**Come consentire a un utente IAM di gestire autonomamente i tag**  
Aggiungi l'istruzione seguente alla policy di autorizzazione per gli utenti per consentire loro di gestire i propri tag. Per ulteriori informazioni su come creare una policy utilizzando questo esempio di documento di policy JSON, consultare [Creazione di policy utilizzando l'editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListUserTags",
        "iam:TagUser",
        "iam:UntagUser"
    ],
    "Resource": "arn:aws:iam::user/${aws:username}"
}
```

**Come consentire a un utente IAM di aggiungere un tag a un utente specifico**  
Aggiungi l'istruzione seguente alla policy delle autorizzazioni relativa all'utente IAM che potrà aggiungere ma non rimuovere i tag di un determinato utente.

**Nota**  
L'azione `iam:TagUser` richiede che tu includa anche l'azione `iam:ListUserTags`.

Per utilizzare questa politica, sostituiscila *<username>* con il nome dell'utente i cui tag devono essere gestiti. Per ulteriori informazioni su come creare una policy utilizzando questo esempio di documento di policy JSON, consultare [Creazione di policy utilizzando l'editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListUserTags",
        "iam:TagUser"
    ],
    "Resource": "arn:aws:iam::<account-number>:user/<username>"
}
```

In alternativa, puoi utilizzare una policy AWS gestita come [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess) per fornire l'accesso completo a IAM.

## Gestione dei tag degli utenti IAM (console)
<a name="id_tags_users_procs-console"></a>

Puoi gestire i tag per gli utenti IAM dalla Console di gestione AWS.

**Per gestire i tag degli utenti (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione della console, scegliere **Users (Utenti)** e selezionare il nome dell'utente da modificare.

1. Scegliere la scheda **Tags (Tag)** e completare una delle seguenti operazioni:
   + Scegli **Add new tag** (Aggiungi nuovo tag) se all'utente non sono ancora stati assegnati tag.
   + Scegli **Manage tags** (Gestisci tag) per gestire il set di tag esistente.

1. Aggiungere o rimuovere i tag per completare il set di tag. Selezionare quindi **Save changes (Salva modifiche)**.

## Gestione dei tag sugli utenti IAM (AWS CLI o AWS API)
<a name="id_tags_users_procs-cli-api"></a>

Puoi elencare, collegare o rimuovere i tag per gli utenti IAM. Puoi utilizzare AWS CLI o l' AWS API per gestire i tag per gli utenti IAM.

**Per elencare i tag attualmente associati a un utente IAM (AWS CLI o AWS API)**
+ AWS CLI: [era iam list-user-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-user-tags.html)
+ AWS API: [ListUserTags](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUserTags.html)

**Per allegare tag a un utente IAM (AWS CLI o AWS API)**
+ AWS CLI: [aws iam tag-user](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-user.html)
+ AWS API: [TagUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagUser.html)

**Per rimuovere i tag da un utente (AWS CLI o AWS API) IAM**
+ AWS CLI: [aws iam untag-user](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-user.html)
+ AWS API: [UntagUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagUser.html)

Per informazioni su come allegare tag alle risorse per altri AWS servizi, consulta la documentazione relativa a tali servizi. 

Per ulteriori informazioni sull'utilizzo di tag per impostare autorizzazioni più granulari con le policy di autorizzazione IAM, consulta [Elementi delle policy IAM: variabili e tag](reference_policies_variables.md).

# Aggiungere tag ai ruoli IAM
<a name="id_tags_roles"></a>

Puoi utilizzare coppie chiave-valore di tag IAM per aggiungere attributi personalizzati a un ruolo IAM. Ad esempio, per aggiungere informazioni sulla posizione per un ruolo, puoi aggiungere la chiave tag **location** e il valore tag **us\$1wa\$1seattle**. In alternativa, puoi utilizzare tre coppie chiave-valore del tag per la posizione separate: **loc-country = us**, **loc-state = wa** e **loc-city = seattle**. Puoi utilizzare i tag per controllare l'accesso di un ruolo alle risorse o per controllare quali tag possono essere collegati a un ruolo. Per ulteriori informazioni sull'uso dei tag per controllare l'accesso, consulta [Controllo dell'accesso a e per utenti e ruoli IAM mediante i tag](access_iam-tags.md).

Puoi anche utilizzare i tag AWS STS per aggiungere attributi personalizzati quando assumi un ruolo o federi un utente. Per ulteriori informazioni, consulta [Passa i tag di sessione AWS STS](id_session-tags.md).

## Autorizzazioni necessarie per il tagging dei ruoli IAM
<a name="id_tags_roles_permissions"></a>

Per permettere a un ruolo IAM di applicare tag ad altre entità (utenti o ruoli), devi configurare le autorizzazioni. Puoi specificare una o tutte le seguenti operazioni del tag IAM in una policy IAM:
+ `iam:ListRoleTags`
+ `iam:TagRole`
+ `iam:UntagRole`
+ `iam:ListUserTags`
+ `iam:TagUser`
+ `iam:UntagUser`

**Come consentire a un ruolo IAM di aggiungere, elencare o rimuovere un tag per un utente specifico**  
Aggiungi l'istruzione seguente alla policy di autorizzazione per il ruolo IAM che deve gestire i tag. Usa il tuo numero di account e sostituiscilo *<username>* con il nome dell'utente i cui tag devono essere gestiti. Per ulteriori informazioni su come creare una policy utilizzando questo esempio di documento di policy JSON, consultare [Creazione di policy utilizzando l'editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListUserTags",
        "iam:TagUser",
        "iam:UntagUser"
    ],
    "Resource": "arn:aws:iam::<account-number>:user/<username>"
}
```

**Come consentire a un ruolo IAM di aggiungere un tag a un utente specifico**  
Aggiungi l'istruzione seguente alla policy di autorizzazione relativa al ruolo IAM che potrà aggiungere ma non rimuovere i tag di un utente specifico.

Per utilizzare questa politica, sostituiscila *<username>* con il nome dell'utente i cui tag devono essere gestiti. Per ulteriori informazioni su come creare una policy utilizzando questo esempio di documento di policy JSON, consultare [Creazione di policy utilizzando l'editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListUserTags",
        "iam:TagUser"
    ],
    "Resource": "arn:aws:iam::<account-number>:user/<username>"
}
```

**Come consentire a un ruolo IAM di aggiungere, elencare o rimuovere un tag per un ruolo specifico**  
Aggiungi l'istruzione seguente alla policy di autorizzazione per il ruolo IAM che deve gestire i tag. Sostituisci *<rolename>* con il nome del ruolo i cui tag devono essere gestiti. Per ulteriori informazioni su come creare una policy utilizzando questo esempio di documento di policy JSON, consultare [Creazione di policy utilizzando l'editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListRoleTags",
        "iam:TagRole",
        "iam:UntagRole"
    ],
    "Resource": "arn:aws:iam::<account-number>:role/<rolename>"
}
```

In alternativa, puoi utilizzare una policy AWS gestita come [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess) per fornire l'accesso completo a IAM.

## Gestione dei tag sui ruoli IAM (console)
<a name="id_tags_roles_procs-console"></a>

Puoi gestire i tag per i ruoli IAM dalla Console di gestione AWS.

**Per gestire i tag sui ruoli (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione della console, scegliere **Roles (Ruoli)** e selezionare il nome del ruolo che si desidera modificare.

1. Scegliere la scheda **Tags (Tag)** e completare una delle seguenti operazioni:
   + Scegli **Add new tag** (Aggiungi nuovo tag) se al ruolo non sono ancora stati assegnati tag.
   + Scegli **Manage tags** (Gestisci tag) per gestire il set di tag esistente.

1. Aggiungere o rimuovere i tag per completare il set di tag. Quindi, scegli **Save changes** (Salva modifiche).

## Gestione dei tag sui ruoli (AWS CLI o AWS API) IAM
<a name="id_tags_roles_procs-cli-api"></a>

Puoi elencare, collegare o rimuovere i tag per i ruoli IAM. Puoi utilizzare AWS CLI o l' AWS API per gestire i tag per i ruoli IAM.

**Per elencare i tag attualmente associati a un ruolo (AWS CLI o AWS API) IAM**
+ AWS CLI: [era iam list-role-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-role-tags.html)
+ AWS API: [ListRoleTags](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoleTags.html)

**Per allegare tag a un ruolo (AWS CLI o AWS API) IAM**
+ AWS CLI: [aws iam tag-role](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-role.html)
+ AWS API: [TagRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagRole.html)

**Per rimuovere i tag da un ruolo (AWS CLI o AWS API) IAM**
+ AWS CLI: [aws iam untag-role](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-role.html)
+ AWS API: [UntagRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagRole.html)

Per informazioni su come allegare tag alle risorse per altri AWS servizi, consulta la documentazione relativa a tali servizi. 

Per ulteriori informazioni sull'utilizzo di tag per impostare autorizzazioni più granulari con le policy di autorizzazione IAM, consulta [Elementi delle policy IAM: variabili e tag](reference_policies_variables.md).

# Aggiungere tag alle policy gestite dal cliente
<a name="id_tags_customer-managed-policies"></a>

È possibile utilizzare le coppie chiave-valore del tag IAM per aggiungere attributi personalizzati alle policy gestite dal cliente. Ad esempio, per applicare un tag a una policy con le informazioni sul reparto, puoi aggiungere la chiave tag **Department** e il valore tag **eng**. In alternativa, è possibile contrassegnare i criteri per indicare che si riferiscono a un ambiente specifico, ad esempio **Environment = lab**. Puoi usare i tag per controllare l'accesso alle risorse o per controllare quali tag possono essere collegati a una risorsa. Per ulteriori informazioni sull'uso dei tag per controllare l'accesso, consulta [Controllo dell'accesso a e per utenti e ruoli IAM mediante i tag](access_iam-tags.md).

Puoi anche utilizzare i tag AWS STS per aggiungere attributi personalizzati quando assumi un ruolo o federi un utente. Per ulteriori informazioni, consulta [Passa i tag di sessione AWS STS](id_session-tags.md).

## Autorizzazioni necessarie per applicare i tag alle policy gestite dai clienti
<a name="id_tags_customer-managed-policies_permissions"></a>

È necessario configurare le autorizzazioni per consentire a un'entità IAM (utenti o ruoli) di applicare i tag alle policy gestite dal cliente. Puoi specificare una o tutte le seguenti operazioni del tag IAM in una policy IAM:
+ `iam:ListPolicyTags`
+ `iam:TagPolicy`
+ `iam:UntagPolicy`

**Come consentire a un'entità IAM (utente o ruolo) di aggiungere, elencare o rimuovere un tag per una policy gestita dal cliente**  
Aggiungi l'istruzione seguente alla policy di autorizzazione per l'entità IAM che deve gestire i tag. Usa il tuo numero di account e sostituiscilo *<policyname>* con il nome della politica i cui tag devono essere gestiti. Per ulteriori informazioni su come creare una policy utilizzando questo esempio di documento di policy JSON, consultare [Creazione di policy utilizzando l'editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListPolicyTags",
        "iam:TagPolicy",
        "iam:UntagPolicy"
    ],
    "Resource": "arn:aws:iam::<account-number>:policy/<policyname>"
}
```

**Come consentire a un'entità IAM (utente o ruolo) di aggiungere un tag a una determinata policy gestita dal cliente**  
Aggiungi l'istruzione seguente alla policy di autorizzazione per l'entità IAM che deve aggiungere, ma non rimuovere, i tag per una policy specifica. 

**Nota**  
L'azione `iam:TagPolicy` richiede che tu includa anche l'azione `iam:ListPolicyTags`.

Per utilizzare questa politica, sostituiscila *<policyname>* con il nome della politica i cui tag devono essere gestiti. Per ulteriori informazioni su come creare una policy utilizzando questo esempio di documento di policy JSON, consultare [Creazione di policy utilizzando l'editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListPolicyTags",
        "iam:TagPolicy"
    ],
    "Resource": "arn:aws:iam::<account-number>:policy/<policyname>"
}
```

In alternativa, puoi utilizzare una policy AWS gestita come [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess) per fornire l'accesso completo a IAM.

## Gestione dei tag nelle policy gestiti dal cliente IAM (console)
<a name="id_tags_customer-managed-policies_procs-console"></a>

Puoi gestire i tag delle policy gestite dal cliente IAM dalla Console di gestione AWS.

**Per gestire i tag nelle policy gestite dal cliente (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione della console, scegliere **Policies (Policy)** e selezionare il nome della policy gestita dal cliente che si desidera modificare.

1. Scegli la scheda **Tag**, quindi scegli **Gestisci tag**.

1. Aggiungere o rimuovere i tag per completare il set di tag. Selezionare quindi **Save changes (Salva modifiche)**.

## Gestione dei tag sulle politiche gestite dai clienti (AWS CLI o AWS API) IAM
<a name="id_tags_customer-managed-policies_procs-cli-api"></a>

Puoi elencare, allegare o rimuovere i tag per le policy gestite dal cliente IAM. Puoi utilizzare l'API AWS CLI o l' AWS API per gestire i tag per le politiche gestite dai clienti IAM.

**Per elencare i tag attualmente associati a una policy (AWS CLI o AWS API) gestita dai clienti IAM**
+ AWS CLI: [era iam list-policy-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-policy-tags.html)
+ AWS API: [ListPolicyTags](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListPolicyTags.html)

**Per allegare tag a una policy (AWS CLI o AWS API) gestita dai clienti IAM**
+ AWS CLI: [aws iam tag-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-policy.html)
+ AWS API: [TagPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagPolicy.html)

**Per rimuovere i tag da una policy (AWS CLI o AWS API) gestita dai clienti IAM**
+ AWS CLI: [aws iam untag-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-policy.html)
+ AWS API: [UntagPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagPolicy.html)

Per informazioni su come allegare tag alle risorse per altri AWS servizi, consulta la documentazione relativa a tali servizi. 

Per ulteriori informazioni sull'utilizzo di tag per impostare autorizzazioni più granulari con le policy di autorizzazione IAM, consulta [Elementi delle policy IAM: variabili e tag](reference_policies_variables.md).

# Aggiungere tag ai provider di identità OpenID Connect (OIDC)
<a name="id_tags_oidc"></a>

Puoi utilizzare le coppie chiave-valore dei tag IAM per aggiungere attributi personalizzati ai provider di identità OpenID Connect (OIDC) IAM. Ad esempio, per identificare un provider di identità OIDC, puoi aggiungere la chiave tag **google** e il valore tag **oidc**. Puoi usare i tag per controllare l'accesso alle risorse o per controllare quali tag possono essere collegati a un oggetto. Per ulteriori informazioni sull'uso dei tag per controllare l'accesso, consulta [Controllo dell'accesso a e per utenti e ruoli IAM mediante i tag](access_iam-tags.md).

## Autorizzazioni necessarie per l'aggiunta di tag ai provider di identità OIDC IAM
<a name="id_tags_oidc_permissions"></a>

Per permettere a un'entità IAM (utente o ruolo) di applicare tag ai provider di identità OIDC IAM, devi configurare le autorizzazioni. Puoi specificare una o tutte le seguenti operazioni del tag IAM in una policy IAM:
+ `iam:ListOpenIDConnectProviderTags`
+ `iam:TagOpenIDConnectProvider`
+ `iam:UntagOpenIDConnectProvider`

**Per consentire a un'entità IAM di aggiungere, elencare o rimuovere un tag per un provider di identità OIDC IAM**  
Aggiungi l'istruzione seguente alla policy di autorizzazione per l'entità IAM che deve gestire i tag. Usa il tuo numero di account e *<OIDCProviderName>* sostituiscilo con il nome del provider OIDC i cui tag devono essere gestiti. Per ulteriori informazioni su come creare una policy utilizzando questo esempio di documento di policy JSON, consultare [Creazione di policy utilizzando l'editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListOpenIDConnectProviderTags",
        "iam:TagOpenIDConnectProvider",
        "iam:UntagOpenIDConnectProvider"
    ],
    "Resource": "arn:aws:iam::<account-number>:oidc-provider/<OIDCProviderName>"
}
```

**Come consentire a un'entità IAM (utente o ruolo) di aggiungere un tag a un provider di identità OIDC IAM specifico**  
Aggiungi l'istruzione seguente alla policy di autorizzazione per l'entità IAM che deve aggiungere, ma non rimuovere, i tag per un determinato provider di identità.

**Nota**  
L'azione `iam:TagOpenIDConnectProvider` richiede che tu includa anche l'azione `iam:ListOpenIDConnectProviderTags`.

Per utilizzare questa politica, sostituiscila *<OIDCProviderName>* con il nome del provider OIDC i cui tag devono essere gestiti. Per ulteriori informazioni su come creare una policy utilizzando questo esempio di documento di policy JSON, consultare [Creazione di policy utilizzando l'editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListOpenIDConnectProviderTags",
        "iam:TagOpenIDConnectProvider"
    ],
    "Resource": "arn:aws:iam::<account-number>:oidc-provider/<OIDCProviderName>"
}
```

In alternativa, puoi utilizzare una policy AWS gestita come [IAMFullAccess per fornire l'accesso](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess) completo a IAM.

## Gestione dei tag nei provider di identità OIDC IAM (console)
<a name="id_tags_oidc_procs-console"></a>

Puoi gestire i tag per i provider di identità OIDC IAM dalla Console di gestione AWS.

**Per gestire i tag dei provider di identità OIDC (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione della console, scegli **Identity providers (Provider di identità)**, quindi scegli il nome del provider di identità che desideri aggiornare.

1. Selezionare la scheda **Tag**, quindi nella sezione **Tag** scegli **Gestisci tag** e completa una delle seguenti azioni:
   + Sceglie **Add tag (Aggiungi tag)** se il provider di identità OIDC non dispone ancora di tag o per aggiungere un nuovo tag.
   + Modificare le chiavi e i valori dei tag esistenti.
   + Per rimuovere un tag, scegli **Remove tag (Rimuovi tag)**.

1. Selezionare quindi **Save changes (Salva modifiche)**.

## Gestione dei tag sui provider di identità (AWS CLI o AWS API) IAM OIDC
<a name="id_tags_oidc_procs-cli-api"></a>

Puoi elencare, allegare o rimuovere i tag per i provider di identità OIDC IAM. Puoi utilizzare l' AWS CLI o l' AWS API per gestire i tag per i provider di identità IAM OIDC.

**Per elencare i tag attualmente associati a un provider di identità (o API) IAM OIDC AWS CLI AWS**
+ AWS CLI: [aws](https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-provider-tags.html) iam -provider-tags list-open-id-connect
+ AWS API: [ListOpenIDConnectProviderTags](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviderTags.html)

**Per allegare tag a un provider di identità (AWS CLI o AWS API) IAM OIDC**
+ AWS CLI: [aws](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-open-id-connect-provider.html) iam -provider tag-open-id-connect
+ AWS [API: fornitore TagOpen IDConnect](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagOpenIDConnectProvider.html)

**Per rimuovere i tag da un provider di identità (AWS CLI o AWS API) IAM OIDC**
+ AWS CLI: [aws](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-open-id-connect-provider.html) iam -provider untag-open-id-connect
+ AWS [API: fornitore UntagOpen IDConnect](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagOpenIDConnectProvider.html)

Per informazioni su come allegare tag alle risorse per altri AWS servizi, consulta la documentazione relativa a tali servizi. 

Per ulteriori informazioni sull'utilizzo di tag per impostare autorizzazioni più granulari con le policy di autorizzazione IAM, consulta [Elementi delle policy IAM: variabili e tag](reference_policies_variables.md).

# Aggiungere tag ai provider di identità SAML per IAM
<a name="id_tags_saml"></a>

È possibile utilizzare coppie chiave-valore del tag IAM per aggiungere attributi personalizzati ai provider di identità SAML. Ad esempio, per identificare un provider, puoi aggiungere la chiave tag **okta** e il valore tag **saml**. Puoi usare i tag per controllare l'accesso alle risorse o per controllare quali tag possono essere collegati a un oggetto. Per ulteriori informazioni sull'uso dei tag per controllare l'accesso, consulta [Controllo dell'accesso a e per utenti e ruoli IAM mediante i tag](access_iam-tags.md).

## Autorizzazioni necessarie per l'assegnazione di tag ai provider di identità SAML
<a name="id_tags_saml_permissions"></a>

Devi configurare le autorizzazioni per consentire a un'entità IAM (utenti o ruoli) di taggare gli Identity Provider basati su SAML 2.0 (). IdPs Puoi specificare una o tutte le seguenti operazioni del tag IAM in una policy IAM:
+ `iam:ListSAMLProviderTags`
+ `iam:TagSAMLProvider`
+ `iam:UntagSAMLProvider`

**Come consentire a un'entità IAM (utente o ruolo) di aggiungere, elencare o rimuovere un tag per un provider di identità SAML**  
Aggiungi l'istruzione seguente alla policy di autorizzazione per l'entità IAM che deve gestire i tag. Usa il tuo numero di account e *<SAMLProviderName>* sostituiscilo con il nome del provider SAML i cui tag devono essere gestiti. Per ulteriori informazioni su come creare una policy utilizzando questo esempio di documento di policy JSON, consultare [Creazione di policy utilizzando l'editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListSAMLProviderTags",
        "iam:TagSAMLProvider",
        "iam:UntagSAMLProvider"
    ],
    "Resource": "arn:aws:iam::<account-number>:saml-provider/<SAMLProviderName>"
}
```

**Come consentire a un'entità IAM (utente o ruolo) di aggiungere un tag a un provider di identità SAML specifico**  
Aggiungi l'istruzione seguente alla policy di autorizzazione per l'entità IAM che deve aggiungere, ma non rimuovere, i tag per un determinato provider SAML.

**Nota**  
L'azione `iam:TagSAMLProvider` richiede che tu includa anche l'azione `iam:ListSAMLProviderTags`.

Per utilizzare questa politica, *<SAMLProviderName>* sostituiscila con il nome del provider SAML i cui tag devono essere gestiti. Per ulteriori informazioni su come creare una policy utilizzando questo esempio di documento di policy JSON, consultare [Creazione di policy utilizzando l'editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListSAMLProviderTags",
        "iam:TagSAMLProvider"
    ],
    "Resource": "arn:aws:iam::<account-number>:saml-provider/<SAMLProviderName>"
}
```

In alternativa, puoi utilizzare una policy AWS gestita come [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess) per fornire l'accesso completo a IAM.

## Gestione dei tag nei provider di identità SAML IAM (console)
<a name="id_tags_saml_procs-console"></a>

È possibile gestire i tag per i provider di identità SAML IAM dalla Console di gestione AWS.

**Per gestire i tag dei provider di identità SAML (console)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione della console, scegli **Identity providers (Provider di identità)**, quindi scegli il nome del provider di identità SAML che desideri aggiornare.

1. Selezionare la scheda **Tag**, quindi nella sezione **Tag** scegli **Gestisci tag** e completa una delle seguenti azioni:
   + Sceglie **Add tag (Aggiungi tag)** se il provider di identità SAML non dispone ancora di tag o per aggiungere un nuovo tag.
   + Modificare le chiavi e i valori dei tag esistenti.
   + Per rimuovere un tag, scegli **Remove tag (Rimuovi tag)**.

1. Aggiungere o rimuovere i tag per completare il set di tag. Selezionare quindi **Save changes (Salva modifiche)**.

## Gestione dei tag sui provider di identità IAM SAML (AWS CLI o AWS API)
<a name="id_tags_saml_procs-cli-api"></a>

Puoi elencare, allegare o rimuovere i tag per i provider di identità SAML IAM. Puoi utilizzare l' AWS CLI o l' AWS API per gestire i tag per i provider di identità IAM SAML.

**Per elencare i tag attualmente associati a un provider di identità SAML (AWS CLI o AWS API)**
+ AWS CLI: [era iam list-saml-provider-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-provider-tags.html)
+ AWS API: [elenca i SAMLProvider tag](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviderTags.html)

**Per allegare tag a un provider di identità SAML (AWS CLI o AWS API)**
+ AWS CLI: [era iam tag-saml-provider](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-saml-provider.html)
+ AWS API: [etichetta SAMLProvider](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagSAMLProvider.html)

**Per rimuovere i tag da un provider di identità SAML (AWS CLI o AWS API)**
+ AWS CLI: [è stato untag-saml-provider](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-saml-provider.html)
+ AWS API: [Untag SAMLProvider](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagSAMLProvider.html)

Per informazioni su come allegare tag alle risorse per altri AWS servizi, consulta la documentazione relativa a tali servizi. 

Per ulteriori informazioni sull'utilizzo di tag per impostare autorizzazioni più granulari con le policy di autorizzazione IAM, consulta [Elementi delle policy IAM: variabili e tag](reference_policies_variables.md).

# Aggiunta di tag ai profili dell'istanza per i ruoli Amazon EC2
<a name="id_tags_instance-profiles"></a>

Quando avvii un'istanza Amazon EC2, devi specificare un ruolo IAM da associare ad essa. Un profilo dell'istanza è un container per un ruolo IAM che puoi utilizzare per inoltrare informazioni sul ruolo a un'istanza Amazon EC2 quando questa viene avviata. Puoi taggare i profili delle istanze quando usi l' AWS API AWS CLI o.

Puoi utilizzare coppie chiave-valore del tag IAM per aggiungere attributi personalizzati a un profilo dell'istanza. Ad esempio, per aggiungere informazioni di reparto a un profilo di istanza, è possibile aggiungere la chiave tag **access-team** e il valore tag **eng**. In questo modo i principali con tag corrispondenti possono accedere ai profili dell'istanza con lo stesso tag. È possibile utilizzare più coppie chiave-valore del tag per specificare un team e un progetto: **access-team = eng ** e **project = peg**. È possibile usare i tag per controllare l'accesso di un utente alle risorse o per controllare quali tag possono essere collegati a un utente. Per ulteriori informazioni sull'uso dei tag per controllare l'accesso, consulta [Controllo dell'accesso a e per utenti e ruoli IAM mediante i tag](access_iam-tags.md).

Puoi anche utilizzare i tag AWS STS per aggiungere attributi personalizzati quando assumi un ruolo o federi un utente. Per ulteriori informazioni, consulta [Passa i tag di sessione AWS STS](id_session-tags.md).

## Autorizzazioni necessarie per il tagging dei profili dell'istanza
<a name="id_tags_instance-profiles_permissions"></a>

Per permettere a un'entità IAM (utente o ruolo) di aggiungere tag ai profili dell'istanza, devi configurare le autorizzazioni. Puoi specificare una o tutte le seguenti operazioni del tag IAM in una policy IAM:
+ `iam:ListInstanceProfileTags`
+ `iam:TagInstanceProfile`
+ `iam:UntagInstanceProfile`

**Come consentire a un'entità IAM (utente o ruolo) di aggiungere, elencare o rimuovere un tag per un profilo dell'istanza**  
Aggiungi l'istruzione seguente alla policy di autorizzazione per l'entità IAM che deve gestire i tag. Usa il tuo numero di account e sostituiscilo *<InstanceProfileName>* con il nome del profilo dell'istanza i cui tag devono essere gestiti. Per ulteriori informazioni su come creare una policy utilizzando questo esempio di documento di policy JSON, consultare [Creazione di policy utilizzando l'editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListInstanceProfileTags",
        "iam:TagInstanceProfile",
        "iam:UntagInstanceProfile"
    ],
    "Resource": "arn:aws:iam::<account-number>:instance-profile/<InstanceProfileName>"
}
```

**Come consentire a un'entità IAM (utente o ruolo) di aggiungere un tag a un determinato profilo dell'istanza**  
Aggiungi l'istruzione seguente alla policy di autorizzazione per l'entità IAM che deve aggiungere, ma non rimuovere, i tag per un determinato profilo dell'istanza. 

**Nota**  
L'azione `iam:TagInstanceProfile` richiede che tu includa anche l'azione `iam:ListInstanceProfileTags`.

Per utilizzare questa politica, *<InstanceProfileName>* sostituiscila con il nome del profilo dell'istanza i cui tag devono essere gestiti. Per ulteriori informazioni su come creare una policy utilizzando questo esempio di documento di policy JSON, consultare [Creazione di policy utilizzando l'editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListInstanceProfileTags",
        "iam:TagInstanceProfile"
    ],
    "Resource": "arn:aws:iam::<account-number>:instance-profile/<InstanceProfileName>"
}
```

In alternativa, puoi utilizzare una policy AWS gestita come [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess) per fornire l'accesso completo a IAM.

## Gestione dei tag sui profili di istanza (AWS CLI o AWS API)
<a name="id_tags_instance-profile_procs-cli-api"></a>

È possibile elencare, allegare o rimuovere i tag dei profili dell'istanza. È possibile utilizzare l'API AWS CLI o l' AWS API per gestire i tag, ad esempio i profili.

**Per elencare i tag attualmente associati a un profilo di istanza (AWS CLI o AWS API)**
+ AWS CLI: [era iam list-instance-profile-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profile-tags.html)
+ AWS API: [ListInstanceProfileTags](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfileTags.html)

**Per allegare tag a un profilo di istanza (AWS CLI o AWS API)**
+ AWS CLI: [aws iam tag-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-instance-profile.html)
+ AWS API: [TagInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagInstanceProfile.html)

**Per rimuovere i tag da un profilo di istanza (AWS CLI o AWS API)**
+ AWS CLI: [è stato untag-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-instance-profile.html)
+ AWS API: [UntagInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagInstanceProfile.html)

Per informazioni su come allegare tag alle risorse per altri AWS servizi, consulta la documentazione relativa a tali servizi. 

Per ulteriori informazioni sull'utilizzo di tag per impostare autorizzazioni più granulari con le policy di autorizzazione IAM, consulta [Elementi delle policy IAM: variabili e tag](reference_policies_variables.md).

# Aggiungere tag ai certificati server
<a name="id_tags_server-certificates"></a>

Se utilizzi IAM per gestire i SSL/TLS certificati, puoi etichettare i certificati del server in IAM utilizzando l'API AWS CLI or AWS . Per i certificati in una regione supportata da AWS Certificate Manager (ACM), ti consigliamo di utilizzare ACM anziché IAM per fornire, gestire e distribuire i certificati del server. Nelle regioni non supportate, è necessario utilizzare IAM come gestore di certificati. Per informazioni sulle regioni supportate da ACM, consulta [Endpoint e quote di AWS Certificate Manager](https://docs.aws.amazon.com/general/latest/gr/acm.html) nella *Riferimenti generali di AWS*.

Puoi utilizzare coppie chiave-valore del tag IAM per aggiungere attributi personalizzati a un certificato server. Ad esempio, per aggiungere informazioni sul proprietario o sull'amministratore di un certificato server, aggiungi la chiave tag **owner** e il valore tag **net-eng**. In alternativa, puoi specificare un centro di costo aggiungendo la chiave tag **CostCenter** e il valore tag **1234**. Puoi usare i tag per controllare l'accesso alle risorse o per controllare quali tag possono essere collegati alle risorse. Per ulteriori informazioni sull'uso dei tag per controllare l'accesso, consulta [Controllo dell'accesso a e per utenti e ruoli IAM mediante i tag](access_iam-tags.md).

Puoi anche utilizzare i tag AWS STS per aggiungere attributi personalizzati quando assumi un ruolo o federi un utente. Per ulteriori informazioni, consulta [Passa i tag di sessione AWS STS](id_session-tags.md).

## Autorizzazioni necessarie per l'assegnazione di tag ai certificati server
<a name="id_tags_server-certificates_permissions"></a>

Per permettere a un'entità IAM (utente o ruolo) di aggiungere i tag ai certificati server, devi configurare le autorizzazioni. Puoi specificare una o tutte le seguenti operazioni del tag IAM in una policy IAM:
+ `iam:ListServerCertificateTags`
+ `iam:TagServerCertificate`
+ `iam:UntagServerCertificate`

**Come consentire a un'entità IAM (utente o ruolo) di aggiungere, elencare o rimuovere un tag per un certificato server**  
Aggiungi l'istruzione seguente alla policy di autorizzazione per l'entità IAM che deve gestire i tag. Usa il tuo numero di account e sostituiscilo *<CertificateName>* con il nome del certificato del server i cui tag devono essere gestiti. Per ulteriori informazioni su come creare una policy utilizzando questo esempio di documento di policy JSON, consultare [Creazione di policy utilizzando l'editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListServerCertificateTags",
        "iam:TagServerCertificate",
        "iam:UntagServerCertificate"
    ],
    "Resource": "arn:aws:iam::<account-number>:server-certificate/<CertificateName>"
}
```

**Come consentire a un'entità IAM (utente o ruolo) di aggiungere un tag a un determinato certificato server**  
Aggiungi l'istruzione seguente alla policy di autorizzazione per l'entità IAM che deve aggiungere, ma non rimuovere, i tag per un certificato server specifico.

**Nota**  
L'azione `iam:TagServerCertificate` richiede che tu includa anche l'azione `iam:ListServerCertificateTags`.

Per utilizzare questa politica, *<CertificateName>* sostituiscila con il nome del certificato del server i cui tag devono essere gestiti. Per ulteriori informazioni su come creare una policy utilizzando questo esempio di documento di policy JSON, consultare [Creazione di policy utilizzando l'editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListServerCertificateTags",
        "iam:TagServerCertificate"
    ],
    "Resource": "arn:aws:iam::<account-number>:server-certificate/<CertificateName>"
}
```

In alternativa, puoi utilizzare una policy AWS gestita come [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess) per fornire l'accesso completo a IAM.

## Gestione dei tag sui certificati del server (AWS CLI o AWS API)
<a name="id_tags_server-certificates_procs-cli-api"></a>

È possibile elencare, allegare o rimuovere i certificati server. È possibile utilizzare l'API AWS CLI o l' AWS API per gestire i tag per i certificati del server.

**Per elencare i tag attualmente collegati a un certificato del server (AWS CLI o AWS API)**
+ AWS CLI: [era iam list-server-certificate-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-server-certificate-tags.html)
+ AWS API: [ListServerCertificateTags](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServerCertificateTags.html)

**Per allegare tag a un certificato del server (AWS CLI o AWS API)**
+ AWS CLI: [aws aim tag-server-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-server-certificate.html)
+ AWS API: [TagServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagServerCertificate.html)

**Per rimuovere i tag da un certificato del server (AWS CLI o AWS API)**
+ AWS CLI: [aws aim untag-server-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-server-certificate.html)
+ AWS API: [UntagServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagServerCertificate.html)

Per informazioni su come allegare tag alle risorse per altri AWS servizi, consulta la documentazione relativa a tali servizi. 

Per ulteriori informazioni sull'utilizzo di tag per impostare autorizzazioni più granulari con le policy di autorizzazione IAM, consulta [Elementi delle policy IAM: variabili e tag](reference_policies_variables.md).

# Aggiungere tag ai dispositivi MFA virtuali
<a name="id_tags_virtual-mfa"></a>

Puoi utilizzare coppie chiave-valore di tag IAM per aggiungere attributi personalizzati a un dispositivo MFA virtuale. Ad esempio, per aggiungere informazioni sul centro di costo per il dispositivo MFA virtuale di un utente, puoi aggiungere il tag con chiave **CostCenter** e il tag con valore **1234**. Puoi usare i tag per controllare l'accesso alle risorse o per controllare quali tag possono essere collegati a un oggetto. Per ulteriori informazioni sull'uso dei tag per controllare l'accesso, consulta [Controllo dell'accesso a e per utenti e ruoli IAM mediante i tag](access_iam-tags.md).

Puoi anche utilizzare i tag AWS STS per aggiungere attributi personalizzati quando assumi un ruolo o federi un utente. Per ulteriori informazioni, consulta [Passa i tag di sessione AWS STS](id_session-tags.md).

## Autorizzazioni necessarie per la gestione dei tag dei dispositivi MFA virtuali
<a name="id_tags_virtual-mfa_permissions"></a>

Per consentire a un'entità IAM (utente o ruolo) di aggiungere i tag ai dispositivi MFA virtuali, è necessario configurare le autorizzazioni. Puoi specificare una o tutte le seguenti operazioni del tag IAM in una policy IAM:
+ `iam:ListMFADeviceTags`
+ `iam:TagMFADevice`
+ `iam:UntagMFADevice`

**Come consentire a un'entità IAM (utente o ruolo) di aggiungere, elencare o rimuovere un tag per un dispositivo MFA virtuale**  
Aggiungi l'istruzione seguente alla policy di autorizzazione per l'entità IAM che deve gestire i tag. Usa il tuo numero di account e sostituiscilo *<MFATokenID>* con il nome del dispositivo MFA virtuale i cui tag devono essere gestiti. Per ulteriori informazioni su come creare una policy utilizzando questo esempio di documento di policy JSON, consultare [Creazione di policy utilizzando l'editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListMFADeviceTags",
        "iam:TagMFADevice",
        "iam:UntagMFADevice"
    ],
    "Resource": "arn:aws:iam::<account-number>:mfa/<MFATokenID>"
}
```

**Come consentire a un'entità IAM (utente o ruolo) di aggiungere un tag a un determinato dispositivo MFA virtuale**  
Aggiungi l'istruzione seguente alla policy di autorizzazione dell'entità IAM che potrà aggiungere ma non rimuovere i tag per uno specifico dispositivo MFA virtuale.

**Nota**  
L'azione `iam:TagMFADevice` richiede che tu includa anche l'azione `iam:ListMFADeviceTags`.

Per utilizzare questo criterio, sostituiscilo *<MFATokenID>* con il nome del dispositivo MFA virtuale i cui tag devono essere gestiti. Per ulteriori informazioni su come creare una policy utilizzando questo esempio di documento di policy JSON, consultare [Creazione di policy utilizzando l'editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListMFADeviceTags",
        "iam:TagMFADevice"
    ],
    "Resource": "arn:aws:iam::<account-number>:mfa/<MFATokenID>"
}
```

In alternativa, puoi utilizzare una policy AWS gestita come [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess) per fornire l'accesso completo a IAM.

## Gestione dei tag su dispositivi MFA virtuali (AWS CLI o AWS API)
<a name="id_tags_virtual-mfa_procs-cli-api"></a>

È possibile elencare, allegare o rimuovere i tag di un dispositivo MFA virtuale. È possibile utilizzare l'API AWS CLI o l' AWS API per gestire i tag per un dispositivo MFA virtuale.

**Per elencare i tag attualmente collegati a un dispositivo MFA virtuale (AWS CLI o AWS API)**
+ AWS CLI: [era iam list-mfa-device-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-mfa-device-tags.html)
+ AWS API: [elenca i MFADevice tag](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListMFADeviceTags.html)

**Per allegare tag a un dispositivo MFA virtuale (AWS CLI o AWS API)**
+ AWS CLI: [è stato tag-mfa-device](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-mfa-device.html)
+ AWS API: [etichetta MFADevice](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagMFADevice.html)

**Per rimuovere i tag da un dispositivo MFA virtuale (AWS CLI o AWS API)**
+ AWS CLI: [è stato untag-mfa-device](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-mfa-device.html)
+ AWS API: [Untag MFADevice](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagMFADevice.html)

Per informazioni su come allegare tag alle risorse per altri AWS servizi, consulta la documentazione relativa a tali servizi. 

Per ulteriori informazioni sull'utilizzo di tag per impostare autorizzazioni più granulari con le policy di autorizzazione IAM, consulta [Elementi delle policy IAM: variabili e tag](reference_policies_variables.md).

# Passa i tag di sessione AWS STS
<a name="id_session-tags"></a>

I tag di sessione sono attributi di coppia chiave-valore che vengono passati quando si assume un ruolo IAM o si federa un utente in AWS STS. Puoi farlo effettuando una richiesta AWS CLI o AWS API tramite AWS STS o tramite il tuo provider di identità (IdP). Quando si utilizza AWS STS per richiedere credenziali di sicurezza temporanee, si genera una sessione. Le sessioni scadono e dispongono di [credenziali](https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html), ad esempio una coppia di chiavi di accesso e un token di sessione. Quando si utilizzano le credenziali di sessione per effettuare una richiesta successiva, il [contesto della richiesta](reference_policies_elements_condition.md#AccessPolicyLanguage_RequestContext) include la chiave di contesto `aws:PrincipalTag`. È possibile utilizzare la chiave `aws:PrincipalTag` nell'elemento `Condition` delle proprie policy per consentire o negare l'accesso in base a tali tag.

Quando si utilizzano credenziali temporanee per effettuare una richiesta, l'entità potrebbe includere un set di tag. Questi tag provengono dalle seguenti fonti:

1. **Tag di sessione**: i tag passati quando assumi il ruolo o federi l'utente utilizzando l'API AWS CLI o AWS . Per ulteriori informazioni su queste operazioni, consulta [Operazioni di tagging di sessione](#id_session-tags_operations).

1. **Tag di sessione transitivi in ingresso**: questi tag sono stati ereditati da una sessione precedente in un concatenamento di ruoli. Per ulteriori informazioni, consulta [Concatenamento dei ruoli con i tag di sessione](#id_session-tags_role-chaining) più avanti in questo argomento.

1. **Tag IAM**: i tag associati al ruolo IAM assunto.

**Topics**
+ [Operazioni di tagging di sessione](#id_session-tags_operations)
+ [Cose da sapere sui tag di sessione](#id_session-tags_know)
+ [Autorizzazioni necessarie per aggiungere tag di sessione](#id_session-tags_permissions-required)
+ [Passare i tag di sessione utilizzando AssumeRole](#id_session-tags_adding-assume-role)
+ [Passaggio dei tag di sessione tramite SAML AssumeRoleWith](#id_session-tags_adding-assume-role-saml)
+ [Passare i tag di sessione utilizzando AssumeRoleWithWebIdentity](#id_session-tags_adding-assume-role-idp)
+ [Passare i tag di sessione utilizzando GetFederationToken](#id_session-tags_adding-getfederationtoken)
+ [Concatenamento dei ruoli con i tag di sessione](#id_session-tags_role-chaining)
+ [Utilizzo dei tag di sessione per ABAC](#id_session-tags_using-abac)
+ [Visualizzazione dei tag di sessione in CloudTrail](#id_session-tags_ctlogs)

## Operazioni di tagging di sessione
<a name="id_session-tags_operations"></a>

Puoi passare i tag di sessione utilizzando quanto segue AWS CLI o le operazioni AWS API in AWS STS. *La **[funzione Console di gestione AWS Switch](id_roles_use_switch-role-console.md)** Role non consente di passare i tag di sessione.*

È inoltre possibile impostare i tag di sessione come transitivi. I tag transitivi persistono durante il concatenamento dei ruoli. Per ulteriori informazioni, consulta [Concatenamento dei ruoli con i tag di sessione](#id_session-tags_role-chaining).

Nella tabella seguente vengono confrontati i metodi per il passaggio dei tag di sessione.


|  Operation |  **Chi può assumere il ruolo**  | **Metodo di passaggio dei tag** |  **Metodo di impostazione dei tag transitivi**  | 
| --- | --- | --- | --- | 
| [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) CLI oppure operazione API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) | Utente IAM o sessione | Parametro API Tags o opzione CLI --tags | Parametro API TransitiveTagKeys o opzione CLI --transitive-tag-keys | 
| [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-saml.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-saml.html) CLI oppure operazione API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) | Tutti gli utenti autenticati che utilizzano un provider di identità SAML | Attributo SAML PrincipalTag | Attributo SAML TransitiveTagKeys | 
| [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html) CLI oppure operazione API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) | Tutti gli utenti autenticati che utilizzano un provider OIDC | Token OIDC PrincipalTag | Token OIDC TransitiveTagKeys | 
| [https://docs.aws.amazon.com/cli/latest/reference/sts/get-federation-token.html](https://docs.aws.amazon.com/cli/latest/reference/sts/get-federation-token.html) CLI oppure operazione API [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) | Utente IAM o utente root | Parametro API Tags o opzione CLI --tags | Non supportata | 

Le operazioni che supportano i tag di sessione potrebbero non concludersi correttamente se si verifica una delle seguenti condizioni:
+ Sono passati oltre 50 tag di sessione.
+ Il testo in chiaro delle chiavi dei tag di sessione supera i 128 caratteri.
+ Il testo in chiaro dei valori dei tag di sessione supera i 256 caratteri.
+ La dimensione totale del testo in chiaro delle policy di sessione supera i 2048 caratteri.
+ La dimensione totale del pacchetto delle policy e dei tag di sessione combinati è troppo grande. Se l'operazione non ha esito positivo, il messaggio di errore mostra quanto le policy e i tag combinati si avvicinano al limite di dimensione superiore, in percentuale.

## Cose da sapere sui tag di sessione
<a name="id_session-tags_know"></a>

Prima di utilizzare i tag di sessione, esaminare i seguenti dettagli sulle sessioni e sui tag.
+ Quando utilizzi i tag di sessione, le policy di attendibilità per tutti i ruoli connessi al provider di identità (IdP) che passa i tag devono disporre dell'autorizzazione [`sts:TagSession`](#id_session-tags_permissions-required). Per i ruoli che non dispongono di questa autorizzazione nella policy di attendibilità, l'operazione `AssumeRole` avrà esito negativo.
+ Quando si richiede una sessione, è possibile specificare i tag principali come tag di sessione. I tag si applicano alle richieste effettuate utilizzando le credenziali della sessione.
+ I tag di sessione sono coppie chiave-valore. Ad esempio, per aggiungere informazioni di contatto a una sessione, è possibile aggiungere la chiave del tag di sessione `email` e il valore del tag `johndoe@example.com`.
+ I tag di sessione devono seguire le [regole per la denominazione dei tag in IAM e AWS STS](id_tags.md#id_tags_rules_creating). In questo argomento sono incluse informazioni sulla distinzione tra maiuscole e minuscole e sui prefissi riservati validi per i tag di sessione.
+ I nuovi tag di sessione sovrascrivono quelli relativi ai ruoli assunti o agli utenti federati con la stessa chiave di tag, indipendentemente dall’utilizzo di lettere minuscole o maiuscole.
+ Non è possibile passare i tag di sessione utilizzando. Console di gestione AWS
+ I tag di sessione sono validi solo per la sessione corrente. 
+ I tag di sessione supportano [il concatenamento dei ruoli](id_roles.md#iam-term-role-chaining). Per impostazione predefinita, AWS STS non passa tag alle sessioni di ruolo successive. Tuttavia, è possibile impostare i tag di sessione come transitivi. I tag transitivi persistono durante il concatenamento dei ruoli e sostituiscono i valori `ResourceTag` corrispondenti dopo la valutazione della policy di attendibilità del ruolo. Per ulteriori informazioni, consulta [Concatenamento dei ruoli con i tag di sessione](#id_session-tags_role-chaining).
+ È possibile utilizzare i tag di sessione per controllare l'accesso alle risorse o per controllare quali tag possono essere passati in una sessione successiva. Per ulteriori informazioni, consulta [Tutorial IAM: Utilizzo dei tag di sessione SAML per ABAC](tutorial_abac-saml.md).
+ È possibile visualizzare i tag del principale per la sessione, inclusi i tag di sessione, nei log AWS CloudTrail . Per ulteriori informazioni, consulta [Visualizzazione dei tag di sessione in CloudTrail](#id_session-tags_ctlogs).
+ È necessario passare un singolo valore per ogni tag di sessione. AWS STS non supporta tag di sessione multivalore. 
+ È possibile passare un massimo di 50 tag di sessione. Il numero e la dimensione delle risorse IAM in un AWS account sono limitati. Per ulteriori informazioni, consulta [IAM e AWS STS quote](reference_iam-quotas.md).
+ Una AWS conversione comprime le politiche di sessione e i tag di sessione passati combinati in un formato binario compresso con un limite separato. Se superi questo limite, il messaggio di errore AWS CLI o AWS API mostra quanto le politiche e i tag combinati si avvicinano al limite di dimensione superiore, in percentuale.

## Autorizzazioni necessarie per aggiungere tag di sessione
<a name="id_session-tags_permissions-required"></a>

Oltre a quella sull'operazione che corrisponde all'operazione API, è necessario disporre nella policy dell'autorizzazione per le seguenti operazioni:

```
sts:TagSession
```

**Importante**  
Quando si utilizzano i tag di sessione, i criteri di attendibilità dei ruoli per tutti i ruoli connessi a un provider di identità (IdP) devono disporre dell'autorizzazione `sts:TagSession`. L'operazione `AssumeRole` avrà esito negativo per qualsiasi ruolo connesso a un provider di identità che passa tag di sessione senza questa autorizzazione. Se non si desidera aggiornare la policy di attendibilità del ruolo per ogni ruolo, è possibile utilizzare un'istanza IdP separata per passare i tag di sessione. Quindi, aggiungi l'autorizzazione `sts:TagSession` solo ai ruoli connessi all'IdP separato.

È possibile utilizzare l'operazione `sts:TagSession` con le seguenti chiavi di condizione.
+ `aws:PrincipalTag`: confronta il tag collegato al principale che effettua la richiesta con il tag specificato nella policy. Ad esempio, è possibile consentire a un'entità di passare i tag di sessione solo se l'entità che effettua la richiesta dispone dei tag specificati.
+ `aws:RequestTag`: confronta la coppia chiave-valore del tag passata nella richiesta con la coppia del tag specificata nella policy. Ad esempio, è possibile consentire all'entità di passare tag di sessione specificati, ma solo con i valori specificati.
+ `aws:ResourceTag`: confronta la coppia chiave-valore tag specificata nella policy con la coppia chiave-valore collegata alla risorsa. Ad esempio, puoi consentire al principale di passare i tag di sessione solo se il ruolo che assume include i tag specificati.
+ `aws:TagKeys`: confronta le chiavi tag in una richiesta con quelle specificate nella policy. Ad esempio, è possibile consentire all'entità di passare solo i tag di sessione con le chiavi dei tag specificate. Questa chiave di condizione limita l'insieme massimo di tag di sessione che possono essere passati.
+ `sts:TransitiveTagKeys`: confronta le chiavi dei tag di sessione transitivi nella richiesta con quelle specificate nella policy. Ad esempio, è possibile scrivere una policy per consentire a un'entità di impostare solo tag specifici come transitivi. I tag transitivi persistono durante il concatenamento dei ruoli. Per ulteriori informazioni, consulta [Concatenamento dei ruoli con i tag di sessione](#id_session-tags_role-chaining).

Ad esempio, la seguente [policy di attendibilità del ruolo](id_roles.md#term_trust-policy) consente all'utente `test-session-tags` di assumere il ruolo a cui è collegata la policy. Quando l'utente assume il ruolo, deve utilizzare l' AWS API AWS CLI o per passare i tre tag di sessione richiesti e l'[ID esterno](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id) richiesto. Inoltre, l'utente può scegliere di impostare i tag `Department` e `Project` come transitivi.

**Example Esempio di policy di attendibilità dei ruoli per i tag di sessione**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowIamUserAssumeRole",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {"AWS": "arn:aws:iam::123456789012:user/test-session-tags"},
            "Condition": {
              "StringLike": {
                    "aws:RequestTag/Project": "*",
                    "aws:RequestTag/CostCenter": "*",
                    "aws:RequestTag/Department": "*"
                },
                "StringEquals": {"sts:ExternalId": "Example987"}
            }
        },
        {
            "Sid": "AllowPassSessionTagsAndTransitive",
            "Effect": "Allow",
            "Action": "sts:TagSession",
            "Principal": {"AWS": "arn:aws:iam::123456789012:user/test-session-tags"},
            "Condition": {
                "StringLike": {
                    "aws:RequestTag/Project": "*",
                    "aws:RequestTag/CostCenter": "*"
                },
                "StringEquals": {
                    "aws:RequestTag/Department": [
                        "Engineering",
                        "Marketing"
                    ]
                },
                "ForAllValues:StringEquals": {
                    "sts:TransitiveTagKeys": [
                        "Project",
                        "Department"
                    ]
                }
            }
        }
    ]
}
```

**Che cosa fa questa policy?**
+ L'istruzione `AllowIamUserAssumeRole` consente all'utente `test-session-tags` di assumere il ruolo a cui è collegata la policy. Quando tale utente assume il ruolo, deve passare i tag di sessione richiesti e l'[ID esterno](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id).
  + Il primo blocco condizionale di questa istruzione richiede all'utente di passare i tag di sessione `Project`, `CostCenter` e `Department`. I valori dei tag non sono significativi in questa istruzione, quindi abbiamo usato caratteri jolly (\$1) per i valori dei tag. Questo blocco assicura che l'utente passi almeno questi tre tag di sessione. In caso contrario, l'operazione non va a buon fine. L'utente può passare tag aggiuntivi.
  + Il secondo blocco condizionale richiede all'utente di passare un [ID esterno](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id) con il valore `Example987`.
+ L'istruzione `AllowPassSessionTagsAndTransitive` autorizza l'operazione `sts:TagSession`. Questa operazione deve essere autorizzata prima che l'utente possa passare i tag di sessione. Se la policy include la prima istruzione senza la seconda, l'utente non può assumere il ruolo.
  + Il primo blocco condizionale di questa istruzione consente all'utente di passare qualsiasi valore per i tag di sessione `CostCenter` e `Project`. A tale scopo, è necessario utilizzare i caratteri jolly (\$1) per il valore del tag nella policy, il che richiede l'utilizzo dell'operatore di [StringLike](reference_policies_elements_condition_operators.md#Conditions_String)condizione.
  + Il secondo blocco condizionale consente all'utente di passare solo i valori `Marketing` o `Engineering` per il tag di sessione `Department`.
  + Il terzo blocco condizionale elenca l'insieme massimo di tag che possono essere impostati come transitivi. L'utente può scegliere di impostare un sottoinsieme o nessun tag come transitivo. Ma non può impostare tag aggiuntivi come transitivi. È possibile richiedere che imposti almeno uno dei tag come transitivo aggiungendo un altro blocco condizionale che include `"Null":{"sts:TransitiveTagKeys":"false"}`. 

## Passare i tag di sessione utilizzando AssumeRole
<a name="id_session-tags_adding-assume-role"></a>

L'`AssumeRole`operazione restituisce un set di credenziali temporanee che è possibile utilizzare per accedere alle AWS risorse. È possibile utilizzare le credenziali dell'utente o del ruolo IAM per chiamare `AssumeRole`. Per passare i tag di sessione mentre assumi un ruolo, utilizzate l'`--tags` AWS CLI opzione o il parametro `Tags` AWS API. 

Per impostare i tag come transitivi, utilizzate l'`--transitive-tag-keys` AWS CLI opzione o il parametro `TransitiveTagKeys` AWS API. I tag transitivi persistono durante il concatenamento dei ruoli. Per ulteriori informazioni, consulta [Concatenamento dei ruoli con i tag di sessione](#id_session-tags_role-chaining).

Nell'esempio seguente viene illustrata una richiesta di esempio che utilizza `AssumeRole`. In questo esempio, quando si assume il ruolo `my-role-example`, si crea una sessione denominata `my-session`. Aggiungere le coppie chiave-valore dei tag di sessione `Project` = `Automation`, `CostCenter` = `12345` e `Department` = `Engineering`. È inoltre possibile impostare i tag `Project` e `Department` come transitivi specificando le loro chiavi. È necessario passare un singolo valore per ogni tag di sessione. AWS STS non supporta tag di sessione multivalore.

**Example Richiesta AssumeRole CLI di esempio**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/my-role-example \
--role-session-name my-session \
--tags Key=Project,Value=Automation Key=CostCenter,Value=12345 Key=Department,Value=Engineering \
--transitive-tag-keys Project Department \
--external-id Example987
```

## Passaggio dei tag di sessione tramite SAML AssumeRoleWith
<a name="id_session-tags_adding-assume-role-saml"></a>

L'operazione `AssumeRoleWithSAML` viene autenticata con la federazione basata su SAML. Questa operazione restituisce un set di credenziali temporanee che è possibile utilizzare per accedere AWS alle risorse. Per ulteriori informazioni sull'utilizzo della federazione basata su SAML per Console di gestione AWS l'accesso, consulta. [Consentire ai principali federati SAML 2.0 di accedere a Console di gestione AWS](id_roles_providers_enable-console-saml.md) Per dettagli sull'accesso alle AWS CLI nostre AWS API, consulta. [Federazione SAML 2.0](id_roles_providers_saml.md) Per un tutorial sulla configurazione della federazione SAML per gli utenti di Active Directory, consulta [AWS Federated Authentication with Active Directory Federation Services (ADFS)](https://aws.amazon.com/blogs/security/aws-federated-authentication-with-active-directory-federation-services-ad-fs/) nel Security Blog. AWS 

In qualità di amministratore, puoi consentire ai membri della tua directory aziendale di unirsi per utilizzare l'operazione. AWS AWS STS `AssumeRoleWithSAML` A tale scopo, è necessario completare le seguenti attività:

1. [Configurazione della rete come un provider SAML per AWS](id_roles_providers_saml_3rd-party.md)

1. [Creazione di un provider SAML in IAM](id_roles_providers_create_saml.md)

1. [Creare un ruolo per una federazione SAML 2.0 (console)](id_roles_create_for-idp_saml.md)

1. [Termine della configurazione del provider di identità SAML e creazione di asserzioni per la risposta di autenticazione SAML](id_roles_providers_create_saml_assertions.md)

AWS include fornitori di identità con end-to-end esperienza certificata per i tag di sessione con le loro soluzioni di identità. Per informazioni su come utilizzare questi provider di identità per configurare i tag di sessione, consultare [Integra fornitori di soluzioni SAML di terze parti con AWS](id_roles_providers_saml_3rd-party.md).

Per passare gli attributi SAML come tag di sessione, includere l'elemento `Attribute` con l'attributo `Name` impostato a `https://aws.amazon.com/SAML/Attributes/PrincipalTag:{TagKey}`. Utilizzare l'elemento `AttributeValue` per specificare il valore del tag. Includere un elemento `Attribute` separato per ogni tag di sessione.

Ad esempio, si supponga di voler passare i seguenti attributi di identità come tag di sessione:
+ `Project:Automation`
+ `CostCenter:12345`
+ `Department:Engineering`

Per passare questi attributi, includere i seguenti elementi nell'asserzione SAML.

**Example Esempio di frammento di un'asserzione SAML**  

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:Project">
  <AttributeValue>Automation</AttributeValue>
</Attribute>
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:CostCenter">
  <AttributeValue>12345</AttributeValue>
</Attribute>
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:Department">
  <AttributeValue>Engineering</AttributeValue>
</Attribute>
```

Per impostare i tag sopra elencati come transitivi, include un altro elemento `Attribute` con l'attributo `Name` impostato su `https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys`. I tag transitivi persistono durante il concatenamento dei ruoli. Per ulteriori informazioni, consulta [Concatenamento dei ruoli con i tag di sessione](#id_session-tags_role-chaining).

Per impostare i tag `Project` e `Department` come transitivi, utilizzare il seguente attributo multi valore.

**Example Esempio di frammento di un'asserzione SAML**  

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys">
  <AttributeValue>Project</AttributeValue>
  <AttributeValue>Department</AttributeValue>
</Attribute>
```

## Passare i tag di sessione utilizzando AssumeRoleWithWebIdentity
<a name="id_session-tags_adding-assume-role-idp"></a>

Utilizza la federazione compatibile con OpenID Connect (OIDC) per autenticare l'operazione `AssumeRoleWithWebIdentity`. Questa operazione restituisce un set di credenziali temporanee che è possibile utilizzare per accedere alle AWS risorse. Per ulteriori informazioni sull'utilizzo della federazione delle identità Web per Console di gestione AWS l'accesso, vedere[Federazione OIDC](id_roles_providers_oidc.md).

Per passare i tag di sessione da OpenID Connect (OIDC), è necessario includere i tag di sessione nel token Web JSON (JWT) quando si invia la richiesta `AssumeRoleWithWebIdentity`. Per ulteriori informazioni sui token e le registrazioni OIDC, consultare [Utilizzo di token con pool di utenti](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html) nella *Guida per gli sviluppatori Amazon Cognito *.

AWS supporta due formati di richiesta per includere i tag di sessione nel JWT: 
+ Formato di attestazione nidificato
+ Formato di nidificato compresso

### Formato di attestazione nidificato
<a name="id_session-tags_adding-assume-role-idp-nested-format"></a>

Il formato di attestazione nidificato utilizza una struttura all’interno del namespace `https://aws.amazon.com/tags` nel JWT. In questo formato:
+ I tag principali sono rappresentati come un oggetto nidificato sotto la chiave `principal_tags`.
+ Ogni tag principale è il valore di una singola stringa.
+ Le chiavi dei tag transitivi sono rappresentate in un array sotto la chiave `transitive_tag_keys`.
+ Sia `principal_tags` che `transitive_tag_keys` sono nidificati nel namespace `https://aws.amazon.com/tags`.

Nell'esempio seguente viene mostrato un JWT decodificato utilizzando il formato di oggetti nidificati: 

**Example Esempio di token Web JSON decodificato utilizzando il formato di attestazione nidificato**  

```
{
    "sub": "johndoe",
    "aud": "ac_oic_client",
    "jti": "ZYUCeRMQVtqHypVPWAN3VB",
    "iss": "https://xyz.com",
    "iat": 1566583294,
    "exp": 1566583354,
    "auth_time": 1566583292,
    "https://aws.amazon.com/tags": {
        "principal_tags": {
            "Project": ["Automation"],
            "CostCenter": ["987654"],
            "Department": ["Engineering"]
        },
        "transitive_tag_keys": [
            "Project",
            "CostCenter"
        ]
    }
}
```

### Formato di nidificato compresso
<a name="id_session-tags_adding-assume-role-idp-flattened-format"></a>

Il formato di attestazione compresso è compatibile con i provider di identità che non supportano oggetti nidificati nelle attestazioni JWT, come Microsoft Entra ID. In questo formato:
+ I tag principali sono rappresentati come attestazioni separate con il prefisso `https://aws.amazon.com/tags/principal_tags/`. 
+ Ogni tag principale è il valore di una singola stringa.
+ Le chiavi dei tag transitivi sono rappresentate in una singola attestazione come array di stringhe con il prefisso `https://aws.amazon.com/tags/transitive_tag_keys`.

Ora, vediamo come vengono rappresentate le stesse informazioni utilizzando il formato di attestazione compresso:

**Example Esempio di token Web JSON decodificato utilizzando il formato di attestazione compresso**  

```
{
    "sub": "johndoe",
    "aud": "ac_oic_client",
    "jti": "ZYUCeRMQVtqHypVPWAN3VB",
    "iss": "https://xyz.com",
    "iat": 1566583294,
    "exp": 1566583354,
    "auth_time": 1566583292,
    "https://aws.amazon.com/tags/principal_tags/Project": "Automation",
    "https://aws.amazon.com/tags/principal_tags/CostCenter": "987654",
    "https://aws.amazon.com/tags/principal_tags/Department": "Engineering",
    "https://aws.amazon.com/tags/transitive_tag_keys": [
        "Project",
        "CostCenter"
    ]
}
```

Entrambi gli esempi JWT decodificati mostrano una chiamata a `AssumeRoleWithWebIdentity` con i tag di sessione `Project`, `CostCenter` e `Department`. Entrambi i token impostano i tag `Project` e `CostCenter` come transitivi. I tag transitivi persistono durante il concatenamento dei ruoli. Per ulteriori informazioni, consulta [Concatenamento dei ruoli con i tag di sessione](#id_session-tags_role-chaining).

Il formato di attestazione compresso ottiene lo stesso risultato del formato di attestazione nidificato, ma utilizza una struttura compressa per i tag. Consente di includere tag di sessione in ambienti in cui gli oggetti JSON nidificati non sono supportati nelle attestazioni JWT. Quando utilizzi uno dei due formati, assicurati che il tuo provider di identità sia configurato per emettere token con le strutture di attestazione appropriate. AWS supporta entrambi i formati di attestazione, quindi puoi scegliere quello più adatto ai requisiti specifici del tuo provider di identità.

## Passare i tag di sessione utilizzando GetFederationToken
<a name="id_session-tags_adding-getfederationtoken"></a>

La `GetFederationToken` consente di federare l'utente. Questa operazione restituisce un set di credenziali temporanee che è possibile utilizzare per accedere alle AWS risorse. Per aggiungere tag alla sessione utente federata, utilizzate l'`--tags` AWS CLI opzione o il parametro `Tags` AWS API. Non è possibile impostare i tag di sessione come transitivi quando si utilizza `GetFederationToken`, perché non è possibile utilizzare le credenziali provvisorie per assumere un ruolo. In questo caso non è possibile utilizzare il concatenamento dei ruoli. 

Di seguito è mostrata una risposta di esempio che utilizza `GetFederationToken`. In questo esempio, quando si richiede il token, si crea una sessione denominata `my-fed-user`. Aggiungere le coppie chiave-valore dei tag di sessione `Project` = `Automation` e `Department` = `Engineering`.

**Example Richiesta GetFederationToken CLI di esempio**  

```
aws sts get-federation-token \
--name my-fed-user \
--tags key=Project,value=Automation key=Department,value=Engineering
```

Quando si utilizzano le credenziali temporanee restituite dall'operazione `GetFederationToken`, i tag del principale della sessione includono i tag dell'utente e i tag di sessione passati.

## Concatenamento dei ruoli con i tag di sessione
<a name="id_session-tags_role-chaining"></a>

È possibile assumere un ruolo e quindi utilizzare le credenziali temporanee per assumere un altro ruolo. È possibile continuare da una sessione all'altra. Questa operazione è chiamata [concatenamento del ruolo](id_roles.md#iam-term-role-chaining). Quando si passano i tag di sessione mentre si assume un ruolo, è possibile impostare le chiavi come transitive. Ciò garantisce che tali tag di sessione siano passati alle sessioni successive in un concatenamento di ruoli. Non è possibile impostare tag di ruolo come transitivi. Per passare questi tag alle sessioni successive, specificarli come tag di sessione.

**Nota**  
I tag transitivi persistono durante il concatenamento dei ruoli e sostituiscono i valori `ResourceTag` corrispondenti dopo la valutazione della policy di attendibilità del ruolo.

L'esempio seguente mostra come AWS STS passa i tag di sessione, i tag transitivi e i tag di ruolo nelle sessioni successive in una catena di ruoli.

In questo esempio di scenario di concatenamento dei ruoli, si utilizza una chiave di accesso utente IAM AWS CLI per assumere un ruolo denominato. `Role1` È quindi possibile utilizzare le credenziali di sessione risultanti per assumere un secondo ruolo denominato `Role2`. È quindi possibile utilizzare le credenziali della seconda sessione per assumere un terzo ruolo denominato `Role3`. Queste richieste sono eseguite come tre operazioni separate. Ogni ruolo è già taggato in IAM. E durante ogni richiesta, è possibile passare ulteriori tag di sessione.

![\[Concatenazione del ruolo\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/session-tags-chaining-simple.png)


Quando si concatenano i ruoli, è possibile assicurarsi che i tag di una sessione precedente persistano nelle sessioni successive. Per fare ciò utilizzando il comando `assume-role` della CLI, è necessario passare il tag come tag di sessione e impostare il tag come transitivo. Si passa il tag `Star` = `1` come tag di sessione. Il comando collega anche il tag `Heart` = `1` al ruolo e lo applica come tag del principale quando si utilizza la sessione. Tuttavia, si desidera anche che il tag `Heart` = `1` sia passato automaticamente alla seconda o terza sessione. Per farlo, è necessario includerlo manualmente come tag di sessione. I tag principali di sessione risultanti includono entrambi questi tag e li impostano come transitivi.

![\[Assumere il primo ruolo in un concatenamento dei ruoli\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/session-tags-chaining-role1.png)


Esegui questa richiesta utilizzando il seguente AWS CLI comando:

**Example Richiesta AssumeRole CLI di esempio**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/Role1 \
--role-session-name Session1 \
--tags Key=Star,Value=1 Key=Heart,Value=1 \
--transitive-tag-keys Star Heart
```

È quindi possibile utilizzare le credenziali di tale sessione per assumere il `Role2`. Il comando collega il tag `Sun` = `2` al secondo ruolo e lo applica come tag del principale quando utilizzi la sessione. I tag `Heart` e `Star` ereditano dai tag di sessione transitivi nella prima sessione. I tag del principale della seconda sessione risultanti sono `Heart` = `1`, `Star` = `1` e `Sun` = `2`. `Heart` e `Star` continueranno a essere transitivi. Il tag `Sun` collegato a `Role2` non è contrassegnato come transitivo perché non è un tag di sessione. Le sessioni future non ereditano questo tag. 

![\[Assumere il secondo ruolo in un concatenamento dei ruoli\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/session-tags-chaining-role2.png)


Esegui questa seconda richiesta utilizzando il seguente AWS CLI comando:

**Example Richiesta AssumeRole CLI di esempio**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/Role2 \
--role-session-name Session2
```

È quindi possibile utilizzare le credenziali della seconda sessione per assumere il `Role3`. I tag dell'entità per la terza sessione derivano da tutti i nuovi tag di sessione, i tag di sessione transitivi ereditati e i tag di ruolo. I tag `Heart` = `1` e `Star` = `1` nella seconda sessione sono stati ereditati dai tag di sessione transitivi nella prima sessione. Se provi a passare il tag di sessione `Sun` = `2`, l'operazione avrà esito negativo. Il tag di sessione `Star` = 1 ereditato sostituisce il tag `Star` = `3` del ruolo. Nella concatenazione dei ruoli, il valore di un tag transitivo sovrascrive il ruolo che corrisponde al valore `ResourceTag` dopo della valutazione della policy di attendibilità del ruolo. In questo esempio, se `Role3` utilizza `Star` come `ResourceTag` nella policy di attendibilità ruolo e imposta il valore `ResourceTag` sul valore del tag transitivo dalla sessione del ruolo chiamante. Il tag del ruolo `Lightning` si applica anche alla terza sessione e non è impostato come transitivo.

![\[Assumere il terzo ruolo in un concatenamento dei ruoli\]](http://docs.aws.amazon.com/it_it/IAM/latest/UserGuide/images/session-tags-chaining-role3.png)


La terza richiesta viene eseguita utilizzando il seguente AWS CLI comando:

**Example Richiesta AssumeRole CLI di esempio**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/Role3 \
--role-session-name Session3
```

## Utilizzo dei tag di sessione per ABAC
<a name="id_session-tags_using-abac"></a>

Il controllo degli accessi basato su attributi (Attribute-Based Access Control, ABAC) è una strategia di autorizzazione che definisce le autorizzazioni in base agli attributi dei tag. 

Se l'azienda utilizza un provider di identità (IdP) basato su SAML o OIDC per gestire le identità utente, puoi configurare l'asserzione per passare i tag di sessione ad AWS. Ad esempio, con le identità utente aziendali, quando i dipendenti si uniscono AWS, AWS applica i loro attributi al principale risultante. È quindi possibile utilizzare ABAC per consentire o negare le autorizzazioni sulla base di tali attributi. Per informazioni dettagliate, vedi [Tutorial IAM: Utilizzo dei tag di sessione SAML per ABAC](tutorial_abac-saml.md).

Per ulteriori informazioni sull'utilizzo di IAM Identity Center con ABAC, consulta [Attributi per il controllo degli accessi](https://docs.aws.amazon.com/singlesignon/latest/userguide/attributesforaccesscontrol.html) nella *Guida per l'utente di AWS IAM Identity Center *.

## Visualizzazione dei tag di sessione in CloudTrail
<a name="id_session-tags_ctlogs"></a>

È possibile utilizzare AWS CloudTrail per visualizzare le richieste utilizzate per assumere ruoli o federare gli utenti. Il file di registro di CloudTrail include informazioni sui tag dell'entità per la sessione dell'utente che ha assunto il ruolo o dell'utente federato. Per ulteriori informazioni, consulta [Registrazione delle chiamate IAM e AWS STS API con AWS CloudTrail](cloudtrail-integration.md).

Ad esempio, supponiamo di effettuare una AWS STS `AssumeRoleWithSAML` richiesta, passare i tag di sessione e impostare tali tag come transitivi. Nel file di registro di CloudTrail è possibile trovare le seguenti informazioni.

**Example Esempio di log AssumeRoleWith SAML CloudTrail**  

```
    "requestParameters": {
        "sAMLAssertionID": "_c0046cEXAMPLEb9d4b8eEXAMPLE2619aEXAMPLE",
        "roleSessionName": "MyRoleSessionName",
        "principalTags": {
            "CostCenter": "987654",
            "Project": "Unicorn"
        },
        "transitiveTagKeys": [
            "CostCenter",
            "Project"
        ],
        "durationSeconds": 3600,
        "roleArn": "arn:aws:iam::123456789012:role/SAMLTestRoleShibboleth",
        "principalArn": "arn:aws:iam::123456789012:saml-provider/Shibboleth"
    },
```

È possibile visualizzare i seguenti CloudTrail registri di esempio per visualizzare gli eventi che utilizzano tag di sessione.
+ [Esempio di evento API di concatenamento dei AWS STS ruoli nel file di registro CloudTrail](cloudtrail-integration.md#stscloudtrailexample-assumerole)
+ [Esempio di evento AWS STS API SAML nel file di registro CloudTrail](cloudtrail-integration.md#stscloudtrailexample_saml)
+ [Esempio di evento AWS STS API OIDC nel CloudTrail file di registro](cloudtrail-integration.md#stscloudtrailexample_web-identity)