본문 바로가기

Programming/Web 개발

AWS 01. 계정 생성, 루트(root)와 아이엠(IAM) 유저.

아마존을 사용하다보니 계정 생성부터 정책(Policy)까지 꽤나 복잡해서 정리용으로 작성.

AWS 서비스를 이용하기 위해서는 결국 AWS에서 제공하는 API를 사용하게 됨.
이 때 접근을 위해서는 자격 증명(Credential)을 해야 하며, 이를 위해서 Access Key , Secret Key와 같은 것을 제출하게 됨.
이 때, AWS에서는 서비스이용의 보안에 있어서 Shared Responsibility Model(공동 책임)을 강조하는데,
클라우드에 대해서는 AWS가 보안을 책임지지만, 그 위에 올라가는 데이터 및 어플리케이션은 고객이 담당을 해야한다는 것이다.
그러므로 유저는 각 리소스에 접근을 제어하기 IAM(Identity and Access Management)을 활용하여야 하는 것이다.

Root User (루트 사용자)

아마존 웹 서비스에 가입하면 생기는 계정으로 아마존 웹 서비스에서 제공하는 서비스를 이용할 수 있게 되며 모든 리소스들에 대해 접근 권한을 가지게 됨. 가입하게 된 계정 이메일과 암호로 로그인하여 사용하게 되며 모든 작업들은 루트 사용자를 사용할 수 있지만 AWS에서는 이 루트 계정을 처음 계정 생성 시와 IAM 사용자를 생성할 때를 제외하고 작업에 사용하지 않기를 권고한다. 이 루트유저가 모든 권한을 가지는 것 때문에 보안의 문제가 생길 수 있기 때문이다.

IAM User (아이엠 사용자)

AWS에서는 이와 같은 보안 문제 해결을 위해 한 루트 계정 내에 다양한 계정을 만들어 사용할 수 있으며, 사용자별 접근 가능한 리소스들을 정의하여 접근할 수 있는 정책이다. IAM user는 따라서 한 사용자당 하나의 계정으로 생성하고, 필요한 권한이 겹칠 경우에는 여러 IAM user들을 IAM group으로 관리하는 것을 권고한다.

API 요청 성공을 위해선 IAM 보안주체에 적법한 서명값을 포함하여 '인증' 할 수 있어야 하고, 정책에 의해 해당되는 요청이 정확하게 '인가'되어야 한다.

IAM Role: 정의된 권한 범위 내에 AWS API를 사용할 수 있는 임시 자격 증명(임시 Credential).  (EC2 Role)
AWS 정책: Effect(허용/차단), Action(어떤 행위를 할 것인가), Resource(어떤 리소스들에 대하여), Condition(어떤 조건에서)
Identity based 정책: 요청을 하는 주체에게 연결
Resource based 정책: 요청을 받는 리소스에게 연결 (Principal에서 보안주체를 포함하여야함)
두 개의 정책을 모두 정의하는 경우에는 동일 계정에서는 한쪽만 허용해도 되는 합집합의 형태로 정책이 진행되지만, 서로 다른 계정일 경우에는 두 정책을 모두 만족하는 공집합의 형태로 정책이 진행됨.