IAM 작동 방식 - AWS Identity and Access Management

IAM 작동 방식

IAM은 AWS 계정에 대한 인증 및 권한 부여를 제어하는 데 필요한 인프라를 제공합니다. 다음 다이어그램에 IAM 인프라가 나타나 있습니다.

IntroToIAM_Diagram

먼저, 실제 사용자나 애플리케이션이 AWS를 통해 로그인 보안 인증을 사용하여 인증합니다. AWS 계정에서 신뢰하는 보안 주체(IAM 사용자, 페더레이션 사용자, IAM 역할 또는 애플리케이션)와 로그인 보안 인증 정보를 일치시키는 방식으로 인증이 제공됩니다.

다음으로 보안 주체에게 리소스 액세스 권한을 부여하도록 요청이 이루어집니다. 권한 부여 요청에 대한 응답으로 액세스 권한이 부여됩니다. 예를 들어, 콘솔에 처음 로그인하고 콘솔 홈 페이지에 있는 경우에는 특정 서비스에 액세스하고 있지 않습니다. 서비스를 선택하면 인증 요청이 해당 서비스로 전송되어 인증된 사용자 목록에 ID가 있는지, 부여된 액세스 수준을 제어하기 위해 어떤 정책이 적용되고 있는지, 적용될 수 있는 기타 정책이 있는지 확인합니다. AWS 계정 내의 보안 주체나 신뢰할 수 있는 AWS 계정을 통하여 인증을 요청할 수 있습니다.

인증된 후에는 보안 주체가 AWS 계정에서 리소스에 조치를 취하거나 작업을 수행할 수 있습니다. 예를 들어, 보안 주체는 새 Amazon Elastic Compute Cloud 인스턴스를 시작하거나, IAM 그룹 멤버십을 수정하거나, Amazon Simple Storage Service 버킷을 삭제할 수 있습니다.

약관

AWS 사용 시, 다음과 같은 IAM 용어가 일반적으로 사용됩니다.

IAM 리소스

IAM 리소스는 IAM에 저장됩니다. IAM에서 추가, 편집 및 제거할 수 있습니다.

  • 사용자

  • 그룹

  • 역할

  • 정책

  • ID 제공자 객체

IAM 엔터티

AWS이(가) 인증에 사용하는 IAM 리소스. 리소스 기반 정책에서 엔터티를 주체로 지정할 수 있습니다.

  • 사용자

  • 역할

IAM 자격 증명

정책에서 권한을 부여받아 작업을 수행하고 리소스에 액세스할 수 있는 IAM 리소스입니다. ID(사용자, 그룹, 및 역할 포함).

리소스, ID 및 엔터티
보안 주체

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

인간 사용자

인간 ID라고도 하며 애플리케이션의 사용자, 관리자, 개발자, 운영자 및 소비자입니다.

워크로드

비즈니스 가치를 창출하는 리소스 및 코드(예: 애플리케이션 또는 백엔드 프로세스)의 컬렉션입니다. 애플리케이션, 운영 도구 및 구성 요소를 포함할 수 있습니다.

보안 주체

보안 주체란 AWS 리소스에 대한 작업을 요청할 수 있는 인간 사용자 또는 워크로드입니다. 인증 후 보안 주체는 보안 주체 유형에 따라 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 등의 일부 서비스는 익명 사용자의 몇 가지 요청을 허용합니다. 하지만 이는 규칙 예외입니다.

루트 사용자로서 콘솔에서 인증하려면 이메일 주소 및 암호로 로그인해야 합니다. 페더레이션 사용자는 ID 제공업체의 인증을 받고 IAM 역할을 수임하여 AWS 리소스에 대한 액세스 권한을 부여받습니다. IAM 사용자로서 계정 ID 또는 별칭을 입력한 다음 사용자 이름과 암호를 입력합니다. API 또는 AWS CLI에서 워크로드를 인증하려면 역할 할당을 통해 임시 보안 인증을 사용하거나 액세스 키와 비밀 키를 제공하여 장기 보안 인증을 사용합니다. 추가 보안 정보도 제공해야 할 수 있습니다. 모범 사례로 AWS는 다중 인증(MFA)과 임시 보안 인증을 사용하여 계정의 보안을 강화하는 것을 권장합니다. AWS가 인증할 수 있는 IAM 엔터티에 대한 자세한 정보는 IAM 사용자IAM 역할 섹션을 참조하세요.

승인

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

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

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

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

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

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

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

작업 또는 연산

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

  • CreateUser

  • DeleteUser

  • GetUser

  • UpdateUser

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

리소스

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