클라우드 보안 체크리스트
클라우드 환경(AWS/GCP/Azure)의 보안 설정을 점검하세요. · 2025.02 기준
AWS 루트 계정(또는 Azure/GCP 최고 관리자 계정)은 일상 업무에 사용하지 않아야 합니다. 루트 계정은 별도의 MFA를 설정하고, 접근 키를 삭제하며, 긴급 상황에서만 사용하도록 제한해야 합니다.
콘솔에 접근하는 모든 IAM 사용자에게 다중 인증(MFA)을 필수로 적용해야 합니다. 하드웨어 토큰 또는 가상 MFA 디바이스(Google Authenticator 등)를 사용하며, 특히 관리자 권한을 가진 계정에는 반드시 적용해야 합니다.
각 IAM 사용자, 그룹, 역할에는 업무 수행에 필요한 최소한의 권한만 부여해야 합니다. 와일드카드(*) 권한 사용을 지양하고, 리소스 단위로 세분화된 정책을 적용해야 합니다.
IAM 사용자의 액세스 키와 서비스 계정 키는 90일 이내 주기적으로 교체해야 합니다. 오래된 액세스 키는 비활성화 후 삭제하고, 가능한 경우 임시 자격 증명(STS AssumeRole)을 사용해야 합니다.
90일 이상 미사용된 IAM 사용자, 역할, 정책을 정기적으로 식별하고 비활성화 또는 삭제해야 합니다. 퇴사자 계정, 프로젝트 종료 후 불필요한 서비스 계정도 즉시 정리해야 합니다.
멀티 계정 환경에서 교차 계정 접근은 IAM 역할 기반으로 설정하고, 신뢰 정책(Trust Policy)에서 허용 계정을 명시적으로 지정해야 합니다. 외부 ID(External ID) 조건을 활용하여 혼동된 대리인 공격을 방지해야 합니다.
IAM 비밀번호 정책에서 최소 길이 14자 이상, 대소문자/숫자/특수문자 조합 요구, 비밀번호 재사용 방지(최근 24개), 만료 기간(90일) 등을 설정해야 합니다.
모든 S3 버킷에 퍼블릭 액세스 차단 설정(Block Public Access)을 활성화해야 합니다. 계정 수준 및 개별 버킷 수준 모두에서 퍼블릭 ACL, 퍼블릭 버킷 정책을 차단하는 4가지 옵션을 모두 활성화해야 합니다.
S3 버킷, EBS 볼륨, RDS 인스턴스 등 모든 스토리지 서비스에 저장 시 암호화(Server-Side Encryption)를 적용해야 합니다. AWS KMS 관리형 키(SSE-KMS) 또는 고객 관리형 키(CMK)를 사용하여 암호화 수준을 강화해야 합니다.
중요 데이터를 저장하는 S3 버킷에는 버전 관리(Versioning)를 활성화하여 실수로 인한 삭제나 덮어쓰기로부터 데이터를 보호해야 합니다. MFA Delete를 함께 설정하여 무단 삭제를 방지해야 합니다.
S3 서버 액세스 로깅 또는 CloudTrail 데이터 이벤트를 활성화하여 버킷에 대한 모든 접근 기록을 남겨야 합니다. 로그 버킷은 별도로 분리하고 변경 불가능하도록 설정해야 합니다.
불필요한 데이터의 자동 삭제 및 비용 절감을 위해 스토리지 수명 주기(Lifecycle) 정책을 설정해야 합니다. 오래된 객체는 저비용 스토리지 클래스로 전환하고, 보존 기간이 만료된 데이터는 자동 삭제되도록 구성해야 합니다.
S3 버킷 정책에서 불필요한 와일드카드 Principal("*")을 제거하고, 필요한 계정/역할에만 접근을 허용해야 합니다. ACL 대신 버킷 정책과 IAM 정책을 사용하여 접근을 제어하고, ACL 비활성화(Bucket Owner Enforced)를 권장합니다.
S3 버킷 정책에 aws:SecureTransport 조건을 추가하여 HTTPS를 통한 접근만 허용해야 합니다. HTTP를 통한 평문 전송을 차단하여 전송 중 데이터 가로채기를 방지해야 합니다.
프로덕션, 스테이징, 개발 환경을 별도의 VPC로 분리하고, 퍼블릭/프라이빗 서브넷을 적절히 구성해야 합니다. 데이터베이스와 내부 서비스는 프라이빗 서브넷에 배치하여 인터넷에서 직접 접근할 수 없도록 해야 합니다.
보안 그룹(Security Group)의 인바운드 규칙에서 0.0.0.0/0으로 열린 포트를 최소화해야 합니다. SSH(22), RDP(3389) 포트는 특정 IP 대역으로 제한하고, 불필요한 포트는 모두 차단해야 합니다.
서브넷 수준의 추가 방화벽으로 네트워크 ACL을 설정하여 보안 그룹과 함께 이중 방어 체계를 구축해야 합니다. 허용 규칙과 거부 규칙을 명확히 정의하고, 기본 NACL의 규칙을 검토해야 합니다.
모든 VPC에 Flow Logs를 활성화하여 네트워크 트래픽을 기록하고 분석할 수 있어야 합니다. 거부된 트래픽 로그를 통해 비정상 접근 시도를 탐지하고, CloudWatch 또는 S3로 로그를 전송하여 장기 보관해야 합니다.
인스턴스에 퍼블릭 IP를 직접 할당하는 것을 지양하고, 필요한 경우 Elastic IP를 사용해야 합니다. 외부 접근이 필요한 서비스는 로드 밸런서(ALB/NLB)를 통해 노출하고, NAT Gateway를 사용하여 프라이빗 인스턴스의 아웃바운드만 허용해야 합니다.
Route 53에 DNSSEC를 적용하고, AWS Shield Advanced를 활성화하여 DDoS 공격에 대비해야 합니다. CloudFront와 WAF를 함께 사용하여 애플리케이션 계층 공격을 방어하고, Rate Limiting 규칙을 설정해야 합니다.
온프레미스와 클라우드 간 통신은 Site-to-Site VPN 또는 AWS Direct Connect를 사용하여 암호화된 전용 연결을 구성해야 합니다. VPN 터널의 암호화 알고리즘과 키 교환 방식이 최신 보안 기준을 충족하는지 확인해야 합니다.
AWS CloudTrail을 모든 리전에서 활성화하여 API 호출 기록을 수집해야 합니다. 관리 이벤트와 데이터 이벤트를 모두 기록하고, 로그 파일 무결성 검증(Log File Validation)을 활성화하여 로그 변조를 방지해야 합니다.
루트 계정 로그인, 콘솔 로그인 실패, IAM 정책 변경, 보안 그룹 변경, NACL 변경, S3 버킷 정책 변경 등 주요 보안 이벤트에 대해 CloudWatch 경보를 설정하고 SNS를 통한 즉시 알림을 구성해야 합니다.
Amazon GuardDuty를 활성화하여 악성 IP 통신, 암호화폐 마이닝, IAM 자격 증명 유출 등 지능형 위협을 자동으로 탐지해야 합니다. 모든 리전 및 계정에서 활성화하고, 발견 사항에 대한 대응 프로세스를 수립해야 합니다.
모든 클라우드 서비스의 로그를 중앙 로그 계정 또는 SIEM(Security Information and Event Management) 시스템으로 수집해야 합니다. CloudWatch Logs, VPC Flow Logs, ELB 로그, WAF 로그 등을 통합하여 상관 분석이 가능하도록 해야 합니다.
AWS Config를 활성화하여 리소스 구성 변경을 추적하고, 관리형/커스텀 규칙을 통해 보안 정책 위반을 자동으로 탐지해야 합니다. 비준수 리소스에 대한 자동 교정(Remediation) 액션을 설정하여 신속하게 대응해야 합니다.
AWS Budgets 또는 Cost Anomaly Detection을 설정하여 비정상적인 비용 증가를 탐지해야 합니다. 암호화폐 마이닝이나 리소스 남용 등의 보안 사고는 비용 급증으로 먼저 발견되는 경우가 많으므로 비용 모니터링도 보안의 일부입니다.
보안 사고 발생 시 대응 절차를 문서화한 인시던트 대응 플레이북을 수립해야 합니다. 자격 증명 유출, 데이터 침해, 랜섬웨어 등 시나리오별 대응 절차와 담당자를 명시하고, 정기적으로 모의 훈련을 실시해야 합니다.
모든 EC2 인스턴스에서 인스턴스 메타데이터 서비스 v2(IMDSv2)를 필수로 설정하여 SSRF 공격을 통한 자격 증명 탈취를 방지해야 합니다. IMDSv1을 비활성화하고, 토큰 기반 세션 방식을 적용해야 합니다.
사용 중인 AMI와 컨테이너 이미지(ECR)에 대해 정기적으로 취약점 스캔을 수행해야 합니다. Amazon Inspector 또는 ECR 이미지 스캐닝을 활용하여 알려진 CVE를 탐지하고, Critical/High 취약점이 포함된 이미지 사용을 차단해야 합니다.
EC2 인스턴스의 운영체제와 설치된 소프트웨어에 대해 정기적인 보안 패치를 적용해야 합니다. AWS Systems Manager Patch Manager를 사용하여 패치 기준선을 정의하고, 자동 패치 적용 일정을 설정해야 합니다.
EC2 인스턴스에서 AWS 서비스에 접근할 때 액세스 키를 하드코딩하지 않고, IAM 인스턴스 프로파일(역할)을 사용해야 합니다. 각 인스턴스에는 업무에 필요한 최소 권한만 부여된 역할을 연결해야 합니다.
미사용 EC2 인스턴스, 할당되지 않은 EBS 볼륨, 오래된 스냅샷, 미사용 Elastic IP 등을 정기적으로 식별하고 정리해야 합니다. 불필요한 리소스는 공격 표면을 확대하고 비용을 증가시킵니다.
ECS/EKS 컨테이너에서 루트 사용자로 실행되지 않도록 하고, 읽기 전용 파일시스템을 적용해야 합니다. 특권 모드(privileged) 사용을 금지하고, 리소스 제한(CPU/메모리)을 설정하여 리소스 남용을 방지해야 합니다.
Lambda 함수에 최소 권한 IAM 역할을 부여하고, 환경 변수에 민감 정보를 저장할 때는 KMS로 암호화해야 합니다. VPC 내에서 실행되도록 구성하여 네트워크 격리를 적용하고, 함수 URL의 인증 유형을 적절히 설정해야 합니다.
EC2 인스턴스에 대한 SSH/RDP 접근은 AWS Systems Manager Session Manager를 사용하여 포트 개방 없이 안전하게 접속해야 합니다. 키 페어 기반 인증을 사용하고, 패스워드 인증은 비활성화해야 합니다.
개인정보 및 중요 데이터의 저장 위치를 파악하고, 데이터 주권 법규(개인정보보호법, GDPR 등)에 따라 허용된 리전에서만 처리되도록 해야 합니다. S3 버킷 리전, RDS 인스턴스 위치, 백업 저장소 위치를 포함하여 모든 데이터 저장소를 관리해야 합니다.
AWS KMS 키의 생성, 사용, 교체, 폐기에 대한 명확한 정책을 수립해야 합니다. 키 교체 주기(자동 교체 1년)를 설정하고, 키 사용 권한을 최소화하며, 키 삭제 대기 기간을 충분히(최소 7일) 설정해야 합니다.
CIS(Center for Internet Security) AWS Foundations Benchmark를 기반으로 클라우드 환경의 보안 설정을 정기적으로 점검해야 합니다. AWS Security Hub에서 CIS 표준을 활성화하여 자동 평가를 수행하고, 비준수 항목에 대해 교정 계획을 수립해야 합니다.
개인정보보호법에 따라 고유식별정보(주민등록번호, 여권번호 등), 비밀번호, 바이오 정보는 반드시 암호화하여 저장해야 합니다. 전송 구간에서도 TLS 1.2 이상을 사용하고, 암호화 알고리즘은 국가 권고 기준(ARIA-128, AES-256 등)을 충족해야 합니다.
규정에서 요구하는 기간(최소 1년, 금융권 5년) 동안 감사 로그를 안전하게 보존해야 합니다. S3 Object Lock 또는 CloudWatch Logs 보존 정책을 사용하여 로그 변조 및 삭제를 방지하고, 정기적으로 로그 무결성을 검증해야 합니다.
모든 클라우드 리소스에 일관된 태깅 정책을 적용하여 소유자, 환경, 프로젝트, 데이터 분류 등급 등을 명시해야 합니다. 태그를 기반으로 접근 제어(ABAC), 비용 할당, 규정 준수 모니터링을 수행할 수 있어야 합니다.
클라우드 환경에 대해 최소 연 1회 이상 보안 감사와 침투 테스트를 수행해야 합니다. AWS의 침투 테스트 정책에 따라 사전 승인 없이 테스트 가능한 서비스와 사전 승인이 필요한 서비스를 구분하고, 결과에 따른 개선 조치를 이행해야 합니다.
클라우드 환경의 재해 복구 계획을 수립하고, RPO(복구 시점 목표)와 RTO(복구 시간 목표)를 정의해야 합니다. 멀티 리전 또는 멀티 AZ 아키텍처를 구성하고, 정기적으로 DR 전환 훈련을 실시하여 실효성을 검증해야 합니다.