IAM은 사용자의 접근 권한을 관리 하는 서비스 이다.
IAM을 통해서 회사 내 AWS를 사용하는 사람들에게 부서 마달 사용자별로 AWS에서 제공하는 서비스들, 서비스에 생성된 자원 등에 대해 세분된 권한을 지정할 수 있다.
예를 들어 개발부서 그룹은 EC2와 S3 서비스에 대한 엑세스 권한을 주고, DB관리 부서 그룹은 RDS 엑세스 권한을 준다던지 세부 설정이 가능하다.
따라서 대부분의 사용자 권한 관리 서비스와 마찬가지로, 최고 관리자가 Root 계정을 관리하고 그밖의 사용자들은 각자 계정을 발급받아 제한된 권한을 갖고 AWS를 이용하게 된다.
IAM은 AWS 서비스에 대한 엑세스 권한 설정 뿐만 아니라, 언제 어디서 누가 무엇을 어떻게 할수 있는가를 상세히 설정할 수도 있다.
예를 들어 회사IP로 된 요청에서 2-3시까지만 S3의 특정 버킷의 회계자료를 열람할수 있게 설정하는 식으로 단순히 사용자 등급을 매기는걸 넘어서 다양하게 권한 설정이 가능하다.
정리하자면, IAM는 AWS 사용자 및 그룹을 만들고 관리하며 AWS 리소스에 대한 액세스를 허용 및 거부 설정함으로서 전반적인 사용자 관리를 하는 서비스이다.
IAM 기능 총 요약하면 다음과 같다.
IAM은 AWS 클라우드 인프라 안에서 신분과 접속/접근을 관리하기 위한 서비스이며,
크게 사용자(Users), 그룹(Groups), 역할(Roles), 정책(Policies) 으로 구성되어 있다.
Info
다음과 같이 각 사용자마다 권한을 부여하는 방식
- 사용자1 : RDS 권한 부여
- 사용자2 : S3 권한 부여
- 사용자3 : S3 권한 부여
- 사용자4 : RDS, S3, EC2 권한 부여
- 사용자5 : RDS, S3, EC2 권한 부여
사용자가 얼마 없을 때는 직접 사용자에게 권한을 설정하는 것이 더 직관적이고 편할 수 있지만 사용자가 많아지게 되면 관리하기 불편해지게 된다. 따라서 그룹이라는 개념을 사용한다.
Info
사용자에게 직접 권한을 부여하지 않고 그룹에 부여한 뒤 사용자들을 그룹으로 관리하는 방식
- 그룹 1 : RDS 권한 부여
- 그룹 2 : S3 권한 부여
- 그룹 3 : RDS, S3, EC2 권한 부여
- 사용자1 : 그룹 1
- 사용자2 : 그룹 2
- 사용자3 : 그룹 2
- 사용자4 : 그룹 3
- 사용자5 : 그룹 2, 그룹 3
그룹에 권한 설정을 지정하고 사용자를 등록함으로서 관리
사용자는 여러 그룹에 속할 수 있다.
IAM 정책도 주제에 따라 여러가지로 나뉘게 된다.
IAM 정책 타입은 아래와 같이 6가지로 분류된다.
모든 IAM 정책 종류를 알 필요는 없다.
그중 자주 쓰이는 정책을 알아보자
자격(ID) 기반 정책은 ID(사용자, 사용자 그룹 및 역할)가 수행할 수 있는 작업, 리소스 및 조건을 제어하는 JSON 권한 정책 문서다.
자격 증명 기반 정책은 추가로 3가지로 분류할 수 있다.
AWS 관리형 정책은 AWS에서 생성 및 관리하는 독립적인 정책이다.
쉽게 말하면, IAM 정책 탭에서 나오는 미리보기 정책들이 바로 AWS 관리형 정책이다.
즉, AWS에서 기본으로 제공되는 정책이라고 이해하면 된다.
따라서 정책 스스로 정책 이름이 포함된 Amazon 리소스 이름(ARN)을 갖고 있다.
예를 들어 arn:aws:iam::aws:policy/IAMReadOnlyAccess는 IAMReadOnlyAccess 라는 정책이 AWS에서 미리 글로벌하게 만들어져 있기 때문에 AWS 관리형 정책이라고 할 수 있다.
AWS 관리형 정책(AWS Managed Policy)이 미리 만들어진 AWS에서 기본으로 제공하는 정책이라면, AWS 고객 관리형 정책(AWS Customer Managed Policy) 사용자가 정책을 새로 생성해서 커스텀한 것을 말한다.
고객 관리형 정책은 만들어진 Account에서만 사용할 수 있다.
AWS 인라인 정책은 1 to 1 정책으로 명시적으로 할당되는 정책이다.
보통 IAM 정책이라 하면 다수의 사용자에게 여러번 적용해서 사용되는데, 인라인 정책은 하나의 사용자에게 하나의 정책을 적용하는 개념이라고 보면 된다.
참고
AWS IAM에서는 Inline Policies보다 Managed Policy 사용을 권장한다.
다만, 명시적으로 특정 사용자에게만 특정 권한을 주고 싶을 경우에는 Inline Policy를 사용하면 유용하다.
자격 증명 기반 정책이 사용자나 그룹에 적용하는 정책이라면, 리소스 기반 정책은 AWS 서비스 리소스에 적용하는 정책이라고 보면 된다.
대표적으로 S3 버킷 정책이 있다.
IAM policy는 JSON파일로 구성 되어 있으며 여러 요소로 구성된다.
앞서 위에서 보다 사용자의 권한 관리를 용이하게 위해서 그룹이라는 개념을 사용한다고 했었다.
하지만 이 방식도 권한이 다양해지면 그룹이 복잡해지며, 관리가 복잡해 지게 된다.
따라서 역할(Role)이라는 개념이 등장한다.
IAM 역할(Role)을 간단하게 설명하자면 리소스에 대한 액세스 권한이 없는 사용자나 서비스에게 일시적으로 권한을 위임 하는 것이다. (마치 소꿉놀이에서 내가 요리사모자를 쓰면 요리사 역할을 한다는 것을 의미하듯이 비슷한 개념)
예를 들어 아무런 권한이 없는 IAM 사용자 / EC2 인스턴스가 S3 버킷에 접근하려면 직접 정책(policy)를 설정하는 것도 하나의 방법이지만, 만일 사용할일이 끝나 정책을 회수하려면 다시 일일히 설정을 다시 업데이트 해줘야하는 매우 번거로워진다.
따라서 아예 임시적인 자격 증명서를 IAM 사용자 / EC2 인스턴스에게 부여함으로서 임시 세션토큰을 발급받게 되고, 역할에 연결된 권한을 사용할 수 있게 되는 것이다 따라서 필요하면 얼마든지 역할을 부여해 사용하고 다시 회수할 수 있다.
위에서 배운 IAM 구성(user, group, policy, role)을 통해 실제로 사용자/어플리케이션이 AWS 서비스에 접근할때 어떠한 과정으로 권한 엑세스가 되는지 살펴보자.
IAM 자격증명 보고서란, 말 그대로 IAM의 현재 계정 세팅 및 접속 정보 등을 총합한 보고서이다.
계정의 모든 사용자와 암호, 액세스키, MFA 장치 등의 증명상태 정보가 들어있다.
자격 증명 보고서는 AWS 콘솔, CLI, API에서 생성요청 및 다운로드 가능하다.
보고서에는 비밀번호 부터 언제 IAM 계정에 로그인했는지 등 전반적인 관리자로서의 IAM 관리 정보들이 들어있다.
참고로 보고서는 4시간 주기로 갱신된다. 즉, 보고서를 다운 받고 1시간 이내에 또 다운을 받으면 똑같은 보고서를 다운 받는다는 말이다.
초보자들도 이해할 수 있게 잘 정리해 주신거 같아요. 좋은 글 읽고 갑니다.
가독성이 너무 좋네요.