(보안) AWS 루트 계정 버리기 — 모범 사례 따라하기

손당근·2020년 10월 7일
1

대부분 스타트업의 자료는 클라우드에 저장됩니다. 루트 계정을 사용하면서요. 🔑

AWS로 예를 들겠습니다. 어떤 스타트업이 탄생하고 AWS 계정을 생성합니다. 신용 카드를 등록하고 자원을 생성합니다. 시간이 지나서 구성원이 증가하고 모두가 여전히 루트 계정으로 AWS에 접근합니다. 누군가 현 상태의 문제점을 지적하지만 귀찮다는 이유 + 현재는 서비스가 작으니 보안보다 개발에 집중해야 한다는 핑계로 여전히 루트 계정을 사용합니다.

기업에서 가장 막대한 피해를 보는 해킹 사례가 뭘 까요? 바로 클라우드 계정 탈취입니다. 지금부터 제가 AWS IAM 운영 모범 사례 기반으로 리모트몬스터를 루트 계정으로부터 자유롭게 만든 경험에 대해 얘기하겠습니다.

AWS IAM 모범 사례 살펴보기
AWS에서 권고하는 모범 사례들이 있습니다. 모든 규칙을 따르면 좋겠지만 현실적으로 모든 규칙을 지키기 보다 가장 기본적이고 중요한 규칙만 살펴보려고 합니다.

👉 AWS 계정 루트 사용자 액세스 키 잠금

루트 사용자를 봉인합니다. 루트 사용자는 빌링 정보를 비롯해 모든 자원에 접근 가능합니다. 만약 빌링 정보 조회가 필요하다면 이에 상응하는 사용자를 생성하고 권한을 부여하세요.

👉 개별 IAM 사용자 만들기

구성원별로 IAM 사용자를 생성하세요. 이는 구성원의 역할에 따라서 서로 다른 보안 자격 증명 조합을 부여할 수 있습니다.

👉 그룹을 사용하여 IAM 사용자에게 권한을 할당

보통 사업팀, 개발팀 그리고 어드민팀 등 업무 범위에 따라 그룹을 생성하고 이에 관련된 서비스에 접근 가능하도록 그룹에 정책을 붙여주세요. 만약 사업팀에게 새로운 권한이 필요하면 그룹에 새로운 정책만 붙여주면 모든 작업이 끝납니다. 또한 구성원의 부서 이동시 그룹을 편집하면 그만입니다.

👉 최소 권한 부여

일단 모든 권한을 없애고, 필요한 권한을 하나씩 부여해주세요.

👉 MFA 활성화

모든 사용자에게 MFA를 요구하는게 좋습니다. 이는 사용자의 인증 정보가 탈취되더라도 리소스를 보호합니다.

👉 AWS 계정의 활동 모니터링

AWS의 로깅 기능(CloudTrail 등)을 통해서 사용자가 하는 모든 행동을 감시할 수 있습니다.

리모트 몬스터의 그룹 분류하기
저는 리모트몬스터를 세 가지 그룹으로 나눠봤습니다.

이를 토대로 IAM Group 을 만들어줍니다.

RemonSysAdmin

RemonDeveloper

RemonBiz

그룹에 정책 붙여주기
이제 그룹을 정의했으니 해당 그룹에 속한 구성원들이 자원에 접근 가능하도록 정책(Policy)를 붙여줍시다.

예를 들어 어드민 그룹에는 IAM 접근 권한을 포함한 모든 AWS 리소스에 접근 가능해야합니다. 반면에 개발팀은 우리가 사용하는 특정 서비스(S3 등)에 대한 권한만 열어주면 되겠죠? 마지막으로 비즈팀은 필요에 따라서 ReadOnly 권한을 열어줍니다.

사용자 만들기
사용자 생성합시다. 예를 들어보죠.

리모트몬스터의 인프라를 담당하고 있는 ‘당근’

리모트몬스터의 SDK를 담당하고 있는 ‘감자’

리모트몬스터의 사업 개발을 책임지고 있는 ‘양파’

가 있다고 가정해봅시다. 먼저 사용자를 각각 생성하고 이를 알맞은 그룹에 넣어주면 되겠죠. 여기서 중요한점은 MFA 활성화를 요구하는 겁니다. AWS IAM 모범 사례에 따르면 모든 구성원들이 MFA 활성화하는 것을 권고하고 있습니다.

가상 MFA 디바이스 알아보러 가기 — https://authy.com/

그룹에 사용자 넣어주기
마지막으로 위에서 생성한 사용자들을 알맞은 그룹에 넣어줍니다.

앞으로 할 일
보안 강화는 끝이 없습니다. 비밀번호 정책 강화, CloudTrail 활성화 등 이번 포스팅에서 소개한 규칙 외에 AWS IAM 모범 사례에서 권고하는 규칙들이 많이 남아있습니다. 자세한 내용은 여기를 참조해주세요.

profile
클라우드 엔지니어링을 좋아합니다

0개의 댓글