Lesen Sie die Anmeldeinformationen für IAM-Rollen auf Amazon EC2 mithilfe des SDK for Java 2.x - AWS SDK for Java 2.x

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Lesen Sie die Anmeldeinformationen für IAM-Rollen auf Amazon EC2 mithilfe des SDK for Java 2.x

Sie können eine IAM-Rolle verwenden, um temporäre Anmeldeinformationen für Anwendungen zu verwalten, die auf einer EC2-Instance ausgeführt werden und API-Anfragen stellen AWS CLI . AWS Das ist eher zu empfehlen, als Zugriffsschlüssel innerhalb der EC2-Instance zu speichern. Um einer EC2-Instance eine AWS Rolle zuzuweisen und sie all ihren Anwendungen zur Verfügung zu stellen, erstellen Sie ein Instance-Profil, das an die Instance angehängt ist. Ein Instanzprofil enthält die Rolle und ermöglicht Programmen, die auf der EC2-Instance ausgeführt werden, temporäre Anmeldeinformationen abzurufen. Weitere Informationen finden Sie unter Verwenden einer IAM-Rolle zum Erteilen von Berechtigungen für Anwendungen, die auf Amazon-EC2-Instances ausgeführt werden im IAM-Benutzerhandbuch.

Dieses Thema enthält Informationen darüber, wie Sie Ihre Java-Anwendung so einrichten, dass sie auf einer EC2-Instance ausgeführt wird, und wie Sie es ermöglichen, AWS SDK for Java 2.x IAM Rollenanmeldedaten abzurufen.

Erwerben Sie IAM-Rollenanmeldedaten aus der Umgebung

Wenn Ihre Anwendung mithilfe der create Methode (oder builder().build() Methoden) einen AWS Dienstclient erstellt, verwendet das SDK for Java die standardmäßige Anbieterkette für Anmeldeinformationen. Die Anbieterkette für Standardanmeldedaten durchsucht die Ausführungsumgebung nach Konfigurationselementen, die das SDK gegen temporäre Anmeldeinformationen eintauschen kann. In Anbieterkette für Standardanmeldedaten in der AWS SDK for Java 2.x diesem Abschnitt wird der vollständige Suchvorgang beschrieben.

Der letzte Schritt in der Standardanbieterkette ist nur verfügbar, wenn Ihre Anwendung auf einer Amazon EC2 Instance ausgeführt wird. In diesem Schritt verwendet das SDK eine, InstanceProfileCredentialsProvider um die im EC2-Instanzprofil definierte IAM-Rolle zu lesen. Das SDK ruft dann temporäre Anmeldeinformationen für diese IAM-Rolle ab.

Diese Anmeldeinformationen sind zwar temporär und würden irgendwann ablaufen, werden aber InstanceProfileCredentialsProvider regelmäßig für Sie aktualisiert, sodass Sie weiterhin darauf zugreifen können. AWS

Erwerben Sie die Anmeldeinformationen für die IAM-Rolle programmgesteuert

Als Alternative zur standardmäßigen Anbieterkette für Anmeldeinformationen, die eventuell einen InstanceProfileCredentialsProvider auf EC2 verwendet, können Sie einen Service-Client explizit mit einem konfigurieren. InstanceProfileCredentialsProvider Dieser Ansatz wird im folgenden Codeausschnitt dargestellt.

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

Besorgen Sie sich auf sichere Weise Anmeldeinformationen für IAM-Rollen

Standardmäßig führen EC2-Instances IMDS (Instance Metadata Service) aus, das es den SDKs ermöglichtInstanceProfileCredentialsProvider, auf Informationen wie die konfigurierte IAM-Rolle zuzugreifen. EC2-Instances führen standardmäßig zwei Versionen von IMDS aus:

  • Instance Metadata Service Version 1 (IMDSv1) — eine Methode request/response

  • Instanz-Metadatendienst Version 2 (IMDSv2) — eine sitzungsorientierte Methode

IMDSv2 ist ein sichererer Ansatz als. IMDSv1

Standardmäßig versucht IMDSv2 das Java SDK zuerst, die IAM-Rolle abzurufen, aber wenn das fehlschlägt, versucht IMDSv1 es es. Da IMDSv1 es jedoch weniger sicher ist, AWS empfiehlt es, IMDSv2 nur das SDK zu verwenden und das SDK daran zu hindern, es zu versuchen IMDSv1.

Um den sichereren Ansatz zu verwenden, deaktivieren Sie die Verwendung des SDK, IMDSv1 indem Sie eine der folgenden Einstellungen mit dem Wert von angebentrue.

  • Umgebungsvariable: AWS_EC2_METADATA_V1_DISABLED

  • JVM-Systemeigenschaft: aws. disableEc2MetadataV1

  • Einstellung für gemeinsam genutzte Konfigurationsdatei: ec2_metadata_v1_disabled

Wenn eine dieser Einstellungen auf gesetzt isttrue, lädt das SDK keine IMDS-Rollenanmeldedaten, IMDSv1 wenn der erste IMDSv2 Aufruf fehlschlägt.