

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

# Leggi le credenziali del ruolo IAM su Amazon EC2 utilizzando l'SDK for Java 2.x
<a name="ec2-iam-roles"></a>

 Puoi utilizzare un ruolo IAM per gestire le credenziali temporanee per le applicazioni in esecuzione su un'istanza EC2 e che AWS CLI effettuano richieste API. AWS Ciò è preferibile all’archiviazione delle chiavi di accesso nell’istanza EC2. Per assegnare un AWS ruolo a un'istanza EC2 e renderlo disponibile per tutte le sue applicazioni, crei un profilo di istanza collegato all'istanza. Un profilo dell’istanza contiene il ruolo e consente ai programmi in esecuzione sull’istanza EC2 di ottenere le credenziali temporanee. Per ulteriori informazioni, consulta [Utilizzare un ruolo IAM per concedere autorizzazioni alle applicazioni che eseguono istanze Amazon EC2](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html) nella *Guida per l'utente IAM*. 

Questo argomento fornisce informazioni su come configurare l'applicazione Java per l'esecuzione su un'istanza EC2 e abilitare l'acquisizione IAM delle credenziali AWS SDK for Java 2.x di ruolo.

## Acquisisci le credenziali del ruolo IAM dall'ambiente
<a name="default-provider-chain"></a>

Se l'applicazione crea un client di AWS servizio utilizzando il `create` metodo (o i `builder().build()` metodi), l'SDK for Java utilizza *la catena di provider di credenziali predefinita*. La catena di fornitori di credenziali predefinita cerca nell'ambiente di esecuzione gli elementi di configurazione che l'SDK può scambiare con credenziali temporanee. La [Catena di fornitori di credenziali predefinita in AWS SDK for Java 2.x](credentials-chain.md) sezione descrive il processo di ricerca completo.

L'ultimo passaggio della catena di provider predefinita è disponibile solo quando l'applicazione viene eseguita su un' Amazon EC2 istanza. In questa fase, l'SDK utilizza un `InstanceProfileCredentialsProvider` per leggere il ruolo IAM definito nel profilo dell'istanza EC2. L'SDK acquisisce quindi le credenziali temporanee per quel ruolo IAM.

Sebbene queste credenziali siano temporanee e alla fine scadano, An le aggiorna `InstanceProfileCredentialsProvider` periodicamente in modo che continuino a consentirne l'accesso. AWS

## Acquisisci le credenziali del ruolo IAM a livello di codice
<a name="programmatic-configuration-for-IAM-role"></a>

In alternativa alla catena di provider di credenziali predefinita che alla fine utilizza un client di servizio `InstanceProfileCredentialsProvider` su EC2, puoi configurare un client di servizio in modo esplicito con un. `InstanceProfileCredentialsProvider` Questo approccio è illustrato nel frammento seguente.

```
S3Client s3 = S3Client.builder()
       .credentialsProvider(InstanceProfileCredentialsProvider.create())
       .build();
```

## Acquisisci in modo sicuro le credenziali dei ruoli IAM
<a name="securely-read-IAM-role_credentials"></a>

Per impostazione predefinita, le istanze EC2 eseguono [IMDS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html) (Instance Metadata Service) che consente agli SDK di accedere `InstanceProfileCredentialsProvider` a informazioni come il ruolo IAM che è stato configurato. Per impostazione predefinita, le istanze EC2 eseguono due versioni di IMDS:
+ Instance Metadata Service Version 1 ()IMDSv1: un metodo request/response 
+ Instance Metadata Service Version 2 (IMDSv2): un metodo orientato alla sessione

[IMDSv2 è un approccio più sicuro di.](https://aws.amazon.com/blogs/security/defense-in-depth-open-firewalls-reverse-proxies-ssrf-vulnerabilities-ec2-instance-metadata-service/) IMDSv1

Per impostazione predefinita, Java SDK tenta innanzitutto di IMDSv2 ottenere il ruolo IAM, ma se fallisce, ci prova IMDSv1. Tuttavia, poiché IMDSv1 è meno sicuro, AWS consiglia di utilizzare IMDSv2 solo l'SDK e di disabilitarne i tentativi. IMDSv1 

Per utilizzare un approccio più sicuro, disabilita l'utilizzo dell'SDK IMDSv1 fornendo una delle seguenti impostazioni con un valore di. `true`
+ Variabile d'ambiente: `AWS_EC2_METADATA_V1_DISABLED`
+ Proprietà del sistema JVM: aws. `disableEc2MetadataV1`
+ Impostazione del file di configurazione condiviso: `ec2_metadata_v1_disabled`

Con una di queste impostazioni impostata su`true`, l'SDK non carica le credenziali del ruolo IMDS utilizzando IMDSv1 se la chiamata iniziale fallisce. IMDSv2 