Amazon Web Service

AWS S3에 저장된 이미지 URL 크롤링 방지 및 자원 보호 방법

간다12 2024. 11. 23. 15:01
  1. 문제 정의
    • 웹 서버에서 게시물 사진이 AWS S3에 저장되어 있으며, 게시물 이미지 URL이 노출됨.
    • 외부에서 개발자 도구나 크롤러를 통해 이미지 URL을 수집하고, 이를 악용하거나 무단으로 자원을 소비할 가능성이 있음.
  2. 해결해야 할 문제
    • 이미지 URL 크롤링 방지.
    • 외부 사이트나 비인가 사용자에 의한 S3 자원 사용 제한.
  3. 주요 방지 방법
    • S3 버킷 정책 및 권한 설정
    • AWS CloudFront와 OAI(Origin Access Identity) 활용
    • Referrer 기반의 액세스 제한
    • Presigned URL 사용
    • IP 기반 접근 제한
  4. 결론
    • S3의 자원을 효율적으로 보호하고 크롤링 방지 설정을 통해 비용 절감 및 보안을 강화할 수 있음.

 

  • S3 버킷 정책 및 권한 설정
  • Referrer 기반의 액세스 제한
  • AWS CloudFront와 OAI(Origin Access Identity) 활용

세가지 방법을 통해서 외부접근 S3 크롤링을 방지해보도록 하자.

 

HTTP Referer 헤더란?

HTTP Referer는 HTTP 요청 헤더 중 하나로, 현재 요청이 어떤 페이지로부터 왔는지를 서버에 알려주는 역할을 합니다.

이 헤더는 사용자가 특정 링크를 클릭하거나, 리소스를 요청했을 때, 이전 페이지의 URL을 서버로 전송하여 요청의 출처를 전달합니다.


구조


동작 원리

  1. 클라이언트 동작
    • 사용자가 링크를 클릭하거나 특정 페이지에서 리소스를 요청하면, 브라우저가 HTTP 요청을 보냅니다.
    • 이 요청에는 "Referer" 헤더가 포함되어 요청의 출처 URL을 서버에 전달합니다.
  2. 서버 동작
    • 서버는 Referer 헤더를 통해 요청이 어떤 페이지에서 발생했는지 파악할 수 있습니다.
    • 이를 바탕으로 트래픽 분석, 접근 제어, 보안 정책 설정 등을 수행할 수 있습니다.

Referer 헤더의 주요 용도

  1. 트래픽 분석
    • 웹사이트 운영자가 방문자들이 어디에서 유입되었는지 분석하는 데 활용.
    • 예: 검색 엔진, 외부 링크, 내부 페이지 등.
  2. 보안 정책
    • Referrer 기반 접근 제한: 특정 출처(Referer)에서만 리소스에 접근을 허용.
      • 예: S3에서 특정 도메인에서 온 요청만 허용하도록 제한.
  3. 콘텐츠 최적화
    • 사용자가 주로 어디에서 유입되었는지 분석하여, 맞춤형 콘텐츠를 제공.
  4. 리소스 요청 추적
    • 이미지, 스크립트, CSS 등 외부 리소스 요청의 출처 확인.

 

 

  • S3 권한에서 Referrer 제어를 권한을 추가해보자! 

  • S3 권한이 충돌될 경우, S3의 퍼블릭 액세스 차단을 비활성하자.
    • 우리는 Cloudfront로만 접근할 거기 때문에 액세스 차단을 비활성으로 세팅해도된다.

  • S3 권한에서 Cloudfront로만 접근할 수 있도록 권한 세팅하자.

  • Cloudfront 원본으로 이동해서 Cloudfront로만 접근할 수 있도록 OAI세팅을 해주어야한다.

 

이렇게 세팅하면 외부 크롤링을 통한 S3 접근이 차단할 수 있다.

반응형