Leggi le credenziali del ruolo IAM su Amazon EC2 - AWS SDK for Java 2.x

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

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 Utilizzo di un ruolo IAM per concedere autorizzazioni ad applicazioni in esecuzione su istanze di Amazon EC2 nella Guida per l'utente di IAM.

Questo argomento fornisce informazioni su come configurare l'applicazione Java per l'esecuzione su un'istanza EC2 e abilitare l'SDK for Java per IAM acquisire le credenziali di ruolo.

Acquisisci le credenziali del ruolo IAM dall'ambiente

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

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

Per impostazione predefinita, le istanze EC2 eseguono IMDS (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:

  • Servizio di metadati dell'istanza Versione 1 (IMDSv1): un metodo di richiesta/risposta

  • Servizio di metadati dell'istanza Versione 2 (IMDSv2): un metodo orientato alla sessione

IMDSv2 è un approccio più sicuro di IMDSv1.

Per impostazione predefinita, Java SDK prova innanzitutto IMDSv2 per ottenere il ruolo IAM, ma se ciò fallisce, prova IMDSv1. Tuttavia, poiché IMDSv1 è meno sicuro, AWS consiglia di utilizzare solo IMDSv2 e di impedire all'SDK di provare IMDSv1.

Per utilizzare un approccio più sicuro, disabilita l'SDK dall'utilizzo di 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 sutrue, l'SDK non carica le credenziali del ruolo IMDS utilizzando IMDSv1 se la chiamata IMDSv2 iniziale fallisce.