AWS Identity and Access Management
사용 설명서

IAM 모범 사례

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

AWS 계정 루트 사용자 액세스 키 잠금

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

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

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

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

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

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

  • AWS 계정 루트 사용자 계정에서 AWS 멀티 팩터 인증(MFA)을 활성화합니다. 자세한 정보는 AWS에서 멀티 팩터 인증(MFA) 사용하기 단원을 참조하십시오.

개별 IAM 사용자 만들기

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

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

참고

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

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

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

자세한 정보는 다음을 참조하십시오.

최소 권한 부여

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

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

액세스 레벨 그룹화를 사용하면 정책이 부여하는 액세스 레벨을 이해할 수 있습니다. 정책 작업List, Read, Write, Permissions management 또는 Tagging으로 분류됩니다. 예를 들어 ListRead 액세스 레벨에서 작업을 선택하여 사용자에게 읽기 전용 액세스 권한을 부여할 수 있습니다. 정책 요약을 사용하여 액세스 레벨 권한을 이해하는 방법에 대해 알아보려면 액세스 레벨을 이용한 IAM 권한 검토 단원을 참조하십시오.

이 경우 서비스에서 마지막으로 액세스한 데이터가 유용할 수 있습니다. 사용자, 그룹, 역할 또는 정책에 대한 IAM 콘솔 세부 정보 페이지의 액세스 관리자 탭에서 이 데이터를 확인합니다. AWS CLI 또는 AWS API를 사용하여 마지막으로 액세스한 데이터를 검색할 수도 있습니다. 이 데이터에는 사용자, 그룹, 역할 또는 정책을 사용하는 모든 사용자가 액세스를 시도한 서비스 및 그 시기에 대한 정보가 포함됩니다. 이 정보를 사용하여 불필요한 권한을 확인할 수 있으므로 IAM 정책을 미세 조정함으로써 최소 권한의 원칙을 보다 잘 준수할 수 있습니다. 자세한 정보는 서비스에서 마지막으로 액세스한 데이터를 사용하여 권한 줄이기 단원을 참조하십시오.

권한을 더 줄이려면 CloudTrail 이벤트 기록에서 계정의 이벤트를 볼 수 있습니다. CloudTrail 이벤트 로그에는 정책 권한을 줄이기 위해 사용할 수 있는 자세한 이벤트 정보가 포함되어 있으며 IAM 엔터티에 필요한 작업과 리소스만 포함됩니다. 자세한 정보는 AWS CloudTrail 사용 설명서에서 CloudTrail 콘솔에서 CloudTrail 이벤트 보기 단원을 참조하십시오.

자세한 정보는 다음을 참조하십시오.

AWS 관리형 정책으로 권한 사용 시작

직원에게 필요한 권한만 제공하려면 IAM 정책에 대한 시간과 자세한 지식이 필요합니다. 직원들은 필요하거나 사용해야 하는 AWS 서비스를 익힐 시간이 필요합니다. 관리자는 IAM에 대해 배우고 테스트할 시간이 필요합니다.

신속하게 시작하려면 AWS 관리형 정책을 사용하여 직원에게 시작해야 하는 권한을 부여합니다. 이 정책은 이미 계정에서 사용할 수 있으며 AWS에 의해 유지 관리 및 업데이트됩니다. AWS 관리형 정책에 대한 자세한 정보는 AWS 관리형 정책 단원을 참조하십시오.

AWS 관리형 정책은 여러 가지 일반 사용 사례에서 권한을 제공할 목적으로 설계되었습니다. AmazonDynamoDBFullAccessIAMFullAccess와 같은 전체 액세스 AWS 관리형 정책은 서비스에 대한 전체 액세스 권한을 부여하여 서비스 관리자에 대한 권한을 정의합니다. AWSCodeCommitPowerUserAWSKeyManagementServicePowerUser와 같은 파워 사용자 AWS 관리형 정책은 권한 관리 권한을 허용하지 않고 AWS 서비스에 대한 여러 수준의 액세스를 제공합니다. AmazonMobileAnalyticsWriteOnlyAccessAmazonEC2ReadOnlyAccess와 같은 부분 액세스 AWS 관리형 정책은 AWS 서비스에 대한 특정 액세스 수준을 제공합니다. AWS 관리형 정책을 사용하면 정책을 직접 작성하는 것보다 쉽게 사용자, 그룹 및 역할에 적절한 권한을 할당할 수 있습니다.

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

인라인 정책 대신 고객 관리형 정책 사용

사용자 지정 정책의 경우 인라인 정책보다는 관리형 정책의 사용을 권장합니다. 이 정책을 사용하면 콘솔의 한 위치에서 모든 관리형 정책을 볼 수 있다는 이점이 있습니다. 또한 단일 AWS CLI 또는 AWS API 작업으로 이 정보를 볼 수도 있습니다. 인라인 정책은 IAM ID(사용자, 그룹 또는 역할)에만 존재하는 정책입니다. 관리형 정책은 여러 자격 증명에 연결할 수 있는 별도의 IAM 리소스입니다. 자세한 정보는 관리형 정책과 인라인 정책 단원을 참조하십시오.

계정에 인라인 정책이 있는 경우 이를 관리형 정책으로 변환할 수 있습니다. 이렇게 하려면 정책을 새로운 관리형 정책에 복사하고 새 정책을 인라인 정책이 있는 자격 증명에 연결한 다음 인라인 정책을 삭제하십시오. 아래 지침을 사용하여 이 작업을 수행할 수 있습니다.

인라인 정책을 관리형 정책으로 변환하려면

  1. AWS Management 콘솔에 로그인한 다음 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 탐색 창에서 그룹, 사용자 또는 역할을 선택합니다.

  3. 목록에서 제거할 정책이 있는 그룹, 사용자 또는 역할 이름을 선택합니다.

  4. Permissions 탭을 선택합니다. 그룹을 선택한 경우 필요에 따라 Inline Policies(인라인 정책) 섹션을 확장합니다.

  5. 그룹의 경우 제거할 인라인 정책 옆의 정책 표시를 선택합니다. 사용자 및 역할에 대해 필요한 경우 Show n more(n개 더 표시)를 선택한 다음 제거할 인라인 정책 옆에 있는 화살표를 선택합니다.

  6. 정책에 대한 JSON 정책 문서를 복사합니다.

  7. 탐색 창에서 정책을 선택합니다.

  8. 정책 생성을 선택한 후 JSON 탭을 선택합니다.

  9. 기존 텍스트를 JSON 정책 텍스트로 바꾸고 정책 검토를 선택합니다.

  10. 정책 이름을 입력하고 정책 생성을 선택합니다.

  11. 탐색 창에서 그룹, 사용자 또는 역할을 선택한 다음 제거하려는 정책이 있는 그룹, 사용자 또는 역할의 이름을 다시 선택합니다.

  12. 그룹의 경우 정책 연결을 선택합니다. 사용자 및 역할의 경우 권한 추가를 선택합니다.

  13. 그룹에 대해 새 정책 이름 옆의 확인란을 선택한 다음 정책 연결을 선택합니다. 사용자 또는 역할의 경우 권한 추가를 선택합니다. 다음 페이지에서 기존 정책 직접 연결을 선택하고 새 정책 이름 옆의 확인란을 선택한 다음 다음: 검토를 선택하고 권한 추가를 선택합니다.

    그룹, 사용자 또는 역할에 대한 요약 페이지로 돌아갑니다.

  14. 그룹의 경우 제거할 인라인 정책 옆의 정책 제거를 선택합니다. 사용자 또는 역할의 경우 제거할 인라인 정책 옆의 X를 선택합니다.

경우에 따라 관리형 정책에 대한 인라인 정책을 선택하는 것이 좋습니다. 자세한 정보는 관리형 정책과 인라인 정책의 선택 단원을 참조하십시오.

액세스 레벨을 이용한 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 콘솔의 계정 설정 페이지에서 계정 암호 정책을 만들 수 있습니다. 암호 정책을 사용하여 최소 길이, 비 알파벳 문자 포함 여부, 교체 주기 등의 암호 요구 사항을 정의할 수 있습니다.

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

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

보안을 강화하기 위해 중요한 리소스 또는 API 작업에 대해 액세스 권한이 부여된 IAM 사용자에 대해 멀티 팩터 인증(MFA)을 적용합니다. MFA에는 인증 문제에 응답을 생성하는 디바이스가 있습니다. 로그인 과정을 완료하려면 사용자의 자격 증명과 디바이스에서 생성한 응답 두 가지가 모두 필요합니다. 응답은 다음 중 한 가지 방법으로 생성합니다.

  • 가상 및 하드웨어 MFA 디바이스가 코드를 생성하여 앱 또는 디바이스에 보여준 후 로그인 화면에 입력합니다.

  • 사용자가 디바이스를 터치하면 U2F 보안 키가 응답을 생성합니다. 로그인 화면에 사용자가 직접 코드를 입력할 필요가 없습니다.

자세한 정보는 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 사용자가 있는지도 지정할 수 있습니다.

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

액세스 키를 공유하지 마십시오

액세스 키는 AWS으로의 프로그래밍 방식 액세스를 제공합니다. 액세스 키를 암호화되지 않은 코드에 삽입하거나 AWS 계정 사용자 간에 이들 보안 자격 증명을 공유하지 마십시오. AWS로 액세스가 필요한 애플리케이션은 IAM 역할을 사용하여 임시 보안 자격 증명 검색하도록 프로그램을 구성합니다. 사용자별 프로그래밍 액세스를 허용하고자 한다면 개인 액세스 키가 있는 IAM 사용자를 만듭니다.

자세한 정보는 IAM 역할(AWS API)로 전환하기IAM 사용자의 액세스 키 관리을(를) 참조하십시오.

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

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

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

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

불필요한 자격 증명 삭제

필요 없는 IAM 사용자 자격 증명(암호 및 액세스 키)은 삭제합니다. 예를 들어 콘솔을 사용하지 않는 애플리케이션에 대해 IAM 사용자를 생성한 경우 IAM 사용자는 암호가 필요하지 않습니다. 마찬가지로 사용자가 콘솔만 사용하는 경우 액세스 키를 제거하십시오. 최근에 사용된 적이 없는 암호와 액세스 키는 삭제해야 할 자격 증명을 식별하기 위한 좋은 기준이 될 수 있습니다. 콘솔, CLI, API를 사용하여 또는 자격 증명 보고서를 다운로드하여 미사용 암호나 액세스 키를 확인할 수 있습니다.

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

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

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

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

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

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

자세한 정보는 IAM 정책 요소 참조에서 IAM JSON 정책 요소: 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 모범 사례에 대한 동영상 프레젠테이션

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