Ongoing service disruptions
For the most recent update on ongoing service disruptions affecting the AWS Middle East (UAE) Region (ME-CENTRAL-1), refer to the AWS Health Dashboard. For information on AWS Service migration, see How do I migrate my services to another region?
Come posso utilizzare AWS CLI per effettuare chiamate AssumeRole e archiviare credenziali utente temporanee?
Desidero utilizzare l'Interfaccia della linea di comando AWS (AWS CLI) per ottenere credenziali da AssumeRoleWithSAML, AssumeRole e AssumeRoleWithWebIdentity.
Risoluzione
Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Per ottenere credenziali da AssumeRoleWithSAML, AssumeRole e AssumeRoleWithWebIdentity, chiama l'API e salva l'output in un file di testo. Quindi utilizza l'output per chiamare un comando API con AWS CLI.
Nota: i comandi AssumeRoleWithSAML, AssumeRole e AssumeRoleWithWebIdentity richiedono i parametri role-arn e role-session-name.
Ottieni credenziali con l'autenticazione SAML
Requisito: devi avere una risposta SAML 2.0 valida dal gestore dell'identità digitale e un ruolo AWS Identity and Access Management (AWS IAM) che ritenga attendibile il gestore.
Completa i seguenti passaggi:
-
Individua i log, quindi apri il file di log SAML.
-
Copia l'intera risposta SAML.
-
Incolla la risposta SAML nel file denominato samlresponse.log che si trova nella directory locale.
-
Esegui questo comando assume-role-with-saml per chiamare il token del Servizio di token di sicurezza AWS (AWS STS):
aws sts assume-role-with-saml --role-arn arn:aws:iam::444455556666:role/IAM_ROLE --principal-arn arn:aws:iam::444455556666: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/credentialsNota: sostituisci principal-arn con il nome della risorsa Amazon (ARN) del tuo gestore SAML. Questo esempio utilizza awk, che è compatibile con le distribuzioni basate su Linux. Quando esegui il comando assume-role-with-saml, le credenziali vengono salvate in un profilo all'interno del file ~/.aws/credentials.
-
(Facoltativo) Esegui questo comando per effettuare il backup delle credenziali:
cp -a ~/.aws/credentials ~/.aws/credentials.bak. -
Esegui questo comando describe-instances per chiamare le credenziali dell'utente:
aws ec2 describe-instances --profile PROFILENAMENota: sostituisci PROFILENAME con il nome del tuo profilo.
Esempio di output non salvato in un file:{ "SubjectType": "persistent", "AssumedRoleUser": { "AssumedRoleId": "111122223333:example@corp.example.com", "Arn": "arn:aws:sts::44445555666: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" }Esempio di output salvato nel file delle credenziali:
aws_access_key_id = ACCESS_KEY_ID aws_session_token = SESSION_TOKEN aws_secret_access_key = SECRET_ACCESS_KEY [PROFILENAME]
Ottieni credenziali con AssumeRole
Importante: le credenziali IAM devono ritenere attendibile il ruolo IAM che assumi.
Completa i seguenti passaggi:
-
Esegui questo comando get-caller-identity per verificare una risposta:
aws sts get-caller-identityNota: se non ricevi risposta, controlla se nel file .aws/credentials è archiviata una chiave segreta o di accesso IAM valida.
-
Esegui questo comando assume-role:
aws sts assume-role --role-arn arn:aws:iam::123456789012:role/ExampleRole --role-session-name ExampleSessionEsempio di risposta:
{ "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" } } -
Dalla risposta, esporta AccessKeyId, SecretAccessKey e SessionToken per creare variabili di ambiente:
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== -
Esegui il comando get-caller-identity per verificare l'identità:
aws sts get-caller-identityL'output mostra le credenziali dell'identità della chiamata assume-role.
Ottieni credenziali con AssumeRoleWithWebIdentity
Requisito: devi disporre di un token di accesso OAuth 2.0 valido, un token OpenID Connect e un ruolo IAM che ritenga attendibile il gestore dell'identità digitale.
-
Esegui questo comando assume-role:
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_cVMQEsempio di risposta:
{ "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" -
Salva AccessKeyId, SecretAccessKey e SessionToken nel file .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 -
Esegui il comando get-caller-identity:
aws sts get-caller-identity --profile ExampleRoleProfileEsempio di output delle credenziali dell'identità della chiamata assume-role:
{ "UserId": "AROACLKWSDQRAOEXAMPLE:ExampleSession", "Account": "123456789012", "Arn": "arn:aws:sts::123456789012:assumed-role/FederatedWebIdentityRole/ExampleSession" }
Informazioni correlate
Configurare l'identità federata con AWS Strumenti per PowerShell
Impostazioni dei file di configurazione e delle credenziali in AWS CLI
- Argomenti
- Security, Identity, & Compliance
- Lingua
- Italiano
Video correlati

