Fournir des informations d'identification temporaires dans le code - AWS SDK for Java 2.x

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.

Fournir des informations d'identification temporaires dans le code

Si la chaîne d'informations d'identification par défaut ou un fournisseur ou une chaîne de fournisseurs spécifique ou personnalisée ne fonctionnent pas pour votre application, vous pouvez fournir des informations d'identification temporaires directement dans le code. Il peut s'agir d'informations d'identification de rôle IAM décrites ci-dessus ou d'informations d'identification temporaires extraites de AWS Security Token Service (AWS STS). Si vous avez récupéré des informations d'identification temporaires à l'aide de AWS STS, fournissez-les à un Service AWS client comme indiqué dans l'exemple de code suivant.

  1. Assumez un rôle en appelantStsClient.assumeRole().

  2. Créez un StaticCredentialsProviderobjet et fournissez-le avec l'AwsSessionCredentialsobjet.

  3. Configurez le générateur de clients de service avec StaticCredentialsProvider et créez le client.

L'exemple suivant crée un client de service Amazon S3 à l'aide d'informations d'identification temporaires renvoyées par AWS STS pour un rôle assumé par IAM.

// 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); } }

L'ensemble d'autorisations suivant défini dans AWS IAM Identity Center permet à l'identité (utilisateur) d'effectuer les deux opérations suivantes

  1. GetObjectFonctionnement du service Amazon Simple Storage.

  2. Le AssumeRole fonctionnement du AWS Security Token Service.

Si vous n'assumez pas le rôle, la s3.listBuckets() méthode illustrée dans l'exemple échouerait.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "sts:AssumeRole" ], "Resource": [ "*" ] } ] }

Politique d'autorisation des rôles assumés

La politique d'autorisation suivante est attachée au rôle assumé dans l'exemple précédent. Cette politique d'autorisation permet de répertorier tous les buckets dans le même compte que le rôle.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets" ], "Resource": [ "*" ] } ] }

Politique de confiance fondée sur les rôles assumés

La politique de confiance suivante est attachée au rôle assumé dans l'exemple précédent. La politique permet aux identités (utilisateurs) d'assumer le rôle dans deux comptes.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::555555555555:root" ] }, "Action": "sts:AssumeRole", "Condition": {} } ] }