AWS Root 계정 보안 강화하는법

Young Woo Jung
Saltware
Published in
4 min readJan 7, 2020

--

Photo by Matthew Henry on Unsplash

AWS 관련 온라인 커뮤니티에서 잊혀질만 하면 한개씩 올라오는 포스팅이 있습니다.

“AWS 계정이 해킹을 당해서 한달치 월급에 맞먹는 돈이 과금되었습니다. 도와주세요”

이중에 대다수가 본인이 작성한 소스코드를 GitHub에 올렸는데 AWS Access Key가 소스코드안에 들어가 있어서 유출된 경우일 겁니다.

AWS 같은 경우에는 Management Console을 제외한 다른 방법(CLI, SDK, API)으로 서비스 이용시 Access Key와 Secret Access Key라는 한쌍의 보안 인증을 통해서 접근 및 권한을 부여받을수 있으므로 Root 계정의 Access Key가 노출됬다는 것은 Root 계정의 ID와 Password가 노출된것과 같다고 볼수 있습니다.

또한 Root 계정은 말 그대로 Superuser 그 자체입니다. IAM User 같은 경우에는 AdministratorAccess 권한이 부여되어있더라고 explicit deny 또는 policy condition을 통해서 특정 IP 주소에서오는 요청만 허락하거나 하는 접근관리를 할수 있지만 Root 계정은 어떠한 제한도 없는 모든 권한이 부여되어있다고 보면 됩니다.

첫번째는 Root 계정에 부여된 Access Key를 삭제하는 것입니다. AWS Access Key를 통해서 AWS에 대한 접근 및 권한이 필요하다면 IAM User를 생성하고 IAM Policy를 통해서 필요한 권한만 부여하고 해당 IAM User의 Access Key를 생성해 사용할수 있습니다.

그럼 Root 계정으로는 무엇을 해야 할까요? 한개의 예를 들자면 AdministratorAccess 권한이 부여된 IAM 유저들에 대한 권한 및 접근관리를 들수 있겠네요. Administrator의 권한 및 접근관리를 IAM User 스스로가 할수는 없으니까요

두번째는 Multi-factor authentication (MFA) 설정입니다. Google Authenticator등을 통해서 Virtual MFA를 설정할수는 있습니다만 Root 계정의 경우에는 Hardware MFA를 사용하는걸 권장합니다. 왜냐하면 Hardware MFA를 사용할 경우에는 해당 디바이스를 특정 위치에 보관하여 Location-based 접근관리가 가능해지기 때문입니다.

하지만 또 다른 문제가 생깁니다. Hardware MFA 디바이스에 대한 보안 및 접근관리가 필요하니까요. 뭔가 관리포인트가 한개 더 늘어난 느낌이 드는건 왜일까요? 보안을 위한 보안이.. Inifinite loop에 빠질수도 있습니다. 각설하고

한개의 예를 들어 보겠습니다. 개발 및 운영을 총괄하는 CTO가 있고, 운영을 담당하는 Sys Admin이 있고, 보안담당 Security Manager가 있고 Root 계정의 ID 및 Password는 Sys Admin이 관리한다고 가정한다면. Hardware MFA 보관은 Security Manager가, 접근권한 관리 및 승인은 CTO가, 접근 Sys Admin이 하도록 보안정책을 세울수 있습니다. 이 경우 Root 계정에 접속하려고 한다면 아래와 같은 절차를 통해야 할 것입니다.

  1. Sys Admin이 CTO에게 MFA 접근 승인 요청
  2. CTO가 MFA 접근을 허락하고 Security Manager 에게 통보
  3. Sys Admin이 Security Manager로 부터 MFA 수령

마지막으로는 Root 계정이 AWS Management Console에 접속할 경우 알람을 생성하는 것입니다. Root 계정의 AWS Access Key를 삭제했다고 가정할때 Root 계정이 AWS 리소스에 접근할수 있는 유일한 방법은 Management Console을 통해서 로그인하는 방법입니다. 해당 이벤트에 대해서 알람을 걸어두고 모니터링 한다면 Root 계정의 ID, Password, MFA가 노출되었더라도 비인가 접속에 대해서 더 빠른 대응이 가능해 지기 때문입니다

위의 내용들에 대한 상세한 구성방법은 https://github.com/fitcloud/aws-root-account-best-practice 을 통해서 확인할수 있습니다.

--

--