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
Vous pouvez utiliser un rôle IAM pour gérer les informations d'identification temporaires pour les applications qui s'exécutent sur une EC2 instance et qui envoient des demandes AWS CLI d' AWS API. Cela est préférable au stockage des clés d'accès dans l' EC2 instance. Pour attribuer un AWS rôle à une EC2 instance et le rendre disponible pour 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 exécutés sur l' EC2 instance d'obtenir des informations d'identification temporaires. Pour plus d'informations, consultez Utiliser un rôle IAM pour accorder des autorisations aux applications exécutées sur des EC2 instances Amazon 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 EC2 instance et de permettre au SDK pour Java d' IAM acquérir des informations d'identification de 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 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' EC2 instance. 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
on EC2, vous pouvez configurer un client de service explicitement 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 EC2 instances 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é. EC2 les instances exécutent deux versions d'IMDS par défaut :
-
Service de métadonnées d'instance version 1 (IMDSv1) : méthode de demande/réponse
-
Service de métadonnées d'instance version 2 (IMDSv2) : méthode orientée session
IMDSv2 est une approche plus sûre
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.