본문 바로가기

Infrastructure/Cloud Computing

[AWS] IAM

IAM이란?

IAM(Identity and Access Management)이란 Amazon에서 통합 계정 관리를 지칭하는 말이다. AWS 계정을 생성하면 Root 사용자가 생성된다. 이때 생성된 Root 사용자는 AWS의 모든 서비스 및 리소스에 대한 액세스 권한을 가지며 어떠한 제약도 받지 않는다. 커다란 IT부서에서 모두가 Root 사용자 계정으로 작업을 진행한다면 문제 발생의 가능성에 항상 문을 열어두고 있는 것이며 문제가 발생하였을 때 어떠한 팀에서 발생시킨 문제인지 추적도 힘들어진다. 이러한 점을 보완하기 위해 사용되는 것이 IAM이다.

그림1

계정 관리 시스템의 종류

회사 내 시스템에 대한 통합 권한 관리 솔루션은 SSO, EAM, IAM으로 분류할 수 있다.

  • SSO(Single-Sign-On): 한 번의 인증으로 여러 시스템에 추가 인증없이 접속 가능하도록 하는 방식. 다수의 인증 절차없이 1개의 계정으로 다양한 시스템 및 서비스에 접속이 가능하여 사용자의 편의성과 관리 비용이 절감된다.

  • EAM(Extranet Access Management): 가트너 그룹에서 정의한 용어로 SSO, 사용자 인증 관리 및 애플리케이션, 데이터에 대한 접근 관리 기능을 제공한다. 보안 정책 기반의 단일 메커니즘을 이용한 방식이다.

  • IAM(Identity Access Management): 계정 관리 전반 및 프로비저닝 기능을 포함한 포괄적인 의미의 계정 관리 방식이다. EAM, SSO 기능보다 확장된 개념으로 업무 효율성, 보안성의 극대화를 통해 확실한 이익 창출을 보장하는 방식이다.

IAM 서비스

IAM은 AWS 리소스에 대한 액세스를 안전하게 관리할 수 있게 해주는 서비스로 AWS 사용자 및 그룹을 만들고 관리하여 허용된 AWS 리소스에 대한 액세스를 허용 및 거부할 수 있다. 시크릿 키나 액세스 키를 공유하지 않고도 AWS 계정의 리소스를 관리하고 사용할 수 있는 권한을 다른 사용자에게 부여할 수 있다. 또한 사용자의 계정을 보호하기 위해 멀티 팩터 인증(MFA)을 통해 추가적인 계정 보호 기능을 제공한다. 이렇게 다양한 인증 처리 기능과 보안 기능을 통해 AWS 내부 리소스에 대한 체계적인 보호와 자원 관리가 가능하다.


IAM의 주요 특징

IAM 사용자: AWS의 계정이 아닌 계정내의 사용자로 분류해야하며 AWS와 서비스 및 리소스와 상호 작용하기 위해 사용되는 사람 또는 서비스를 의미한다. 하나의 AWS 계정에 최대 5,000개의 IAM 사용자를 생성할 수 있으며 하나의 IAM 사용자는 한 개의 AWS 계정에만 포함될 수 있다. IAM 사용자를 생성할 때 직접 권한을 연결하거나, IAM 그룹 및 IAM 역할을 연결하여 권한 및 자격증명을 할당할 수 있다. 또한 IAM 사용자에게 특정 권한을 할당하여 다른 IAM 사용자까지 관리하도록 구성할 수도 있다.

IAM 그룹: IAM 그룹은 IAM 사용자들의 집합니다. 그룹을 활용하여 다수의 사용자들을 대상으로 쉽게 권한 관리를 할 수 있다. 아래의 그림과 같은 조직도가 있을 때 DevOps Group의 권한을 할당하는 것만으로도 UserA와 UserB에게 권한을 할당할 수 있다. 만약 IAM 그룹이 없었다면 모든 DevOps팀의 계정을 찾아서 직접 권한을 할당해야한다.

그림2

IAM 역할: IAM 역할은 많은 부분 IAM 사용자와 비슷한 역할을 한다. 필자 또한 AWS를 처음 접하였을 때 둘의 차이를 이해하기 힘들었다. 하지만 IAM 역할은 하나의 사용자만 연결되지 않고 그 역할이 필요한 IAM 사용자 또는 IAM 그룹에 연결이 가능하다. 무엇보다 EC2 Instance에 연결이 가능하다. 이러한 특징을 봤을 때 하는 IAM 사용자와 비슷한 기능을 하지만 사용처는 확실히 구분이 된다. 예를들어 우리가 만든 iOS 애플리케이션이 S3에 접근해야한다고 가정해보자. 우리가 만든 애플리케이션에 모든 IAM 사용자를 발급하는 것은 불가능하다. 이러한 경우 IAM 역할을 사용하여 S3 리소스에 대한 액세스 권한을 조정할 수 있다.

그림3

IAM의 동작 방식: IAM은 AWS 서비스와 리소스에 대한 권한을 부여함으로써 AWS 서비스와 리소스에 대해 강력한 보안 기능을 제공한다. 아래의 그림을 보았을 때 IAM 그룹이 있고 그룹에 속해있는 IAM 사용자가 있다고 가정해본다. 이 IAM 그룹에는 S3 버킷에 대한 접근 권한은 제공되었지만 EC2 인스턴스에 대한 제한되어있다. 이러한 경우 그룹에 속해있는 모든 사용자는 권한 그룹 정책에 따라 EC2 인스턴스에 접근이 불가능해진다. 이처럼 AWS 리소스에 대해 세부적인 권한을 부여할 수 있다.

그림4

IAM 자격증명 관리 기능

  • IAM의 역할을 사용한 임시 자격증명 관리

    1. Alice(Dev Account) 계정은 AssumeRole을 호출하여 Prod 계정에게 임시 자격증명을 요청한다.

    2. Prod 계정은 임시 자격증명을 Alice에게 발급한다.

    3. Alice는 임시 자격증명을 사용하여 Prod 계정의 서비스 및 리소스에 액세스한다. 예를들어 Alice는 WriteAccess 권한이 부여한 Amazon EC2 및 Amazon EC2에 액세스가 가능해진다.

      그림5
  • IAM 자격증명 관리 기능. IAM은 아래와 같은 유형의 자격증명 관리 기능을 제공한다.

    1. 암호: AWS 콘솔 , AWS 포럼등에 로그인하는 데 사용된다.
    2. 액세스 키: AWS API, AWS CLI등을 통해서 프로그래밍 방식으로 호출하는 데 사용된다.
    3. CloudFront 키페어: CloudFront가 서명된 URL을 생성하는 데 사용된다.
    4. SSH 퍼블릭키: AWS CodeCommit 리포지토리를 인증하는데 사용된다.
    5. X.509 인증서: AWS 서비스에 안전한 SOAP 프로토콜 요청을 수행하는 데 사용된다.
  • 타 인증 시스템과의 연동: IAM의 Federation 서비스를 사용하면 AWS 사용자가 아니면서 일시적으로 접속권한을 받아서 AWS에 접속할 수 있다. 사용자는 AWS로 부터 인증받은 제3의 서비스에 로그인을 하고 제3의 서비스가 대신 인증을 진행하며 제공받은 account을 통해 AWS에 접근하게 된다.

    그림6

이 글은 아마존 웹 서비스 AWS Discovery Book 도서와 AWS 공식문서를 참고하여 작성하였다.

이미지 출처:

'Infrastructure > Cloud Computing' 카테고리의 다른 글

[AWS] Reserved Instance  (0) 2022.02.28
[AWS] Lightsail  (0) 2022.02.19
[AWS] CloudFront  (0) 2022.02.18
[AWS] Auto Scaling  (0) 2022.02.17
[AWS] ELB  (0) 2022.02.17