일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- CHECK OPTION
- 지연로딩
- dfs
- 힙
- 이진탐색
- 즉시로딩
- PS
- FetchType
- SQL프로그래밍
- 동적sql
- eager
- 스프링 폼
- JPQL
- 비관적락
- 다대일
- 일대다
- 낙관적락
- shared lock
- exclusive lock
- 연관관계
- 유니크제약조건
- 데코레이터
- 연결리스트
- 백트래킹
- fetch
- BOJ
- querydsl
- 다대다
- 스토어드 프로시저
- execute
- Today
- Total
흰 스타렉스에서 내가 내리지
CDN에서 Signed URLs 와 암호화/검증 동작원리 본문
# 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 |