AWS ‐ Signed URL 서명 로직 정리 - woojin-playground/Backend-PlayGround GitHub Wiki
📚 AWS ‐ Signed URL 서명 로직 정리
- Signed URL이란, 서버가 미리 서명해 준 URL로, 특정 조건(시간, 경로 등) 을 만족할 때만 리소스 접근을 허용하는 방식을 말한다.
📚 서명에 관여하는 핵심 요소
- 키 구성은 다음과 같다.
private key → 서명 생성용도, 서버만 보유한다.
public key → 서명 검증용도, CloudFront/서비스에 등록한다.
📚 Signed URL에 포함되는 정보
| 요소 |
의미 |
| Resource |
접근할 리소스 경로 |
| ExpireTime |
만료 시간(Unix epoch) |
| Policy or Expires |
접근 정책 |
| Signature |
Private Key로 만든 서명 |
| Key-Pair-Id |
어떤 Public Key로 검증할지 |
📚 Key Pair ID란?
- Key Pair ID = “이 서명이 어떤 Public Key로 검증돼야 하는지 알려주는 식별자”
- CloudFront에는 여러 개의 Public Key를 등록할 수 있다.
- Signature만 보고서 어떤 Public Key를 써야 할지 알 수 없기 때문에 Key Pair ID가 필요한 것이다.
[ Private Key ] ──(서명)──▶ Signature
│
└── 대응되는 Public Key
│
└── Key Pair ID (K123ABC...)
- Private Key ↔ Public Key : 한 쌍으로 구성된다.
- Public Key를 Cloudfront에 등록하면 내부적으로 ID를 하나 부여하게 되는데 그것이 바로 Key Pair ID이다.
📚 Signed URL에서 Key Pair ID의 역할
- Key-Pair-ID를 확인한다.
- 해당 ID에 매핑된 Public Key를 조회한다.
- Public Key로 Signature를 검증한다.
- 성공하면 통과 처리가 되고 실패하면 403 Access Denied가 나오게 된다.