Skip to content

IAM 작동 방식


사용자를 생성하기 전에 IAM 작동 방식을 이해해야 한다. IAM은 계정에 대한 인증 및 권한 부여를 제어하는 데 필요한 인프라를 제공한다. IAM 인프라에는 다음 요소가 포함되어 있다.

  • 약관
  • 보안 주체
  • 요청
  • 인증
  • 승인
  • 작업 또는 연산
  • 리소스

001


1. 약관

IAM 용어에 대해 자세히 알아본다.

  1. IAM 리소스(Resources)

    • IAM에 저장된 사용자, 그룹, 정책 및 아이덴터티 공급자 객체. 다른 AWS 서비스와 마찬가지로 IAM에서 리소스를 추가, 편집 및 제거할 수 있다.
  2. IAM 아이덴터티(Identities)

    • 식별 및 그룹화에 사용되는 IAM 리소스 객체. 정책을 IAM 아이덴터티에 연결할 수 있다. 여기에는 사용자, 그룹 및 역할이 포함된다.
  3. IAM 엔터티(Entities)

    • AWS가 인증에 사용하는 IAM 리소스 객체. 여기에는 IAM 사용자 및 역할이 포함된다.
  4. 보안 주체(Principals)

    • AWS 계정 루트 사용자, IAM 사용자 또는 IAM 역할을 사용하여 로그인하고 AWS에 요청하는 사람 또는 애플리케이션. 보안 주체에는 페더레이션 사용자 및 수임된 역할이 포함된다.

2. 보안 주체(Principal)

보안 주체란 AWS 리소스에 대한 작업을 요청할 수 있는 사람 또는 애플리케이션이다. 보안 주체는 AWS 계정 루트 사용자 또는 IAM 엔터티로 인증되어 AWS에 요청한다. 일별 작업에 대한 루트 사용자 크레덴셜은 사용하지 않는 것이 가장 좋다. 대신 IAM 엔터티(사용자 및 역할)를 생성한다. 애플리케이션이 AWS 계정에 액세스할 수 있도록 페더레이션(Federation) 사용자 또는 프로그래밍 방식의 액세스를 지원할 수 있다.


3. 요청(Request)

보안 주체가 AWS Management Console, AWS API 또는 AWS CLI를 사용하려고 시도하면 해당 보안 주체가 요청을 AWS에 전송한다. 이 요청에는 다음 정보가 포함되어 있다.

  • 작업 또는 동작(Actions or operations): 보안 주체가 수행하고자 하는 작업 또는 동작.
  • 리소스(Resources): 수행된 작업 또는 동작에 따른 AWS 리소스 객체.
  • 보안 주체(Principal): 엔터티(사용자 또는 역할)를 사용하여 요청을 보내는 사람 또는 애플리케이션. 보안 주체에 대한 정보에는 보안 주체가 로그인하는 데 사용된 엔터티와 관련된 정책이 포함된다.
  • 환경 데이터(Environment data): IP 주소, 사용자 에이전트, SSL 사용 상태 또는 시간대와 같은 정보.
  • 리소스 데이터(Resource data): 요청되는 리소스와 관련된 데이터. 여기에는 DynamoDB 테이블 이름 또는 Amazon EC2 인스턴스 태그와 같은 정보가 포함될 수 있다.

AWS에서 요청을 평가하고 승인하는 데 사용되는 요청 콘텍스트로 이 요청 정보를 수집한다.


4. 인증(Authentication)

보안 주체는 AWS에게 요청을 보내려면 크레덴셜을 사용하여 인증을 받아야 한다(AWS에 로그인). Amazon S3 및 AWS STS 등의 일부 서비스는 익명 사용자의 몇 가지 요청을 허용한다. 하지만 이는 규칙 예외이다.

루트 사용자로서 콘솔에서 인증하려면 이메일 주소 및 암호로 로그인해야 한다. IAM 사용자로서 계정 ID 또는 별칭을 입력한 다음 사용자 이름과 암호를 입력한다. API 또는 AWS CLI에서 인증하려면 액세스 키 및 보안 키를 제공해야 한다. 추가 보안 정보도 제공해야 할 수 있다. 예를 들어, AWS는 멀티 팩터 인증(MFA)을 사용하여 계정의 보안을 강화하는 것을 권장한다.


5. 승인(Authorization)

또한 요청을 완료할 수 있는 권한이 있어야 한다. AWS는 권한 부여 동안 요청 콘텍스트의 값을 사용하여 요청을 허용할지 거부할지 여부에 적용되는 정책을 점검한다. 그런 다음 이것은 정책을 사용하여 요청을 허용하거나 거부할지 여부를 결정한다. 대부분의 정책은 AWS에 JSON 문서로 저장되며 보안 주체 엔터티에 대한 권한을 지정한다. 요청이 권한 부여될지 여부에 영향을 미치는 정책의 몇 가지 유형이 있다. 계정에서 AWS 리소스로의 액세스 권한을 사용자에게 제공하려면 아이덴터티 기반 정책만 필요히다. 리소스 기반 정책은 교차 계정 액세스를 허용하는 데 좋다. 다른 정책 유형은 고급 기능이며 조심스럽게 사용해야 한다.

AWS은 요청 컨텍스트에 적용되는 각 정책을 확인한다. 단일 권한 정책에 거부된 작업이 포함된 경우 AWS는 전체 요청을 거부하고 평가를 중지한다. 이를 명시적 거부라고 한다. 요청은 기본적으로 거부되므로 AWS는 적용 가능한 권한 정책이 요청의 모든 부분을 허용하는 경우에만 요청에 권한을 부여한다. 단일 계정 내 요청 평가 로직은 다음 일반 규칙을 따른다.

  • 기본적으로 모든 요청을 거부한다. (일반적으로, AWS 계정 루트 사용자 크레덴셜을 사용하여 해당 계정의 리소스를 요청하는 경우는 항상 허용된다.)
  • 권한 정책(아이덴터티 기반 또는 리소스 기반)에 포함된 명시적 허용은 이 기본 동작을 재정의한다(overrides).
  • 조직 SCP, IAM 권한 경계 또는 세션 정책이 있는 경우 허용이 재정의된다. 하나 이상의 이러한 정책 유형이 존재하는 경우 이들 정책 유형 모두가 해당 요청을 허용해야 한다. 그렇지 않은 경우 이 값은 묵시적으로 거부된다.
  • 어떠한 정책의 명시적 거부도 허용을 무시한다.

사용자가 다른 계정에서 요청해야 하는 경우 다른 계정의 정책에서 해당 사용자가 해당 리소스를 액세스하도록 허용해야 하며, 또한 요청하는 데 사용하는 IAM 엔터티에도 해당 요청을 허용하는 아이덴터티 기반 정책이 있어야 한다.


6. 작업 또는 동작(Actions or operations)

요청이 인증 및 권한 부여된 후 AWS가 요청의 작업 또는 동작을 승인한다. 작업은 서비스로 정의되며 리소스 보기, 생성, 편집 및 삭제와 같이 리소스에 대해 수행할 수 있는 사항이다. 예를 들어, IAM은 사용자 리소스에 대해 다음 작업을 비롯하여 약 40개의 작업을 수행할 수 있도록 지원한다.

  • CreateUser
  • DeleteUser
  • GetUser
  • UpdateUser

보안 주체가 작업을 수행할 수 있도록 허용하려면 보안 주체 또는 영향을 받은 리소스에 적용되는 필요한 작업을 정책에 포함해야 한다. 각 서비스에서 지원하는 작업, 리소스 유형 및 조건 키 목록을 보려면 AWS 서비스에 사용되는 작업, 리소스 및 조건 키를 참조한다.


7. 리소스(Resources)

AWS가 요청의 작업을 승인하면 계정 내의 관련 리소스에서 해당 작업을 수행할 수 있다. 리소스는 서비스 내에 존재하는 객체이다. 예를 들어 Amazon EC2 인스턴스, IAM 사용자 및 Amazon S3 버킷이 있다. 서비스는 각 리소스에서 수행할 수 있는 일련의 작업을 정의한다. 리소스에서 관련되지 않은 작업을 수행하도록 요청을 생성하면 해당 요청이 거부된다. 예를 들어 IAM 역할을 삭제하도록 요청하지만 IAM 그룹 리소스를 제공하지 않는 경우 요청이 실패한다. 작업의 영향을 받는 리소스를 나열한 AWS 서비스 테이블을 보려면 AWS 서비스에 사용되는 작업, 리소스 및 조건 키를 참조한다.


References