Ashwin 씨가
AWS CLI를 이용하여
액세스를 인증하는 방법을 알려드립니다.

authenticate-mfa-cli-ashwin

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

모범 사례는 MFA(멀티 팩터 인증) 디바이스를 사용하여 계정과 계정 리소스를 보호하는 것입니다. MFA 디바이스를 사용하는 동안 AWS CLI를 사용하여 리소스와 상호 작용하려면 임시 세션 토큰을 대신 생성해야 합니다. MFA 하드웨어 디바이스를 사용하는 경우 ARN 값은 GAHT12345678과 유사합니다. 가상 MFA를 사용하는 경우 이 값은 arn:aws:iam::123456789012:mfa/user와 유사합니다. 자세한 내용은 MFA 상태 확인을 참조하십시오.

AWS CLI의 최신 버전을 설치하고 구성한 후 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"
    ;}
}

참고: 동일한 명령에서 --duration-seconds 옵션을 사용하여 만료 기간(초)을 지정할 수 있습니다. 값은 900초(15분)에서 129600초(36시간) 사이입니다. 루트 사용자 자격 증명을 사용하는 경우 이 범위는 900초(15분)부터 3600초(1시간)까지입니다.

환경 변수를 통한 임시 자격 증명 사용

다음 명령을 사용하여 값을 환경 변수로 내보내는 방법으로 임시 자격 증명을 사용할 수 있습니다.

Linux:

$ export AWS_ACCESS_KEY_ID=<Access-Key-as-in-Previous-Output>
$ export AWS_SECRET_ACCESS_KEY=<Secret-Access-Key-as-in-Previous-Output>
$ export AWS_SESSION_TOKEN=<Session-Token-as-in-Previous-Output>

Windows:

> set AWS_ACCESS_KEY_ID=<Access-Key-as-in-Previous-Output>
> set AWS_SECRET_ACCESS_KEY=<Secret-Access-Key-as-in-Previous-Output>
> set AWS_SESSION_TOKEN=<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 폴더에서 credentials 파일을 편집하여 MFA 인증이 지정된 명령의 실행에 사용할 새 프로필 구성을 추가합니다. 다음은 프로필 구성의 예입니다.

[mfa]
output = json
region = us-east-1
aws_access_key_id = <Access-key-as-in-returned-output>
aws_secret_access_key = <Secret-access-key-as-in-returned-output>
aws_session_token = <Session-Token-as-in-returned-output>

자격 증명이 만료되면 get-session-token 명령을 다시 실행한 다음 반환된 값을 환경 변수 또는 프로필 구성으로 내보냅니다. 만료 여부를 확인한 다음 재인증을 요구하는 스크립트 또는 cron 작업을 백그라운드에서 실행할 수 있습니다.

aws configure 명령을 사용하여 AWS CLI를 구성한 경우 MFA 인증을 요구하지 않는 명령에는 IAM 사용자의 영구 자격 증명이 포함된 기본 구성이 사용됩니다.

샘플 구성:

.aws/credentials

[default]
aws_access_key_id = <Access-Key-for-an-IAM-User>
aws_secret_access_key = <Secret-Access-Key-for-IAM-User>

참고: AWS CLI에서 프로필을 사용하여 명령을 인증하는 경우, 호출이 MFA로 인증되게 하려면 --profile 옵션 다음에 프로필 이름을 지정하십시오.

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

$ aws s3 ls

API 호출 시 올바른 자격 증명이 사용되도록 하려면 자격 증명 우선 순위를 이해하는 것 역시 중요합니다.

$ aws s3 ls --profile mfa

또한 IAM 정책에서 aws:MultiFactorAuthPresent 또는 aws:MultiFactorAuthAge 조건을 사용하면 특정 API 작업을 수행하려는 사용자에게 MFA를 사용한 인증을 요구할 수 있습니다.


페이지 내용이 도움이 되었습니까? | 아니요

AWS 지원 지식 센터로 돌아가기

도움이 필요하십니까? AWS 지원 센터를 방문하십시오.

게시된 날짜: 2017년 1월 10일

업데이트됨: 2018-08-17