흰 스타렉스에서 내가 내리지

CF(7): CloudFront 컨텐츠 보호(2) 본문

AWS

CF(7): CloudFront 컨텐츠 보호(2)

주씨. 2024. 10. 26. 15:47
728x90

# Origin Access Control (OAC) - S3 Origin 에서의 컨텐츠 보호

  • OAI 와 함께 CloudFront 를 거치지 않은 S3 에의 접근을 방지하기 위한 기능
    • Origin Access Identity(OAI) : 예전 방식, OAC 를 권장
  • OAC 는 일종의 Identity : IAM 사용자 혹은 IAM 역할과 비슷한 Identity
    • S3에서 해당 OAC의 접근을 허용하고 CloudFront 에서 OAC를 활용해서 S3와 소통.
    • S3에서 기본적으로 모든 접근을 차단하고 OAC의 접근만 허용.
  • OAC 는 Lambda Function URL 에도 사용 가능

OAC

Client 가 직접 접근할 시에는 S3 의 버킷 정책에 의해 차단되나, OAC 는 허용된다. 

즉, CloudFront 를 통해서만 버킷 내의 객체에 접근할 수 있다. 

 


# Origin Access Control (OAC)의 3가지 Sign 방법

  • CF 가 S3와 소통하기 위한 요청에 Sign 방법 정의 가능 (Authorization 헤더를 통해 시그니처를 전달해야 함)
  • 3가지 종류
    • Sign Requests: CloudFront IAM Principle 이 S3 에 요청할 때 SigV4 로 Sign
      • 즉 요청에 자격증명을 활용해 필요한 정보로 → Authorization Header 를 구성 → S3에서 해당 내용을 검증해서 자격이 있는 요청인지 확인 → 요청 처리 or 거부
      • 클라이언트가 Sign한 헤더가 있다면 덮어씌움
      • 즉, CloudFront 가 요청에 서명을 추가해서 Origin 에 보내는 것.
    • Do not override authorization header : 클라이언트 Header 가 있다면 사용, 없으면 새로 Sign
    • Do not sign requests : Authorization Header 를 사용하지 않음  (≒ Disable)
      • 클라이언트가 항상 Sign 을 통해 요청하거나, 컨텐츠가 퍼블릭인 경우

 


# Custom Origin 보호

  • 방법 1 : Custom Header 활용
    • CloudFront 에서 Header 생성 → Origin 에서 해당 Header 가 없으면 거부
  • 방법 2 : Origin 에서 CloudFront IP를 제외한 모든 트래픽을 차단

방법 1 : Custom Header 활용
방법 2 : CF IP 를 제외한 모든 트래픽 차단

EC2 인스턴스에서 보안그룹을 설정하여 CF IP 범위만 허용하게 할 수 있다. 

참고로 aws 에서 직접 관리하는 IP range 가 있고, 이를 보안 그룹에서 참조할 수 있다. 

이를 일일이 다 찾아 넣을 필요는 없고, 한줄이면 된다. 이에 대한 자세한 내용은 보안 그룹 강의를 참고하자. 

 

 


# 뷰어 액세스 제한

  • CloudFront 에 허용된 방법으로만 접근 가능하도록 설정하는 방법
  • 2가지 접근 방법
    • Signed URL : 파일 하나에만 접근 가능
    • Signed Cookie : 다수의 파일에 접근 가능
  • 서명 방법
    • Trusted Key : 등록된 Public Key 에 해당하는 Private Key 로 Sign (권장)
    • Trusted Signer : 등록된 AWS 계정의 권한으로 Sign (Root 계정 필요, 비추천)
  • 유효 기간 설정 가능 

 


# 지리적 배포 제한 (Geo Restriction)    - 특정 지역을 기반으로 트래픽 허용/거부

  • 2가지 접근 방법
    • CloudFront 지리 배포 제한
      • Whitelist 혹은 Blacklist → 나라별 기준
      • 모든 배포에 제한 사항 포함 
        • 일부만 제한 걸기 불가능
      • IP 주소의 정확도는 99.8%
    • 3rd Party 지리적 위치 서비스 사용
      • 커스터마이징 가능 (예: 브라우저 별, 쿠키 별 등등)
      • Signed URL 기반 

1. CloudFront 지리 배포 제한 (Geo IP DB 기반)
2. 3rd party 지리적 위치 서비스

3rd Party 에 요청하면, 이를 검증하고 Pre-signed URL 발급. 

Client 는 발급받은 Pre-signed URL 로 CloudFront 에 요청. 

 

 

CloudFront > 배포 > 보안 > CloudFront geographic restrictions


# Field-Level Encryption

  • CloudFront 를 활용하여 실제 데이터를 처리하는 주체까지 데이터를 암호화해서 전달할 수 있는 방법
    • HTTPS 통신과는 별도의 개념
  • Edge Location 에서 받은 데이터 중 특정 데이터를 주어진 Public Key 로 암호화
  • 이후 데이터를 처리하는 측에서 Private Key 로 복호화하여 사용

Field-Level Encryption