Fournisseurs d'informations d'identification - Kit AWS SDK pour Kotlin

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.

Fournisseurs d'informations d'identification

L'ordre dans lequel la chaîne de fournisseurs d'informations d'identification par défaut résout les informations d'identification a changé avec la version 1.4.0. Pour plus de détails, consultez la note ci-dessous.

Pour envoyer des demandes à Amazon Web Services à l'aide du Kit AWS SDK pour Kotlin, le SDK utilise des informations d'identification signées cryptographiquement émises par. AWS Pour obtenir les informations d'identification, le SDK peut utiliser des paramètres de configuration situés à plusieurs endroits, par exemple les propriétés du système JVM, les variables d'environnement, credentials les fichiers partagés AWS config et les métadonnées des EC2 instances Amazon.

Le SDK utilise l'abstraction du fournisseur d'informations d'identification pour simplifier le processus de récupération des informations d'identification à partir de diverses sources. Le SDK contient plusieurs implémentations de fournisseurs d'informations d'identification.

Par exemple, si la configuration récupérée inclut les paramètres d'accès à authentification unique IAM Identity Center à partir du config fichier partagé, le SDK travaille avec le IAM Identity Center pour récupérer les informations d'identification temporaires qu'il utilise pour effectuer une demande. Services AWS Dans le cadre de cette approche d'acquisition d'informations d'identification, le SDK utilise le fournisseur IAM Identity Center (également connu sous le nom de fournisseur d'informations d'identification SSO). La section de configuration de ce guide décrit cette configuration.

Pour utiliser un fournisseur d'informations d'identification spécifique, vous pouvez en spécifier un lorsque vous créez un client de service. Vous pouvez également utiliser la chaîne de fournisseurs d'informations d'identification par défaut pour rechercher automatiquement les paramètres de configuration.

La chaîne de fournisseurs d'informations d'identification par défaut

Lorsqu'il n'est pas explicitement spécifié lors de la construction du client, le SDK pour Kotlin utilise un fournisseur d'informations d'identification qui vérifie séquentiellement chaque endroit où vous pouvez fournir des informations d'identification. Ce fournisseur d'informations d'identification par défaut est implémenté sous la forme d'une chaîne de fournisseurs d'informations d'identification.

Pour utiliser la chaîne par défaut pour fournir des informations d'identification dans votre application, créez un client de service sans fournir explicitement de credentialsProvider propriété.

val ddb = DynamoDbClient { region = "us-east-2" }

Pour plus d'informations sur la création d'un client de service, consultez la section Création et configuration d'un client.

En savoir plus sur la chaîne de fournisseurs d'informations d'identification par défaut

La chaîne de fournisseurs d'informations d'identification par défaut recherche la configuration des informations d'identification à l'aide de la séquence prédéfinie suivante. Lorsque les paramètres configurés fournissent des informations d'identification valides, la chaîne s'arrête.

1. AWS clés d'accès (propriétés du système JVM)

Le SDK recherche les propriétés aws.accessKeyIdaws.secretAccessKey, et du système aws.sessionToken JVM.

2. AWS clés d'accès (variables d'environnement)

Le SDK tente de charger les informations d'identification à partir AWS_ACCESS_KEY_ID des variables AWS_SECRET_ACCESS_KEY d'AWS_SESSION_TOKENenvironnement et.

3. Jeton d'identité Web

Le SDK recherche les variables AWS_WEB_IDENTITY_TOKEN_FILE d'environnement et/ou AWS_ROLE_ARN (ou les propriétés du système JVM aws.webIdentityTokenFile etaws.roleArn). Sur la base des informations du jeton et du rôle, le SDK acquiert des informations d'identification temporaires.

4. Un profil dans un fichier de configuration

Dans cette étape, le SDK utilise les paramètres associés à un profil. Par défaut, le SDK utilise le partage AWS config et credentials les fichiers, mais si la variable d'AWS_CONFIG_FILEenvironnement est définie, le SDK utilise cette valeur. Si la variable d'AWS_PROFILEenvironnement (ou la propriété du système aws.profile JVM) n'est pas définie, le SDK recherche le profil « par défaut », sinon il recherche le profil correspondant AWS_PROFILE’s à la valeur.

Le SDK recherche le profil en fonction de la configuration décrite dans le paragraphe précédent et utilise les paramètres qui y sont définis. Si les paramètres trouvés par le SDK contiennent une combinaison de paramètres correspondant à différentes approches de fourniture d'informations d'identification, le SDK utilise l'ordre suivant :

  1. AWS clés d'accès (fichier de configuration) - Le SDK utilise les paramètres pour aws_access_key_idaws_access_key_id, etaws_session_token.

  2. Assumer la configuration des rôles : si le SDK trouve role_arn source_profile et/ou des credential_source paramètres, il tente d'assumer un rôle. Si le SDK trouve le source_profile paramètre, il utilise les informations d'identification d'un autre profil pour recevoir des informations d'identification temporaires pour le rôle spécifié parrole_arn. Si le SDK trouve le credential_source paramètre, il extrait les informations d'identification d'un conteneur Amazon ECS, d'une EC2 instance Amazon ou de variables d'environnement en fonction de la valeur du credential_source paramètre. Il utilise ensuite ces informations d'identification pour acquérir des informations d'identification temporaires pour le rôle.

    Un profil doit contenir le source_profile paramètre ou le credential_source paramètre, mais pas les deux.

  3. Configuration du jeton d'identité Web : si le SDK trouve role_arn et définit web_identity_token_file les paramètres, il acquiert des informations d'identification temporaires pour accéder aux AWS ressources en fonction du jeton role_arn et du jeton.

  4. Configuration du jeton SSO : si le SDK trouve sso_session des sso_role_name paramètres (ainsi qu'une sso-session section associée dans les fichiers de configuration), le SDK récupère les informations d'identification temporaires auprès du service IAM Identity Center. sso_account_id

  5. Configuration SSO héritée : si le SDK trouve sso_start_url,, et définit sso_role_name les paramètres sso_regionsso_account_id, il récupère les informations d'identification temporaires auprès du service IAM Identity Center.

  6. Configuration du processus : si le SDK trouve un credential_process paramètre, il utilise la valeur du chemin pour appeler un processus et obtenir des informations d'identification temporaires.

5. Informations d'identification du conteneur

Le SDK recherche les variables d'environnement AWS_CONTAINER_CREDENTIALS_RELATIVE_URI ou ouAWS_CONTAINER_CREDENTIALS_FULL_URI. AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE AWS_CONTAINER_AUTHORIZATION_TOKEN Il utilise ces valeurs pour charger les informations d'identification depuis le point de terminaison HTTP spécifié via une requête GET.

6. Informations d'identification IMDS

Le SDK tente de récupérer les informations d'identification auprès du service de métadonnées d'instance sur le point de terminaison HTTP par défaut ou configuré. Le SDK prend uniquement en charge IMDSv2.

Si les informations d'identification ne sont toujours pas résolues à ce stade, la création du client échoue avec une exception.

Remarque : Modification de l'ordre de résolution des informations d'identification

L'ordre de résolution des informations d'identification décrit ci-dessus est en vigueur pour la 1.4.x+ sortie du SDK pour Kotlin. Avant la 1.4.0 sortie, les articles numéros 3 et 4 ont été échangés et l'élément 4a actuel a suivi l'élément 4f actuel.

Fournisseur d'informations d'identification explicite

Au lieu d'utiliser la chaîne de fournisseurs par défaut, vous pouvez spécifier un fournisseur d'informations d'identification spécifique ou une chaîne personnalisée (CredentialsProviderChain) que le SDK doit utiliser. Par exemple, si vous définissez les informations d'identification par défaut à l'aide de variables d'environnement, fournissez un EnvironmentCredentialsProvider au générateur de clients, comme dans l'extrait de code suivant.

val ddb = DynamoDbClient { region = "us-east-1" credentialsProvider = EnvironmentCredentialsProvider() }
Note

La chaîne par défaut met en cache les informations d'identification, mais pas les fournisseurs autonomes. Vous pouvez encapsuler n'importe quel fournisseur d'informations d'identification à l'aide CachedCredentialsProvider de la classe pour éviter de récupérer inutilement des informations d'identification à chaque appel d'API. Le fournisseur mis en cache ne récupère les nouvelles informations d'identification que lorsque les informations actuelles expirent.

Note

Vous pouvez implémenter votre propre fournisseur d'informations d'identification ou votre propre chaîne de fournisseurs en implémentant l'CredentialsProviderinterface.