AWS 계정을 처음 생성하는 경우에는 전체 AWS 서비스 및 계정 리소스에 대해 완전히 접근할 수 있는 권한을 지니게 됩니다.

이 계정을 root계정이라고 하는데, 이 계정이 탈취되면 굉장히 복잡해지고 어려워지는 사태가 발생할 수 있습니다.

그래서 AWS에선 IAM이라는 서비스를 제공합니다.

 

IAM(Identity and Access Management)은 AWS 리소스에 대한 접근을 안전하게 제어할 수 있는 서비스입니다.

 

예들 들면 대기업의 ID카드라고 보시면 됩니다.

만약 사원이 우연히 사장의 권한이 담긴 ID카드를 습득했다고 생각해 봅시다.

사원은 이 카드를 사용해서 사장의 서재나 비밀문서 등을 보관하는 금지 구역에도 자유롭게 드나들 수 있을 겁니다.

 

사원은 사원에 맞는 권한만 부여하여 회사 출입만 허가시켜 준다던지, 근무하는 사무실의 출입만 허가시켜 주는

차등 권한을 부여해야 회사는 사원의 예상치 못한 돌발 행동을 제어할 수 있을 겁니다.

 

또한 사장이 자신의 ID 카드를 잃어버린 것을 알고 그 카드의 권한을 제거하여 더 이상 사용할 수 없도록 하는 것도 

빠른 대처 방법입니다.

 

IAM도 마찬가지입니다. 우리가 root계정을(사장 권한 ID카드) 사용해서 자유롭게 드나들 수 있다가

외부 사람 손에 들어가게 된다면 보안에 큰 위협이 될 것입니다.

 

이번 포스팅에는 AWS의 모든 권한에 접근할 수 있되 만약 탈취당했을 땐 해당 계정에 대한 권한을 삭제시켜

우리 서비스들을 안전하게 지킬 수 있도록 해보겠습니다.

 

또한 MFA를 통해 보안 등급을 올려 우리 계정을 좀 더 안전하게 만들 수 있도록 하겠습니다.

 

 

1. 루트 계정 별칭 생성하기

사용자를 만들기 전 루트 계정의 별칭을 생성하겠습니다.

처음 AWS 계정을 생성하고 우측 상단을 눌러보시면 복잡한 숫자로 이루어진 계정 ID가 있습니다.

 

기존에 루트 계정으로 로그인할 땐 이메일을 사용했을 겁니다.

이제 IAM 사용자를 만들게 되면 해당 권한이 있는 IAM 사용자로 로그인을 해야 합니다.

그럴 때 계정 ID가 필요합니다. 하지만 복잡한 숫자로 이루어진 계정 ID는 외우기 힘들 기 때문에

로그인할 때 편의를 위해 친숙한 아이디로 변경하는 것입니다.

 

IAM으로 가서 계정 별칭에 편집을 선택합니다. (저는 이미 설정해서 계정 별칭에 보입니다.)

편집을 눌러 본인이 기억하기 쉬운 아이디로 변경합니다.

 

 

2. IAM 사용자 생성하기

본격적으로 IAM 사용자를 생성하겠습니다.

먼저 IAM을 선택하고 IAM 사용자 추가를 선택합니다.

 

이제 사용자를 추가합니다.

마치 사원용 ID카드, 간부용 ID카드, 관리자용 ID카드처럼 역할에 맞는 권한을 부여한 사용자를 생성합니다.

저는 관리자용 ID(사장보다 낮은)를 생성하겠습니다.

AWS에서 관리자용 ID와 사장 ID의 차이는 관리자용에선 Billing 관련된 항목에 접근할 수 없는 것 말고는 

사장 ID의 권한과 동일합니다. Billing 관련은 사장(root)이 권한을 주어야 가능합니다.

 

저는 admin이라는 이름으로 사용자를 생성했습니다.

AWS 액세스 유형 선택 항목에선 아래 이미지처럼 설정하시기 바랍니다.

 

AWS 콘솔 내에서 관리만 할 것이라면 "암호 - AWS 관리 콘솔 액세스"만 체크해도 되며,

"액세스 키 - 프로그래밍 방식 액세스"는 사용자가 사람이 아닌 외부 프로그램이 AWS 서비스에 접근할 때 필요합니다.

 

(예를 들면 CI/CD를 위해 GitHub Actions에서(외부) AWS CodeDeploy에(내부) 접근할 때)

다음으로 이 admin 계정에 권한을 부여합니다.

우린 관리자용으로 권한을 주기 위해서 다음과 같이 설정합니다.

 

그리고 계속 다음을 선택합니다.

 

그럼 아래 그림처럼 admin이라는 이름의 사용자가 생긴 것을 볼 수 있습니다.

 

 

 

3. 계정 보안 강화를 위한 MFA설정

MFA(Multi Factor Authentication)은 정규 로그인 자격 증명 외에도(우리가 사용하는 이메일, 비밀번호) AWS가 지원되는 MFA 메커니즘의 고유 인증을 제출하라고 요청함으로써 보안을 더욱 강화합니다.

 

MFA를 사용할 땐 여러 종류가 있는데, 보통 스마트폰을 이용해서 많이 하므로

스마트폰을 이용해서 진행하겠습니다.

 

먼저 사용자 > 보안 자격 증명 > 할당된 MFA 디바이스 > 관리를 선택합니다.

 

 

스마트폰을 이용해서 MFA를 사용할 것이기 때문에 가상 MFA 디바이스를 선택합니다.

다음으로 OTP코드를 받기 위해 구글 Authenticator를 스마트폰에 다운로드해야 합니다.

 

애플 앱스토어: https://apps.apple.com/kr/app/google-authenticator/id388497605

구글 플레이스토어: https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=ko&gl=US

 

다운로드를 하였으면 들어가서 "+"버튼을 누릅니다.

거기서 QR코드 스캔을 선택하고 우리 AWS로 다시 돌아와서 해당 QR코드를 스캔하면 됩니다.

시간 지남에 따라 코드가 나오는데 두 개의 코드를 작성하고 마무리하시면 됩니다.

 

 

4. IAM 사용자로 로그인하기

기존 AWS 루트 계정을 로그아웃 합니다.

이제 우리는 IAM 사용자를 생성했으므로 IAM 사용자를 선택합니다.

다음 우리가 생성한 IAM 사용자의 계정을 작성합니다.

(1) 번에서 생성한 루트 계정 별칭을 작성합니다.

다음으로 생성한 IAM 사용자의 계정 와 비밀번호를 작성합니다.

다음 스마트폰의 authenticator를 열어서 MFA 코드를 입력하면 

이제 루트 계정이 아닌 admin 권한을 가진 IAM 사용자로 로그인된 것을 볼 수 있습니다.

 

 

이 IAM 사용자는 Billing을 제외한 나머지 모든 서비스에 접근할 수 있습니다.

 

지금은 admin 권한을 주었지만 특정 서비스만 이용할 수 있도록 권한을 주어(마치 사원 ID처럼)

더욱 안전하게 서비스들을 관리할 수도 있습니다.

 

 

참고

https://www.youtube.com/watch?v=9nBq6PxDvp4 

https://tech.cloud.nongshim.co.kr/2018/10/13/%EC%B4%88%EB%B3%B4%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-aws-%EC%9B%B9%EA%B5%AC%EC%B6%95-2-iam-%EC%9C%A0%EC%A0%80-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0/