들어가면서
- 해당 포스팅은 배민 기술 블로그를 참고했습니다.
- 문제가 될 시, 즉각적으로 삭제하겠습니다.
목표
1. S3 정적 웹 호스팅 문제점
- https가 아닌 http 통신
- 버킷이 퍼블릭으로 공개
- S3 엔드포인트 주소를 그대로 사용
- 프로토콜 자체적으로 보안이 취약
- 모든 사용자가 버킷에 접근 가능
2. 해결 방안
2-1) CloudFront 연결
- 액세스 차단을 수행한 정적 웹 호스팅 S3와 CloudFront 서비스를 연결한다.
- OAI(Origin Access Identity)를 통해 사용자는 CloudFront로만 접근할 수 있다.
- Redirect HTTP to HTTPS 속성을 통해 HTTPS 프로토콜만 사용할 수 있게 강제한다.
2-2) Route53 연결
- CDN 엔드포인트 주소는 서비스에 적절하지 않아, Route53을 통해 도메인 연결 필요
- ACM(AWS Certificate Manager)을 통하여 SSL 인증서 적용
2-3) Resolved Check List
1. https가 아닌 http 통신
=> CloudFront ACM을 적용하여 해결
2. 버킷이 퍼블릭으로 공개
=> CloudFront 연결, OAI을 통해 접근 제어
3. S3 엔드포인트 주소를 그대로 사용
=> CloudFront, Route53을 통해 도메인 주소 값 할당
2-4) (추가) S3 정적 웹 호스팅 IP 제어
1) S3 속성을 통한 제어
- S3 > Condition > NotIpAddress
- S3 수정 권한이 있는 타 사용자에 의해 변경될 수 있다.
2-1) AWS WAF 사용
- WAF : AWS 웹 방화벽 서비스
- CloudFront에 WAF를 연결하여 IP 접근제어
2-2) 최종 아키텍처
출처
우아한형제들 개발 블로그_S3 보안 가이드