AWS Identity and Access Management(IAM)
AWS Identity and Access Management(IAM)는 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스입니다. IAM을 사용하여 리소스를 사용하도록 인증(로그인) 및 권한 부여(권한 있음)된 대상을 제어합니다.
AWS 계정을 처음 생성할 때는 해당 계정의 모든 AWS 서비스 및 리소스에 대한 완전한 액세스 권한이 있는 SSO(Single Sign-In) ID로 시작합니다. 이 자격 증명은 AWS 계정 루트 사용자라고 하며, 계정을 생성할 때 사용한 이메일 주소와 암호로 로그인하여 액세스합니다. 일상적인 작업은 물론 관리 작업에도 루트 사용자를 사용하지 않는 것이 좋습니다. 대신 IAM 사용자를 처음 생성할 때만 루트 사용자를 사용하는 모범 사례를 준수하십시오. 그런 다음 루트 사용자 자격 증명을 안전하게 보관해 두고 몇 가지 계정 및 서비스 관리 작업을 수행할 때만 해당 자격 증명을 사용합니다.
주제
IAM 소개 동영상
AWS 교육 및 자격증 팀에서 IAM에 대한 10분 소개 동영상을 제공합니다.
AWS Identity and Access Management 소개
IAM 기능
IAM에서는 다음 기능을 제공합니다.
- AWS 계정에 대한 공유 액세스
암호나 액세스 키를 공유하지 않고도 AWS 계정의 리소스를 관리하고 사용할 수 있는 권한을 다른 사람에게 부여할 수 있습니다.
- 세분화된 권한
리소스에 따라 여러 사람에게 다양한 권한을 부여할 수 있습니다. 예를 들어 일부 사용자에게는 Amazon Elastic Compute Cloud(Amazon EC2), Amazon Simple Storage Service(Amazon S3), Amazon DynamoDB, Amazon Redshift 및 기타 AWS 서비스에 대한 전체 액세스 권한을 허용하고 다른 사용자에게는 일부 S3 버킷에 대한 읽기 전용 권한, 일부 EC2 인스턴스를 관리할 수 있는 권한 또는 결제 정보에만 액세스할 수 있는 권한을 허용할 수 있습니다.
- Amazon EC2에서 실행되는 애플리케이션을 위한 보안 AWS 리소스 액세스
EC2 인스턴스에서 실행되는 애플리케이션의 경우 IAM 기능을 사용하여 자격 증명을 안전하게 제공할 수 있습니다. 이러한 자격 증명은 애플리케이션에 다른 AWS 리소스에 액세스할 수 있는 권한을 제공합니다. 예를 들면 이러한 리소스에는 S3 버킷 및 DynamoDB 테이블이 있습니다.
- 멀티 팩터 인증(MFA)
보안 강화를 위해 계정과 개별 사용자에게 2팩터 인증을 추가할 수 있습니다. MFA를 사용할 경우 계정 소유자나 사용자가 계정 작업을 위해 암호나 액세스 키뿐 아니라 특별히 구성된 디바이스의 코드도 제공해야 합니다.
- 자격 증명 연동
기업 네트워크나 인터넷 자격 증명 공급자와 같은 다른 곳에 이미 암호가 있는 사용자에게 AWS 계정에 대한 임시 액세스 권한을 부여할 수 있습니다.
- 보장을 위한 자격 증명 정보
AWS CloudTrail
을 사용하는 경우 계정의 리소스를 요청한 사람에 대한 정보가 포함된 로그 레코드를 받게 됩니다. 이 정보는 IAM 자격 증명을 기반으로 합니다. - PCI DSS 준수
IAM에서는 전자 상거래 웹사이트 운영자 또는 서비스 공급자에 의한 신용 카드 데이터의 처리, 저장 및 전송을 지원하며, Payment Card Industry(PCI) Data Security Standard(DSS) 준수를 검증 받았습니다. AWS PCI 규정 준수 패키지의 사본을 요청하는 방법 등 PCI DSS에 대해 자세히 알아보려면 PCI DSS 레벨 1
을 참조하십시오. - 많은 AWS 서비스와의 통합
IAM과 함께 사용할 수 있는 AWS 서비스의 목록은 AWS Services That Work with IAM를 참조하십시오.
- 최종 일관성
IAM은 다른 많은 AWS 서비스처럼eventually consistent
에 해당됩니다. IAM에서는 전 세계의 Amazon 데이터 센터 내의 여러 서버로 데이터를 복제함으로써 고가용성을 구현합니다. 일부 데이터를 변경하겠다는 요청이 성공하면 변경이 실행되고 그 결과는 안전하게 저장됩니다. 그러나 변경 사항은 IAM에 두루 복제되어야 하고, 여기에는 일정한 시간이 걸립니다. 그러한 변경 사항에는 사용자, 그룹, 역할 또는 정책을 만들거나 업데이트한 것이 포함됩니다. 그러한 IAM 변경 사항을 애플리케이션의 중요한 고가용성 코드 경로에 포함시키지 않는 것이 좋습니다. 대신 자주 실행하지 않는 별도의 초기화 루틴이나 설정 루틴에서 IAM을 변경하십시오. 또한 프로덕션 워크플로우에서 변경 사항을 적용하기 전에 변경 사항이 전파되었는지 확인하십시오. 자세한 내용은 변경 사항이 매번 즉시 표시되는 것은 아닙니다 단원을 참조하십시오. - 무료 사용
AWS Identity and Access Management(IAM) 및 AWS Security Token Service(AWS STS)은 추가 비용 없이 AWS 계정에 제공되는 기능입니다. IAM 사용자 또는 AWS STS 임시 보안 자격 증명을 사용하여 다른 AWS 서비스에 액세스하는 경우에만 요금이 부과됩니다. 다른 AWS 제품 요금에 대한 자세한 내용은 Amazon Web Services 요금 페이지
를 참조하십시오.
IAM에 액세스
다음 방법 중 하나를 사용하여 AWS Identity and Access Management(으)로 작업할 수 있습니다.
- AWS Management 콘솔
콘솔은 IAM 및 AWS 리소스를 관리하기 위한 브라우저 기반 인터페이스입니다. 콘솔을 통한 IAM 액세스에 대한 자세한 내용은 IAM 사용자 또는 루트 사용자로 AWS Management 콘솔에 로그인 단원을 참조하십시오. 콘솔 사용법을 안내하는 자습서는 첫 번째 IAM 관리자 및 그룹 생성을 참조하십시오.
- AWS 명령줄 도구
AWS 명령줄 도구를 통해 시스템 명령줄에서 명령을 실행하여 IAM 및 AWS 작업을 수행할 수 있습니다. 명령줄을 사용하는 것이 콘솔을 사용하는 것보다 더 빠르고 편리할 수 있습니다. AWS 작업을 수행하는 스크립트를 작성할 때도 명령줄 도구가 유용합니다.
AWS에서는 AWS Command Line Interface
(AWS CLI) 및 Windows PowerShell용 AWS 도구 라는 두 가지 명령줄 도구 세트를 제공합니다. AWS CLI 설치 및 사용에 대한 자세한 내용은 AWS Command Line Interface 사용 설명서 단원을 참조하십시오. Windows PowerShell용 도구 설치 및 사용에 대한 자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서 단원을 참조하십시오. - AWS SDK
AWS에서는 다양한 프로그래밍 언어 및 플랫폼(Java, Python, Ruby, .NET, iOS, Android 등)을 위한 라이브러리와 샘플 코드로 구성된 소프트웨어 개발 키트(SDK)를 제공합니다. SDK를 사용하면 편리하게 IAM 및 AWS에 프로그래밍 방식으로 액세스할 수 있습니다. 예를 들어 SDK는 요청에 암호화 방식으로 서명, 오류 관리 및 자동으로 요청 재시도와 같은 작업을 처리합니다. 다운로드 및 설치 방법을 비롯하여 AWS SDK에 대한 자세한 내용은 Amazon Web Services용 도구
페이지를 참조하십시오. - IAM HTTPS API
서비스로 직접 HTTPS 요청을 실행할 수 있는 IAM HTTPS API를 사용하여 프로그래밍 방식으로 IAM 및 AWS에 액세스할 수 있습니다. HTTPS API를 사용할 때는 자격 증명을 사용하여 요청에 디지털 방식으로 서명하는 코드를 포함해야 합니다. 자세한 내용은 HTTP 쿼리 요청을 통한 API 호출 및 IAM API Reference 단원을 참조하십시오.
IAM 작동 방식 이해
사용자를 생성하기 전에 IAM 작동 방식을 이해해야 합니다. IAM은 계정에 대한 인증 및 권한 부여를 제어하는 데 필요한 인프라를 제공합니다. IAM 인프라에는 다음 요소가 포함되어 있습니다.
약관
IAM 용어에 대해 자세히 알아봅니다.
- 리소스
IAM에 저장된 사용자, 그룹, 정책 및 자격 증명 공급자 객체. 다른 AWS 서비스와 마찬가지로 IAM에서 리소스를 추가, 편집 및 제거할 수 있습니다.
- ID
식별 및 그룹화에 사용되는 IAM 리소스 객체입니다. 정책을 IAM 자격 증명에 연결할 수 있습니다. 여기에는 사용자, 그룹 및 역할이 포함됩니다.
- 엔터티
AWS가 인증에 사용하는 IAM 리소스 객체입니다. 여기에는 IAM 사용자, 연합된 사용자 및 수임된 IAM 역할이 포함됩니다.
- 보안 주체
AWS 계정 루트 사용자, IAM 사용자 또는 IAM 역할을 사용하여 로그인하고 AWS에 요청하는 사람 또는 애플리케이션입니다.
보안 주체
보안 주체란 AWS 리소스에 대한 작업을 요청할 수 있는 사람 또는 애플리케이션입니다. 보안 주체는 AWS 계정 루트 사용자 또는 IAM 엔터티로 인증되어 AWS에 요청합니다. 일별 작업에 대한 루트 사용자 자격 증명은 사용하지 않는 것이 가장 좋습니다. 대신 IAM 엔터티(사용자 및 역할)를 생성합니다. 애플리케이션이 AWS 계정에 액세스할 수 있도록 연동 사용자 또는 프로그래밍 방식의 액세스를 지원할 수 있습니다.
요청
보안 주체가 AWS Management 콘솔, AWS API 또는 AWS CLI를 사용하려고 시도하면 해당 보안 주체가 요청을 AWS에 전송합니다. 이 요청에는 다음 정보가 포함되어 있습니다.
작업 또는 작동 – 보안 주체가 수행하고자 하는 작업 또는 작동입니다. AWS CLI 또는 AWS API를 사용하여 AWS Management 콘솔 또는 작동의 작업을 수행할 수 있습니다.
리소스 – 수행된 작업 또는 작동에 따른 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 계정 루트 사용자 증명을 사용하여 해당 계정의 리소스를 요청하는 경우는 항상 허용됩니다.)
권한 정책(자격 증명 기반 또는 리소스 기반)에 포함된 명시적 허용은 이 기본 작동을 재정의합니다.
조직 SCP, IAM 권한 경계 또는 세션 정책이 있는 경우 허용이 재정의됩니다. 하나 이상의 이러한 정책 유형이 존재하는 경우 이들 정책 유형 모두가 해당 요청을 허용해야 합니다. 그렇지 않은 경우 이 값은 묵시적으로 거부됩니다.
어떠한 정책의 명시적 거부도 허용을 무시합니다.
모든 유형의 정책 평가 방법에 대한 자세한 내용은 정책 평가 로직 단원을 참조하십시오. 사용자가 다른 계정에서 요청해야 하는 경우 다른 계정의 정책에서 해당 사용자가 해당 리소스를 액세스하도록 허용해야 하며, 또한 요청하는 데 사용하는 IAM 엔터티에도 해당 요청을 허용하는 자격 증명 기반 정책이 있어야 합니다.
작업 또는 연산
요청이 인증 및 권한 부여된 후 AWS가 요청의 작업 또는 작동을 승인합니다. 작업은 서비스로 정의되며 리소스 보기, 생성, 편집 및 삭제와 같이 리소스에 대해 수행할 수 있는 사항입니다. 예를 들어, IAM은 사용자 리소스에 대해 다음 작업을 비롯하여 약 40개의 작업을 수행할 수 있도록 지원합니다.
CreateUserDeleteUserGetUserUpdateUser
보안 주체가 작업을 수행할 수 있도록 허용하려면 보안 주체 또는 영향을 받은 리소스에 적용되는 필요한 작업을 정책에 포함해야 합니다. 각 서비스가 지원하는 작업, 리소스 유형, 조건 키 목록은 AWS 서비스에 사용되는 작업, 리소스 및 조건 키 단원을 참조하십시오.
리소스
AWS가 요청의 작업을 승인하면 계정 내의 관련 리소스에서 해당 작업을 수행할 수 있습니다. 리소스는 서비스 내에 존재하는 객체입니다. 예를 들어 Amazon EC2 인스턴스, IAM 사용자 및 Amazon S3 버킷이 있습니다. 서비스는 각 리소스에서 수행할 수 있는 일련의 작업을 정의합니다. 리소스에서 관련되지 않은 작업을 수행하도록 요청을 생성하면 해당 요청이 거부됩니다. 예를 들어 IAM 역할을 삭제하도록 요청하지만 IAM 그룹 리소스를 제공하지 않는 경우 요청이 실패합니다. 작업에 의해 영향을 받는 리소스를 식별하는 AWS 서비스 테이블을 보려면 AWS 서비스에 사용되는 작업, 리소스 및 조건 키 단원을 참조하십시오.














