AWS 보안 감사 지침
AWS 보안 감사 지침
보안 구성을 주기적으로 감사해서 현재 비즈니스 요구사항을 충족하는지 확인하는 것이 좋아요. 감사를 통해 불필요한 IAM 사용자·역할·그룹·정책을 제거하고, 사용자와 소프트웨어에 과도한 권한이 없는지 확인할 수 있습니다.
출처: 문서
본문
다음은 보안 모범 사례에 부합하도록 AWS 리소스를 체계적으로 검토·모니터링하는 방법에 대한 지침입니다.
팁 — IAM 사용을 보안 모범 사례와 연계해 모니터링하려면 AWS Security Hub CSPM을 사용할 수 있어요. Security Hub CSPM은 보안 제어를 사용해 리소스 구성을 평가하고, 다양한 규정 준수 프레임워크를 충족하도록 보안 표준을 검토합니다. Security Hub CSPM으로 IAM 리소스를 평가하는 방법은 AWS Security Hub CSPM 사용자 가이드의 AWS Identity and Access Management 제어를 참고하세요.
언제 보안 감사를 수행해야 하나요?
다음 상황에서 보안 구성을 감사하세요.
- 주기적으로 — 보안 모범 사례로서 이 문서의 절차를 정기적인 간격으로 수행합니다.
- 조직에 변화가 있을 때 — 예를 들어 직원이 퇴사한 경우요.
- 하나 이상의 AWS 서비스 사용을 중단한 경우 — 계정 안의 사용자가 더 이상 필요하지 않은 권한을 제거했는지 확인하기 위해서입니다.
- 계정에 소프트웨어를 추가하거나 제거한 경우 — Amazon EC2 인스턴스의 애플리케이션, OpsWorks 스택, CloudFormation 템플릿 등이 해당합니다.
- 무단으로 계정에 접근한 사람이 있을 것이라고 의심되는 경우.
감사 지침
계정의 보안 구성을 검토할 때 다음 지침을 따르세요.
- 철저하게 — 거의 사용하지 않는 부분까지 보안 구성의 모든 측면을 살펴봅니다.
- 추측하지 말 것 — 보안 구성의 어떤 측면이 낯설다면(예: 특정 정책의 근거, 역할의 존재 이유), 잠재적 위험을 이해할 때까지 비즈니스 필요성을 조사합니다.
- 단순하게 유지 — 감사(및 관리)를 쉽게 하려면 IAM 그룹·IAM 역할, 일관된 이름 규칙, 직관적인 정책을 사용합니다.
AWS 계정 자격 증명 검토
AWS 계정 자격 증명을 감사할 때 다음 단계를 따르세요.
- 사용하지 않는 루트 사용자 액세스 키가 있다면 제거할 수 있어요. 일상적인 AWS 작업에 루트 액세스 키를 사용하지 말고, AWS IAM Identity Center의 사용자처럼 임시 자격 증명을 쓰는 사용자를 사용하길 강력히 권장합니다.
- 계정에 액세스 키가 필요하다면 필요할 때 갱신하세요.
IAM 사용자 검토
기존 IAM 사용자를 감사할 때 다음 단계를 따르세요.
- 사용자 목록을 확인한 뒤, 필요 없는 사용자를 삭제합니다.
- 접근이 필요하지 않은 그룹에서 사용자를 제거합니다.
- 사용자가 속한 그룹에 연결된 정책을 검토합니다. IAM 정책 검토 팁을 참고하세요.
- 사용자가 필요 없거나 노출됐을 수 있는 보안 자격 증명을 삭제합니다. 예를 들어 애플리케이션에 사용되는 IAM 사용자는 암호(AWS 웹사이트 로그인에만 필요)가 필요 없어요. 마찬가지로 액세스 키를 쓰지 않는 사용자가 액세스 키를 가질 이유가 없습니다. 자세한 내용은 IAM 사용자 암호 관리와 IAM 사용자 액세스 키 관리를 참고하세요.
- 계정 안의 모든 IAM 사용자와 각종 자격 증명(암호·액세스 키·MFA 디바이스)의 상태를 나열하는 자격 증명 보고서를 만들어 다운로드할 수 있어요. 암호와 액세스 키의 경우 보고서는 마지막 사용 시각을 보여 줍니다. 최근에 사용되지 않은 자격 증명은 계정에서 제거하는 것을 고려하세요. (비상 접근용 사용자는 제거하지 마세요.) 자세한 내용은 AWS 계정 자격 증명 보고서 가져오기를 참고하세요.
- 장기 자격 증명이 필요한 사용 사례에서는 필요할 때 암호와 액세스 키를 갱신합니다.
- 모범 사례로서, 사람 사용자가 임시 자격 증명을 쓰는 자격 증명 공급자와의 페더레이션으로 AWS에 접근하게 하세요. 가능하면 IAM 사용자에서 페더레이션 주체(IAM Identity Center 사용자 등)로 전환합니다. 애플리케이션에 필요한 최소한의 IAM 사용자만 유지하세요.
IAM 그룹 검토
IAM 그룹을 감사할 때 다음 단계를 따르세요.
- 그룹 목록을 확인한 뒤 사용하지 않는 그룹을 삭제합니다.
- 각 그룹의 사용자를 검토하고, 속하지 않아야 할 사용자를 제거합니다.
- 그룹에 연결된 정책을 검토합니다. IAM 정책 검토 팁을 참고하세요.
IAM 역할 검토
IAM 역할을 감사할 때 다음 단계를 따르세요.
- 역할 목록을 확인한 뒤 사용하지 않는 역할을 삭제합니다.
- 역할의 신뢰 정책을 검토하고, 주체(principal)가 누구인지, 그 계정·사용자가 왜 역할을 수임(assume)할 수 있어야 하는지 이해했는지 확인합니다.
- 역할의 접근 정책을 검토해 역할을 수임하는 사람에게 적절한 권한을 부여하는지 확인합니다. IAM 정책 검토 팁을 참고하세요.
SAML 및 OpenID Connect(OIDC)용 IAM 공급자 검토
SAML 또는 OIDC 자격 증명 공급자(IdP)와의 신뢰 구축을 위해 IAM 엔터티를 만들었다면 다음 단계를 따르세요.
- 사용하지 않는 공급자를 삭제합니다.
- 각 SAML IdP의 AWS 메타데이터 문서를 내려받아 검토하고, 현재 비즈니스 요구사항을 반영하는지 확인합니다.
- SAML IdP에서 최신 메타데이터 문서를 받아 IAM의 공급자를 갱신합니다.
모바일 앱 검토
AWS에 요청을 보내는 모바일 앱을 만들었다면 다음 단계를 따르세요.
- 모바일 앱에 암호화된 저장소에 있더라도 액세스 키가 내장되어 있지 않은지 확인합니다.
- 앱을 위해 그 목적에 맞게 설계된 API를 사용해 임시 자격 증명을 얻습니다.
참고 — 앱에서 사용자 자격 증명을 관리하려면 Amazon Cognito 사용을 권장합니다. 이 서비스는 Login with Amazon, Facebook, Google 또는 OpenID Connect(OIDC) 호환 자격 증명 공급자를 사용해 사용자를 인증할 수 있게 해 줍니다. 자세한 내용은 Amazon Cognito 개발자 가이드의 Amazon Cognito 자격 증명 풀을 참고하세요.
IAM 정책 검토 팁
정책은 강력하면서도 미묘한 도구라서 각 정책이 부여하는 권한을 면밀히 살펴보는 것이 중요해요. 정책을 검토할 때는 다음 지침을 사용하세요.
- 개별 사용자가 아닌 그룹이나 역할에 정책을 연결합니다. 개별 사용자에게 정책이 있으면 그 사용자가 왜 그 정책을 필요로 하는지 이해해야 합니다.
- IAM 사용자·그룹·역할이 필요한 권한만 갖고 추가 권한은 없도록 확인합니다.
- IAM Policy Simulator를 사용해 사용자·그룹에 연결된 정책을 테스트합니다.
- 사용자의 권한은 적용 가능한 모든 정책의 결과라는 점을 기억하세요 — 자격 증명 기반 정책(사용자·그룹·역할에 있음)과 리소스 기반 정책(Amazon S3 버킷, Amazon SQS 대기열, Amazon SNS 주제, AWS KMS 키 같은 리소스에 있음) 모두를 포함합니다. 사용자에게 적용되는 모든 정책을 검토해 개별 사용자에게 부여된 전체 권한 집합을 이해하는 것이 중요합니다.
- 사용자가 IAM 사용자·그룹·역할·정책을 만들고 주체 엔터티에 정책을 연결하도록 허용하는 것은 사실상 그 사용자에게 계정 안의 모든 리소스에 대한 모든 권한을 부여하는 것임을 알아두세요. 정책을 만들어 사용자·그룹·역할에 연결할 수 있는 사용자는 자기 자신에게 어떤 권한이든 부여할 수 있어요. 일반적으로 계정 안의 리소스에 대한 전체 접근을 신뢰하지 않는 사용자·역할에게는 IAM 권한을 부여하지 마세요. 보안 감사 시 다음 IAM 권한이 신뢰하는 자격 증명에만 부여되었는지 확인하세요.
iam:PutGroupPolicyiam:PutRolePolicyiam:PutUserPolicyiam:CreatePolicyiam:CreatePolicyVersioniam:AttachGroupPolicyiam:AttachRolePolicyiam: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/*)를 나타내며, 해당 클래스·경로의 모든 리소스에 접근을 부여하는 것에 익숙한 경우. - 서비스 액션이 리소스 수준 권한을 지원하지 않아 리소스로
*외에 선택지가 없는 경우.
- 정책 이름을 검토해 기능을 반영하는지 확인합니다. 예를 들어 이름에 "read only"가 포함된 정책이 실제로는 쓰기·변경 권한을 부여할 수도 있어요.
보안 감사 계획에 대한 자세한 내용은 AWS Architecture Center의 보안·자격 증명·규정 준수 모범 사례를 참고하세요.