AWS Command Line Interface(AWS CLI)와 함께 다중 인증(MFA) 토큰을 사용하여 AWS 리소스에 대한 액세스를 인증하려고 합니다.
간략한 설명
각 AWS Identity and Access Management(IAM) 사용자에 대해 최대 8개의 MFA 디바이스를 활성화할 수 있습니다.
참고: 루트 사용자에 대한 MFA 활성화는 루트 사용자 자격 증명에만 영향을 줍니다. AWS 계정의 각 IAM ID에는 고유한 MFA 구성이 있습니다.
MFA를 활성화하려면 MFA로 루트 사용자 로그인 보안 및 IAM의 MFA를 참조하십시오.
해결 방법
AWS CLI를 사용하여 AWS 리소스를 인증하려면 GetSessionToken API 작업을 사용하여 임시 자격 증명을 가져오십시오.
참고: AWS CLI 명령을 실행할 때 오류가 발생하면 AWS CLI 오류 문제 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
MFA 디바이스 ARN
MFA 디바이스의 ARN을 가져오려면 다음 단계를 완료하십시오.
- IAM 콘솔을 엽니다.
- 탐색 창에서 사용자를 선택한 다음 IAM 사용자를 선택합니다.
- 요약 페이지에서 보안 자격 증명 탭을 선택합니다.
- 할당된 MFA 디바이스에서 MFA 디바이스의 ARN을 복사합니다.
AWS CLI를 사용하여 임시 자격 증명 가져오기
get-session-token 명령을 실행합니다.
aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token
출력 예시:
{
"Credentials": {
"SecretAccessKey": "secret-access-key",
"SessionToken": "temporary-session-token",
"Expiration": "expiration-date-time",
"AccessKeyId": "access-key-id"
}
}
중요: MFA 디바이스의 일련 번호, 토큰 및 ARN이 올바른지 확인하십시오. 그렇지 않으면 다음과 비슷한 오류 메시지가 나타날 수 있습니다.
"An error occurred (AccessDenied) when calling the GetSessionToken operation: MultiFactorAuthentication failed, unable to validate MFA code. Please verify your MFA serial number is valid and associated with this user."
MFA 하드웨어 디바이스를 인증하기 위한 일련 번호는 일반적으로 디바이스 뒷면에 있으며 값은 GAHT12345678과 비슷합니다. MFA 가상 디바이스를 인증하기 위한 값은 arn:aws:iam::123456789012:mfa/user와 비슷합니다.
참고: AWS CLI는 가상 또는 하드웨어 MFA 디바이스에서만 MFA 인증을 지원합니다. AWS CLI는 FIDO 보안 키를 사용한 MFA 인증을 지원하지 않습니다.
자세한 내용은 AWS CLI 또는 AWS API에서 MFA 디바이스 할당을 참조하십시오.
임시 자격 증명을 사용하여 값을 환경 변수로 내보내기
운영 체제(OS)에 대한 다음 명령을 실행합니다.
Linux
export AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output
export AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output
export AWS_SESSION_TOKEN=example-session-token-as-in-previous-output
Windows
set AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output
set AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output
set AWS_SESSION_TOKEN=example-session-Token-as-in-previous-output
get-session-token 명령을 다시 실행하기 전에 다음 명령을 실행하여 환경 변수를 설정 해제하십시오.
Linux
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN
Windows
set AWS_ACCESS_KEY_ID=
set AWS_SECRET_ACCESS_KEY=
set AWS_SESSION_TOKEN=
이름이 지정된 프로필로 임시 자격 증명 사용
이름이 지정된 프로필을 사용하여 MFA 인증이 필요한 명령을 지정할 수도 있습니다. 사용자 홈 디렉터리의 .aws 폴더에 있는 자격 증명 파일에 MFA 인증 명령을 실행하기 위한 새 프로필 구성을 추가합니다.
프로필 구성 예시:
[mfa]aws_access_key_id = example-access-key-as-in-returned-output
aws_secret_access_key = example-secret-access-key-as-in-returned-output
aws_session_token = example-session-token-as-in-returned-output
자격 증명이 만료되면 get-session-token 명령을 다시 실행한 다음 반환된 값을 환경 변수 또는 프로필 구성으로 내보냅니다.
get-session-token 명령의 출력에서 만료 여부를 확인하는 스크립트나 cron 작업을 백그라운드에서 실행하는 것이 가장 좋습니다. MFA 토큰이 만료된 경우 스크립트 또는 cron 작업에서 재인증을 요청하는지 확인하십시오.
이름이 지정된 프로필을 사용하여 인증하는 경우 —profile 옵션 다음에 프로필 이름을 지정하여 API 호출이 MFA를 사용하여 인증하는지 확인하십시오.
관련 정보
IAM 사용자 또는 AWS 계정 루트 사용자를 위해 분실되거나 고장난 MFA 디바이스를 재설정하려면 어떻게 해야 합니까?
AWS Management Console과 AWS CLI를 사용하는 IAM 사용자에게 MFA 인증을 적용하려면 어떻게 해야 합니까?