AWS 보안 감사 지침 - AWS Identity and Access Management

AWS 보안 감사 지침

보안 구성을 정기적으로 감사하여 현재 비즈니스 요구를 충족하는지 확인해야 합니다. 감사를 통해 불필요한 IAM 사용자, 역할, 그룹 및 정책을 제거하고 사용자와 소프트웨어에 과도한 권한이 부여되지 않는지 확인할 수 있습니다.

다음은 보안 모범 사례에 따라 AWS 리소스를 체계적으로 검토 및 모니터링하기 위한 지침입니다.

작은 정보

AWS Security Hub을 사용하여 보안 모범 사례와 관련된 IAM의 사용량을 모니터링하십시오. Security Hub는 보안 제어를 사용하여 리소스 구성 및 보안 표준을 평가하여 다양한 규정 준수 프레임워크를 준수할 수 있도록 지원합니다. Security Hub를 사용하여 IAM 리소스를 평가하는 방법에 대한 자세한 내용은 AWS Security Hub 사용 설명서의 AWS 신원과 액세스 관리 제어를 참조하십시오.

보안 감사를 해야 하는 경우

다음과 같은 경우에 보안 구성을 감사해야 합니다.

  • 주기적으로. 보안을 위한 모범 사례로 이 문서에 설명한 단계를 정기적으로 수행해야 합니다.

  • 조직 내에 변경 사항이 있는 경우(예: 직원 퇴사)

  • 계정의 사용자에게 더 이상 필요하지 않은 권한을 제거했는지 확인하기 위해 개별 AWS 서비스를 한 가지 이상 사용 중단한 경우

  • 계정에서 소프트웨어를 추가하거나 제거한 경우(예: Amazon EC2 인스턴스, AWS OpsWorks 스택, AWS CloudFormation 템플릿 등의 애플리케이션)

  • 권한 없는 사용자가 계정에 액세스한 것으로 의심되는 경우

감사 지침

계정의 보안 구성을 검토할 때 다음 지침을 따르십시오.

  • 철저히. 거의 사용하지 않는 구성을 포함해 보안 구성의 모든 측면을 조사합니다.

  • 가정 금지. 보안 구성의 일부 측면(예: 특정 정책의 배후 추론, 역할의 존재)에 익숙하지 않은 경우 잠재 위험을 이해할 때까지 비즈니스 요구를 조사합니다.

  • 간소화. 감사(및 관리)를 간소화하려면 IAM 그룹, IAM 역할, 일관된 이름 지정 체계 및 간단한 정책을 사용합니다.

AWS 계정 자격 증명 검토

AWS 계정 자격 증명을 감사할 때 다음 단계를 수행합니다.

  1. 사용하지 않는 루트 사용자 액세스 키가 있다면 그 키는 삭제해도 됩니다. 일상적인 AWS 작업에는 루트 액세스 키를 사용하지 않는 것이 좋습니다. 대신 AWS IAM Identity Center의 사용자 같은 임시 보안 인증 정보가 할당된 사용자를 사용합니다.

  2. 계정에 대해 액세스 키가 필요한 경우 필요할 때 해당 키를 업데이트해야 합니다.

IAM 사용자 검토

기존 IAM 사용자를 감사할 때 다음 단계를 수행합니다.

  1. 사용자를 나열한 다음 필요 없는 사용자는 삭제합니다.

  2. 액세스가 필요하지 않은 사용자는 그룹에서 제거합니다.

  3. 사용자가 소속된 그룹에 연결된 정책을 검토합니다. IAM 정책 검토를 위한 팁 섹션을 참조하세요.

  4. 사용자에게 필요하지 않거나 노출된 보안 자격 증명을 삭제합니다. 예를 들어 애플리케이션에 사용되는 IAM 사용자에게는 암호가 필요하지 않습니다(AWS 웹 사이트 로그인 시에만 필요함). 마찬가지로 사용자는 액세스 키가 필요 없는 경우 액세스 키를 가져야 할 이유가 없습니다. 자세한 내용은 IAM 사용자의 암호 관리IAM 사용자의 액세스 키 관리를 참조하세요.

    계정의 모든 IAM 사용자와 해당 사용자의 암호, 액세스 키, MFA 디바이스 등 다양한 자격 증명의 상태를 나열하는 자격 증명 보고서를 생성하고 다운로드할 수 있습니다. 암호와 액세스 키의 경우 보안 인증 정보 보고서를 통해 암호 또는 액세스 키가 마지막으로 사용된 일자와 시각을 알 수 있습니다. 계정에서 최근에 사용하지 않은 보안 인증 정보는 삭제하는 것도 좋습니다. (긴급 액세스 사용자는 제거하지 마세요.) 자세한 내용은 AWS 계정의 보안 인증 보고서 가져오기를 참조하세요.

  5. 장기 보안 인증이 필요한 사용 사례에 필요한 경우 암호 및 액세스 키를 업데이트합니다. 자세한 내용은 IAM 사용자의 암호 관리IAM 사용자의 액세스 키 관리를 참조하세요.

  6. 가장 좋은 방법은 인간 사용자가 ID 제공업체와의 페더레이션을 사용하여 임시 보안 인증으로 AWS에 액세스하도록 하는 것입니다. 가능하면 IAM 사용자에서 페더레이션 사용자(예: IAM Identity Center 사용자)로 전환하십시오. 애플리케이션에 필요한 최소 IAM 사용자 수를 유지하십시오.

IAM 그룹 검토

IAM 그룹을 감사할 때 다음 단계를 수행합니다.

  1. 그룹을 나열한 다음 사용하지 않는 그룹을 삭제합니다.

  2. 각 그룹의 사용자를 검토하고 소속되지 않은 사용자를 제거합니다.

  3. 그룹에 연결된 정책을 검토합니다. IAM 정책 검토를 위한 팁 섹션을 참조하세요.

IAM 역할 검토

IAM 역할을 감사할 때 다음 단계를 수행합니다.

  1. 역할을 나열한 다음 사용하지 않는 역할을 삭제합니다.

  2. 역할의 신뢰 정책을 검토합니다. 주체가 누구이고 계정 또는 사용자가 역할을 수임할 수 있어야 하는 이유를 이해해야 합니다.

  3. 역할에 대한 액세스 정책을 검토하여 역할을 수임하는 사용자에게 적절한 권한을 부여했는지 확인합니다. IAM 정책 검토를 위한 팁 단원을 참조하십시오.

SAML 및 OpenID Connect(OIDC)에 대한 IAM 공급자 검토

SAML 또는 OIDC ID 제공업체(IdP)와의 신뢰를 구축하기 위해 IAM 엔터티를 만든 경우 다음 단계를 수행합니다.

  1. 미사용 공급자를 삭제합니다.

  2. 각 SAML IdP에 대한 AWS 메타데이터 문서를 다운로드하여 검토하고 문서에 최신 비즈니스 요구 사항이 반영되어 있는지 확인합니다.

  3. SAML IdP에서 최신 메타데이터 문서를 가져온 다음 IAM에서 공급자를 업데이트합니다.

모바일 앱 검토

AWS에 요청하는 모바일 앱을 만든 경우 다음 단계를 수행하십시오.

  1. 암호화된 스토리지를 포함하여 모바일 앱에 포함된 액세스 키가 있는지 확인합니다.

  2. 해당 목적으로 설계된 API를 사용하여 앱에 대한 임시 보안 인증 정보를 얻습니다.

참고

Amazon Cognito를 사용하여 앱에서 사용자 자격 증명을 관리하는 것이 좋습니다. 이 서비스를 사용하면 Login with Amazon, Facebook, Google 또는 OpenID Connect(OIDC) 호환 자격 증명 공급자를 통해 사용자를 인증할 수 있습니다. 자세한 내용은 Amazon Cognito 개발자 안내서Amazon Cognito 자격 증명 풀을 참조하세요.

IAM 정책 검토를 위한 팁

정책은 강력하고 세부적이므로 각 정책에 부여되는 권한을 조사하여 이해하는 것이 중요합니다. 정책을 검토할 때 다음 지침을 사용합니다.

  • 개별 사용자가 아니라 그룹 또는 역할에 정책을 연결합니다. 개별 사용자가 정책이 있는 경우 해당 사용자가 정책을 필요로 하는 이유를 이해해야 합니다.

  • IAM 사용자, 그룹 및 역할에 필요한 권한이 있고 추가 권한이 없는지 확인하십시오.

  • IAM 정책 시뮬레이터를 사용하여 사용자 또는 그룹에 연결되는 정책을 테스트합니다.

  • 사용자의 권한은 해당하는 모든 정책, 즉 아이덴티티 기반 정책(사용자, 그룹, 역할)과 리소스 기반 정책(Amazon S3 버킷, Amazon SQS 대기열, Amazon SNS 주제, AWS KMS 키 등 리소스에 관한 정책) 모두의 결과입니다. 사용자에게 적용되는 모든 정책을 검사하여 개별 사용자에게 부여된 전체 권한을 이해하는 것이 중요합니다.

  • 사용자가 IAM 사용자, 그룹, 역할 또는 정책을 생성하고 정책을 주체 엔터티에 연결할 수 있도록 허용하여 해당 사용자에게 계정의 모든 리소스에 대한 모든 권한을 효율적으로 부여할 수 있습니다. 정책을 생성하여 사용자, 그룹 또는 역할에 연결할 수 있도록 허용된 사용자는 스스로 모든 권한을 부여할 수 있습니다. 일반적으로 계정의 리소스에 대한 모든 액세스 권한을 가진 신뢰할 수 없는 사용자 또는 역할에는 IAM 권한을 부여하지 않습니다. 보안 감사를 수행할 때 신뢰할 수 있는 ID에 다음 IAM 권한이 부여되었는지 확인하십시오.

    • iam:PutGroupPolicy

    • iam:PutRolePolicy

    • iam:PutUserPolicy

    • iam:CreatePolicy

    • iam:CreatePolicyVersion

    • iam:AttachGroupPolicy

    • iam:AttachRolePolicy

    • iam:AttachUserPolicy

  • 정책에서 사용되지 않는 서비스에 대한 권한을 부여하지 않는지 확인합니다. 예를 들어, AWS 관리형 정책을 사용하는 경우 계정에서 사용 중인 AWS 관리형 정책이 실제로 사용하는 서비스에 대한 정책인지를 확인합니다. AWS 관리형 정책이 계정에서 사용 중인지 확인하려면 IAM GetAccountAuthorizationDetails API(AWS CLI 명령: aws iam get-account-authorization-details)를 사용합니다.

  • 정책에서 사용자에게 Amazon EC2 인스턴스를 시작할 수 있는 권한을 부여할 경우 iam:PassRole 작업도 허용할 수 있습니다. 하지만 그럴 경우 사용자가 Amazon EC2 인스턴스에 전달할 수 있는 역할을 명시적으로 나열해야 합니다.

  • *이 들어 있는 Action 또는 Resource 요소에 대한 값을 면밀히 검토합니다. 가능하면 사용자에게 필요한 개별 작업 및 리소스에 대해 Allow 액세스 권한을 부여하세요. 정책에서 *를 사용하는 것이 적합한 이유는 다음과 같습니다.

    • 정책은 관리 수준 권한을 부여하도록 설계되었습니다.

    • 와일드카드 문자는 비슷한 작업(예: Describe*)에 사용되며 이러한 방법으로 참조되는 전체 작업 목록에 익숙해지면 편리합니다.

    • 와일드카드 문자는 리소스 클래스 또는 리소스 경로(예: arn:aws:iam::account-id:users/division_abc/*)를 나타내는 데 사용되며 해당 클래스 또는 경로에 속하는 모든 리소스에 편리하게 액세스 권한을 부여할 수 있습니다.

    • 서비스 작업에서는 리소스 수준 권한을 지원하지 않습니다. 리소스에는 *만 사용할 수 있습니다.

  • 정책 이름을 검사하여 정책의 기능이 반영되어 있는지 확인합니다. 예를 들어, 정책 이름에 "읽기 전용"이 포함되어 있지만 실제로 정책에서는 쓰기 또는 변경 권한을 부여할 수도 있습니다.

보안 감사 계획에 대한 자세한 내용은 AWS 아키텍처 센터보안, 자격 증명 및 규정 준수를 위한 모범 사례를 참조하세요.