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 IAM rôle telles que 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.
-
Assumez un rôle en appelant
StsClient.assumeRole()
. -
Créez un StaticCredentialsProvider
objet et fournissez-le avec l' AwsSessionCredentials
objet. -
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 IAM assumé.
// 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
-
GetObject
Fonctionnement du service Amazon Simple Storage. -
Le
AssumeRole
fonctionnement du AWS Security Token Service.
Sans assumer le rôle, la s3.listBuckets()
méthode présenté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": {} } ] }