3-Tier 아키텍처와 AWS 보안 서비스를 활용한 안전하고 확장 가능한 클라우드 환경 구축
Git Hub 링크
개발 언어: HCL
프레임워크: AWS Provider
개발환경: vim, Cursor, Terraform CLI
기타: Git Hub, Docker, Terraform, AWS
클라우드 환경에서 수동적인 인프라 설정은 비효율적이며 오류 발생 가능성이 높습니다. 이를 해결하기 위해
Infrastructure as Code(IaC)접근 방식을 도입하여 테라폼을 활용한 AWS 인프라 자동화를 구현했습니다.
이 프로젝트는 네트워크, 컴퓨팅, 데이터베이스 리소스를 효율적으로 배포하고 보안과 유지보수를 용이하게 하기 위해 설계되었습니다.
3-Tier 아키텍처로 구성
Frontend (Presentation Tier):
CloudFront를 통해 프론트엔드 콘텐츠(CSS, JavaScript, 이미지 등) 배포
HTTPS를 적용하여 안전한 데이터 전송Backend (Application Tier):
EC2 인스턴스에서 백엔드 애플리케이션 실행 (예: Nginx, PHP, Node.js)
Private Subnet에 배치하여 외부 접근 차단
Security Group을 통해 백엔드 서버에 대한 외부 접근 제한
ALB(Application Load Balancer)를 사용해 부하 분산 및 가용성 향상Database (Data Tier):
Amazon RDS를 사용해 데이터베이스(MySQL) 관리
Private Subnet에 배치하여 외부 접근 차단
백엔드 서버와 RDS 간 통신은 보안 그룹을 통해 관리
- CloudWatch를 활용한 로그 관리
CloudFront 접근 및 실시간 로그를 CloudWatch로 통합하여 트래픽 모니터링과 캐시 히트/미스 비율 분석
Lambda@Edge 실행 결과와 오류를 CloudWatch Logs로 기록하여 디버깅 및 성능 최적화
WAF 로그를 CloudWatch로 연동하여 악성 요청 탐지 및 규칙 최적화
- CloudFront를 통한 보안 강화
AWS WAF(Web Application Firewall)를 CloudFront에 연동하여 SQL Injection, XSS와 같은 웹 공격 차단.
HTTPS와 TLS 적용으로 데이터 전송 보안 강화
Geo-Restriction(지역 제한)을 통해 특정 국가에서의 접근 차단
DDoS 완화를 위한 AWS Shield Standard와 CloudFront의 분산 네트워크 활용
- GuardDuty를 통한 추가 보안 강화
Amazon GuardDuty:
CloudFront 및 AWS 계정의 잠재적 위협 탐지.
이상 트래픽이나 의심스러운 API 호출 탐지.
악성 활동 탐지(예: 의심스러운 IP에서의 접근, 데이터 유출 시도).
- AWS Security Hub 를 통한 추가 보안 강화:
GuardDuty, WAF, CloudTrail 로그를 통합 분석.
보안 규정 준수 평가: CIS Benchmarks와 AWS Best Practices에 기반한 평가.
여러 AWS 보안 서비스 결과를 중앙에서 관리하여 취약점 통합 관리.
문제: Terraform이 필요한 입력 변수를 찾을 수 없다는 오류 발생
원인: 변수 파일(.tfvars)을 생성하지 않았거나, 변수 값을 명시적으로 전달하지 않음
해결 방법:
terraform.tfvars파일 생성 및 필요한 변수 값을 정의
명령어 실행 시 -var-file 옵션으로 파일을 명시적으로 전달
문제: 동일한 이름의 리소스를 중복 생성하려고 시도할 때 오류 발생
원인: 리소스 이름을 고유하게 설정하지 않음
해결 방법: 이름에 동적 값을 추가하여 고유성을 확보
문제: AWS 프로바이더 설정이 제대로 이루어지지 않아 인증 실패
원인: AWS CLI가 설정되지 않았거나, Terraform 프로바이더 블록에서 필요한 정보가 누락
해결 방법: AWS CLI 설정 확인(aws configure)
프로바이더 블록에 명확히 정의
문제: Terraform 코드가 실행되지 않고 문법 오류 발생
원인: 괄호 누락, 콜론(:) 사용 등 HCL 문법과 맞지 않는 구문 사용
해결 방법: erraform validate 명령어로 문법 검사
에디터에서 Terraform 플러그인 사용
문제: HTTPS 설정 후 사이트 접속 시 "인증서가 유효하지 않음" 또는 "SSL/TLS 연결 실패" 오류 발생
원인: ACM(AWS Certificate Manager)에서 발급된 인증서를 ALB 또는 CloudFront에 연결하지 않음
인증서 발급 시 도메인 소유권 확인 절차(DNS 검증)가 누락됨
HTTPS 설정 후 HTTP를 HTTPS로 리다이렉트하지 않음해결 방법: ACM을 사용해 인증서를 발급하고, ALB/CloudFront에 연결
ACM에서 DNS 검증을 사용하여 도메인 소유권 인증
CloudFront Distribution에서 Custom SSL Certificate 선택
문제: 도메인이 연결된
ALB가Target Group에 대상(EC2 등)을 제대로 등록하지 않아 트래픽 전달 실패해결 방법:
ALB 설정에서Target Group에 EC2 인스턴스를 추가Target Group 상태 확인: 상태가
Healthy가 아닌 경우, 인스턴스나 포트 설정을 확인
문제: 웹 코드를 EC2 인스턴스에 배포하는 과정에서 생긴 문제
해결 방법: VPC 프로젝트
해당 부분에 대해서는 VPC 구조를 그리는 프로젝트의 글에 설명해두었다