최신글

Access Key 없이 IAM user가 AWS CLI 쓰는 방법(aws login)

반응형
반응형

해결하려는 문제

AWS는 임시 자격증명(temporary credentials)을 사용하라고 권장합니다. 하지만 로컬에서 개발할 때는 assume 등을 위해 Access Key가 필요했습니다. 그래서 울며 겨자 먹기로 Access Key를 생성하고 주기적으로 철회하는 로직을 관리자는 구현해야 합니다. 

이제 이 관리로직을 설정안해도 됩니다! 2025년 11월 AWS에서 IAM user도 임시 자격증명을 발급받는 aws login 기능을 출시했습니다. OAuth 기능을 사용하여 임시 자격증명을 받습니다.

 

준비

AWS IAM user는 SignInLocalDevelopmentAccess IAM policy를 사용할 수 있어야 합니다.

 

사용 방법

AWS CLI v2.32.0 이상이 필요합니다.

 

로그인

aws login 명령어를 사용하면 자동으로 웹 브라우저가 열리고, 임시 자격증명을 받기 위한 OAuth flow가 진행됩니다.

aws login

 

AWS Console에 이미 로그인되었다면 로그인된 세션 목록이 보이고, 로그인이 안 되어 있다면 AWS 로그인 과정이 뜹니다.

 

세션을 선택하면 액세스 토큰 발급이 끝납니다.

 

액세스 토큰은 ~/.aws/login/cache에 저장됩니다.

ls ~/.aws/login/cache

 

멀티 계정 프로필

aws login --profile prod-admin
aws login --profile staging-dev
aws s3 ls --profile staging-dev

 

로그아웃

aws logout은 발급받은 액세스 토큰을 15분 안에 만료시킵니다.

aws logout           # default 프로필
aws logout --all     # 전체 프로필

 

웹브라우저를 못쓰는 곳이라면?

웹브라우저를 못쓰는 곳이어도 aws login을 쓸 수 있습니다. remote파라미터를 사용하면 웹브라우저를 쓸 수 있는곳에서 접속할 수 있는 URL이 나옵니다. 

aws login --remote

 

기대효과

aws login을 사용하면 관리자는 Access Key 로테이션 등 관리를 안 해도 됩니다. 사용자는 $HOME/.aws/credentials 파일을 더 이상 사용하지 않고 $HOME/.aws/config 파일만 사용하면 됩니다.

[default]
region = ap-northeast-2
output = json

[profile prod-admin]
region = ap-northeast-2
output = json

 

aws login 원리

내부적으로 OAuth 2.0 + PKCE(Proof Key for Code Exchange) 흐름을 사용합니다. OAuth의 동작은 제가 이전에 작성한 블로그를 참고하시면 됩니다.

참고자료

반응형