IAM의 보안 모범 사례 - AWS Identity and Access Management

IAM의 보안 모범 사례

AWS Identity and Access Management 모범 사례는 2022년 7월 14일에 업데이트되었습니다.

AWS 리소스를 보호하려면 AWS Identity and Access Management(IAM)에 대한 다음 모범 사례를 따르세요.

임시 보안 인증을 사용하여 AWS에 액세스하려면 인간 사용자가 ID 공급자와의 페더레이션을 사용하도록 요구합니다.

인간 사용자(인간 ID라고도 함)는 애플리케이션의 사용자, 관리자, 개발자, 운영자 및 소비자입니다. AWS 환경 및 애플리케이션에 액세스하려면 ID가 있어야 합니다. 조직의 구성원인 인간 사용자는 작업 인력 ID라고도 합니다. 인간 사용자는 여러분과 협업하고 AWS 리소스와 상호 작용하는 외부 사용자일 수도 있습니다. 인간 사용자는 웹 브라우저, 클라이언트 애플리케이션, 모바일 앱 또는 대화형 명령줄 도구를 통해 이렇게 할 수 있습니다.

AWS에 액세스할 때 인간 사용자에게 임시 보안 인증을 사용하도록 요구합니다. 임시 보안 인증을 제공하는 역할을 가정하여 인간 사용자가 AWS 계정에 페더레이션 액세스를 제공하도록 ID 공급자를 사용할 수 있습니다. 중앙 액세스 관리를 위해 AWS IAM Identity Center (successor to AWS Single Sign-On)(IAM Identity Center)를 사용하여 계정에 대한 액세스 권한과 해당 계정 내 권한을 관리하는 것이 좋습니다. IAM Identity Center를 사용하여 사용자 자격 증명을 관리하거나 외부 자격 증명 공급자의 IAM Identity Center에서 사용자 자격 증명에 대한 액세스 권한을 관리할 수 있습니다. 자세한 내용은 AWS IAM Identity Center (successor to AWS Single Sign-On) 사용 설명서에서 AWS IAM Identity Center (successor to AWS Single Sign-On)란 무엇입니까? 섹션을 참조하세요.

역할에 대한 자세한 내용은 역할 용어 및 개념 섹션을 참조하세요.

AWS에 액세스하려면 워크로드에 IAM 역할이 있는 임시 자격 증명을 사용하도록 요구합니다.

워크로드란 애플리케이션이나 백엔드 프로세스같이 비즈니스 가치를 창출하는 리소스 및 코드 모음을 말합니다. 워크로드에는 AWS 서비스에 요청하기 위해 자격 증명이 필요한 애플리케이션, 운영 도구 및 구성 요소가 있을 수 있습니다(예: 데이터 읽기 요청). 이러한 자격 증명에는 AWS 환경에서 실행되는 컴퓨터가 포함됩니다(예: Amazon EC2 인스턴스 또는 AWS Lambda 함수).

또한 액세스 권한이 필요한 외부 당사자를 위해 시스템 자격 증명을 관리할 수도 있습니다. 시스템 자격 증명에 대한 액세스 권한을 부여하기 위해 IAM 역할을 사용할 수 있습니다. IAM 역할에는 특정 권한이 있으며 역할 세션과 함께 임시 보안 인증을 사용하여 AWS에 대한 액세스 방법을 제공합니다. 또한 AWS 외부에 AWS 환경에 대한 액세스 권한이 필요한 시스템이 있을 수 있습니다. AWS 외부에서 실행되는 시스템의 경우 AWS Identity and Access Management Roles Anywhere를 사용할 수 있습니다. 역할에 대한 자세한 내용은 IAM 역할 섹션을 참조하세요. 역할을 사용하여 AWS 계정 전체에서 액세스 권한을 위임하는 방법에 대한 자세한 내용은 튜토리얼: IAM 역할을 사용한 AWS 계정 간 액세스 권한 위임 섹션을 참조하세요.

다중 인증(MFA) 필요

임시 보안 인증을 사용할 수 있도록 AWS 리소스에 액세스하는 인간 사용자 및 워크로드에는 IAM 역할을 사용하는 것이 좋습니다. 하지만 계정에 IAM 또는 루트 사용자가 필요한 시나리오의 경우 추가 보안을 위해 MFA가 필요합니다. MFA에는 인증 문제에 응답을 생성하는 디바이스가 있습니다. 로그인 과정을 완료하려면 각 사용자의 보안 인증과 디바이스에서 생성한 응답이 필요합니다. 자세한 내용은 AWS에서 멀티 팩터 인증(MFA) 사용 섹션을 참조하세요.

인간 사용자에 대한 중앙 집중식 액세스 관리에 IAM Identity Center를 사용하는 경우 자격 증명 소스가 IAM Identity Center 자격 증명 스토어, AWS 관리형 Microsoft AD 또는 AD Connector와 함께 구성되면 IAM Identity Center MFA 기능을 사용할 수 있습니다. IAM Identity Center의 MFA에 관한 자세한 내용은 AWS IAM Identity Center (successor to AWS Single Sign-On) 사용 설명서에서 다중 인증을 참조하세요.

장기 보안 인증이 필요한 사용 사례의 경우 정기적으로 액세스 키 교체

가능하면 액세스 키와 같은 장기 자격 증명을 만드는 대신 임시 보안 인증을 사용하는 것이 좋습니다. 하지만 프로그래밍 방식 액세스 권한과 장기 보안 인증이 있는 IAM 사용자가 필요한 시나리오의 경우 액세스 키를 교체하는 것이 좋습니다. 장기 보안 인증을 정기적으로 교체하면 프로세스에 익숙해지는 데 도움이 됩니다. 이는 직원이 퇴사할 때와 같이 보안 인증을 교체해야 하는 상황에 유용합니다. IAM 액세스에서 마지막으로 사용한 정보를 사용하여 액세스 키를 안전하게 교체 및 제거하는 것이 좋습니다. 자세한 내용은 액세스 키 교체 섹션을 참조하세요.

AWS에서 IAM 사용자의 장기 보안 인증이 필요한 특정 사용 사례가 있습니다. 일부 사용 사례는 다음과 같습니다.

  • IAM 역할을 사용할 수 없는 프로그래밍 방식 사용 사례 – AWS에 액세스해야 하는 위치에서 코드를 실행할 수 있습니다. 일부 상황에서는 예를 들어, WordPress 플러그인에 대한 임시 보안 인증을 제공하기 위해 IAM 역할을 사용할 수 없습니다. 이러한 상황에서는 해당 코드에 IAM 사용자 장기 액세스 키를 사용하여 AWS에 대해 인증합니다.

  • 타사 AWS 클라이언트 – IAM Identity Center를 사용한 액세스를 지원하지 않는 도구를 사용하는 경우(예: AWS에서 호스팅되지 않은 타사 AWS 클라이언트 또는 공급업체) IAM 사용자 장기 액세스 키를 사용합니다.

  • AWS CodeCommit 액세스 – CodeCommit을 사용하여 코드를 저장하는 경우 CodeCommit에 대한 SSH 키 또는 서비스별 보안 인증이 있는 IAM 사용자를 사용하여 리포지토리를 인증할 수 있습니다. 일반 인증에 IAM Identity Center 사용자를 사용하는 것 외에 이렇게 하는 것이 좋습니다. IAM Identity Center 사용자는 AWS 계정 또는 클라우드 애플리케이션에 대한 액세스 권한이 필요한 인력의 사용자입니다. IAM 사용자를 구성하지 않고 CodeCommit 리포지토리에 대한 액세스 권한을 사용자에게 부여하기 위해 git-remote-codecommit 유틸리티를 구성할 수 있습니다. IAM 및 CodeCommit에 대한 자세한 내용은 IAM과 CodeCommit을 함께 사용: Git 자격 증명, SSH 키 및 AWS 액세스 키 섹션을 참조하세요. git-remote-codecommit 유틸리티 구성에 대한 자세한 내용은 AWS CodeCommit 사용 설명서보안 인증을 교체하여 AWS CodeCommit 리포지토리에 연결을 참조하세요.

  • Amazon Keyspaces(Apache Cassandra용) 액세스 – IAM Identity Center 사용자를 사용할 수 없는 상황(예: Cassandra 호환성 테스트 목적)의 경우 서비스별 보안 인증이 있는 IAM 사용자를 사용하여 Amazon Keyspaces로 인증할 수 있습니다. IAM Identity Center 사용자는 AWS 계정 또는 클라우드 애플리케이션에 대한 액세스 권한이 필요한 인력의 사용자입니다. 임시 보안 인증을 사용하여 Amazon Keyspaces 연결할 수도 있습니다. 자세한 내용은 Amazon Keyspaces(Apache Cassandra용) 개발자 안내서임시 보안 인증과 IAM 역할 및 SigV4 플러그인을 사용하여 Amazon Keyspaces에 연결을 참조하세요.

루트 사용자 보안 인증을 보호하고 일상적인 작업에 사용하지 마세요.

AWS 계정을(를) 생성할 때 AWS Management Console에 로그인하기 위한 루트 사용자 이름과 암호를 설정합니다. 다른 민감한 개인 정보를 보호하는 것과 같은 방식으로 루트 사용자 보안 인증을 보호합니다. 루트 사용자 보안 인증에 대해 MFA를 구성하여 이렇게 할 수 있습니다. 루트 사용자에 대한 액세스 키는 결제 정보를 비롯하여 모든 AWS 서비스에 대한 리소스 전체에 대한 액세스 권한을 부여하기 때문에 액세스 키 생성은 권장하지 않습니다. 일상적인 작업에 루트 사용자를 사용하지 마세요. 루트 사용자는 루트 사용자만 수행할 수 있는 작업을 완료하는 데 사용합니다. 이러한 작업의 전체 목록은 AWS 일반 참조루트 사용자 보안 인증이 필요한 작업을 참조하세요, 자세한 내용은 AWS Account Management 사용 설명서계정의 루트 사용자를 보호하기 위한 모범 사례를 참조하세요.

최소 권한 젹용

IAM 정책을 사용하여 권한을 설정하는 경우 작업을 수행하는 데 필요한 권한만 부여합니다. 이렇게 하려면 최소 권한으로 알려진 특정 조건에서 특정 리소스에 대해 수행할 수 있는 작업을 정의합니다. 워크로드 또는 사용 사례에 필요한 권한을 탐색하는 동안 광범위한 권한으로 시작할 수 있습니다. 사용 사례가 발전함에 따라 최소 권한을 향해 나아가도록 부여하는 권한을 줄이기 위해 노력할 수 있습니다. IAM을 사용하여 권한 적용에 대한 자세한 내용은 IAM의 정책 및 권한 섹션을 참조하세요.

AWS 관리형 정책으로 시작하고 최소 권한을 향해 나아갑니다.

사용자 및 워크로드에 권한 부여를 시작하려면 많은 일반 사용 사례에 대한 권한을 부여하는 AWS 관리형 정책을 사용합니다. 관리형 정책은 AWS 계정에서 사용할 수 있습니다. AWS 관리형 정책은 모든 AWS 고객이 사용할 수 있기 때문에 특정 사용 사례에 대해 최소 권한을 부여하지 않을 수 있습니다. 따라서 사용 사례에 고유한 고객 관리형 정책을 정의하여 권한을 줄이는 것이 좋습니다. 자세한 내용은 AWS 관리형 정책 섹션을 참조하세요. 특정 작업 기능을 위해 설계된 AWS 관리형 정책에 대한 자세한 내용은 직무에 관한 AWS 관리형 정책 섹션을 참조하세요.

IAM 액세스 분석기를 사용하여 액세스 활동을 기반으로 최소 권한 정책 생성

작업을 수행하는 데 필요한 권한만 부여하기 위해 AWS CloudTrail에 로깅된 액세스 활동에 따라 정책을 생성할 수 있습니다. IAM Access Analyzer는 IAM 역할이 사용하는 서비스와 작업을 분석한 다음 사용할 수 있는 세분화된 정책을 생성합니다. 생성된 각 정책을 테스트한 후 프로덕션 환경에 해당 정책을 배포할 수 있습니다. 이렇게 하면 워크로드에 필요한 권한만 부여할 수 있습니다. 정책 생성에 대한 자세한 내용은 IAM Access Analyzer 정책 생성을 참조하세요.

사용하지 않는 사용자, 역할, 권한, 정책 및 보안 인증은 정기적으로 검토하고 제거합니다.

AWS 계정에서 더 이상 필요하지 않은 IAM 사용자, 역할, 권한, 정책 또는 자격 증명이 있을 수 있습니다. IAM에서는 마지막으로 액세스한 정보를 제공하여 더 이상 필요하지 않은 사용자, 역할, 권한, 정책 및 자격 증명을 식별하여 제거할 수 있도록 도와줍니다. 이렇게 하면 모니터링해야 하는 사용자, 역할, 권한, 정책 및 보안 인증의 수를 줄일 수 있습니다. 이 정보를 사용하여 최소 권한을 더욱 철저하게 준수하도록 IAM 정책을 구체화할 수 있습니다. 자세한 내용은 마지막으로 액세스한 정보를 사용하여 AWS에서의 권한 재정의 섹션을 참조하세요.

IAM 정책의 조건을 사용하여 액세스 추가 제한

정책 명령문 적용 조건을 지정할 수 있습니다. 이렇게 하면 작업 및 리소스에 대한 액세스 권한을 부여할 수 있지만 액세스 요청이 특정 조건을 충족하는 경우에만 가능합니다. 예를 들어 SSL을 사용하여 모든 요청을 전송해야 한다고 지정하는 정책 조건을 작성할 수 있습니다. 조건을 사용하여 서비스 작업에 대한 액세스 권한을 부여할 수도 있지만 특정 AWS 서비스(예: AWS CloudFormation)를 통해 사용되는 경우에만 서비스 작업에 대한 액세스 권한을 부여할 수 있습니다. 자세한 내용은 IAM JSON 정책 요소: Condition 섹션을 참조하세요.

IAM Access Analyzer를 사용하여 리소스에 대한 퍼블릭 및 크로스 계정 액세스 확인

AWS에서 퍼블릭 또는 크로스 계정 액세스에 대한 권한을 부여하기 전에 해당 액세스 권한이 필요한지 여부를 확인하는 것이 좋습니다. IAM Access Analyzer를 사용하면 지원되는 리소스 유형에 대한 퍼블릭 및 크로스 계정 액세스를 미리 보고 분석할 수 있습니다. IAM Access Analyzer에서 생성하는 결과를 검토하여 이렇게 할 수 있습니다. 이러한 결과는 리소스 액세스 제어가 예상한 액세스 권한을 부여하는지 확인하는 데 도움이 됩니다. 또한 퍼블릭 및 크로스 계정 권한을 업데이트할 때 리소스에 대한 새로운 액세스 제어를 배포하기 전에 변경 사항의 영향을 확인할 수 있습니다. 또한 IAM Access Analyzer는 지원되는 리소스 유형을 지속적으로 모니터링하고 퍼블릭 또는 교차 계정 액세스를 허용하는 리소스에 대한 결과를 생성합니다. 자세한 내용은 IAM Access Analyzer API를 사용하여 액세스 미리 보기를 참조하세요.

IAM Access Analyzer를 사용하여 IAM 정책을 검증하여 안전하고 기능적인 권한을 보장합니다.

생성한 정책을 검증하여 IAM 정책 언어(JSON) 및 IAM 모범 사례를 준수하는지 확인합니다. IAM Access Analyzer 정책 검증을 사용하여 정책을 검증할 수 있습니다. IAM Access Analyzer는 100개 이상의 정책 확인 항목과 실행 가능한 권장 사항을 제공하여 안전하고 기능적인 정책을 작성하도록 돕습니다. 콘솔에서 새 정책을 작성하거나 기존 정책을 편집할 때 IAM Access Analyzer는 정책을 저장하기 전에 정책을 구체화하고 검증하는 데 도움이 되는 권장 사항을 제공합니다. 또한 기존 정책을 모두 검토하고 검증하는 것이 좋습니다. 자세한 내용은 IAM Access Analyzer 정책 검증을 참조하세요. IAM Access Analyzer가 제공하는 정책 확인 사항에 대한 자세한 내용은 IAM Access Analyzer 정책 확인 참조를 참조하세요.

여러 계정에 권한 가드레일 설정

워크로드를 확장할 때 AWS Organizations에서 관리하는 여러 계정을 사용하여 워크로드를 분리합니다. Organizations 서비스 제어 정책(SCP)을 사용하여 계정 전체의 모든 IAM 사용자 및 역할에 대한 액세스를 제어하는 권한 가드레일을 설정합니다. SCP는 AWS 조직, OU 또는 계정 수준에서 조직의 권한을 관리하는 데 사용할 수 있는 조직 정책 유형입니다. 설정한 권한 가드레일은 해당 계정 내의 모든 사용자 및 역할에 적용됩니다. 그러나 SCP만으로는 조직 내 계정에 권한을 부여하기에 충분하지 않습니다. 이렇게 하려면 관리자는 실제로 권한을 부여하기 위해 여전히 자격 증명 기반 또는 리소스 기반 정책을 IAM 사용자, IAM 역할 또는 계정의 리소스에 연결해야 합니다. 자세한 내용은 AWS Organizations, 계정 및 IAM 가드레일을 참조하세요.

권한 경계를 사용하여 계정 내에서 권한 관리 위임

일부 시나리오에서는 한 계정 내의 권한 관리를 다른 사용자에게 위임하려고 할 수 있습니다. 예를 들어 개발자가 워크로드에 대한 역할을 만들고 관리하도록 허용할 수 있습니다. 다른 사람에게 권한을 위임하는 경우 권한 경계를 사용하여 위임하는 최대 권한을 설정합니다. 권한 경계는 관리형 정책을 사용하여 자격 증명 기반 정책을 통해 IAM 역할에 부여할 수 있는 최대 권한을 설정하는 고급 기능입니다. 권한 경계는 자신에게는 권한을 부여하지 않습니다. 자세한 내용은 IAM 엔터티의 권한 범위 섹션을 참조하세요.