서명된 URL, 서명된 쿠키 및 지리적 제한
서명된 URL과 쿠키를 사용하여 프리미엄 콘텐츠에 대한 액세스를 제한하고, 지리적 제한으로 특정 국가의 사용자를 차단합니다.
서명된 URL, 서명된 쿠키 및 지리적 제한은(는) CoddyKit의 무료 AWS Solutions Architect 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AWS Solutions Architect 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AWS Solutions Architect 강의에는 총 4개의 강의가 포함되어 있습니다.
CloudFront 콘텐츠 액세스 제한
기본적으로 CloudFront는 URL을 알고 있는 모든 뷰어에게 콘텐츠를 제공합니다. 프리미엄 또는 비공개 콘텐츠(비디오 강좌, 유료 소프트웨어 다운로드, 회원 전용 리소스)의 경우 승인된 사용자만 콘텐츠를 가져올 수 있도록 액세스를 제한해야 합니다.
CloudFront는 승인된 액세스를 위해 두 가지 메커니즘을 제공합니다. 서명된 URL은 하나의 특정 객체에 대한 액세스 권한을 부여하고, 서명된 쿠키는 경로 패턴과 일치하는 여러 객체에 대한 액세스 권한을 부여하는 쿠키 집합입니다. 두 방식 모두 RSA 키 쌍으로 생성된 암호화 서명을 사용합니다.
CloudFront 서명된 URL
서명된 URL은 만료 시간과 선택적으로 IP 주소 제한을 인코딩한 암호화 서명을 포함하는 CloudFront URL입니다. 이 URL은 만료될 때까지만, 그리고 지정된 경우 허용된 IP에서만 유효합니다. 만료된 후 CloudFront는 403 Forbidden을 반환합니다.
서명된 URL은 다음과 같은 경우에 적합합니다. 특정 사용자에게 하나의 특정 파일(예: 생성된 PDF 보고서)에 대한 액세스 권한을 부여할 때, 시간 제한이 있는 다운로드 링크를 제공할 때, 또는 클라이언트에서 쿠키를 설정할 수 없을 때(예: 모바일 앱이나 RTMP 스트리밍) 사용합니다.
# Generate a signed URL using AWS CLI (requires a CloudFront key pair)
aws cloudfront sign \
--url https://d1234abcdef.cloudfront.net/premium/video.mp4 \
--key-pair-id APKA1234567890 \
--private-key file://private-key.pem \
--date-less-than 2026-06-21T00:00:00ZCloudFront 서명된 쿠키
서명된 쿠키는 서명된 URL과 비슷하게 작동하지만 각 URL을 변경하지 않고 여러 파일에 대한 액세스 권한을 부여합니다. 인증에 성공하면 서버에서 세 개의 쿠키(CloudFront-Policy, CloudFront-Signature, CloudFront-Key-Pair-Id)를 생성하여 브라우저 응답에 설정합니다. 이후 해당 브라우저에서 CloudFront로 요청을 보내면 쿠키가 포함되므로, 조건에 맞는 모든 콘텐츠에 액세스할 수 있습니다.
서명된 쿠키는 다음과 같은 경우에 적합합니다. 로그인한 사용자에게 전체 프리미엄 섹션(예: /members/*의 모든 동영상)에 대한 액세스 권한을 부여할 때, 또는 각 개별 리소스의 URL 형식을 제어할 수 없을 때 사용합니다.
신뢰할 수 있는 키 그룹
CloudFront 서명을 생성하려면 CloudFront 키 페어가 필요합니다. 현대적인 방식은 신뢰할 수 있는 키 그룹을 사용하는 것입니다. RSA 키 페어를 생성하고, 공개 키를 CloudFront에 업로드한 다음, 키 그룹에 추가하고, 서명된 액세스가 필요한 캐시 동작에 키 그룹을 연결합니다.
개인 키는 서명 서버의 보안이 유지되는 위치(예: Secrets Manager)에 저장합니다. 사용자가 인증하면 서버는 개인 키를 사용하여 URL 또는 쿠키 정책에 서명합니다. CloudFront는 신뢰할 수 있는 키 그룹의 해당 공개 키를 사용하여 서명을 검증합니다.
# Upload a public key to CloudFront
aws cloudfront create-public-key \
--public-key-config '{
"Name": "MySigningKey",
"EncodedKey": "-----BEGIN PUBLIC KEY-----\n...<key>...\n-----END PUBLIC KEY-----",
"CallerReference": "2026-06-20-key"
}'기본 정책과 사용자 지정 서명된 URL 정책 비교
서명된 URL에는 다음 두 가지 정책 유형 중 하나를 사용할 수 있습니다.
- 기본 정책: 가장 간단한 형식으로, 리소스 URL과 만료 시간만 지정합니다. 서명이 짧고 생성하기 쉽습니다.
- 사용자 지정 정책: 더 유연한 형식으로, 선택적 와일드카드가 포함된 리소스 URL(
https://d123.cloudfront.net/videos/*), 선택적 시작 시간(이전에는 유효하지 않음), 선택적 IP 주소 제한을 지정할 수 있습니다. 정책 JSON은 URL에서 Base64로 인코딩됩니다.
간단한 단일 파일 링크에는 기본 정책을 사용하고, 와일드카드 리소스 일치나 IP 기반 제한이 필요할 때는 사용자 지정 정책을 사용합니다.
CloudFront 지역 제한
지역 제한(지리적 제한이라고도 함)은 콘텐츠를 제공할 때 시청자의 국가를 기준으로 CloudFront의 제공을 차단하거나 허용합니다. CloudFront는 타사 지리 위치 데이터베이스를 사용하여 시청자의 IP 주소에서 국가를 확인합니다.
배포마다 지역 제한을 허용 목록(목록에 있는 국가만 콘텐츠에 액세스 가능) 또는 차단 목록(목록에 있는 국가를 차단)으로 구성합니다. 제한된 국가의 사용자는 HTTP 403 응답을 받습니다. 지역 제한은 전체 배포에 적용되며 개별 경로에는 적용되지 않는 단순한 도구입니다.
# Enable geo-restriction: block two countries
aws cloudfront update-distribution \
--id EDFDVBD6EXAMPLE \
--distribution-config '{
...existing config...
"Restrictions": {
"GeoRestriction": {
"RestrictionType": "blacklist",
"Quantity": 2,
"Items": ["CN", "RU"]
}
}
}' \
--if-match ETVPDKIKX0DER지역 제한과 Route 53 지리 위치 라우팅 비교
CloudFront 지역 제한과 Route 53 지리 위치 라우팅은 모두 지리 정보를 사용하지만 목적은 서로 다릅니다.
- CloudFront 지역 제한: CDN 계층에서 콘텐츠의 엣지 제공을 차단하거나 허용합니다. 차단된 국가에는 403을 반환하며 배포별로 적용됩니다.
- Route 53 지리 위치 라우팅: 지리 정보를 기준으로 DNS 쿼리를 서로 다른 엔드포인트(서버나 페이지)로 라우팅합니다. 액세스를 차단하지 않고 다른 콘텐츠나 인프라로 연결합니다.
전체 국가를 차단하는 액세스 제어에는 CloudFront 지역 제한을 사용합니다. 사용자를 지역에 맞는 콘텐츠나 인프라로 라우팅하려면 Route 53 지리 위치 라우팅을 사용합니다.
서명된 URL을 S3 및 OAC와 결합하기
완전한 비공개 콘텐츠 전송 아키텍처는 다음과 같습니다.
- S3 버킷은 비공개 상태입니다(공개 액세스 없음).
- CloudFront는 OAC를 사용하므로 배포만 S3에서 읽을 수 있습니다.
- 비공개 콘텐츠의 캐시 동작에는 서명된 URL 또는 쿠키가 필요합니다(신뢰할 수 있는 키 그룹이 연결됨).
- 애플리케이션 서버가 사용자를 인증하고 서명된 URL 또는 쿠키를 발급합니다.
- 사용자는 시간 제한이 있는 서명된 CloudFront URL을 통해서만 콘텐츠에 액세스합니다.
사용자가 S3 URL을 추측하거나 공유하더라도 액세스가 차단됩니다. CloudFront URL을 공유하더라도 구성된 시간이 지나면 만료됩니다. 이러한 다층 접근 방식은 디지털 콘텐츠에 심층 방어를 제공합니다.
필드 수준 암호화
필드 수준 암호화는 원본으로 전달하기 전에 엣지에서 HTTP POST 요청의 민감한 데이터 필드를 암호화할 수 있는 고급 CloudFront 기능입니다. 원본 서버가 침해되더라도 해당 개인 키가 없으면 암호화된 필드(예: 신용 카드 번호와 주민등록번호)를 읽을 수 없습니다.
CloudFront는 엣지에서 공개 키를 사용하여 지정된 필드를 암호화합니다. 일치하는 개인 키를 가진 의도된 백엔드 서비스만 데이터를 복호화할 수 있습니다. 필드 수준 암호화는 이미 TLS로 보안이 적용된 파이프라인 내부에 보호 계층을 추가합니다.
토큰 기반 액세스 제어 패턴
국가 단위 차단을 넘어 세밀한 액세스 제어가 필요한 동적 애플리케이션에서는 Lambda@Edge를 사용한 토큰 기반 액세스가 일반적인 패턴입니다.
- 사용자가 Cognito 또는 인증 서비스로 인증하고 JWT를 받습니다.
- 사용자는 CloudFront 요청에 쿼리 매개변수 또는 쿠키로 JWT를 포함합니다.
- Lambda@Edge Viewer-Request 함수가 JWT 서명과 클레임을 검증합니다.
- 유효하면 Lambda@Edge가 요청을 원본으로 전달하고, 유효하지 않으면 401을 반환합니다.
이를 통해 인증되지 않은 요청이 원본에 도달하지 않고 CloudFront 엣지에서만 사용자별·리소스별 세밀한 액세스 제어를 수행할 수 있습니다.
실제 사용 사례 요약
서명된 URL/쿠키 및 지역 제한에 관한 시험 시나리오 패턴은 다음과 같습니다.
- '구매한 파일의 시간 제한 다운로드 링크' → 만료 시간이 설정된 서명된 URL
- '로그인한 프리미엄 사용자가 /premium/*의 모든 동영상에 액세스' → 와일드카드 정책이 적용된 서명된 쿠키
- '라이선스 문제로 특정 국가 사용자의 액세스를 차단' → CloudFront 지역 제한 차단 목록
- '국가별로 다른 콘텐츠 제공' → Route 53 지리 위치 라우팅 + 여러 배포 또는 원본
- '원본 관리자도 신용 카드 필드를 볼 수 없도록 보호' → 필드 수준 암호화
빠른 확인
이 lesson에서 다룬 AWS Solutions Architect(SAA-C03) 개념에 대한 이해도를 확인해 보세요.
lesson 복습
이 lesson에서는 다음을 배웠습니다. 서명된 URL은 만료 시간과 선택적 IP 제한을 사용하여 개별 파일에 대한 액세스를 제한하고, 서명된 쿠키는 한 번의 인증 세션에서 경로 패턴과 일치하는 여러 파일에 대한 액세스 권한을 부여하며, 지역 제한은 CloudFront 배포 수준에서 전체 국가를 차단하거나 허용합니다. 다음으로 WAF 및 Lambda@Edge와 함께 CloudFront를 살펴봅니다.
자주 묻는 질문
“서명된 URL, 서명된 쿠키 및 지리적 제한” 강의는 무료인가요?
네 — “서명된 URL, 서명된 쿠키 및 지리적 제한” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AWS Solutions Architect 강의 전체를 잠금 해제할 수 있습니다. AWS Solutions Architect 강의에는 총 4개의 강의가 포함되어 있습니다.
“서명된 URL, 서명된 쿠키 및 지리적 제한”에서 뭘 배우나요?
서명된 URL과 쿠키를 사용하여 프리미엄 콘텐츠에 대한 액세스를 제한하고, 지리적 제한으로 특정 국가의 사용자를 차단합니다. 브라우저에서 직접 실행하는 실습 코드로 AWS Solutions Architect을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
AWS Solutions Architect을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 AWS Solutions Architect은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“서명된 URL, 서명된 쿠키 및 지리적 제한” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 AWS Solutions Architect 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 AWS Solutions Architect 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- CloudFront 배포 및 오리진
- 캐시 동작 및 TTL 설정
- 서명된 URL, 서명된 쿠키 및 지리적 제한
- WAF 및 Lambda@Edge를 사용하는 CloudFront