Demande d’identifiants de sécurité temporaires
Pour obtenir des informations d'identification de sécurité temporaires, vous pouvez utiliser les opérations AWS Security Token Service (AWS STS) dans l'API AWS. Elles incluent des opérations destinées à créer et fournir aux utilisateurs des informations d'identification de sécurité temporaires permettant de contrôler l'accès à vos ressources AWS. Pour plus d'informations sur AWS STS, consultez Informations d'identification de sécurité temporaires dans IAM. Pour en savoir plus sur les différentes méthodes disponibles pour demander des informations d'identification de sécurité temporaires en endossant un rôle, consultez Méthodes pour assumer un rôle.
Pour appeler les opérations d'API, vous pouvez utiliser l'un des kits SDK AWS
Les opérations d'API AWS STS créent une nouvelle session avec des informations d'identification temporaires qui incluent une paire de clés d'accès et un jeton de sécurité. La paire de clés d'accès comprend un ID de clé d'accès et une clé secrète. Ces informations d'identification permettent aux utilisateurs (ou une application exécutée par l'utilisateur) d'accéder à vos ressources. Vous pouvez créer une session de rôle et transmettre des politiques de session et des balises de sessions par programme à l'aide des opérations d'API AWS STS. Les autorisations de la session obtenues sont une combinaison des politiques basées sur l'identité du rôle et des politiques de session. Pour de amples informations sur les politiques de session, veuillez consulter Politiques de session. Pour de plus amples informations sur les balises de session, veuillez consulter Transmission des balises de session dans AWS STS.
Note
La taille du jeton de sécurité renvoyé par les opérations d'API AWS STS n'est pas fixe. Nous vous recommandons fortement de ne pas formuler d'hypothèses quant à sa taille maximale. La taille du jeton est en général inférieure à 4 096 octets, mais elle peut varier.
Utilisation d'AWS STS avec les régions AWS
Vous pouvez acheminer les appels d'API AWS STS vers un point de terminaison global ou un des points de terminaison régionaux. En choisissant un point de terminaison plus proche de vous, il est possible de réduire la latence et d'améliorer les performances de vos appels d'API. Vous pouvez également diriger vos appels vers un autre point de terminaison régional si vous n'êtes plus en mesure de communiquer avec le point de terminaison initial. Si vous utilisez un des kits SDK AWS disponibles, utilisez sa méthode pour spécifier une région avant d'effectuer l'appel d'API. Si vous créez manuellement des demandes d'API HTTP, vous devez les diriger vous-même vers le point de terminaison approprié. Pour plus d'informations, consultez la section AWS STS de Régions et points de terminaison et Gestion de AWS STS dans un Région AWS.
Les opérations d'API suivantes vous permettent d'obtenir des informations d'identification temporaires à utiliser dans votre environnement et vos applications AWS
Demande d’informations d’identification pour la délégation et la fédération entre comptes par l’intermédiaire d’un fournisseur d’identité personnalisé
L’opération d’API AssumeRole est utile, car elle permet aux utilisateurs IAM existants d’accéder aux ressources AWS auxquelles ils n’ont pas encore accès. Par exemple, l'utilisateur peut avoir besoin d'accéder aux ressources d'un autre Compte AWS. Il est également utile comme moyen d'obtenir temporairement un accès privilégié, par exemple, pour fournir une authentification multi-facteur (MFA). Vous devez appeler cette API à l'aide d'informations d'identification actives. Pour savoir qui peut appeler cette opération, consultez Comparaison des informations d’identification AWS STS. Pour plus d'informations, consultez Créer un rôle pour attribuer des autorisations à un utilisateur IAM et Accès sécurisé aux API avec MFA.
Pour demander des justificatifs de sécurité temporaires pour la délégation et la fédération de comptes croisés par l’intermédiaire d’un fournisseur d’identité personnalisé
-
Authentifiez-vous à l’aide de vos identifiants de sécurité AWS. Cet appel doit être effectué à l'aide d'informations d'identification de sécurité AWS valides.
-
Appelez l’opération
AssumeRole.
L'exemple suivant illustre une demande et une réponse qui utilisent AssumeRole. Cet exemple de demande endosse le rôle demo pour la durée spécifiée avec la politique de session, les balises de session et l'ID externe et l'identité source inclus. La session obtenue est nommée John-session.
Exemple de demande
https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=AssumeRole &RoleSessionName=John-session &RoleArn=arn:aws::iam::123456789012:role/demo &Policy=%7B%22Version%22%3A%222012-10-17 %22%2C%22Statement%22%3A%5B%7B%22Sid%22%3A%20%22Stmt1%22%2C%22Effect%22%3A%20%22Allow%22%2C%22Action%22%3A%20%22s3%3A*%22%2C%22Resource%22%3A%20%22*%22%7D%5D%7D &DurationSeconds=1800 &Tags.member.1.Key=Project &Tags.member.1.Value=Pegasus &Tags.member.2.Key=Cost-Center &Tags.member.2.Value=12345 &ExternalId=123ABC &SourceIdentity=DevUser123 &AUTHPARAMS
La valeur de politique indiquée dans l'exemple précédent est la version encodée en URL de la politique suivante :
Le paramètre AUTHPARAMS de l'exemple est un espace réservé pour votre signature. Une signature correspond aux informations d'authentification que vous devez inclure avec les demandes d'API AWS HTTP. Lors de la création de demandes d'API, nous vous recommandons d'utiliser les kits SDK AWS
Outre les informations d'identification de sécurité temporaires, la réponse inclut l'Amazon Resource Name (ARN) de l'utilisateur fédéré et la date d'expiration des informations d'identification.
Exemple de réponse
<AssumeRoleResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<AssumeRoleResult>
<SourceIdentity>DevUser123</SourceIdentity>
<Credentials>
<SessionToken>
AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW
LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd
QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU
9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz
+scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA==
</SessionToken>
<SecretAccessKey>
wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY
</SecretAccessKey>
<Expiration>2019-07-15T23:28:33.359Z</Expiration>
<AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId>
</Credentials>
<AssumedRoleUser>
<Arn>arn:aws:sts::123456789012:assumed-role/demo/John</Arn>
<AssumedRoleId>ARO123EXAMPLE123:John</AssumedRoleId>
</AssumedRoleUser>
<PackedPolicySize>8</PackedPolicySize>
</AssumeRoleResult>
<ResponseMetadata>
<RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId>
</ResponseMetadata>
</AssumeRoleResponse>Note
Une conversion AWS compresse les stratégies de session et les balises de session transmises dans un format binaire compressé, qui possède une limite distincte. Votre demande peut échouer pour cette limite, même si votre texte brut répond aux autres exigences. L'élément de réponse PackedPolicySize indique en pourcentage la proximité des stratégies et des balises de votre requête par rapport à la limite de taille supérieure.
Demande d’informations d’identification par le biais d’un fournisseur OIDC
L’opération d’API AssumeRoleWithWebIdentity renvoie un ensemble d’informations d’identification de sécurité temporaires AWS en échange d’un jeton Web JSON (JWT). Il s’agit notamment des fournisseurs d’identité publique, tels que Login with Amazon, Facebook, Google, et des fournisseurs qui émettent des JWT compatibles avec la découverte OpenID Connect (OIDC), tels que GitHub actions ou Azure Devops. Pour de plus amples informations, consultez Fédération OIDC.
Note
Les requêtes AssumeRoleWithWebIdentity ne sont pas signées et ne nécessitent pas d’informations d’identification AWS.
Demande d’informations d’identification par le biais d’un fournisseur OIDC
-
Appelez l’opération
AssumeRoleWithWebIdentity.Lorsque vous appelez
AssumeRoleWithWebIdentity, AWS valide le jeton présenté en vérifiant la signature numérique à l’aide des clés publiques mises à disposition via le jeu de clés Web JSON (JWKS) de votre IdP. Si le jeton est valide et que toutes les conditions définies dans la politique d’approbation des rôles IAM sont remplies, AWS vous renvoie les informations suivantes :-
Un ensemble d'informations d'identification de sécurité temporaires. Il s'agit d'un ID de clé d'accès, d'une clé d'accès secrète et d'un jeton de session.
-
L'ID de rôle et l'ARN du rôle endossé.
-
Une valeur
SubjectFromWebIdentityTokenqui contient l'ID utilisateur unique.
-
-
Votre application peut ensuite utiliser les informations de sécurité temporaires renvoyées dans la réponse pour effectuer des appels d’API AWS. Le processus est identique à un appel d'API AWS avec les informations d'identification de sécurité à long terme. La différence est que vous devez inclure le jeton de session, ce qui permet à AWS de vérifier la validité des informations d'identification de sécurité temporaires.
Votre application doit mettre en cache les informations d’identification renvoyées par AWS STS et les actualiser si nécessaire. Si votre application est créée à l’aide d’un AWS SDK, celui-ci dispose de fournisseurs d’informations d’identification capables de gérer les appels AssumeRoleWithWebIdentity et d’actualiser les informations d’identification d’AWS avant leur expiration. Pour plus d’informations, consultez la section Fournisseurs d’informations d’identification normalisés des AWS SDK et des outils dans le Guide de référence des AWS SDK et des outils.
Demande d’informations d’identification via un fournisseur d’identité SAML 2.0
L’opération d’API AssumeRoleWithSAML renvoie un ensemble d’informations d’identification de sécurité temporaires pour les principaux fédérés SAML authentifiés par le système d’identité existant de votre organisation. Les utilisateurs doivent également utiliser SAML
-
Appelez l’opération
AssumeRoleWithSAML.Il s’agit d’un appel non signé, ce qui signifie que vous n’avez pas besoin d’authentifier les informations d’identification de sécurité AWS avant d’effectuer la requête.
Note
Un appel à
AssumeRoleWithSAMLn'est pas signé (chiffré). Par conséquent, vous devez uniquement inclure des politiques de session facultatives si la demande est transmise via un intermédiaire approuvé. Dans ce cas, une personne peut modifier la politique afin de supprimer les restrictions. -
Lorsque vous appelez
AssumeRoleWithSAML, AWS vérifie l'authenticité de l'assertion SAML. En supposant que le fournisseur d'identité valide l'assertion, AWS retourne les informations suivantes :-
Un ensemble d'informations d'identification de sécurité temporaires. Il s'agit d'un ID de clé d'accès, d'une clé d'accès secrète et d'un jeton de session.
-
L'ID de rôle et l'ARN du rôle endossé.
-
Une valeur
Audiencequi contient la valeur de l'attributRecipientde l'élémentSubjectConfirmationDatade l'assertion SAML. -
Une valeur
Issuerqui contient la valeur de l'élémentIssuerde l'assertion SAML. -
Un élément
NameQualifierqui contient une valeur de hachage créée à partir de la valeurIssuer, l'ID d'Compte AWS et le nom convivial du fournisseur SAML. Lors de la combinaison avec l’élémentSubject, ils identifient de manière unique le principal fédéré SAML. -
Un élément
Subjectqui contient la valeur de l'élémentNameIDdans l'élémentSubjectde l'assertion SAML. -
Un élément
SubjectTypequi indique le format de l'élémentSubject. La valeur peut êtrepersistent,transientou l'URIFormatcomplet des élémentsSubjectetNameIDutilisés dans votre assertion SAML. Pour plus d'informations sur l'attributNameIDde l'élémentFormat, consultez Configuration d’assertions SAML pour la réponse d’authentification.
-
-
Utilisez les informations d’identification de sécurité temporaires renvoyées dans la réponse pour effectuer des appels d’API AWS. Le processus est identique à un appel d'API AWS avec les informations d'identification de sécurité à long terme. La différence est que vous devez inclure le jeton de session, ce qui permet à AWS de vérifier la validité des informations d'identification de sécurité temporaires.
Votre application met en cache les informations d'identification. Par défaut, les informations d'identification expirent au bout d'une heure. Si vous n'utilisez pas l'action AmazonSTSCredentialsProviderAssumeRoleWithSAML. Appelez cette opération pour obtenir un nouvel ensemble d'informations d'identification de sécurité temporaires avant l'expiration des anciennes.
Demande d’informations d’identification via un fournisseur d’identité personnalisé
L’opération d’API GetFederationToken retourne un ensemble d’informations d’identification de sécurité temporaires pour les principaux d’utilisateur fédéré AWS STS. La différence entre cette API et AssumeRole réside dans le fait que le délai d'expiration par défaut est considérablement plus long (12 heures au lieu d'une heure). De plus, vous pouvez utiliser le paramètre DurationSeconds pour spécifier une durée pour que les informations d'identification de sécurité temporaires restent valides. Les informations d’identification qui en résultent sont valables pour la durée spécifiée, entre 900 secondes (15 minutes) et 129 600 secondes (36 heures). L’allongement de la période d’expiration peut contribuer à réduire le nombre d’appels à AWS, car il n’est pas nécessaire d’obtenir de nouvelles informations d’identification aussi souvent.
-
Authentifiez-vous avec les informations d’identification de sécurité AWS de votre utilisateur IAM spécifique. Cet appel doit être effectué à l'aide d'informations d'identification de sécurité AWS valides.
-
Appelez l’opération
GetFederationToken.
L'appel à GetFederationToken retourne des informations d'identification de sécurité temporaires constituées d'un jeton de session, d'une clé d'accès, d'une clé secrète et d'un délai d'expiration. Vous pouvez utiliser GetFederationToken si vous souhaiter gérer les autorisations au sein de l'organisation (par exemple, pour octroyer des autorisations à l'aide de l'application proxy).
L'exemple suivant illustre une demande et une réponse qui utilisent GetFederationToken. Cet exemple de demande fédère l'utilisateur appelant pour la durée spécifiée avec l'ARN de politique de session et les balises de session. La session obtenue est nommée Jane-session.
Exemple de demande
https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=GetFederationToken &Name=Jane-session &PolicyArns.member.1.arn==arn%3Aaws%3Aiam%3A%3A123456789012%3Apolicy%2FRole1policy &DurationSeconds=1800 &Tags.member.1.Key=Project &Tags.member.1.Value=Pegasus &Tags.member.2.Key=Cost-Center &Tags.member.2.Value=12345 &AUTHPARAMS
L'ARN de politique illustrée dans l'exemple précédent inclut les ARN encodés en URL suivants :
arn:aws:iam::123456789012:policy/Role1policy
Notez également que le paramètre &AUTHPARAMS dans l'exemple est conçu comme un espace réservé pour les informations d'authentification. Il s'agit de la signature, que vous devez inclure avec les demandes d'API HTTP AWS. Lors de la création de demandes d'API, nous vous recommandons d'utiliser les kits SDK AWS
Outre les informations d'identification de sécurité temporaires, la réponse inclut l'Amazon Resource Name (ARN) de l'utilisateur fédéré et la date d'expiration des informations d'identification.
Exemple de réponse
<GetFederationTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<GetFederationTokenResult>
<Credentials>
<SessionToken>
AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW
LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd
QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU
9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz
+scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCEXAMPLE==
</SessionToken>
<SecretAccessKey>
wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY
</SecretAccessKey>
<Expiration>2019-04-15T23:28:33.359Z</Expiration>
<AccessKeyId>AKIAIOSFODNN7EXAMPLE;</AccessKeyId>
</Credentials>
<FederatedUser>
<Arn>arn:aws:sts::123456789012:federated-user/Jean</Arn>
<FederatedUserId>123456789012:Jean</FederatedUserId>
</FederatedUser>
<PackedPolicySize>4</PackedPolicySize>
</GetFederationTokenResult>
<ResponseMetadata>
<RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId>
</ResponseMetadata>
</GetFederationTokenResponse>Note
Une conversion AWS compresse les stratégies de session et les balises de session transmises dans un format binaire compressé, qui possède une limite distincte. Votre demande peut échouer pour cette limite, même si votre texte brut répond aux autres exigences. L'élément de réponse PackedPolicySize indique en pourcentage la proximité des stratégies et des balises de votre requête par rapport à la limite de taille supérieure.
AWS recommande d'accorder des autorisations au niveau des ressources (par exemple, pour attacher une politique basée sur les ressources à un compartiment Amazon S3) et d'omettre le paramètre Policy. Toutefois, si vous n’incluez pas de politique pour un principal d’utilisateur fédéré AWS STS, les informations d’identification de sécurité temporaires ne lui accordent aucune autorisation. Dans ce cas, vous devez utiliser des politiques de ressources pour accorder à l'utilisateur fédéré l'accès à vos ressources AWS.
Supposons, par exemple, que votre numéro d'Compte AWS soit 111122223333 et que vouliez accorder à Susan l'accès à un compartiment Amazon S3. Les informations d'identification de sécurité temporaires de Susan ne comprennent pas de politique pour ce compartiment. Dans ce cas, vous devez vous assurer que le compartiment est doté d'une politique avec un ARN correspondant à celui de Susan, par exemple arn:aws:sts::111122223333:federated-user/Susan.
Demande d’informations d’identification temporaires pour les utilisateurs dans des environnements non fiables
L’opération d’API GetSessionToken retourne un ensemble d’informations d’identification de sécurité temporaires pour un utilisateur IAM existant. Elle est utile pour fournir une sécurité renforcée, par exemple pour autoriser les demandes AWS uniquement lorsque l'authentification multifacteur (MFA) est activée pour l'utilisateur IAM. Dans la mesure où les informations d'identification sont temporaires, elles offrent une sécurité améliorée lorsqu'un utilisateur IAM accède à vos ressources par le biais d'un environnement moins sécurisé. Les exemples d'environnements moins sécurisés incluent un périphérique mobile ou un navigateur web.
-
Authentifiez-vous avec les informations d’identification de sécurité AWS de votre utilisateur IAM spécifique. Cet appel doit être effectué à l'aide d'informations d'identification de sécurité AWS valides.
-
Appelez l’opération
GetSessionToken. -
GetSessionTokenretourne des informations d'identification de sécurité temporaires constituées d'un jeton de session, d'un ID de clé d'accès et d'une clé d'accès secrète.
Par défaut, les informations d'identification de sécurité temporaires d'un utilisateur IAM restent valides pendant 12 heures maximum. Mais vous pouvez demander un durée de validité allant de 15 minutes à 36 heures à l'aide du paramètre DurationSeconds. Pour des raisons de sécurité, la durée de validité du jeton de l'Utilisateur racine d'un compte AWS est limitée à une heure.
L'exemple suivant illustre une demande et une réponse qui utilisent GetSessionToken. La réponse inclut également l'heure d'expiration des informations d'identification de sécurité temporaires.
Exemple de demande
https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=GetSessionToken &DurationSeconds=1800 &AUTHPARAMS
Le paramètre AUTHPARAMS de l'exemple est un espace réservé pour votre signature. Une signature correspond aux informations d'authentification que vous devez inclure avec les demandes d'API AWS HTTP. Lors de la création de demandes d'API, nous vous recommandons d'utiliser les kits SDK AWS
Exemple de réponse
<GetSessionTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<GetSessionTokenResult>
<Credentials>
<SessionToken>
AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/L
To6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3z
rkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtp
Z3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE
</SessionToken>
<SecretAccessKey>
wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY
</SecretAccessKey>
<Expiration>2011-07-11T19:55:29.611Z</Expiration>
<AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId>
</Credentials>
</GetSessionTokenResult>
<ResponseMetadata>
<RequestId>58c5dbae-abef-11e0-8cfe-09039844ac7d</RequestId>
</ResponseMetadata>
</GetSessionTokenResponse>La demande GetSessionToken peut également inclure les valeurs SerialNumber et TokenCode pour la vérification de l'authentification multi-facteur (MFA) AWS. Si les valeurs indiquées sont valides, AWS STS fournit des informations d'identification de sécurité temporaires qui incluent l'état de l'authentification MFA. Les informations d'identification de sécurité temporaires peuvent ensuite être utilisées pour accéder aux opérations d'API protégées par un code MFA ou aux sites web AWS, tant que l'authentification MFA est valide.
L'exemple suivant illustre une demande GetSessionToken qui comprend un code de vérification MFA et un numéro de série du dispositif.
https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=GetSessionToken &DurationSeconds=7200 &SerialNumber=YourMFADeviceSerialNumber &TokenCode=123456 &AUTHPARAMS
Note
L'appel à AWS STS peut être dirigé vers un point de terminaison global ou tout point de terminaison régional pour lequel vous activez votre Compte AWS. Pour plus d'informations, veuillez consulter la section AWS STS de Régions et points de terminaison.
Le paramètre AUTHPARAMS de l'exemple est un espace réservé pour votre signature. Une signature correspond aux informations d'authentification que vous devez inclure avec les demandes d'API AWS HTTP. Lors de la création de demandes d'API, nous vous recommandons d'utiliser les kits SDK AWS