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?
AWS CLI를 사용하여 AssumeRole 호출을 수행하고 임시 사용자 자격 증명을 저장하려면 어떻게 해야 합니까?
AWS Command Line Interface(AWS CLI)를 사용하여 AssumeRoleWithSAML, AssumeRole 및 AssumeRoleWithWebIdentity에서 자격 증명을 가져오고 싶습니다.
해결 방법
참고: AWS CLI 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
AssumeRoleWithSAML, AssumeRole 및 AssumeRoleWithWebIdentity에서 자격 증명을 가져오려면 API를 호출하고 출력을 텍스트 파일에 저장합니다. 그런 다음, 출력을 사용하여 AWS CLI에서 API 명령을 호출합니다.
참고: AssumeRoleWithSAML, AssumeRole 및 AssumeRoleWithWebIdentity 명령에는 role-arn 및 role-session-name 파라미터가 필요합니다.
SAML 인증을 통해 자격 증명 가져오기
요구 사항: ID 제공업체(IdP)에서 유효한 SAML 2.0 응답을 받고 IdP를 신뢰하는 AWS Identity and Access Management(IAM) 역할이 있어야 합니다.
다음 단계를 완료하십시오.
-
로그를 찾은 다음, SAML 로그 파일을 엽니다.
-
전체 SAML 응답을 복사합니다.
-
SAML 응답을 로컬 디렉터리에 있는 samlresponse.log라는 파일에 붙여넣습니다.
-
다음 assume-role-with-saml 명령을 실행하여 AWS Security Token Service(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/credentials참고: Principal ARN을 SAML 제공업체 Amazon 리소스 이름(ARN)으로 바꾸십시오. 이 예제에서는 Linux 기반 배포판과 호환되는 awk를 사용합니다. assume-role-with-saml 명령을 실행하면 ~/.aws/credentials 파일 내의 프로필에 자격 증명이 저장됩니다.
-
(선택 사항) 다음 명령을 실행하여 자격 증명을 백업합니다.
cp -a ~/.aws/credentials ~/.aws/credentials.bak. -
다음 describe-instances 명령을 실행하여 사용자 자격 증명을 호출합니다.
aws ec2 describe-instances --profile PROFILENAME참고: PROFILENAME을 프로필 이름으로 바꾸십시오.
파일에 저장되지 않은 출력 예시:{ "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" }자격 증명 파일에 저장된 출력 예시:
aws_access_key_id = ACCESS_KEY_ID aws_session_token = SESSION_TOKEN aws_secret_access_key = SECRET_ACCESS_KEY [PROFILENAME]
AssumeRole을 통해 자격 증명 가져오기
중요: IAM 자격 증명은 수임한 IAM 역할을 신뢰해야 합니다.
다음 단계를 완료하십시오.
-
다음 get-caller-identity 명령을 실행하여 응답을 확인합니다.
aws sts get-caller-identity참고: 응답을 받지 못하면 .aws/credentials 파일에 유효한 IAM 액세스 키 또는 보안 암호 키가 저장되어 있는지 확인하십시오.
-
다음 assume-role 명령을 실행합니다.
aws sts assume-role --role-arn arn:aws:iam::123456789012:role/ExampleRole --role-session-name ExampleSession응답 예시:
{ "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" } } -
응답에서 AccessKeyId, SecretAccessKey 및 SessionToken을 내보내 환경 변수를 만듭니다.
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== -
다음 get-caller-identity를 실행하여 ID를 확인합니다.
aws sts get-caller-identity출력에는 assume-role 호출의 ID 자격 증명이 표시됩니다.
AssumeRoleWithWebIdentity를 통해 자격 증명 가져오기
요구 사항: 유효한 OAuth 2.0 액세스 토큰, OpenID Connect 토큰, IdP를 신뢰하는 IAM 역할이 있어야 합니다.
-
다음 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_cVMQ응답 예시:
{ "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" -
.aws/credentials 파일에 AccessKeyId, SecretAccessKey 및 SessionToken을 저장합니다.
[ExampleRoleProfile] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY aws_session_token=AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtpZ3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE -
get-caller-identity 명령을 실행합니다.
aws sts get-caller-identity --profile ExampleRoleProfileassume-role 호출의 ID 자격 증명 출력 예시:
{ "UserId": "AROACLKWSDQRAOEXAMPLE:ExampleSession", "Account": "123456789012", "Arn": "arn:aws:sts::123456789012:assumed-role/FederatedWebIdentityRole/ExampleSession" }
관련 정보
AD FS를 사용하여 Active Directory 사용자에게 API 또는 AWS CLI에 대한 액세스 권한을 부여하려면 어떻게 해야 합니까?
- 언어
- 한국어

관련 콘텐츠
- 질문됨 일 년 전
- 질문됨 2년 전
