MFA 토큰을 사용하여 AWS CLI를 통해 내 AWS 리소스에 대한 액세스를 인증하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 8월 21일

MFA 토큰을 사용하여 AWS CLI(AWS 명령줄 인터페이스)로 AWS 리소스에 대한 액세스를 인증하려면 어떻게 해야 합니까?

해결 방법

모범 사례는 Multi-Factor Authentication(MFA) 디바이스를 사용하여 계정과 해당 리소스를 보호하는 것입니다. MFA 디바이스를 사용할 때 AWS CLI로 리소스와 상호 작용하려는 경우, 임시 세션을 생성해야 합니다. MFA 하드웨어 디바이스를 사용하는 경우 ARN 값은 GAHT12345678과 비슷합니다. 가상 MFA를 사용하는 경우 이 값은 arn:aws:iam::123456789012:mfa/user와 비슷합니다. 자세한 내용은 MFA 상태 확인을 참조하십시오.

중요:

sts get-session-token AWS CLI 명령을 실행하여 변수를 계정, 리소스 및 MFA 디바이스의 정보로 바꿉니다.

$ aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token

다음과 유사한 임시 자격 증명과 만료 시간(기본적으로 12시간)이 포함된 출력이 표시됩니다.

{
    "Credentials": {
        "SecretAccessKey": "secret-access-key",
        "SessionToken": "temporary-session-token",
        "Expiration": "expiration-date-time",
        "AccessKeyId": "access-key-id"
    }
}

참고: sts get-session-token 명령에서 -duration-seconds 옵션을 사용하여 만료 기간(초)을 지정할 수 있습니다. 이 값의 범위는 900초(15분)~129,600초(36시간)입니다. 루트 사용자 자격 증명을 사용하는 경우 범위는 900초(15분)~3,600초(1시간)입니다.

환경 변수와 함께 임시 자격 증명 사용

이러한 명령을 사용하여 값을 환경 변수로 내보내 임시 자격 증명을 사용할 수 있습니다.

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을 다시 호출하기 전에 설정을 해제해야 합니다.

unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset 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 명령의 출력에서 "expiration"을 확인한 다음 다시 인증하라는 메시지를 표시하는 스크립트 또는 cron 작업을 백그라운드에서 실행하는 것이 좋습니다.

configure(구성) 명령을 사용하여 AWS CLI를 구성한 경우, 영구 AWS Identity and Access Management(IAM) 사용자 자격 증명을 사용하는 기본 구성이 있습니다. 이 IAM 사용자는 MFA 인증이 필요하지 않은 명령을 사용할 수 있습니다.

구성 예:

.aws/credentials

[default]
aws_access_key_id = example-access-Key-for-an-IAM-user
aws_secret_access_key = example-secret-access-key-for-IAM-user

참고: 영구 IAM 자격 증명에는 mfa_serial 파라미터를 사용할 수 없습니다.

AWS CLI를 통해 명령을 인증하는 프로파일을 사용하는 경우 [--profile] 옵션 뒤에 프로파일 이름을 지정하여 호출이 MFA를 사용하여 인증되었는지 확인합니다.

예를 들어 이 명령은 기본 프로파일 자격 증명을 사용하며 MFA로 인증되지 않습니다.

$ aws s3 ls

중요: API 호출 시 올바른 자격 증명이 사용되는지 확인할 수 있도록 자격 증명 우선 순위를 이해해야 합니다.

$ aws s3 ls --profile mfa

IAM 정책에서 aws:MultiFactorAuthPresent 또는 aws:MultiFactorAuthAge 조건을 사용하여 특정 API 작업을 수행하기 위해 MFA로 사용자를 인증하도록 요구할 수도 있습니다.


이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?