메뉴
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의 보안 자격 증명 페이지에서 계정의 이메일 주소와 암호를 사용하여 로그인합니다. [Access keys] 섹션에서 액세스 키를 관리할 수 있습니다.

  • 다른 사람과 AWS 계정 암호 또는 액세스 키를 공유하지 마십시오. 이 설명서의 나머지 섹션에서 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 사용자의 권한을 변경 또는 취소할 수 있습니다. (루트 사용자 자격 증명을 제공한 후에는 다시 취소하기가 쉽지 않으며 권한을 제한할 수 없습니다.)

참고

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

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

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

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

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

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

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

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

최소 권한 부여

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

최소한의 권한 조합으로 시작하여 필요에 따라 추가 권한을 부여합니다. 처음부터 권한을 많이 부여한 후 나중에 줄이는 방법보다 이 방법이 안전합니다.

적절한 권한 조합을 정하려면 조사를 해야 합니다. 먼저 특정 작업에 필요한 사항이 무엇이고, 특정 서비스에서 어떤 작업을 지원하며 해당 작업을 수행하는 데 필요한 권한은 무엇인지 알아봅니다. 액세스 레벨을 이용해 어떤 권한이 필요한지 판단하려면 액세스 레벨을 이용한 IAM 권한 검토 단원을 참조하십시오.

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

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

액세스 레벨을 이용한 IAM 권한 검토

AWS 계정의 보안을 개선하려면 모든 IAM 정책을 정기적으로 검토하고 모니터링해야 합니다. 정책은 필요한 작업을 수행하는 데 필요한 최소 권한만 부여해야 합니다.

정책을 검토하게 되면, 정책 내 각 서비스에 대한 액세스 레벨의 요약 정보가 수록된 정책 요약을 볼 수 있습니다. AWS는 각 서비스 작업이 수행하는 내용에 따라 각 작업을 네 가지 액세스 레벨, 즉 List, Read, Write, Permissions management 중 하나로 분류합니다. 이러한 액세스 레벨을 사용하여 어떤 작업을 정책에 포함할지 결정할 수 있습니다.

예를 들어 Amazon S3 서비스의 경우, 다수의 사용자가 ListRead 작업에 액세스하도록 허용할 수 있습니다. 이러한 작업은 사용자가 Amazon S3에 버킷을 나열하고 객체를 가져오도록 허용합니다. 하지만 소수의 사용자만 Amazon S3 Write 작업에 액세스하여 버킷을 삭제하거나 S3 버킷에 객체를 넣도록 허용해야 합니다. 또한 권한을 제한하여 관리자만 Amazon S3 Permissions management 작업에 액세스하도록 허용해야 합니다. 그래야 제한된 수의 사람만 Amazon S3에서 버킷 정책을 관리할 수 있습니다. IAM 및 AWS Organizations 서비스의 Permissions management 작업에서는 이 점이 특히 중요합니다.

중요

이러한 액세스 레벨에 따라 정책을 생성하거나 편집하기 전에 각 액세스 레벨의 정의를 검토하십시오. 원하는 작업이 기대했던 방식으로 범주화되도록 하십시오. 각 AWS 액세스 레벨에 대해 자세히 알아보고 특정 서비스의 각 작업 레벨에 속한 작업 목록을 확인하려면 액세스 레벨로 그룹화한 AWS IAM 정책 작업 단원을 참조하십시오.

정책의 액세스 레벨을 보려면 먼저 정책 요약을 찾아야 합니다. 정책 요약에서 관리형 정책에 관한 부분은 [Policies] 페이지에, 사용자에게 연결되는 정책 부분은 [Users] 페이지에 수록됩니다. 자세한 내용은 정책 요약(서비스 목록) 단원을 참조하십시오.

정책 요약의 [Access level] 열에는 정책이 서비스의 네 가지 AWS 액세스 레벨 중 하나 이상에 대해 [Full] 또는 [Limited] 액세스 권한을 제공한다고 표시되어 있습니다. 또는 정책이 서비스 내 모든 작업에 [Full access]를 제공한다고 표시되어 있을 수도 있습니다. 이 [Access level] 열에 수록된 정보를 통해 정책이 제공하는 액세스 레벨을 알 수 있습니다. 그런 다음 AWS 계정을 더 안전하게 사용하기 위한 조치를 취할 수 있습니다. 액세스 레벨 요약에 대한 세부 정보와 예제는 정책 요약에서 액세스 레벨 요약 이해하기 단원을 참조하십시오.

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

사용자가 직접 암호를 변경하도록 허용할 경우 강력한 암호를 만들고 주기적으로 암호를 변경하도록 해야 합니다. 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 사용자에게 어떤 권한이 허용되는지 지정하는 역할을 정의할 수 있습니다. 어떤 AWS 계정에 해당 역할을 수임하도록 허용된 IAM 사용자가 있는지도 지정할 수 있습니다.

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

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

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

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

IAM 사용자의 액세스 키 교체에 대한 자세한 내용은 액세스 키 교체 단원을 참조하십시오.

불필요한 자격 증명 삭제

필요 없는 IAM 사용자 자격 증명(암호 및 액세스 키)은 삭제합니다. 예를 들어 애플리케이션에 사용되는 IAM 사용자에게는 암호가 필요하지 않습니다(암호는 AWS 웹 사이트 로그인 시에만 필요함). 마찬가지로 사용자는 액세스 키가 필요 없으므로 사용자가 액세스 키를 가져야 할 이유가 없습니다. 최근에 사용된 적이 없는 암호와 액세스 키는 삭제해야 할 자격 증명을 식별하기 위한 좋은 기준이 될 수 있습니다. 콘솔이나 API를 사용하여 또는 자격 증명 보고서를 다운로드하여 미사용 암호나 액세스 키를 확인할 수 있습니다.

최근 사용되지 않은 IAM 사용자 자격 증명 확인에 대한 자세한 내용은 미사용 자격 증명 찾기 단원을 참조하십시오.

IAM 사용자의 암호 삭제에 대한 자세한 내용은 IAM 사용자의 암호 관리 단원을 참조하십시오.

IAM 사용자의 액세스 키 비활성화 또는 삭제에 대한 자세한 내용은 IAM 사용자의 액세스 키 관리 단원을 참조하십시오.

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

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

필요할 경우 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 모범 사례에 대한 동영상 프레젠테이션

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