- 문제 정의
- 웹 서버에서 게시물 사진이 AWS S3에 저장되어 있으며, 게시물 이미지 URL이 노출됨.
- 외부에서 개발자 도구나 크롤러를 통해 이미지 URL을 수집하고, 이를 악용하거나 무단으로 자원을 소비할 가능성이 있음.
- 해결해야 할 문제
- 이미지 URL 크롤링 방지.
- 외부 사이트나 비인가 사용자에 의한 S3 자원 사용 제한.
- 주요 방지 방법
- S3 버킷 정책 및 권한 설정
- AWS CloudFront와 OAI(Origin Access Identity) 활용
- Referrer 기반의 액세스 제한
- Presigned URL 사용
- IP 기반 접근 제한
- 결론
- S3의 자원을 효율적으로 보호하고 크롤링 방지 설정을 통해 비용 절감 및 보안을 강화할 수 있음.
- S3 버킷 정책 및 권한 설정
- Referrer 기반의 액세스 제한
- AWS CloudFront와 OAI(Origin Access Identity) 활용
세가지 방법을 통해서 외부접근 S3 크롤링을 방지해보도록 하자.
HTTP Referer 헤더란?
HTTP Referer는 HTTP 요청 헤더 중 하나로, 현재 요청이 어떤 페이지로부터 왔는지를 서버에 알려주는 역할을 합니다.
이 헤더는 사용자가 특정 링크를 클릭하거나, 리소스를 요청했을 때, 이전 페이지의 URL을 서버로 전송하여 요청의 출처를 전달합니다.
구조

- 여기서 https://example.com/page1은 사용자가 링크를 클릭하거나 리소스를 요청한 출처 URL입니다.
동작 원리
- 클라이언트 동작
- 사용자가 링크를 클릭하거나 특정 페이지에서 리소스를 요청하면, 브라우저가 HTTP 요청을 보냅니다.
- 이 요청에는 "Referer" 헤더가 포함되어 요청의 출처 URL을 서버에 전달합니다.
- 서버 동작
- 서버는 Referer 헤더를 통해 요청이 어떤 페이지에서 발생했는지 파악할 수 있습니다.
- 이를 바탕으로 트래픽 분석, 접근 제어, 보안 정책 설정 등을 수행할 수 있습니다.
Referer 헤더의 주요 용도
- 트래픽 분석
- 웹사이트 운영자가 방문자들이 어디에서 유입되었는지 분석하는 데 활용.
- 예: 검색 엔진, 외부 링크, 내부 페이지 등.
- 보안 정책
- Referrer 기반 접근 제한: 특정 출처(Referer)에서만 리소스에 접근을 허용.
- 예: S3에서 특정 도메인에서 온 요청만 허용하도록 제한.
- Referrer 기반 접근 제한: 특정 출처(Referer)에서만 리소스에 접근을 허용.
- 콘텐츠 최적화
- 사용자가 주로 어디에서 유입되었는지 분석하여, 맞춤형 콘텐츠를 제공.
- 리소스 요청 추적
- 이미지, 스크립트, CSS 등 외부 리소스 요청의 출처 확인.
- S3 권한에서 Referrer 제어를 권한을 추가해보자!
- S3 권한이 충돌될 경우, S3의 퍼블릭 액세스 차단을 비활성하자.
- 우리는 Cloudfront로만 접근할 거기 때문에 액세스 차단을 비활성으로 세팅해도된다.
- S3 권한에서 Cloudfront로만 접근할 수 있도록 권한 세팅하자.
- Cloudfront 원본으로 이동해서 Cloudfront로만 접근할 수 있도록 OAI세팅을 해주어야한다.
이렇게 세팅하면 외부 크롤링을 통한 S3 접근이 차단할 수 있다.
반응형
'Amazon Web Service' 카테고리의 다른 글
AWS 비용 절감 (2) - CloudWatch (0) | 2024.12.02 |
---|---|
AWS 비용 절감 (1) - VPC (0) | 2024.11.28 |
AWS 서버리스 lambda API 개발하고 Dynamo DB에 저장하기 (3) | 2024.11.23 |
AWS S3 서버리스 웹 서버를 구축하고 CloudFront 연결하기(4)-보안 (1) | 2024.11.17 |
AWS S3 서버리스 웹 서버를 구축하고 CloudFront 연결하기(3)-로그 (0) | 2024.11.17 |