Lesen von IAM-Rollenanmeldeinformationen 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 von IAM-Rollenanmeldeinformationen auf Amazon EC2

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 - AWS CLI oder AWS -API-Anforderungen stellen. Das ist eher zu empfehlen, als Zugriffsschlüssel innerhalb der EC2-Instance zu speichern. Um einer EC2-Instance eine - AWS Rolle zuzuweisen und sie für alle ihre Anwendungen verfügbar zu machen, erstellen Sie ein Instance-Profil, das der Instance zugeordnet ist. Ein Instance-Profil enthält die Rolle und ermöglicht, dass Programme, die in der EC2-Instance ausgeführt werden, temporäre Anmeldeinformationen erhalten. 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 zum Einrichten Ihrer Java-Anwendung für die Ausführung auf einer EC2-Instance und zum Aktivieren des SDK for Java zum Abrufen von IAM Rollenanmeldeinformationen.

Anfordern von IAM-Rollenanmeldeinformationen aus der Umgebung

Wenn Ihre Anwendung mithilfe der -createMethode (oder -builder().build()Methoden) einen - AWS Service-Client erstellt, verwendet das SDK for Java die standardmäßige Anbieterkette für Anmeldeinformationen. Die standardmäßige Anmeldeinformationsanbieterkette durchsucht die Ausführungsumgebung nach Konfigurationselementen, die das SDK gegen temporäre Anmeldeinformationen eintauschen kann. Der Anbieterkette für Standardanmeldeinformationen Abschnitt beschreibt den vollständigen Suchvorgang.

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

Obwohl diese Anmeldeinformationen temporär sind und irgendwann ablaufen würden, aktualisiert ein sie InstanceProfileCredentialsProvider regelmäßig für Sie, sodass sie weiterhin Zugriff auf gewähren AWS.

Programmgesteuertes Erfassen von Anmeldeinformationen für IAM-Rollen

Als Alternative zur standardmäßigen Anbieterkette für Anmeldeinformationen, die schließlich einen InstanceProfileCredentialsProvider auf EC2 verwendet, können Sie einen Service-Client explizit mit einem konfigurierenInstanceProfileCredentialsProvider. Dieser Ansatz wird im folgenden Ausschnitt gezeigt.

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

Sicheres Abrufen von Anmeldeinformationen für IAM-Rollen

Standardmäßig führen EC2-Instances IMDS (Instance Metadata Service) aus, mit dem die SDKs InstanceProfileCredentialsProvider auf Informationen wie die konfigurierte IAM-Rolle zugreifen können. EC2-Instances führen standardmäßig zwei Versionen von IMDS aus:

  • Instance-Metadatenservice Version 1 (IMDSv1) – Ein Anfrage/Antwort-Verfahren

  • Instance-Metadatenservice Version 2 (IMDSv2) – Ein sitzungsorientiertes Verfahren

IMDSv2 ist ein sichererer Ansatz als IMDSv1.

Standardmäßig versucht das Java-SDK zunächst IMDSv2, die IAM-Rolle abzurufen, aber wenn dies fehlschlägt, versucht es IMDSv1. Da IMDSv1 jedoch weniger sicher ist, AWS empfiehlt nur die Verwendung von IMDSv2 und , um das SDK daran zu hindern, IMDSv1 auszuprobieren.

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

  • Umgebungsvariable: AWS_EC2_METADATA_V1_DISABLED

  • JVM-Systemeigenschaft: aws.disableEc2MetadataV1

  • Freigegebene Konfigurationsdateieinstellung: ec2_metadata_v1_disabled

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