개요

스프링 프로젝트를 배포하려고 하고 있었습니다.

그런데 자바 기반 프로젝트는 NodeJS의 PM2처럼 무중단 배포를 지원하는 라이브러리가 마땅치 않은 것 같아 고민하고 있었는데, AWS의 CodeDeploy로 Blue-Green 배포 방식을 사용해 무중단 배포가 가능하다는 얘기를 들었습니다. 그래서 CodeDeploy 서비스를 이용하고자 하였습니다.

그런데 CodeDeploy 배포 환경을 구축하던 중 IAM의 낯선 개념과 마주하게 되었습니다. 바로 역할(Role)정책(Policy)이었습니다.

IAM도 아직 뭔지 잘 모르겠는데 얘네는 더 모르겠네요…!

오늘은 IAM이 뭐고 여기 나오는 용어들은 무엇인지에 대해서 정리하고자 합니다!

IAM(Identity and Access Management)

정의

AWS Identity and Access Management(IAM)은 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스입니다. IAM을 사용하면 사용자가 액세스할 수 있는 AWS 리소스를 제어하는 권한을 중앙에서 관리할 수 있습니다. IAM을 사용하여 리소스를 사용하도록 인증(로그인) 및 권한 부여(권한 있음)된 대상을 제어합니다.

AWS 계정을 생성할 때는 해당 계정의 모든 AWS 서비스 및 리소스에 대한 완전한 액세스 권한이 있는 단일 로그인 ID로 시작합니다. 이 자격 증명은 AWS 계정 *루트 사용자*라고 하며, 계정을 생성할 때 사용한 이메일 주소와 암호로 로그인하여 액세스합니다. 일상적인 태스크에 루트 사용자를 사용하지 않을 것을 강력히 권장합니다. 루트 사용자 보안 인증 정보를 보호하고 루트 사용자만 수행할 수 있는 작업을 수행하는 데 사용합니다. 루트 사용자로 로그인해야 하는 태스크의 전체 목록은 AWS Account Management 참조 안내서의 Tasks that require root user credentials(루트 사용자 보안 인증이 필요한 태스크)를 참조하세요.

AWS 공식 문서에서는 IAM을 다음과 같이 소개하고 있다. 큰 개념은 내가 알고 있는 것과 크게 차이나지 않았다.

AWS 계정 루트 사용자라는 관리자용 계정이 있고, 그 아래 여러 사용자(계정이라고도 말함)을 두고 그 사용자가 이용할 수 있는 권한을 관리하는 서비스를 IAM이라고 정리해 볼 수 있다.

필수 용어

IAM에서 사용되는 몇가지 필수 용어에 대해서 정리에 대해서 정리하고자 한다. 이 용어가 정리되지 않으면 AWS를 이용할 때 중간에 튀어나오는 설정들이 무슨 설정인지 이해하지 못한채로 넘기게 될 수 있다.