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

3분 분량
0

MFA 토큰을 사용하여 AWS Command Line Interface(AWS CLI)를 통해 내 AWS 리소스에 대한 액세스를 인증하고 싶습니다.

해결 방법

모범 사례는 Multi-Factor Authentication(MFA) 디바이스를 사용하여 계정과 해당 리소스를 보호하는 것입니다. MFA 디바이스를 사용할 때 AWS CLI로 리소스와 상호 작용하려는 경우, 임시 세션을 생성해야 합니다. MFA 하드웨어 디바이스를 사용하는 경우 값은 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분)부터 3600초(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을 다시 호출하기 전에 설정을 해제해야 합니다.

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 폴더에서credentials 파일을 편집하여 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 호출 시 올바른 자격 증명이 사용되는지 확인할 수 있도록 자격 증명 우선 순위를 이해해야 합니다. 이 작업은 GetCallerIdentity 명령을 사용하여 수행할 수 있습니다. 

$ aws s3 ls --profile mfa

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


관련 정보

AWS에서 사용자를 위한 MFA 디바이스 활성화

분실했거나 사용할 수 없는 멀티 팩터 인증(MFA) 디바이스