

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Lisez les informations d'identification du rôle IAM sur Amazon EC2 à l'aide du SDK pour Java 2.x
<a name="ec2-iam-roles"></a>

 Vous pouvez utiliser un rôle IAM pour gérer les informations d'identification temporaires pour les applications qui s'exécutent sur une instance EC2 et qui envoient des demandes AWS CLI d' AWS API. Cette solution est préférable au stockage des clés d’accès au sein de l’instance EC2. Pour attribuer un AWS rôle à une instance EC2 et le mettre à la disposition de toutes ses applications, vous devez créer un profil d'instance attaché à l'instance. Un profil d’instance contient le rôle et permet aux programmes qui s’exécutent sur l’instance EC2 d’obtenir des informations d’identification temporaires. Pour plus d’informations, consultez [Utilisation d’un rôle IAM pour accorder des autorisations à des applications s’exécutant sur des instances Amazon EC2](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html) dans le *Guide de l’utilisateur IAM*. 

Cette rubrique fournit des informations sur la façon de configurer votre application Java pour qu'elle s'exécute sur une instance EC2 et de lui permettre d'acquérir des informations AWS SDK for Java 2.x d'identification de IAM rôle.

## Acquérir les informations d'identification des rôles IAM auprès de l'environnement
<a name="default-provider-chain"></a>

Si votre application crée un client de AWS service à l'aide de la `create` méthode (ou `builder().build()` des méthodes), le SDK for Java utilise *la chaîne de fournisseurs d'informations d'identification par défaut*. La chaîne de fournisseurs d'informations d'identification par défaut recherche dans l'environnement d'exécution des éléments de configuration que le SDK peut échanger contre des informations d'identification temporaires. La [Chaîne de fournisseurs d'informations d'identification par défaut dans AWS SDK for Java 2.x](credentials-chain.md) section décrit le processus de recherche complet.

La dernière étape de la chaîne de fournisseurs par défaut n'est disponible que lorsque votre application s'exécute sur une Amazon EC2 instance. Au cours de cette étape, le SDK utilise un `InstanceProfileCredentialsProvider` pour lire le rôle IAM défini dans le profil d'instance EC2. Le SDK acquiert ensuite des informations d'identification temporaires pour ce rôle IAM.

Bien que ces informations d'identification soient temporaires et finiront par expirer, elles sont `InstanceProfileCredentialsProvider` régulièrement actualisées pour vous afin qu'elles continuent à autoriser l'accès à AWS.

## Acquérir les informations d'identification des rôles IAM par programmation
<a name="programmatic-configuration-for-IAM-role"></a>

Comme alternative à la chaîne de fournisseurs d'informations d'identification par défaut qui utilise éventuellement un `InstanceProfileCredentialsProvider` sur EC2, vous pouvez configurer un client de service de manière explicite avec un`InstanceProfileCredentialsProvider`. Cette approche est illustrée dans l'extrait suivant.

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

## Acquérir des informations d'identification de rôle IAM en toute
<a name="securely-read-IAM-role_credentials"></a>

Par défaut, les instances EC2 exécutent le service [IMDS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html) (Instance Metadata Service) qui permet aux SDK d'accéder `InstanceProfileCredentialsProvider` à des informations telles que le rôle IAM configuré. Les instances EC2 exécutent deux versions d'IMDS par défaut :
+ Service de métadonnées d'instance version 1 (IMDSv1) — une request/response méthode
+ Service de métadonnées d'instance version 2 (IMDSv2) : méthode orientée session

[IMDSv2 est une approche plus sûre](https://aws.amazon.com/blogs/security/defense-in-depth-open-firewalls-reverse-proxies-ssrf-vulnerabilities-ec2-instance-metadata-service/) que IMDSv1.

Par défaut, le SDK Java essaie d'abord IMDSv2 d'obtenir le rôle IAM, mais en cas d'échec, il essaie. IMDSv1 Cependant, étant donné que IMDSv1 c'est moins sûr, il est AWS recommandé de IMDSv2 n'utiliser que le SDK et de désactiver toute tentative IMDSv1. 

Pour utiliser l'approche la plus sécurisée, désactivez l'utilisation du SDK en IMDSv1 fournissant l'un des paramètres suivants avec une valeur de`true`.
+ Variable d'environnement : `AWS_EC2_METADATA_V1_DISABLED`
+ Propriété du système JVM : aws. `disableEc2MetadataV1`
+ Paramètre du fichier de configuration partagé : `ec2_metadata_v1_disabled`

Lorsque l'un de ces paramètres est défini sur`true`, le SDK ne charge pas les informations d'identification du rôle IMDS en IMDSv1 cas d'échec de l' IMDSv2 appel initial.