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

CDN에서 Signed URLs 와 암호화/검증 동작원리 본문

AWS

CDN에서 Signed URLs 와 암호화/검증 동작원리

주씨. 2024. 10. 26. 14:21
728x90

# Presigned URLs vs Signed URLs

1. Presigned URLs

  • 제한된 시간 동안 특정 리소스에 접근할 수 있도록 권한을 부여한다. 
  • URL에 서명을 포함해 리소스에 대한 읽기/쓰기 권한을 부여하며, 유효 시간이 지나면 URL 이 만료된다. 
  • 예 : S3 에서 객체를 제한된 시간 동안 접근하도록 허용하는 URL을 생성한다.

2. Signed URLs

  • 특정 조건 하에서만 URL에 대한 액세스를 제한한다. 
  • 클라이언트가 특정 콘텐츠를 제공받기 위해 URL 요청 시, 요청의 서명 정보를 검증해 조건을 만족할 때만 접근을 허용한다.
  • 예 : CloudFront 배포 시 특정 리소스에 대한 접근을 제한하고 싶을 때 사용된다. 
    • 특정 IP 주소 범위, 정해진 시간 (9am~5pm), 특정 디바이스, 특정 지역

 

즉, Presigned 는 특정 시간 동안 권한을 부여하는 방식이고, Signed 는 조건부 접근을 제어하는 방식이다. 

 

 


# CloudFront 에서 Signed URLs 를 사용하는 이유

  • 콘텐츠에 대한 접근을 제어하고 보안을 강화하기 위해 각 요청마다 Signed URLs 을 사용하여, 허가된 사용자만 특정 리소스에 접근할 수 있도록 한다.
  • CDN 은 사용자 조건부 접근이 필요한 경우가 많기 때문에, 다양한 조건을 설정해 사용자 접근을 제어할 수 있는 signed URLs를 사용한다.
  • CDN 에서 조건부 접근 제어를 수행하면 원본서버 (S3 등)의 트래픽이 줄어든다.
  • 콘텐츠 제공 서비스가 기간별 유료 서비스나 시간 제한 콘텐츠 제공을 하는 경우, Signed URL을 통해 조건부로 만료되는 URL 을 발급하는 것이 매우 효과적이다. 

 


# 그림으로 보는 동작 방식

* 간략 ver

 

권한을 가진 주체 (예: 애플리케이션) 가 만료시간, 허용 IP 주소 범위 등의 조건을 key 와 함께 서명하여 PreSignedURL 을 생성한다.

이 PreSignedURL 을 뷰어에게 전달해준다.

 

뷰어는 PreSignedURL 을 통해 CloudFront 에 접속하면, CF 는 이를 검증하고 컨텐츠를 응답해준다. 

 

 

* Detail ver

 

먼저, 관리자가 key pair (public key, private key) 를 생성한다. 

(private key 로 암호화를 하면, public key 로 이를 검증할 수 있다.) 

 

Public Key 를 CloudFront 에 등록한다. 그렇게 되면 CF 가 private key 로 암호화한 데이터를 검증할 수 있게 된다. 

그리고 Private Key 를 Application 에 등록한다. (위 그림에서는 Lambda 로 표시되어 있다.)

 

Application (Lambda) 에서는 Private key 를 사용하여 SignedURL 을 생성할 수 있다.

 

뷰어는 컨텐츠를 얻기 위해 API Gateway 에 url 요청을 한다.

Application 은 이 유저가 파일에 접근할 권한이 있는지 확인한 후, 유효할 경우 Private Key 를 사용하여 SignedURL/Cookie 를 생성하여 전달한다.

 

뷰어는 응답받은 PreSignedURL 로 CloudFront 에 접근한다. (PreSignedURL 에는 암호화된 시그니처가 포함되어 있다.)

CloudFront 는 등록된 Public Key 로 PreSignedURL 을 검증할 수 있다. 

만약 URL이 유효한 시그니처를 가지고 있을 경우, 검증에 성공하고 서버로부터 파일을 받아 뷰어에게 컨텐츠를 제공해준다. 

 

 

'AWS' 카테고리의 다른 글

CloudFront: Cache Key 설정 시나리오  (0) 2024.10.27
CF(7): CloudFront 컨텐츠 보호(2)  (0) 2024.10.26
CF(6): CloudFront 컨텐츠 보호(1)  (1) 2024.10.26
CF(5): CloudFront 파일 관리  (0) 2024.10.26
CF(4): CloudFront Behavior (동작)  (0) 2024.10.26