Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Comment utiliser l'interface de la ligne de commande AWS (AWS CLI) pour réaliser des appels AssumeRole et stocker les informations d'identification temporaires des utilisateurs ?
Je souhaite obtenir les informations d'identification des opérations AssumeRoleWithSAML, AssumeRole et AssumeRoleWithWebIdentity à l'aide de l'interface de la ligne de commande AWS (AWS CLI).
Résolution
Pour obtenir les informations d'identification fournies par AssumeRoleWithSAML, AssumeRole et AssumeRoleWithWebIdentity, procédez comme suit pour appeler l'API et enregistrer la sortie dans un fichier texte. Utilisez ensuite la sortie pour appeler une commande API avec l'AWS CLI.
Important :
- Si vous recevez des erreurs lors de l'exécution des commandes AWS CLI, assurez-vous que vous utilisez la version la plus récente d'AWS CLI.
- Les paramètres role-arn et role-session-name sont obligatoires.
AssumeRoleWithSAML
Remarque : Vous devez disposer d'une réponse SAML 2.0 valide de votre fournisseur d'identité et d'un rôle IAM faisant confiance à l'IdP.
Obtenez la réponse SAML auprès des outils pour développeur.
1. Suivez les instructions de la section Comment afficher une réponse SAML dans votre navigateur à des fins de dépannage.
2. Accédez aux journaux, puis ouvrez le fichier journal SAML.
3. Copiez la totalité de la réponse SAML.
4. Collez la réponse SAML dans un fichier du répertoire local nommé samlresponse.log. Exécutez ensuite assume-role-with saml pour appeler le jeton STS :
Remarque : cet exemple utilise awk. Awk est compatible avec les distributions basées sur Linux.
aws sts assume-role-with-saml --role-arn arn:aws:iam::ACCOUNTNUMBER:role/IAM_ROLE --principal-arn arn:aws:iam::ACCOUNTNUMBER:saml-provider/SAML_PROVIDER --saml-assertion file://samlresponse.log awk -F: ' BEGIN { RS = "[,{}]" ; print "[PROFILENAME]"} /:/{ gsub(/"/, "", $2) } /AccessKeyId/{ print "aws_access_key_id = " $2 } /SecretAccessKey/{ print "aws_secret_access_key = " $2 } /SessionToken/{ print "aws_session_token = " $2 } ' >> ~/.aws/credentials
Cette action enregistre les informations d'identification dans un profil contenu dans le fichier ~/.aws/credentials.
5. (Facultatif) Pour sauvegarder les informations d'identification, exécutez la commande suivante :
cp -a ~/.aws/credentials ~/.aws/credentials.bak.
Astuce : assurez-vous d'avoir un profil correspondant dans ~/.aws/config contenant les paramètres de sortie et de région, afin de ne pas être invité à les saisir de manière répétée.
6. Appelez les informations d'identification utilisateur avec le paramètre -profile :
aws ec2 describe-instances --profile PROFILENAME
Exemple de sortie assume-role-with-saml sans l'envoyer vers un fichier :
{ "SubjectType": "persistent", "AssumedRoleUser": { "AssumedRoleId": "ROLE_ID_NUMBER:example@corp.example.com", "Arn": "arn:aws:sts::ACCOUNTNUMBER:assumed-role/ROLE_ID/example@corp.example.com" }, "Audience": "https://signin.aws.amazon.com/saml", "NameQualifier": "RANDOM_GENERATED_STRING", "Credentials": { "SecretAccessKey": "SECRET_ACCESS_KEY", "SessionToken": "TOKEN_KEY", "Expiration": "2015-05-11T20:00:49Z", "AccessKeyId": "ACCESS_KEY_ID" }, "Subject": "CORP\\\\EXAMPLE", "Issuer": "http://SERVER_NAME.corp.example.com/adfs/services/trust" }
Exemple de sortie assume-role-with-saml envoyée vers le fichier d'informations d'identification :
aws_access_key_id = ACCESS_KEY_ID aws_session_token = SESSION_TOKEN aws_secret_access_key = SECRET_ACCESS_KEY [PROFILENAME]
AssumeRole
Remarque : Vos informations d'identification IAM doivent approuver le rôle IAM que vous assumez.
1. Exécutez la commande AWS get-caller-identity pour vérifier une réponse :
aws sts get-caller-identity
Remarque : Si vous ne recevez pas de réponse, vérifiez qu'une clé secrète ou un accès IAM valide est stockée dans le fichier .aws/credentials.
2. Exécutez la commande assume-role :
aws sts assume-role --role-arn arn:aws:iam::123456789012:role/ExampleRole --role-session-name ExampleSession
La réponse obtenue est semblable à la l'exemple suivant :
{ "AssumedRoleUser": { "AssumedRoleId": "AROAZRG5BQ2L7OB87N3RE:ExampleSession", "Arn": "arn:aws:sts::123456789012:assumed-role/RoleA/ExampleSession" }, "Credentials": { "SecretAccessKey": "JCNFKY7XCUwHWTKcQhmmFokpjLetCmNLZ7pg9SJe", "SessionToken": "FwoGZXIvYXdzEL7//////////wEaDNoBLBJUNYWKaHXZXCKvARBGJ4CqOs+p2JR2a7Euni0d0XuSs31ZA/1QqpX6Spfuz2WAvHCyqwbE3+oxyvyqYlO8dTJwp56YCFCJ6K4Prt9pMeZU9R5NGBJHvRbXXKfxp+jktLc/ItrAfn4GMXWpoyJKZrY7hzv3MASomlIcwSD/RqWIBS1vAoo1UAxwjy29jai0OAPQ51LAnuFKeabgmllyP5Y2gu488P19D7ikfgQtmBtH5I/Q8+5IEn4qMwYo1bq/8wUyLe1b3+mQwhq+zEz4TSyHD8HBXd9W3KYcB53MIotwiJNS+m0P5ZlZnpcJm3JwtA==", "Expiration": "2020-03-16T21:11:01Z", "AccessKeyId": "ASIAZRG8BQ4K2EBXGR42” } }
3. Exportez AccessKeyId, SecretAccessKey et SessionToken dans les variables d'environnement :
export AWS_ACCESS_KEY_ID=ASIAZRG8BQ4K2EBXGR42 export AWS_SECRET_ACCESS_KEY=JCNFKY7XCUwHWTKcQhmmFokpjLetCmNLZ7pg9SJe export AWS_SESSION_TOKEN=FwoGZXIvYXdzEL7//////////wEaDNoBLBJUNYWKaHXZXCKvARBGJ4CqOs+p2JR2a7Euni0d0XuSs31ZA/1QqpX6Spfuz2WAvHCyqwbE3+oxyvyqYlO8dTJwp56YCFCJ6K4Prt9pMeZU9R5NGBJHvRbXXKfxp+jktLc/ItrAfn4GMXWpoyJKZrY7hzv3MASomlIcwSD/RqWIBS1vAoo1UAxwjy29jai0OAPQ51LAnuFKeabgmllyP5Y2gu488P19D7ikfgQtmBtH5I/Q8+5IEn4qMwYo1bq/8wUyLe1b3+mQwhq+zEz4TSyHD8HBXd9W3KYcB53MIotwiJNS+m0P5ZlZnpcJm3JwtA==
4. Vérifiez l'identité :
aws sts get-caller-identity
La sortie affiche les informations d'identification d'identité de l'appel assume-role.
AssumeRoleWithWebIdentity
Remarque : Vous devez disposer d'un jeton d'accès OAuth 2.0 valide, d'un jeton OpenID Connect et d'un rôle IAM faisant confiance à l'IdP.
1. Exécutez la commande assume-role comme dans l'exemple suivant :
aws sts assume-role-with-web-identity --role-arn arn:aws:iam::123456789012:role/FederatedWebIdentityRole --role-session-name ExampleSession --web-identity-token Atza%7CIQEBLjAsAhRFiXuWpUXuRvQ9PZL3GMFcYevydwIUFAHZwXZXXXXXXXXJnrulxKDHwy87oGKPznh0D6bEQZTSCzyoCtL_8S07pLpr0zMbn6w1lfVZKNTBdDansFBmtGnIsIapjI6xKR02Yc_2bQ8LZbUXSGm6Ry6_BG7PrtLZtj_dfCTj92xNGed-CrKqjG7nPBjNIL016GGvuS5gSvPRUxWES3VYfm1wl7WTI7jn-Pcb6M-buCgHhFOzTQxod27L9CqnOLio7N3gZAGpsp6n1-AJBOCJckcyXe2c6uD0srOJeZlKUm2eTDVMf8IehDVI0r1QOnTV6KzzAI3OY87Vd_cVMQ
Exemple de réponse :
{ "SubjectFromWebIdentityToken": "amzn1.account.AF6RHO7KZU5XRVQJGXK6HB56KR2A" "Audience": "client.5498841531868486423.1548@apps.example.com", "AssumedRoleUser": { "Arn": "arn:aws:sts::123456789012:assumed-role/FederatedWebIdentityRole/ExampleSession", "AssumedRoleId": "AROACLKWSDQRAOEXAMPLE:ExampleSession" } "Credentials": { "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY", "SessionToken": "AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtpZ3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE", "Expiration": "2020-05-19T18:06:10+00:00" }, "Provider": "www.amazon.com"
2. Enregistrez AccessKeyId, SecretAccessKey et SessionToken dans le fichier .aws/credentials :
[ExampleRoleProfile] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY aws_session_token=AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtpZ3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE
3. Exécutez la commande get-caller-identity :
aws sts get-caller-identity --profile ExampleRoleProfile
La sortie montre les informations d’identification issues de l'appel assume-role comme dans l'exemple suivant :
{ "UserId": "AROACLKWSDQRAOEXAMPLE:ExampleSession", "Account": "123456789012", "Arn": "arn:aws:sts::123456789012:assumed-role/FederatedWebIdentityRole/ExampleSession" }
Informations connexes
Configuration d'une identité fédérée avec AWS Tools for PowerShell
Vidéos associées


Contenus pertinents
- demandé il y a 5 moislg...
- demandé il y a 3 moislg...
- Réponse acceptéedemandé il y a 5 moislg...
- demandé il y a un anlg...
- demandé il y a un anlg...
- AWS OFFICIELA mis à jour il y a 5 mois
- AWS OFFICIELA mis à jour il y a 4 ans