IAM 작동 방식 이해 - AWS Identity and Access Management

IAM 작동 방식 이해

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


      IntroToIAM_Diagram

약관

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

IAM 리소스

IAM에 저장된 사용자, 그룹, 정책 및 자격 증명 공급자 객체. 다른 AWS 서비스와 마찬가지로 IAM에서 리소스를 추가, 편집 및 제거할 수 있습니다.

IAM 자격 증명

식별 및 그룹화에 사용되는 IAM 리소스 객체입니다. 정책을 IAM 자격 증명에 연결할 수 있습니다. 여기에는 사용자, 그룹 및 역할이 포함됩니다.

IAM 엔터티

AWS가 인증에 사용하는 IAM 리소스 객체입니다. 여기에는 IAM 사용자 및 역할이 포함됩니다.

보안 주체

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

보안 주체

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

요청

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

  • 작업 또는 작동 – 보안 주체가 수행하고자 하는 작업 또는 작동입니다. AWS CLI 또는 AWS API를 사용하여 AWS Management Console 또는 작동의 작업을 수행할 수 있습니다.

  • 리소스 – 수행된 작업 또는 작동에 따른 AWS 리소스 객체입니다.

  • 보안 주체 – 엔터티(사용자 또는 역할)를 사용하여 요청을 보내는 사람 또는 애플리케이션입니다. 보안 주체에 대한 정보에는 보안 주체가 로그인하는 데 사용된 엔터티와 관련된 정책이 포함됩니다.

  • 환경 데이터 – IP 주소, 사용자 에이전트, SSL 사용 상태 또는 시간대와 같은 정보입니다.

  • 리소스 데이터 – 요청되는 리소스와 관련된 데이터. 여기에는 DynamoDB 테이블 이름 또는 Amazon EC2 인스턴스 태그와 같은 정보가 포함될 수 있습니다.

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

인증

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

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

권한 부여

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

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

  • 기본적으로 모든 요청을 거부합니다. (일반적으로, AWS 계정 루트 사용자 증명을 사용하여 해당 계정의 리소스를 요청하는 경우는 항상 허용됩니다.)

  • 권한 정책(자격 증명 기반 또는 리소스 기반)에 포함된 명시적 허용은 이 기본 작동을 재정의합니다.

  • Organizations SCP, IAM 권한 경계 또는 세션 정책이 있는 경우 허용이 재정의됩니다. 하나 이상의 이러한 정책 유형이 존재하는 경우 이들 정책 유형 모두가 해당 요청을 허용해야 합니다. 그렇지 않은 경우 이 값은 묵시적으로 거부됩니다.

  • 어떠한 정책의 명시적 거부도 허용을 무시합니다.

모든 유형의 정책 평가 방법에 대한 자세한 내용은 정책 평가 로직 단원을 참조하십시오. 사용자가 다른 계정에서 요청해야 하는 경우 다른 계정의 정책에서 해당 사용자가 해당 리소스를 액세스하도록 허용해야 하며, 또한 요청하는 데 사용하는 IAM 엔터티에도 해당 요청을 허용하는 자격 증명 기반 정책이 있어야 합니다.

작업 또는 연산

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

  • CreateUser

  • DeleteUser

  • GetUser

  • UpdateUser

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

리소스

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