Infra/AWS

AWS STS 인증 과정 자동화 방법(리눅스 기준)

jimmy_AI 2023. 11. 20. 21:18
반응형

AWS에서 보안 강화를 위하여 MFA를 적용한 STS 인증을 다음과 같이 사용하는 경우가 있습니다.

aws sts get-session-token --serial-number <arn number> --token-code <token number>

 

위와 같이 입력하면 Credentials 정보가 아래와 같은 json 양식으로 출력되고,

이를 일일이 복사 후 환경 변수로 export해야 AWS 인증이 완료됩니다.

{
"Credentials" : {
	"AccessKeyId" : <새로 생성된 access key 1번>,
	"SecretAccessKey": <새로 생성된 access key 2번>,
	"SessionToken": <새로 생성된 access key 3번>
}
export AWS_ACCESS_KEY_ID=<새로 생성된 access key 1번>
export AWS_SECRET_ACCESS_KEY=<새로 생성된 access key 2번>
export AWS_SESSION_TOKEN=<새로 생성된 access key 3번>

 

12시간 후 만료되는 AWS STS 토큰의 특징 때문에, 위 과정이 번거로울 수 있습니다.

여기서는 AWS 인증부터 환경 변수 등록까지 단 한줄의 명령어로 자동화하는 방법을

Linux 환경을 기준으로 다루어보도록 하겠습니다.

 

 

1. jq 모듈 설치

json 양식의 데이터를 시스템에서 바로 파싱하기 위해서는 jq 모듈이 필요합니다.

우분투나 CentOS의 경우 아래 명령어를 통하여 간단하게 설치가 가능합니다.

# Ubuntu의 경우
sudo apt-get update
sudo apt-get install jq

# CentOS의 경우
sudo yum install jq

 

반응형

 

2. 자동화 sh 파일 생성

위 과정을 자동화하기 위한 sh 파일을 다음과 같이 작성해보도록 하겠습니다.

(파일 이름은 set_aws_credentials.sh로 가정합니다.)

# ARN과 토큰 번호를 인자로 받기
ARN_NUMBER=$1
TOKEN_NUMBER=$2

# AWS STS로부터 credentials 받기
CREDENTIALS=$(aws sts get-session-token --serial-number $ARN_NUMBER --token-code $TOKEN_NUMBER)

# JSON에서 각 키 추출
AWS_ACCESS_KEY_ID=$(echo $CREDENTIALS | jq -r '.Credentials.AccessKeyId')
AWS_SECRET_ACCESS_KEY=$(echo $CREDENTIALS | jq -r '.Credentials.SecretAccessKey')
AWS_SESSION_TOKEN=$(echo $CREDENTIALS | jq -r '.Credentials.SessionToken')

# 환경 변수로 설정
export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
export AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN

# 설정된 환경 변수 출력 (선택 사항)
echo "AWS_ACCESS_KEY_ID set to $AWS_ACCESS_KEY_ID"
echo "AWS_SECRET_ACCESS_KEY set to $AWS_SECRET_ACCESS_KEY"
echo "AWS_SESSION_TOKEN set to $AWS_SESSION_TOKEN"

 

이후, sh 파일에 실행 권한을 아래와 같은 명령어로 부여해줍니다.

chmod +x set_aws_credentials.sh

 

 

3. sh 파일 실행 -> 자동화 완료

이제 위에서 작성한 sh 파일을 source 명령어를 통하여 실행시켜주시면

AWS 인증 과정 자동화가 모두 완료됩니다.

(source 대신 sh 명령어 등을 사용할 경우 쉘 세션이 달라져서 인증이 불가할 수 있습니다.)

source set_aws_credentials.sh <arn number> <token number>

'Infra > AWS' 카테고리의 다른 글

Redis Cluster 데이터 백업 과정 파이썬으로 실행하기  (0) 2023.11.03