[AWS STS] error: You must be logged in to the server (Unauthorized) 삽질일기
Devops

[AWS STS] error: You must be logged in to the server (Unauthorized) 삽질일기

뉴비뉴 2020. 10. 21.

들어가기 전

사실 이 일은 처음 겪었던 것이 아니다. 전에도 겪었지만 어찌어찌(어떻게 해결된지모르게) 넘어간 케이스였다..

그 때의 상황은 회사 프로젝트 EKS 만 사용하다가 외주 프로젝트 EKS 를 연결하여 사용해야되는 상황이였다.

AWS profile 에 외주 프로젝트에 접근할 수 있는 키들을 입력해두었고, 외주 프로젝트 EKS 에 붙으려고하니 arn 관련 오류가 발생했었다.

그 때 확실하게 알고 넘어갔다면 오늘 이러한 실수를 반복하지 않았겠지..

오늘 겪은 상황도 위와 케이스가 비슷하다 외주프로젝트를 연결하여 사용하다가 개인프로젝트를 AWS 에 등록하고나서 발생한 문제다.

에러가 뭔데?

1) An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::480xxxxxxxx:user/xxxxx is not authorized to perform: sts:AssumeRole on resource: arn:aws:eks:ap-northeast-2:217xxxxxxxxx:cluster/xxxxxxxx

2) error: You must be logged in to the server (Unauthorized)

 

1번 에러를 보면 아주 강력한 힌트를 얻을 수 있다.

내가 접속하려는 외주 프로젝트의 리소스 주소는 217...로 시작하는데 내가 설정되어있는 주소는 480..(개인프로젝트) 로 설정되어있으니 될리가 없다.

해결하는 과정

구글링을해서 aws sts get-caller-identity 라는 명령어를 알아냈고,

출력결과 arn:aws:iam::480xxxxxxxxx:user/xxxxx 를 확인할 수 있었다. 그래도 난 감을 잡지 못했다 aws sts 가 뭔데?

AWS sts 란

정말 간단하게 말하면 인증 정보를 본인이 설정한 리전에 있는 서버(?) 에 세션을 캐쉬(?) 처럼 등록해 두는 것이다.

sts 를 사용하는 이유는 인증하는데 있어 지연을 최소화 할 수 있기 때문이라고 한다.

sts 를 생성할 때 세션을 얼마나 유지할 수 있는지 설정할 수 있는 것을 보면

S3 를 cdn 서버와 연결하는 것과 비슷한 개념이지 않을까 라는 생각이 들었다.

 

좋아! 그럼 sts 에 user/xxxxx 를 내가 접속하려는 외주 arn 주소로 변경하면 되겠다!

라고 생각했지만 변경할 수 있는 방법은 찾을 수가 없었다.

그래서 aws profile 을 현재 무엇을 사용하고 있는지를 확인해보기로 했다.

나는 항상 명령어를 사용할 때 —profile <profile_name> 으로 사용했는데

AWS CLI 에서 기본적으로 사용하는 프로필은 뭘까? 라는 생각이 들었다.

환경변수...너였니?

aws configure list 라는 명령어로 현재 사용하고 있는 프로필을 확인할 수 있었다.

유레카 여기에 내 개인프로젝트가 설정되어있던 것이다.

나는 환경변수를 사용하여 AWS_PROFILE 을 지정하였는데 access_key 와 secret_key 가 프로필에 맞는 키로 변경되지 않았다.

아차차...내가 개인프로젝트를 하면서 환경변수를 설정해두었구나..

[!] AWS 에서 Default 로 설정되어있으면 알아서 사용하는 환경변수들이 있다.

설정되어 있으면 편리한 면이 더욱 더 많지만 나 같은 초보들은 왜 설정 해두고 까먹은 것 일까.. 익숙치 않아서 그렇다고 위안을 삼고 환경변수를 없애주고 사용하니 잘 작동한다.. jenkins X 를 통해 context 를 변경하는데 잘 되는 것을 보니 잘 해결된 것 같다.

정리

여러개의 AWS 를 동시에 관리할 때는 AWS CLI 를 사용할 때 항상 어떠한 프로필이 Default 로 잡혀 사용하고 있는지 확인해야 한다.

이번에 겪은 케이스를 봤을 때 가장 마지막에 등록한 정보(AWS)가 Default 로 잡히는 것 같고,

sts 도 현재 설정 된 Profile 로 생성되는 것 같다. AWS 에서 자동으로 인식하는 환경변수에 대한 이해도가 떨어져서 default profile 을 설정해도 키 값들이 환경변수에 설정한 값들이 들이가는 기이한 현상도 경험했다.

댓글

💲 추천 글