베하 ~!
문땅훈과 루피입니다.
기온이 하루 아침에 뚝 떨어졌네요.
다들 감기 조심하세요 !
오늘은 AWS IAM user에 MFA 기능이 활성화 되어 있을 때,
CLI를 사용하는 인증 방법에 대해 알아보겠습니다.
먼저, 필요한 것은 MFA 인증이 되어 있을 계정의 키 입니다.
키가 없을 경우 생성해줍니다.
1. Key 생성
IAM -> 사용자 콘솔에서 키를 생성할 사용자를 선택해줍니다.
액세스 키가 없는 경우, 키를 생성하고 Access Key와 Secret access key를 메모장에 기록해둡니다.
또는, 키 파일을 다운로드 합니다.
위 과정을 거치지 않고 창을 넘기는 경우, 추후 생성된 키를 다시 확인할 수 없으니 꼭! 메모를 해두세요.
2. AWS CLI 설치
- 아래 명령어는 리눅스 환경의 설치 방법입니다.
- 설치 파일을 다운로드 합니다.
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
- 압축을 풉니다.
unzip awscliv2.zip
- 설치 프로그램을 실행합니다.
sudo ./aws/install
3. AWS config, configure 설정
config 명령어를 입력한 후, 위에서 생성한 Access key와 Secret Access key 를 입력해줍니다.
[root@localhost ~]# aws config
아래와 값을 넣어줍니다.
[root@localhost ~]# aws configure
[default]
aws_arn_mfa = arn:aws:iam::xxxxxxxxx:mfa/aws 계정
region = ap-northeast-2
output = json
4. AWS Credentials 설정
credentials 파일을 열어 저장된 값을 확인합니다.
[root@localhost ~]# vi ~/.aws/credentials
[default]
aws_access_key_id = aws_access_key_id 값
aws_secret_access_key = aws_secret_access_key 값
5. 스크립트 파일 저장
파일명을 aws_auth_mfa.sh로 저장하고 아래 값을 입력 후 저장합니다.
chomd 명령어를 사용해 700권한으로 변경합니다.
#!/bin/bash
# Author: Patryk Grabarczyk <grabarczyk.patryk@gmail.com>
# 04.10.2019
##### Parameters #####
aws_original_profile=$1
aws_mfa_token=$2
aws_mfa_profile_name="mfa"
session_duration=43200 #You can choose from 900 seconds (15 minutes) to 129,600 seconds (36 hours). I set it to 43200 (12 hours).
######################
create_new_credentials() {
local aws_original_profile=$1
local aws_mfa_token=$2
local aws_mfa_profile_name=$3
local session_duration=$4
local mfa_serial_number=$(aws configure --profile "${aws_original_profile}" get aws_arn_mfa)
if [ -z "${mfa_serial_number}" ] ; then
echo "ERROR mfa_serial_number is empty for profile ${mfa_serial_number}. Set it in default credential file with key aws_arn_mfa"
exit 1
fi
local tmp_credentials=$(aws sts get-session-token \
--profile "${aws_original_profile}" \
--serial-number "${mfa_serial_number}" \
--token-code "${aws_mfa_token}" \
--duration-second "${session_duration}" )
if [ $? -ne 0 ]; then
echo "ERROR. Check your profile or MFA"
exit 2
fi
local aws_access_key_id=$(echo "${tmp_credentials}" | jq .Credentials.AccessKeyId | sed "s/\"//g")
local aws_secret_access_key=$(echo "${tmp_credentials}" | jq .Credentials.SecretAccessKey | sed "s/\"//g")
local aws_session_token=$(echo "${tmp_credentials}" | jq .Credentials.SessionToken | sed "s/\"//g")
aws configure --profile "${aws_mfa_profile_name}" set aws_access_key_id ${aws_access_key_id}
aws configure --profile "${aws_mfa_profile_name}" set aws_secret_access_key ${aws_secret_access_key}
aws configure --profile "${aws_mfa_profile_name}" set aws_session_token ${aws_session_token}
echo "Done, now you can use your mfa profile ${aws_mfa_profile_name}"
}
create_new_credentials "${aws_original_profile}" "${aws_mfa_token}" "${aws_mfa_profile_name}" "${session_duration}"
6. MFA 인증
MFA 코드를 넣고 인증합니다.
./aws_auth_mfa.sh default MFA6자리 숫자
Done 메세지가 뜨면 CLI를 사용할 수 있습니다.
이상 MFA가 활성화 되어 있는 사용자의 CLI 인증 방법을 알아보았습니다.
다음에도 유익한 정보를 가져오겠습니다.
베빠!!!
'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글
AWS Step Functions (0) | 2023.11.24 |
---|---|
[AWS] Glue (0) | 2023.11.24 |
[AWS] EC2 중단 없이 AMI 생성 (1) | 2023.11.24 |
[AWS] EC2 인스턴스에서 공용 IP 제거 (1) | 2023.11.24 |
AWS 디스크 증설 (1) | 2023.11.24 |
댓글