Lisez les informations d'identification du rôle IAM sur Amazon EC2 à l'aide du SDK pour Java 2.x - AWS SDK for Java 2.x

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

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

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

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

Par défaut, les instances EC2 exécutent le service IMDS (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 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 detrue.

  • 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 surtrue, le SDK ne charge pas les informations d'identification du rôle IMDS en IMDSv1 cas d'échec de l' IMDSv2 appel initial.