이번 포스팅에서는 AWS의 IAM에 대해서 간단하게 정리해보고자 한다.
저번에 S3 저장소 버킷을 만들고 권한과 관련된 설정을 할 때, AWS의 IAM을 활용하여 사용자를 만들고 권한을 배정하였다.
그렇다면, 여기서 말하는 IAM은 정확히 무엇일까?
IAM
AWS 공식 문서에서 IAM을 다음과 같이 정의하고 있다.
AWS Identity and Access Management(IAM)은 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스입니다.
IAM을 사용하여 리소스를 사용하도록 인증(로그인) 및 권한 부여(권한 있음)된 대상을 제어합니다.
역시, 정의만 봐서는 쉽게 와닿지가 않는다.
쉽게 요약하자면, AWS를 이용하는 사용자에게 권한을 부여해서 AWS 내의 자원을 안전하게 사용할 수 있도록 하는 서비스이다.
IAM을 쉽게 설명하기 위해서 간단한 예를 들어보려고 한다.
AWS를 하나의 회사라고 생각해보자. AWS 회사에는 root라는 사장님이 있다.
사업 초기에는 root라는 사장님이 AWS의 모든 일을 도맡아 하셨다.
그러다 점점 사업이 커지고 이제는 혼자서 하기 어려운 상황까지 왔다.
그러면 사장님 입장에서는 어떻게 해야 할까?
그렇다. 직원을 고용해서 일정 업무를 위임하면 된다.
다음 그림을 보자.
이제 사장님이 직원을 많이 뽑으셨다.
그리고 각 직원들을 맡은 직무에 따라 그룹을 나눴고, 각 그룹에 따라 작업할 수 있는 회의실 공간을 배정해주었다.
위의 그림에서 보면, 왼쪽 그룹은 EC2, S3 회의실만 사용할 수 있으며, 오른쪽 그룹은 RDS 회의실만 사용할 수 있다.
IAM 서비스는 이처럼 AWS 내의 여러 서비스에 대한 액세스를 관리하는 작업이라 볼 수 있다.
AWS root 계정 내에 IAM 사용자를 여럿 만들고 비슷한 권한을 갖는 사람들끼리 그룹으로 묶는 등 여러 사람들이 하나의 AWS 서비스 내에서 적절하게 권한을 위임받아 협업할 수 있도록 한다.
IAM 관련 용어 설명
자, 이제 IAM에 대한 대략적인 개념은 잡혔을 것이다.
이제 간단하게 IAM에서 사용되는 용어에 대해서 정리해보자.
- IAM 사용자
사용자는 AWS의 기능과 자원을 이용하는 객체이다.
사용자 별로 세분화하여 권한을 지정할 수 있다.
위의 IAM 예시에서 AWS 회사에 근무하는 직원에 해당되는 개념이다.
AWS root 계정 권한의 일부를 IAM 사용자에게 위임하는 형태이다.
- IAM 그룹
IAM 사용자들의 집합이다.
여러 사용자에게 공통으로 권한을 부여할 수 있게 만들어진 개념이다.
하나의 그룹에 여러 명의 사용자를 지정해서 공통적으로 권한을 주어야 하는 상황 있을 때 쓰면 유용하다.
- IAM 권한
AWS 서비스나 자원에 대해 어떤 작업을 할 수 있는지를 명시해두는 규칙이다.
권한 중에서 FullAccess라고 붙은 권한은 해당 권한에 대한 모든 권한을 갖는다는 의미이다.
예를 들어, AmazonS3FullAccess는 S3 서비스에 접근할 모든 권한을 가지고 있다는 의미이다.
- IAM 정책
IAM 정책은 권한들의 모음이라고 생각하면 된다.
위에서 나온 권한들을 IAM 사용자 하나하나에게 지정해준다고 생각해보자.
권한이 1~2개라면 상관없겠지만, 지정해야 될 권한이 30개, 50개씩 정말 많다면 아주 번거로울 것이다.
따라서 적용할 권한들을 정책으로 모아 사용자에게 적용한다고 보면 된다.
사용자나 그룹들에 권한을 직접 적용할 수는 없고 권한들로 만든 정책을 적용해야 한다.
정책은 사용자, 그룹 역할에 적용할 수 있다.
- IAM 역할
사용자의 대상이 사람이라면, 역할의 대상은 서비스 또는 다른 AWS 계정의 사용자이다.
정책을 부여받는다는 점에서는 사용자와 동일하다.
보통은 사용자가 아닌 특정 서비스에서 생성한 객체에 권한을 부여하는 데 사용한다.
예를 들어, EC2 인스턴스에게 S3 저장소에 접근할 수 있는 권한을 주어 S3에 저장된 이미지에 접근할 수 있게 하는 상황 등을 생각해 볼 수 있다.
참고
https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/introduction.html
'👨💻 개발' 카테고리의 다른 글
웹 애플리케이션 서버(WAS)란? 웹 서버(WS)와의 차이 (0) | 2021.12.11 |
---|---|
서블릿(Servlet)이란? 서블릿에서 스프링까지 (0) | 2021.12.11 |
SpringBoot에 CloudFront 적용 (0) | 2021.12.07 |
AWS CloudFront 배포하기 (0) | 2021.12.07 |
SpringBoot로 AWS S3에 파일 업로드 하기 (0) | 2021.12.05 |