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.
Geben Sie temporäre Anmeldeinformationen im Code ein
Wenn die standardmäßige Anmeldeinformationskette oder ein bestimmter oder benutzerdefinierter Anbieter oder eine Anbieterkette für Ihre Anwendung nicht funktioniert, können Sie temporäre Anmeldeinformationen direkt im Code angeben. Dabei kann es sich um Anmeldeinformationen für die IAM-Rolle handeln, wie oben beschrieben, oder um temporäre Anmeldeinformationen, die von AWS Security Token Service ()AWS STS abgerufen wurden. Wenn Sie temporäre Anmeldeinformationen mit abgerufen haben AWS STS, stellen Sie sie einem AWS -Service Client zur Verfügung, wie im folgenden Codebeispiel gezeigt.
-
Nehmen Sie eine Rolle an, indem Sie anrufen
StsClient.assumeRole()
. -
Erstellen Sie ein StaticCredentialsProvider
Objekt und versorgen Sie es mit dem AwsSessionCredentials
Objekt. -
Konfigurieren Sie den Service Client Builder mit dem
StaticCredentialsProvider
und erstellen Sie den Client.
Das folgende Beispiel erstellt einen Amazon S3-Serviceclient mit temporären Anmeldeinformationen, die von AWS STS für eine von IAM angenommene Rolle zurückgegeben wurden.
// The AWS IAM Identity Center identity (user) who executes this method does not have permission to list buckets. // The identity is configured in the [default] profile. public static void assumeRole(String roleArn, String roleSessionName) { // The IAM role represented by the 'roleArn' parameter can be assumed by identities in two different accounts // and the role permits the user to only list buckets. // The SDK's default credentials provider chain will find the single sign-on settings in the [default] profile. // The identity configured with the [default] profile needs permission to call AssumeRole on the STS service. try { Credentials tempRoleCredentials; try (StsClient stsClient = StsClient.create()) { AssumeRoleRequest roleRequest = AssumeRoleRequest.builder() .roleArn(roleArn) .roleSessionName(roleSessionName) .build(); AssumeRoleResponse roleResponse = stsClient.assumeRole(roleRequest); tempRoleCredentials = roleResponse.credentials(); } // Use the following temporary credential items for the S3 client. String key = tempRoleCredentials.accessKeyId(); String secKey = tempRoleCredentials.secretAccessKey(); String secToken = tempRoleCredentials.sessionToken(); // List all buckets in the account associated with the assumed role // by using the temporary credentials retrieved by invoking stsClient.assumeRole(). StaticCredentialsProvider staticCredentialsProvider = StaticCredentialsProvider.create( AwsSessionCredentials.create(key, secKey, secToken)); try (S3Client s3 = S3Client.builder() .credentialsProvider(staticCredentialsProvider) .build()) { List<Bucket> buckets = s3.listBuckets().buckets(); for (Bucket bucket : buckets) { System.out.println("bucket name: " + bucket.name()); } } } catch (StsException | S3Exception e) { logger.error(e.getMessage()); System.exit(1); } }
Der folgende in definierte Berechtigungssatz AWS IAM Identity Center ermöglicht es der Identität (dem Benutzer), die folgenden zwei Operationen auszuführen
-
Der
GetObject
Betrieb des Amazon Simple Storage Service. -
Der
AssumeRole
Betrieb des AWS Security Token Service.
Ohne Übernahme der Rolle würde die im Beispiel gezeigte s3.listBuckets()
Methode fehlschlagen.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "sts:AssumeRole" ], "Resource": [ "*" ] } ] }
Vorausgesetzte Richtlinie für Rollenberechtigungen
Die folgende Berechtigungsrichtlinie ist an die Rolle angehängt, die im vorherigen Beispiel angenommen wurde. Diese Berechtigungsrichtlinie ermöglicht es, alle Buckets in demselben Konto wie die Rolle aufzulisten.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets" ], "Resource": [ "*" ] } ] }
Vertrauensrichtlinie für übernommene Rollen
Die folgende Vertrauensrichtlinie ist der Rolle zugeordnet, die im vorherigen Beispiel übernommen wurde. Die Richtlinie ermöglicht die Übernahme der Rolle durch Identitäten (Benutzer) in zwei Konten.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
111122223333
:root", "arn:aws:iam::555555555555
:root" ] }, "Action": "sts:AssumeRole", "Condition": {} } ] }