Lesen Sie die IAM Rollenanmeldedaten auf Amazon EC2 - 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 IAM Rollenanmeldedaten auf Amazon EC2

Sie können eine IAM Rolle verwenden, um temporäre Anmeldeinformationen für Anwendungen zu verwalten, die auf einer EC2 Instanz ausgeführt werden und AWS API Anfragen stellen AWS CLI . Dies ist dem Speichern von Zugriffsschlüsseln innerhalb der EC2 Instanz vorzuziehen. Um einer EC2 Instanz eine AWS Rolle zuzuweisen und sie allen ihren Anwendungen zur Verfügung zu stellen, erstellen Sie ein Instanzprofil, das an die Instanz angehängt ist. Ein Instanzprofil enthält die Rolle und ermöglicht Programmen, die auf der EC2 Instanz ausgeführt werden, temporäre Anmeldeinformationen abzurufen. Weitere Informationen finden Sie im IAMBenutzerhandbuch unter Verwenden einer IAM Rolle, um Berechtigungen für Anwendungen zu erteilen, die auf EC2 Amazon-Instances ausgeführt werden.

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 SDK für Java aktivieren, um IAM Rollenanmeldeinformationen abzurufen.

Erwerben Sie IAM Rollenanmeldedaten aus der Umgebung

Wenn Ihre Anwendung mithilfe der create Methode (oder builder().build() Methoden) einen AWS Dienstclient erstellt, verwendet der SDK für Java die standardmäßige Anbieterkette für Anmeldeinformationen. Die Anbieterkette für Standardanmeldedaten durchsucht die Ausführungsumgebung nach Konfigurationselementen, die SDK sie gegen temporäre Anmeldeinformationen eintauschen können. In Anbieterkette für Standardanmeldeinformationen 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 SDK verwendet der an, InstanceProfileCredentialsProvider um die im EC2 Instanzprofil definierte IAM Rolle zu lesen. SDKAnschließend werden temporäre Anmeldeinformationen für diese IAM Rolle abgerufen.

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

Erwerben Sie die IAM Rollenanmeldedaten programmgesteuert

Als Alternative zur standardmäßigen Anbieterkette für Anmeldeinformationen, die eventuell ein InstanceProfileCredentialsProvider On verwendetEC2, können Sie einen Dienstclient explizit mit einem konfigurieren. InstanceProfileCredentialsProvider Dieser Ansatz wird im folgenden Codeausschnitt veranschaulicht.

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

Besorgen Sie sich auf sichere Weise die Anmeldeinformationen IAM

Standardmäßig werden EC2 Instanzen ausgeführt IMDS(Instance Metadata Service), die SDK es den Benutzern InstanceProfileCredentialsProvider ermöglichen, auf Informationen wie die IAM Rolle zuzugreifen, die konfiguriert wurde. EC2Instanzen führen standardmäßig zwei Versionen IMDS von aus:

  • Instance Metadata Service Version 1 (IMDSv1) — eine Anforderungs-/Antwortmethode

  • Instance Metadata Service Version 2 (IMDSv2) — eine sitzungsorientierte Methode

IMDSv2ist ein sichererer Ansatz als. IMDSv1

Standardmäßig versucht Java SDK zuerst, die IAM Rolle IMDSv2 abzurufen, aber wenn das fehlschlägt, versucht es esIMDSv1. Da IMDSv1 das allerdings weniger sicher ist, AWS empfiehlt es sich, IMDSv2 nur von zu verwenden und den SDK Versuch zu deaktivierenIMDSv1.

Um die sicherere Methode zu verwenden, deaktivieren Sie die SDK Verwendung, IMDSv1 indem Sie eine der folgenden Einstellungen mit dem Wert von angebentrue.

  • Umgebungsvariable: AWS_EC2_METADATA_V1_DISABLED

  • JVMSystemeigenschaft: aws. disableEc2MetadataV1

  • Einstellung für gemeinsam genutzte Konfigurationsdatei: ec2_metadata_v1_disabled

Wenn eine dieser Einstellungen auf gesetzt isttrue, werden die IMDS Rollenanmeldedaten SDK nicht geladen, IMDSv1 wenn der erste IMDSv2 Aufruf fehlschlägt.