메뉴
AWS Identity and Access Management
사용 설명서

IAM 모범 사례

AWS 리소스를 안전하게 보호하기 위해 AWS Identity and Access Management(IAM) 서비스에 대한 다음 권장 사항을 따르십시오.

AWS 계정(루트) 액세스 키 잠그기

액세스 키(액세스 키 ID 및 보안 액세스 키)를 사용하여 프로그래밍 방식으로 AWS에 요청을 할 수 있습니다. 그러나 AWS 계정(루트) 액세스 키는 사용하지 마십시오. AWS 계정에 대한 액세스 키는 결제 정보를 포함하여 모든 AWS 서비스의 전체 리소스에 대해 완벽한 액세스 권한을 부여합니다. AWS 계정 액세스 키에 연결된 권한은 제한할 수 없습니다.

따라서 신용카드 번호 또는 다른 중요한 기밀 정보와 같이 AWS 계정 액세스 키를 보호해야 합니다. 이를 위한 몇 가지 방법은 다음과 같습니다.

  • AWS 계정에 대한 액세스 키가 아직 없다면 필요할 때까지 만들지 마십시오. 대신 계정 이메일 주소와 암호를 사용하여 AWS Management Console에 로그인한 후 다음 섹션의 설명에 따라 IAM 사용자를 만들어 관리 권한을 부여합니다.

  • AWS 계정에 대한 액세스 키가 있다면 삭제하고, 계속 유지해야 할 경우 주기적으로 액세스 키를 교체(변경)하십시오. AWS 계정 액세스 키를 삭제 또는 교체하려면 AWS Management Console의 보안 자격 증명 페이지에서 계정의 이메일 주소와 암호를 사용하여 로그인합니다. 액세스 키 섹션에서 액세스 키를 관리할 수 있습니다.

  • 다른 사람과 AWS 계정 암호 또는 액세스 키를 공유하지 마십시오. 이 설명서의 나머지 섹션에서 계정 자격 증명을 다른 사용자와 공유하거나 애플리케이션에 포함하는 것을 피할 수 있는 여러 가지 방법을 참조할 수 있습니다.

  • 강력한 암호를 사용하여 AWS Management Console에 대한 계정 수준의 액세스를 보호하십시오. AWS 계정의 암호 관리에 대한 자세한 내용은 AWS 계정 ("루트") 암호 변경 단원을 참조하십시오.

  • AWS 계정에 AWS Multi-Factor Authentication(MFA)을 활성화합니다. 자세한 내용은 AWS에서 멀티 팩터 인증(MFA) 사용하기 단원을 참조하십시오.

개별 IAM 사용자 만들기

AWS 루트 계정 자격 증명을 사용하여 AWS에 액세스하거나 다른 사용자와 공유하지 마십시오. 대신 AWS 계정에 액세스해야 하는 사용자에 대해 별도의 사용자 계정을 만들어주십시오. 관리자에 대해서도 IAM 사용자를 만들어 관리 권한을 부여한 후 모든 관리 작업에 대해 이 IAM 사용자를 사용하십시오. 이를 위한 자세한 방법은 첫 번째 IAM 관리자 및 그룹 생성 단원을 참조하십시오.

계정에 액세스하는 사용자에 대해 개별 IAM 사용자를 만들면 각 IAM 사용자에 따라 서로 다른 보안 자격 증명 조합을 부여할 수 있습니다. 또한 각 IAM 사용자에게 다양한 권한을 부여하고, 필요할 경우 언제든지 IAM 사용자의 권한을 변경 또는 취소할 수 있습니다. (AWS 루트 자격 증명을 제공한 후에는 다시 취소하기가 쉽지 않으며 권한을 제한할 수 없습니다.)

참고

그러나 개별 IAM 사용자에게 권한을 설정하기 전에 다음과 같은 그룹 관련 참고 사항을 고려해 보십시오.

가급적이면 AWS 정의 정책을 이용해 권한을 할당합니다.

가능하면 항상 AWS가 생성하고 유지하는 관리형 정책을 이용해 권한을 부여할 것을 권장합니다. 이러한 정책을 사용할 경우의 큰 장점 중 하나는 새로운 서비스나 새로운 API가 도입될 때마다 AWS가 이를 유지하고 업데이트할 수 있다는 점입니다.

AWS 관리형 정책은 일반적인 작업을 지원할 목적으로 설계되었습니다. 이러한 정책은 일반적으로 싱글 서비스나 제한적인 작업에 대한 액세스를 제공합니다. AWS 관리형 정책에 대한 자세한 내용은 AWS 관리형 정책 단원을 참조하십시오.

직무 기능에 관한 AWS 관리형 정책은 다양한 서비스에 적용할 수 있으며 IT 업계의 일반적인 직무 기능과 연계됩니다. 직무 정책의 목록과 설명은 직무 기능에 관한 AWS 관리형 정책 단원을 참조하십시오.

그룹을 사용하여 IAM 사용자에게 권한을 할당합니다.

개별 IAM 사용자에 대해 권한을 정의하는 대신, 업무(관리자, 개발자, 회계 등)에 관련된 그룹을 만들어 각 그룹별로 관련 권한을 정의하고 해당 그룹에 IAM 사용자를 지정하는 것이 더 편리할 수 있습니다. 그룹에 할당된 권한은 IAM 그룹에 속한 모든 사용자에게 상속됩니다. 따라서 한번에 그룹 내 모든 사용자에 대해 변경 사항을 적용할 수 있습니다. 사내에서 직원의 부서가 변경되면 해당 IAM 사용자가 속한 IAM 그룹만 변경하면 됩니다.

자세한 내용은 다음 자료를 참조하십시오.

최소 권한 부여

IAM 정책을 만들 때 최소 권한 부여의 기본 보안 조언을 따릅니다. 즉, 작업 수행에 필요한 최소한의 권한만 부여합니다. 사용자들이 수행해야 하는 작업을 파악한 후 사용자들이 해당 작업만 수행하도록 사용자에 대한 정책을 작성합니다.

권한을 많이 부여한 후 나중에 줄이기보다는 최소한의 권한 조합만으로 시작하여 필요에 따라 추가 권한을 부여하는 것이 더 안전합니다.

적절한 권한 조합을 정하려면 먼저 특정 작업에 필요한 사항이 무엇이고, 특정 서비스에서 어떤 작업을 지원하며 해당 작업을 수행하는 데 필요한 권한은 무엇인지 알아야 합니다.

이에 도움이 될 수 있는 한 가지 기능이 [Access Advisor] 탭인데, 사용자, 그룹, 역할 또는 정책을 검사할 때마다 IAM 콘솔 [Summary] 페이지에서 사용할 수 있습니다. 이 탭에는 사용자, 그룹, 역할이나 정책을 사용하는 누구든 실제로 사용하는 서비스에 대한 정보가 포함됩니다. 이 정보를 사용하여 불필요한 권한을 확인할 수 있으므로 IAM 정책을 미세 조정함으로써 최소 권한의 원칙을 보다 잘 준수할 수 있습니다. 자세한 내용은 서비스에서 마지막으로 액세스한 데이터 단원을 참조하십시오.

자세한 내용은 다음 자료를 참조하십시오.

사용자에 대한 강력한 암호 정책 구성

사용자가 직접 암호를 변경하도록 허용할 경우 강력한 암호를 만들고 주기적으로 암호를 변경하도록 해야 합니다. IAM 콘솔의 계정 설정 페이지에서 계정 암호 정책을 만들 수 있습니다. 암호 정책을 사용하여 최소 길이, 비 알파벳 문자 포함 여부, 교체 주기 등의 암호 요구 사항을 정의할 수 있습니다.

자세한 내용은 IAM 사용자의 계정 암호 정책 설정 단원을 참조하십시오.

권한 있는 사용자에 대해 MFA 활성화

보안을 강화하기 위해 중요한 리소스 또는 API에 대해 액세스 권한이 부여된 IAM 사용자에 대해 멀티 팩터 인증(MFA)을 적용합니다. MFA를 사용하면 디바이스에서 고유 인증 코드(일회성 암호 또는 OTP)가 생성되므로 사용자가 일반 자격 증명(사용자 이름 및 암호)과 함께 OTP도 제공해야 합니다. MFA 디바이스는 물리적 하드웨어 장치거나 가상 디바이스(앱 또는 스마트폰으로 실행 가능)가 될 수 있습니다.

자세한 내용은 AWS에서 멀티 팩터 인증(MFA) 사용하기 단원을 참조하십시오.

Amazon EC2 인스턴스에서 실행되는 애플리케이션에 역할 사용

Amazon EC2 인스턴스에서 실행되는 애플리케이션이 다른 AWS 서비스에 액세스하려면 자격 증명이 필요하며, 이 애플리케이션에 안전하게 자격 증명을 제공하려면 IAM 역할을 사용합니다. 역할에는 특정 사용자나 그룹이 아닌 권한의 조합이 설정됩니다. 또한 역할에는 IAM 사용자와 달리 영구적인 자격 증명 조합이 부여되지 않습니다. Amazon EC2의 경우 IAM은 EC2 인스턴스에 동적으로 생성되는 임시 자격 증명을 제공하며 이 자격 증명은 자동 교체됩니다.

EC2 인스턴스 실행 시 실행 파라미터로 인스턴스에 대한 역할을 지정할 수 있습니다. EC2 인스턴스에서 실행되는 애플리케이션은 AWS 리소스에 액세스할 때 역할의 자격 증명을 사용할 수 있습니다. 역할의 권한에 따라 애플리케이션에서 수행할 수 있는 작업이 결정됩니다.

자세한 내용은 IAM 역할을 사용하여 Amazon EC2 인스턴스에서 실행되는 애플리케이션에 권한 부여하기 단원을 참조하십시오.

자격 증명을 공유하는 대신 역할을 사용하여 위임

다른 AWS 계정의 사용자에게 AWS 계정의 리소스에 액세스하도록 허용해야 할 수 있습니다. 이 경우에도 다른 계정과 액세스 키와 같은 보안 자격 증명을 공유하지 마십시오. 대신 IAM 역할을 사용하십시오. 역할을 정의하여 다른 계정의 IAM 사용자에게 부여할 권한, 그리고 이 역할을 수임할 IAM 사용자가 속한 AWS 계정을 지정할 수 있습니다.

자세한 내용은 역할 용어 및 개념 단원을 참조하십시오.

자격 증명을 정기적으로 교체

암호와 액세스 키를 정기적으로 교체하고, 계정의 모든 IAM 사용자도 이와 같이 하도록 해야 합니다. 그러면 자신도 모르게 암호 또는 액세스 키가 손상되어도 이 손상된 자격 증명이 리소스 액세스에 사용되는 기간을 줄일 수 있습니다. 계정에 모든 IAM 사용자가 주기적으로 암호를 교체하도록 요구하는 암호 정책을 적용하고, 그 빈도를 선택할 수 있습니다.

계정의 암호 정책 설정에 대한 자세한 내용은 IAM 사용자의 계정 암호 정책 설정 단원을 참조하십시오.

IAM 사용자의 액세스 키 교체에 대한 자세한 내용은 액세스 키 교체(AWS CLI, Windows PowerShell용 도구 및 AWS API) 단원을 참조하십시오.

불필요한 자격 증명 삭제

필요 없는 IAM 사용자 자격 증명(암호 및 액세스 키)은 삭제합니다. 예를 들어 애플리케이션에 사용되는 IAM 사용자에게는 암호가 필요하지 않습니다(암호는 AWS 웹 사이트 로그인 시에만 필요함). 마찬가지로 사용자는 액세스 키가 필요 없으므로 사용자가 액세스 키를 가져야 할 이유가 없습니다.

계정의 모든 IAM 사용자와 암호, 액세스 키, MFA 디바이스를 포함하여 이들의 자격 증명 상태를 나열하는 자격 증명 보고서를 생성하고 다운로드할 수 있습니다. 암호와 액세스 키의 경우 자격 증명 보고서를 통해 언제 마지막으로 자격 증명이 사용되었는지 알 수 있습니다. 최근에 사용된 적이 없는 암호와 액세스 키는 삭제해야 할 자격 증명을 식별하기 위한 좋은 기준이 될 수 있습니다.

IAM 자격 증명 보고서에 대한 자세한 내용은 AWS 계정의 자격 증명 보고서 가져오기 단원을 참조하십시오.

자격 증명 보고서 외에도 다음과 같은 IAM API를 사용하여 암호 또는 액세스 키가 언제 마지막으로 사용되었는지 알 수 있습니다.

보안 강화를 위해 정책 조건 사용

필요할 경우 IAM 정책에서 리소스에 대한 액세스 허용 조건을 정의할 수 있습니다. 예를 들어 요청을 할 수 있는 IP 주소의 범위를 지정하거나, 특정 기간이나 시간 범위 내에서만 요청이 가능하도록 조건을 작성할 수 있습니다. 또한 SSL 또는 MFA(멀티 팩터 인증)를 사용하도록 조건을 설정할 수 있습니다. 예를 들어 MFA 디바이스를 사용하여 인증된 사용자만 Amazon EC2 인스턴스를 종료할 수 있도록 조건을 지정할 수 있습니다.

자세한 내용은 IAM 정책 요소 참조에서 Condition 단원을 참조하십시오.

AWS 계정의 활동 모니터링

AWS의 로깅 기능을 사용하여 사용자가 계정에서 수행한 작업과 사용한 리소스를 확인할 수 있습니다. 로그 파일에는 작업 시간 및 날짜, 작업의 소스 IP, 부족한 권한으로 인해 실패한 작업 등이 나와 있습니다.

로깅 기능은 다음과 같은 AWS 서비스에서 제공됩니다.

  • Amazon CloudFront - CloudFront에서 받는 사용자 요청을 기록합니다. 자세한 내용은 Amazon CloudFront 개발자 안내서액세스 로그를 참조하십시오.

  • AWS CloudTrail - AWS 계정에서 또는 이를 대신하여 수행된 AWS API 호출 및 관련 이벤트를 기록합니다. 자세한 내용은 AWS CloudTrail User Guide 단원을 참조하십시오.

  • Amazon CloudWatch - AWS 클라우드 리소스 및 AWS에서 실행되는 애플리케이션을 모니터링합니다. 정의한 지표에 기반하여 CloudWatch에서 경보를 설정할 수 있습니다. 자세한 내용은 Amazon CloudWatch 사용 설명서를 참조하십시오.

  • AWS Config - IAM 사용자, 그룹, 역할 및 정책 등 AWS 리소스의 구성에 대한 세부적인 기록 정보를 제공합니다. 예를 들어, AWS Config를 사용하여 특정 시점에 사용자 또는 그룹에 속한 권한을 확인할 수 있습니다. 자세한 내용은 AWS Config Developer Guide를 참조하십시오.

  • Amazon Simple Storage Service(Amazon S3) - Amazon S3 버킷에 대한 액세스 요청을 기록합니다. 자세한 정보는 Amazon Simple Storage Service 개발자 가이드에서 서버 액세스 로깅을 참조하십시오.

IAM 모범 사례에 대한 동영상 프레젠테이션

다음 동영상에는 이러한 모범 사례 및 여기서 논의한 기능을 사용하여 작업을 수행하는 방법에 대한 상세 정보를 보여주는 컨퍼런스 프레젠테이션이 포함되어 있습니다.