AWS root 계정이 아닌 IAM 계정으로 로그인하는 방법
- Authors

- 이름
- 이융희
- Social
- [email protected]
AWS(아마존 웹 서비스) 계정을 처음 생성하고 나서 가장 먼저 하는 실수가 무엇일까요? 가입할 때 사용한 이메일 주소, 즉 루트(Root) 계정으로 로그인하여 모든 작업을 처리하는 것입니다.
보통 1인 개발자라면 "어차피 나 혼자 쓰는 건데 괜찮겠지"라고 생각하기 쉽지만, AWS는 보통 결제를 위한 신용카드를 연결해 두고, 사용자가 사용하는 리소스에 따라서 사실상 무한히 비용을 발생시킬 수 있기 때문에 생각보다 굉장히 위험합니다.
이번 포스트에서는 왜 루트 계정이 위험한지, 그리고 보안의 정석이라 불리는 IAM(Identity and Access Management) 계정을 어떻게 설정하는지 알아보겠습니다.

AWS에 로그인할 때는 항상 먼저 이런 화면을 마주하게 됩니다. 로그인 세션 유지 기간도 굉장히 짧은 편인데, 만약 루트 사용자로만 AWS를 사용한다면 여기에서 매번 루트 사용자 이메일을 사용하여 로그인 버튼을 눌러줘야 합니다.
AWS 루트 사용자는 왜 위험할까?
루트 사용자는 해당 AWS 계정의 모든 자원과 과금 정보에 접근할 수 있는 무소불위의 권한을 가집니다. 만약 루트 사용자에 대한 접속 정보가 유출된다면, 다음과 같은 일이 발생할 수 있습니다.:
- 해커의 자원 점유: 해커가 고성능 인스턴스를 가능한 많이 생성하여 가상화폐 채굴에 이용합니다. 가상화폐를 AWS 인스턴스의 자원으로 채굴한 후 추적이 불가능한 본인의 가상화폐 지갑으로 보내면, 완벽히 세탁된 가상화폐를 얻을 수 있게 됩니다.
- 데이터 삭제 및 랜섬웨어: 운영중인 DB와 백업본을 모두 삭제하거나 암호화하고 돈을 주지 않으면 돌려주지 않는다고 협박합니다. Root로 접근할 수 없는 별도의 외부 서비스에 스냅샷과 같은 방식으로 데이터를 백업하지 않았다면, 데이터를 되찾을 수 없게 될 수도 있습니다.
- 계정 자체의 접근 권한 탈취: 루트 사용자의 이메일이나 비밀번호를 변경해 버리면, 계정 소유주가 자신의 계정에 접근할 수 없는 상황이 벌어집니다.
CAUTION
루트 사용자로 로그인하면 계정을 해지할 수도 있습니다. 한 번 유출되면 복구가 매우 어렵습니다.
실제로 저희가 데이터 보안 아키텍처를 설계해드린 국내 유수의 글로벌 리서치 기업에서도, 클라우드 권한 관리가 미흡했던 탓에 권한 탈취로 큰 비용이 나왔다가 저희 제안에 따라 NAS로 전향한 사례가 있습니다. 이 사례는 AWS와 협상(?)을 하여 비용을 어느 정도 줄였지만, 이건 AWS 측의 재량이라 불가능할 수도 있습니다.
1인 개발자라도 IAM을 써야 하는 이유
혼자서 개발하더라도 IAM을 사용하면 최소 권한의 원칙(Principle of Least Privilege) 을 실천할 수 있습니다.
- 사고 방지: 평소에는 개발에 필요한 최소한의 권한(S3, EC2 등)만 가진 IAM 계정으로 작업하다가, 결제 설정이나 계정 관리 등 중요한 활동을 할 때마다 루트 계정으로 로그인함으로써 실수로 인한 대형 사고를 방지합니다.
- 보안 격리: 특정 서비스를 사용하기 위한 액세스 키(Access Key)가 유출되더라도 해당 키만 정지하면 됩니다. 루트 계정의 키가 유출되는 것과 비교해서 훨씬 빠르게 대응할 수 있습니다.
- 글로벌 스탠다드: 보안에 극도로 민감한 세계 최대 규모의 전자상거래 기업이나 글로벌 검색 엔진을 보유한 IT 대기업들조차 내부 인프라 관리 시 반드시 권한이 분리된 계정 체계를 사용합니다. 이런 회사들은 물론 단순한 계정 권한 분리 뿐만 아니라 다층적인 보안을 기본적으로 구비합니다.
AWS 루트 사용자와 IAM 계정 비교
| 계정 유형 | 루트 사용자 | IAM |
|---|---|---|
| 권한 범위 | 전체 | 제한 가능 |
| 키 유출 시 피해 | 계정 전체 | 일부 서비스 |
| 평소 사용 여부 | ❌(가능한 자제) | ✅(일상적인 작업 가능) |
IAM 계정 생성 및 설정하기
이제 안전한 개발 환경을 위해 IAM 사용자를 만들어 보겠습니다.
이 설정을 위해서는 루트 사용자 이메일로 먼저 로그인을 해야합니다.
단계 1: IAM 대시보드 접속


AWS 콘솔 상단 검색창에 IAM을 검색하여 접속합니다.
단계 2: 사용자 생성

메뉴 중 사용자 메뉴에서 사용자 생성 버튼을 클릭합니다.

다음으로 나타나는 사용자 세부 정보 단계에서, 사용자 이름을 입력합니다.
TIP
사용자 이름은 본인의 닉네임을 쓰거나, user-dev와 같이 용도를 명시하는 것이 좋습니다.
그리고 다음을 눌러 다음 단계로 넘어갑니다.
단계 3: 권한 설정 (관리자 권한 부여)
다음 단계에서는 권한 설정을 하게 됩니다. 그룹에 사용자 추가, 권한 복사, 직접 정책 연결 중 선택할 수 있는데, 다음과 같은 차이가 있습니다.
- 그룹에 사용자 추가: 이미 생성된 그룹에 사용자를 할당합니다. 그룹에서 이미 설정된 권한을 자동으로 상속받습니다. 개발 인원이 팀 별로 많을 경우 각 팀 별 권한을 설정해두고 사용할 수 있습니다.
- 권한 복사: 기존에 존재하는 다른 사용자의 권한을 그대로 가져옵니다.
- 직접 정책 연결: AWS에서 미리 만들어둔 여러 권한 정책 중 하나를 선택합니다.

만약 본인이 1인 개발자라면 일상적인 모든 작업을 수행할 수 있도록 AdministratorAccess 정책을 연결하면 됩니다.
직접 정책 연결을 누르고, 아래의 권한 정책들 중 검색창에 AdministratorAccess를 입력한 후, 가장 위에 나오는 권한을 선택해서 부여합니다.
AWS는 1,400개가 넘는 수많은 권한 정책을 가지고 있는데요, 각기 어떤 작업을 할 수 있는지 세부적으로 정책을 미리 설정해둔 것이고, 꼭 필요한 권한만 부여해 주시면 됩니다. 직접 정책을 생성할 수도 있습니다만, 고급 사용자 영역이므로 되도록이면 사전 설정 권한 중 선택하는 게 좋습니다.
굉장히 권한 종류가 많아 본인이 이 팀원에게 어느 권한들을 줘야할지 모르겠다면... AI 챗봇과 상담해서 결정하셔도 됩니다.(요즘 잘 알려줍니다)
단계 4: 생성 완료 및 MFA(다단계 인증) 설정
다음 단계에서는 지금 생성을 하려는 사용자에 대한 세부 정보와 권한 정보 요약을 보여줍니다. 마지막으로 사용자 생성 버튼을 누르면 사용자가 생성됩니다.
계정 생성이 완료되었다면, 해당 IAM 계정으로 로그인한 뒤 반드시 MFA를 설정해야 합니다.
참고로 MFA 설정은 로그인 후 우측 상단 사용자 계정명을 클릭한 후 보안 자격 증명 메뉴에서 가능합니다.

이제 로그인 시 IAM 사용자 로그인 단계에서 계정의 ID(최초 IAM 생성 시 입력하셨던 계정 ID입니다)를 입력하고, 본인의 IAM 계정으로 로그인하시면 됩니다.
https://accountid.signin.aws.amazon.com/console 라는 URL을 사용하면 본인의 조직 계정명이 이미 입력된 로그인 창에 접속할 수 있습니다. 혹시 모를 사고에 대비하여 해당 URL을 아예 AWS 로그인 URL로서 북마크에 추가해 두시는 걸 권장합니다.
루트 사용자는 이제 사용 자제하기
IAM 계정 생성이 끝났다면, 이제 루트 사용자는 로그아웃하고 되도록 로그인하지 않아야 합니다. 위에서 지정한 AdministratorAccess 권한은 루트 사용자에 준하는 대부분의 작업을 할 수 있는 권한입니다.
IMPORTANT
루트 사용자와 IAM 계정 양쪽에 반드시 강력한 비밀번호와 MFA를 적용해야 합니다. IAM 계정도 털리면 문제가 되는 건 마찬가지입니다. MFA를 꼭 설정하세요.
만약 AWS의 더 깊은 보안 기능을 알고 싶다면 아래 링크를 참고해 보세요.
마치며
귀찮을 수록 보안은 더 강해집니다. 지금 바로 루트 사용자에서 로그아웃하고 전용 IAM 계정을 만들어 보세요. 작은 습관 하나가 여러분의 소중한 프로젝트와 지갑을 지켜줄 것입니다.