AWS SAA 실전 문제 풀이 및 분석 - VPC 보안과 네트워크 ACL 설계
AWS SAA 실전 문제 풀이 및 분석 - VPC 보안과 네트워크 ACL 설계
AWS Solutions Architect Associate(SAA) 시험에서 자주 출제되는 보안 및 네트워킹 문제를 풀어보고 상세히 분석해보겠습니다. 이번 포스트에서는 VPC 보안 그룹과 네트워크 ACL을 활용한 다층 보안 아키텍처 설계 문제를 다루겠습니다.
📝 실전 문제
문제: 한 금융 회사가 AWS VPC에 3-tier 웹 애플리케이션을 배포하려고 합니다. 보안 요구사항은 다음과 같습니다:
- 웹 서버는 인터넷에서 HTTP(80), HTTPS(443) 트래픽만 허용
- 애플리케이션 서버는 웹 서버에서만 접근 가능 (포트 8080)
- 데이터베이스 서버는 애플리케이션 서버에서만 접근 가능 (포트 3306)
- 모든 아웃바운드 트래픽은 관리자가 승인한 특정 포트와 대상만 허용
- 네트워크 레벨과 인스턴스 레벨에서 이중 보안 적용
이 요구사항을 만족하는 가장 적절한 보안 구성은?
A) Security Groups만 사용하여 각 계층별로 구성
B) Network ACLs만 사용하여 서브넷 레벨에서 제어
C) Security Groups와 Network ACLs를 조합하여 다층 보안 구성
D) WAF와 Security Groups 조합으로 구성
🎯 정답 및 해설
정답: C
Security Groups와 Network ACLs를 조합하여 다층 보안 구성
상세 분석
1. Security Groups vs Network ACLs 비교
| 특성 | Security Groups | Network ACLs |
|---|---|---|
| 적용 레벨 | 인스턴스 레벨 | 서브넷 레벨 |
| 규칙 타입 | Allow 규칙만 | Allow/Deny 규칙 |
| 상태 관리 | Stateful | Stateless |
| 기본 정책 | 모든 트래픽 차단 | 모든 트래픽 허용 |
| 적용 순서 | 모든 규칙 평가 | 규칙 번호 순서대로 |
2. 다층 보안 아키텍처 설계
Internet Gateway
↓
Public Subnet (Web Tier)
├── Network ACL: 80,443 허용
└── Security Group: 80,443 허용
↓
Private Subnet (App Tier)
├── Network ACL: 8080 허용 (Web Subnet에서만)
└── Security Group: 8080 허용 (Web SG에서만)
↓
Private Subnet (DB Tier)
├── Network ACL: 3306 허용 (App Subnet에서만)
└── Security Group: 3306 허용 (App SG에서만)
🛡️ 보안 구성 상세 설계
Web Tier 보안 설정
Network ACL (Public Subnet)
{
"NetworkAclEntries": [
{
"RuleNumber": 100,
"Protocol": "6",
"RuleAction": "allow",
"PortRange": {"From": 80, "To": 80},
"CidrBlock": "0.0.0.0/0"
},
{
"RuleNumber": 110,
"Protocol": "6",
"RuleAction": "allow",
"PortRange": {"From": 443, "To": 443},
"CidrBlock": "0.0.0.0/0"
},
{
"RuleNumber": 120,
"Protocol": "6",
"RuleAction": "allow",
"PortRange": {"From": 1024, "To": 65535},
"CidrBlock": "0.0.0.0/0"
}
]
}
Security Group (Web Servers)
{
"SecurityGroupRules": [
{
"IpProtocol": "tcp",
"FromPort": 80,
"ToPort": 80,
"CidrIp": "0.0.0.0/0"
},
{
"IpProtocol": "tcp",
"FromPort": 443,
"ToPort": 443,
"CidrIp": "0.0.0.0/0"
}
]
}
App Tier 보안 설정
Network ACL (Private Subnet - App)
{
"NetworkAclEntries": [
{
"RuleNumber": 100,
"Protocol": "6",
"RuleAction": "allow",
"PortRange": {"From": 8080, "To": 8080},
"CidrBlock": "10.0.1.0/24"
},
{
"RuleNumber": 110,
"Protocol": "6",
"RuleAction": "allow",
"PortRange": {"From": 1024, "To": 65535},
"CidrBlock": "0.0.0.0/0"
}
]
}
Security Group (App Servers)
{
"SecurityGroupRules": [
{
"IpProtocol": "tcp",
"FromPort": 8080,
"ToPort": 8080,
"SourceSecurityGroupId": "sg-web-servers"
}
]
}
DB Tier 보안 설정
Network ACL (Private Subnet - DB)
{
"NetworkAclEntries": [
{
"RuleNumber": 100,
"Protocol": "6",
"RuleAction": "allow",
"PortRange": {"From": 3306, "To": 3306},
"CidrBlock": "10.0.2.0/24"
},
{
"RuleNumber": 110,
"Protocol": "6",
"RuleAction": "allow",
"PortRange": {"From": 1024, "To": 65535},
"CidrBlock": "10.0.2.0/24"
}
]
}
Security Group (DB Servers)
{
"SecurityGroupRules": [
{
"IpProtocol": "tcp",
"FromPort": 3306,
"ToPort": 3306,
"SourceSecurityGroupId": "sg-app-servers"
}
]
}
❌ 다른 선택지가 부적절한 이유
A) Security Groups만 사용
- 문제점: 인스턴스 레벨 보안만 제공
- 부족한 점: 네트워크 레벨 추가 보안층 없음
- 위험성: 인스턴스 침해 시 네트워크 레벨 방어 부재
B) Network ACLs만 사용
- 문제점: Stateless 특성으로 복잡한 구성 필요
- 부족한 점: 세밀한 인스턴스별 제어 어려움
- 관리 복잡성: 응답 트래픽 허용을 위한 추가 규칙 필요
D) WAF + Security Groups
- 적용 범위: WAF는 웹 애플리케이션 계층 보안에 특화
- 부족한 점: 네트워크 계층 보안 부재
- 비용: 불필요한 WAF 비용 발생
🔐 추가 보안 강화 방안
1. VPC Flow Logs
{
"VpcFlowLogConfig": {
"ResourceType": "VPC",
"TrafficType": "ALL",
"LogDestination": "arn:aws:logs:region:account:log-group:VPCFlowLogs",
"DeliverLogsPermissionArn": "arn:aws:iam::account:role/flowlogsRole"
}
}
2. Systems Manager Session Manager
- EC2 인스턴스 SSH 접근 대신 Session Manager 사용
- 감사 로그 자동 기록
- 포트 22 완전 차단 가능
3. AWS Config Rules
{
"ConfigRules": [
{
"ConfigRuleName": "security-group-ssh-check",
"Source": {
"Owner": "AWS",
"SourceIdentifier": "INCOMING_SSH_DISABLED"
}
},
{
"ConfigRuleName": "vpc-sg-open-only-to-authorized-ports",
"Source": {
"Owner": "AWS",
"SourceIdentifier": "VPC_SG_OPEN_ONLY_TO_AUTHORIZED_PORTS"
}
}
]
}
4. AWS GuardDuty
- 네트워크 트래픽 이상 징후 탐지
- 악성 IP 주소 접근 탐지
- 데이터 유출 시도 탐지
🏗️ 완성된 보안 아키텍처
VPC 구성도
┌─────────────────────────────────────────────────────┐
│ VPC (10.0.0.0/16) │
├─────────────────────────────────────────────────────┤
│ Public Subnet (10.0.1.0/24) │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Web Server │ │ Web Server │ │
│ │ (SG: Web-SG) │ │ (SG: Web-SG) │ │
│ └─────────────────┘ └─────────────────┘ │
│ │ │ │
│ ┌────────┴────────────────────┴──────────┐ │
│ │ Network ACL (Web) │ │
│ └───────────────────────────────────────┘ │
├─────────────────────────────────────────────────────┤
│ Private Subnet (10.0.2.0/24) │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ App Server │ │ App Server │ │
│ │ (SG: App-SG) │ │ (SG: App-SG) │ │
│ └─────────────────┘ └─────────────────┘ │
│ │ │ │
│ ┌────────┴────────────────────┴──────────┐ │
│ │ Network ACL (App) │ │
│ └───────────────────────────────────────┘ │
├─────────────────────────────────────────────────────┤
│ Private Subnet (10.0.3.0/24) │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ DB Primary │ │ DB Replica │ │
│ │ (SG: DB-SG) │ │ (SG: DB-SG) │ │
│ └─────────────────┘ └─────────────────┘ │
│ │ │ │
│ ┌────────┴────────────────────┴──────────┐ │
│ │ Network ACL (DB) │ │
│ └───────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
보안 레이어별 역할
- Internet Gateway: 외부 인터넷 연결 제어
- Public Subnet NACL: 네트워크 레벨 첫 번째 방어선
- Web Security Group: 웹 서버 인스턴스별 세밀한 제어
- Private Subnet NACL: 내부 네트워크 간 통신 제어
- App/DB Security Group: 애플리케이션 레벨 접근 제어
📊 보안 모니터링 및 알람
CloudWatch 알람 설정
{
"MetricAlarms": [
{
"AlarmName": "UnauthorizedSSHAttempts",
"MetricName": "UnauthorizedSSHCalls",
"Namespace": "VPCFlowLogs",
"Statistic": "Sum",
"Threshold": 5,
"ComparisonOperator": "GreaterThanThreshold"
},
{
"AlarmName": "UnusualNetworkTraffic",
"MetricName": "NetworkPacketsIn",
"Namespace": "AWS/EC2",
"Statistic": "Average",
"Threshold": 1000000,
"ComparisonOperator": "GreaterThanThreshold"
}
]
}
AWS Config 컴플라이언스 모니터링
- 보안 그룹 설정 변경 감지
- 네트워크 ACL 수정 알림
- 비승인 포트 개방 탐지
💡 보안 모범 사례
1. 최소 권한 원칙 (Principle of Least Privilege)
- 필요한 최소한의 포트와 프로토콜만 허용
- 소스 IP 범위를 가능한 한 제한적으로 설정
- 정기적인 보안 그룹 규칙 검토
2. 계층별 보안 (Defense in Depth)
- 네트워크 레벨: Network ACLs
- 인스턴스 레벨: Security Groups
- 애플리케이션 레벨: WAF, 암호화
- 데이터 레벨: 암호화, 백업
3. 모니터링 및 로깅
- VPC Flow Logs 활성화
- CloudTrail API 호출 기록
- GuardDuty 위협 탐지
- Config 컴플라이언스 모니터링
4. 자동화된 보안 대응
- Lambda 함수를 통한 자동 차단
- Systems Manager를 통한 패치 관리
- AWS Security Hub 중앙 집중 보안 관리
🎓 핵심 학습 포인트
- 다층 보안: Network ACLs + Security Groups 조합
- Stateful vs Stateless: 각각의 특성을 이해하고 적절히 활용
- 최소 권한: 필요한 최소한의 접근만 허용
- 모니터링: 보안 이벤트 실시간 감지 및 대응
- 자동화: 수동 설정 오류를 줄이기 위한 Infrastructure as Code
💭 마무리
이 문제는 AWS SAA 시험에서 자주 출제되는 VPC 보안 설계 문제의 전형적인 예시입니다. 실제 기업 환경에서는 이런 다층 보안 아키텍처가 필수적이며, 각 보안 도구의 특성을 정확히 이해하는 것이 중요합니다.
보안 설계 시 고려해야 할 핵심 원칙:
- 네트워크 세분화: 각 계층별로 별도 서브넷 구성
- 접근 제어: Security Groups와 NACLs 이중 보안
- 최소 노출: 필요한 포트와 프로토콜만 허용
- 지속적 모니터링: 실시간 위협 탐지 및 대응
- 컴플라이언스: 보안 정책 준수 자동 확인
다음 포스트에서는 AWS의 데이터베이스 서비스들(RDS, DynamoDB, ElastiCache)을 활용한 성능 최적화 문제를 다뤄보겠습니다. 데이터베이스 선택 기준과 성능 튜닝 전략에 대해 자세히 알아보겠습니다.
관련 포스트:
태그: #AWS #SAA #Security #VPC #Network-ACL #Security-Groups #다층보안 #네트워크보안