AWS CLI Credential MFA 인증

AWS CLI를 이용해 다양한 AWS 서비스를 사용하려면 Credential이 요구된다.

기본 profile 생성

default profile 생성은 aws configure 명령으로 한다.

aws configure

위 명령을 사용하면 아래와 같은 정보를 입력한다.

AWS Access Key ID [****************SBVQ]:
AWS Secret Access Key [****************Xhhn]:
Default region name [None]:
Default output format [None]:

해당 정보들을 정상적으로 임력하면 HOME 디렉토리 아래 .aws 디렉토리가 생성되고 해당 디렉토리 안에 config, credentials 파일이 생성된다. 특정한 이름의 profile을 생성하려는 경우 –profile 옵션을 사용한다.

MFA가 적용된 profile 생성 방법

MFA가 적용된 profile을 생성하려는 경우 session token 값을 가져와서 앞서 언급했던 credentials 파일에 aws_session_token 값을 적용해주어야 한다. 이 작업을 수작업으로 할 수도 있지만 매번 MFA인증을 거쳐서 aws_session_token을 넣어주는 것이 번거로우므로 script를 만들어서 사용하면 사용하기가 용이하다.

https://github.com/warnus/aws_mfa_auth

#!/bin/bash

if [[ $# -ne 1 ]]; then
  echo "Usage: $0 <MFA_TOKEN_CODE>"
  echo "Where:"
  echo "   <MFA_TOKEN_CODE> = Code from virtual MFA device"
  exit 2
fi

# aws 설치 여부 확인
AWS_CLI=`which aws`

if [ $? -ne 0 ]; then
  echo "AWS CLI is not installed; exiting"
  exit 1
else
  echo "Using AWS CLI found at $AWS_CLI"
fi

# 설정 파일 로드
. auth.config

# .aws 디렉토리 확인
if [ ! -d $HOME/.aws ]; then
  echo "Configure AWS Credential"
  aws configure set aws_access_key_id "$AWS_ACCESS_KEY"
  aws configure set aws_secret_access_key "$AWS_SECRET_ACCESS_KEY"
fi

# token 가져오기
TOKEN=`aws sts get-session-token --serial-number ${MFA_SERIAL} --output text --token-code $1`
MFA_AWS_ACCESS_KEY=`echo $TOKEN | awk '{print $2}'`
MFA_AWS_SECRET_KEY=`echo $TOKEN | awk '{print $4}'`
MFA_AWS_SESSION_TOKEN=`echo $TOKEN | awk '{print $5}'`

aws configure set profile.mfa.aws_access_key_id "$MFA_AWS_ACCESS_KEY"
aws configure set profile.mfa.aws_secret_access_key "$MFA_AWS_SECRET_KEY"
aws configure set profile.mfa.aws_session_token "$MFA_AWS_SESSION_TOKEN"

위 스크립트는 MFA 코드값을 입력하면 session_token을 받아와서 profile을 생성해주는 스크립트다. 신규 profile은 mfa라는 이름으로 생성된다.

참고

  • https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-configure-files.html
  • https://docs.aws.amazon.com/cli/latest/reference/sts/get-session-token.html#
  • https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-configure-profiles.html
  • https://levelup.gitconnected.com/aws-cli-automation-for-temporary-mfa-credentials-31853b1a8692
  • https://github.com/asagage/aws-mfa-script/blob/master/README.md
  • https://docs.aws.amazon.com/cli/latest/reference/configure/set.html

Leave a Reply