AWS 3-Tier Architecture

개요

AWS 클라우드에서 3-Tier 아키텍처를 구성하여 웹 애플리케이션의 확장성과 보안을 극대화하는 설계에 대해 설명합니다. 이 아키텍처는 VPC를 통해 네트워크를 격리하고, 퍼블릭 및 프라이빗 서브넷을 통해 보안을 강화하며, Bastion Host NAT Gateway를 이용하여 효율적인 접근 제어와 보안 정책을 적용하고 있습니다.

웹 서버는 프레젠테이션 계층, 애플리케이션 서버는 비즈니스 로직 계층, RDS는 데이터 계층을 구성하며, 각 계층 간의 접근을 최소화하여 보안을 유지합니다. 다양한AWS 관리 및 모니터링 서비스(CloudWatch, CloudTrail, Config, GuardDuty)를 통해 보안 상태를 지속적으로 점검하고 있습니다.

네트워크와 보안 구성

VPC: AWS의 가상 프라이빗 클라우드로, 이 아키텍처의 네트워크 격리를 제공합니다.

 

서브넷 구성: 퍼블릭 서브넷과 프라이빗 서브넷으로 나뉘며, 퍼블릭 서브넷에는 NAT Gateway와 Bation Host 웹 서버와 애플리케이션 서버가, 프라이빗 서브넷에는 데이터베이스(RDS MySQL)가 위치합니다.

 

가용 영역 (AZ): 고가용성을 위해 여러 가용 영역에 퍼블릭 및 프라이빗 서브넷을 분산 배치하여 장애 발생 시 신속한 대응이 가능하게 합니다.

 

Bastion Host: 외부 관리자가 SSH로 접근할 수 있도록 프라이빗 서브넷 내 리소스에 대한 접근 경로를 제공합니다. Bastion Host를 통해 직접 접근 없이도 안전하게 네트워크 내 리소스에 접근할 수 있습니다.

SSH Bastion Host 접속

  • 로컬에 있는 키페어로 Bastion Host 접속

Bastion Host 통해 웹서버 접속

  • 키페어를 Bastion Host에 복사하여 웹서버에 접속

NAT Gateway: 프라이빗 서브넷 내 리소스가 외부 인터넷에 접근할 수 있도록 하며, 직접적인 인터넷 트래픽을 차단하여 보안을 강화합니다.

프라이빗 서브넷 ping test

  • NAT Gateway를 통해 웹서버에서 8.8.8.8 구글서버에 ping test 성공한 모습

데이터베이스(RDS): AWS RDS는 데이터 암호화, VPC 내 격리, Multi-AZ 배포, 백업 및 액세스 제어(IAM, 보안 그룹)를 통해 데이터의 기밀성, 무결성, 가용성을 보장하여 안전한 데이터 저장을 지원합니다.

 다중 AZ 배포 및 암호화 설정
앱서버에서 RDS로 접속
SQL 쿼리 전송

  • 앱서버에 mysql 설치 후 RDS로 접속성공, Database 확인 쿼리 전송 

Route 53: 도메인 이름 시스템(DNS) 서비스로, 트래픽을 안전하게 라우팅하고 Failover 설정을 통해 고가용성을 제공합니다.

Certificate Manager: SSL/TLS 인증서를 무료로 발급, 관리하여 애플리케이션과 사용자 간의 HTTPS 암호화 통신을 통해 데이터 전송의 기밀성과 무결성을 보장합니다.

도메인에 SSL/TLS 발급하여 https 통신 활성화

 

보안 그룹: 모든 인스턴스에 대해 인바운드 및 아웃바운드 트래픽을 제어하는 보안 그룹이 적용되어 있습니다. 웹 서버, 애플리케이션 서버, 데이터베이스 각각에 대해 최소한의 접근 권한을 설정하여 보안을 강화했습니다.

ALB 에 최소 접근 권한으로 설정된 보안그룹

 

ALB (Application Load Balancer): 여러 웹 서버 및 애플리케이션 서버에 트래픽을 분산하여 고가용성을 제공하며, SSL 인증서를 적용하여 HTTPS를 통해 안전한 통신을 보장합니다.

ALB  리스너 및 규칙
ALB  트래픽 분산 기능으로 접속 마다 서로 다른 서버로 연결

IAM

SSO (Single Sign-On): AWS SSO를 통해 다중 계정을 통합 관리하고, 접근 권한을 중앙에서 일괄적으로 제어할 수 있도록 설정합니다. 이를 통해 권한 관리의 효율성과 보안을 동시에 확보할 수 있습니다.

MFA (Multi-Factor Authentication): 모든 주요 IAM 사용자와 SSO 계정에 대해 다중 인증을 활성화하여 계정 탈취 위험을 줄였습니다.

Identity Center 에서 사용자 통합관리 및 MFA 활성화
하나의 계정이 부여 받은 권한세트

AWS 서비스 보안 구성(CloudWatch, CloudTrail, Config, WAF, GuardDuty, SNS)

AWS Config: 리소스의 구성 변경을 추적하고, 보안 규정을 준수하지 않는 리소스를 감지하면 알림을 전송합니다. 예를 들어, 퍼블릭으로 설정된 S3 버킷이나 암호화가 되지 않은 EBS 볼륨 등이 발견되면 알림을 받도록 설정합니다.

config 규칙 모니터링
config 규칙

 

CloudWatch: AWS 리소스의 메트릭을 실시간으로 모니터링하며, 주요 메트릭(CPU 사용률, 네트워크 트래픽 등)에 대해 임계값을 초과할 경우 경고를 발생시켜SNS를 통해 알림을 전송합니다.

RDS 로그 보내기 설정
설정한 RDS 로그 이벤트

 

CloudTrail: 모든 API 호출을 기록하여 보안 사고를 분석하고 감사에 활용할 수 있도록 구성되었습니다. 기록된 데이터는 S3 버킷에 저장되며, 필요할 경우 분석을 통해 보안 점검에 활용됩니다.

 

aws 에서의 모든 활동 기록 및 로그 S3 저장

 

WAF (Web Application Firewall): SQL 인젝션, XSS 등 일반적인 웹 애플리케이션 공격으로부터 웹 서버를 보호하며, 트래픽이 ALB를 통해 전달되기 전에 필터링됩니다.

WAF 의 XSS 공격 방어

  • ALB에 연결된 WAF가 XSS 공격을 감지하고 접근을 차단함

GuardDuty: AWS 계정 내 비정상적인 활동을 자동으로 탐지하여, 위험이 발생했을 때 알림을 통해 대응할 수 있도록 구성합니다.

GuardDuty 에 탐지된 이상활동

 

SNS (Simple Notification Service): CloudWatch, Config, GuardDuty에서 발생하는 경고와 알림을 보안 팀이나 관리자가 실시간으로 받을 수 있도록 설정되었습니다. 또한 SNS 주제를 구독한 Lambda 함수를 통해 알림을 받을 뿐만 아니라 자동화된 대응 작업을 수행할 수 있습니다.

 

참고한 보안구성 가이드: https://www.skshieldus.com/uploads/files/20240416/20240416180036051.pdf

ISMS-P

'Cloud' 카테고리의 다른 글

Zero Trust 보안 설계  (1) 2024.11.26
Terraform과 Github Actions 활용한 자산식별, ISMS-P, 배포 자동화  (4) 2024.11.13
AWS 기본 아키텍처 설계  (1) 2024.11.13
온프레미스와 클라우드  (2) 2024.11.12
클라우드 보안  (5) 2024.11.12

+ Recent posts