Amazon CloudFront
개발자 가이드 (API 버전 2016-09-29)

서명된 URL 사용

서명된 URL에는 만료 날짜 및 시간 같은 추가 정보가 포함되므로 콘텐츠에 대한 액세스를 보다 세부적으로 제어할 수 있습니다. 이러한 추가 정보는 미리 준비된(canned) 정책 또는 사용자 지정 정책에 따라 정책 설명에 나타납니다. 미리 준비된(canned) 정책과 사용자 지정 정책 간의 차이점은 이어지는 두 단원에 설명되어 있습니다.

참고

같은 배포에 대해 미리 준비된(canned) 정책과 사용자 지정 정책으로 각각 서명된 URL을 만들 수 있습니다.

서명된 URL에 대해 미리 준비된(canned) 정책과 사용자 지정 정책 중 선택

서명된 URL을 만들 때 JSON 형식의 정책 설명을 작성하여 서명된 URL의 제약 조건(예: URL의 유효 기간)을 지정합니다. 미리 준비된(canned) 정책 또는 사용자 지정 정책을 사용할 수 있습니다. 다음은 미리 준비된(canned) 정책과 사용자 지정 정책을 비교한 것입니다.

설명 미리 준비된(canned) 정책 사용자 지정 정책

정책 설명은 여러 객체에 재사용할 수 있습니다. 정책 설명을 재사용하려면 Resource 객체에 와일드카드 문자를 사용해야 합니다. 자세한 내용은 사용자 지정 정책을 사용하는 서명된 URL에 대한 정책 설명에서 지정한 값 단원을 참조하십시오.

아니요

날짜 및 시간을 지정하여 사용자가 콘텐츠에 액세스를 시작할 수 있습니다.

아니요

예(선택 사항)

사용자의 콘텐츠 액세스를 중단할 날짜 및 시간을 지정할 수 있습니다.

콘텐츠에 액세스할 수 있는 사용자의 IP 주소 또는 IP 주소 범위를 지정할 수 있습니다.

아니요

예(선택 사항)

서명된 URL에는 base64 인코딩 버전의 정책이 포함되므로 URL 길이가 더 깁니다.

아니요

미리 준비된(canned) 정책으로 서명된 URL을 만드는 방법에 대한 자세한 내용은 미리 준비된 정책을 사용하여 서명된 URL 생성을 참조하십시오.

사용자 지정 정책으로 서명된 URL을 만드는 방법에 대한 자세한 내용은 사용자 지정 정책을 사용한 서명된 URL 생성을 참조하십시오.

서명된 URL의 작동 방식

여기서는 서명된 URL에 알맞게 CloudFront 및 Amazon S3를 구성하는 방법과 사용자가 서명된 URL로 객체를 요청할 때 CloudFront가 대응하는 방식을 살펴봅니다.

  1. CloudFront 배포에서 신뢰할 수 있는 서명자(서명된 URL을 만들 권한이 있는 AWS 계정)를 하나 이상 지정합니다.

    자세한 내용은 서명된 URL 및 서명된 쿠키(신뢰할 수 있는 서명자)를 만들 수 있는 AWS 계정 지정 단원을 참조하십시오.

  2. 애플리케이션을 개발하여 사용자에게 콘텐츠 액세스를 허용할지 여부를 판단하고, 액세스를 제한할 애플리케이션 부분 또는 객체에 대해 서명된 URL을 만듭니다. 자세한 내용은 관련 주제를 참조하십시오.

  3. 사용자가 서명된 URL이 필요한 객체를 요청합니다.

  4. 애플리케이션은 해당 사용자에게 객체 액세스 권한이 있는지 확인합니다. 사용자가 로그인했는지, 콘텐츠 액세스 비용을 지불했는지, 기타 액세스 요구 사항을 충족했는지 등을 확인합니다.

  5. 애플리케이션은 서명된 URL을 만들어 사용자에게 반환합니다.

  6. 사용자는 서명된 URL을 통해 콘텐츠를 다운로드하거나 스트리밍할 수 있습니다.

    이 단계는 자동으로 진행되기 때문에 사용자는 콘텐츠에 액세스하기 위해 아무것도 하지 않아도 됩니다. 예를 들어, 사용자가 웹 브라우저에서 콘텐츠에 액세스한다면 애플리케이션은 서명된 URL을 브라우저에 반환합니다. 브라우저는 즉시 서명된 URL을 사용하여 사용자 개입 없이 CloudFront 엣지 캐시의 객체에 액세스합니다.

  7. CloudFront는 퍼블릭 키를 사용하여 서명을 확인하고 URL이 아직 변조되지 않았음을 확인합니다. 유효하지 않은 서명인 경우 요청을 거부합니다.

    서명이 유효한 경우, CloudFront는 URL의 정책 설명을 보고 아직 유효한 정책임을 확인합니다. 미리 준비된(canned) 정책을 사용하는 경우에는 정책 설명을 구성합니다. 예를 들어, URL의 시작 및 종료 날짜와 시간을 지정했다면 CloudFront는 액세스가 허용되는 시간 동안 콘텐츠 액세스를 시도한 사용자를 확인합니다.

    요청이 정책 설명의 요구 사항을 충족하는 경우, CloudFront는 스탠다드 작업을 수행합니다. 다시 말해 객체가 이미 엣지 캐시에 있는지 여부를 판단하고, 필요에 따라 요청을 원본으로 전달하고, 사용자에게 객체를 반환합니다.

서명된 URL의 유효 기간 선택

단시간(최소 몇 분) 동안만 유효한 서명된 URL을 사용하여 프라이빗 콘텐츠를 배포할 수 있습니다. 이렇게 단시간 동안 유효한 서명된 URL은 영화 대여 또는 음악 다운로드 등을 주문 방식으로 고객에게 제공하는 등 제한된 목적으로 즉석에서 콘텐츠를 배포할 때 유용합니다. 서명된 URL의 효력을 단시간 동안만 유지하려는 경우, 이를 자동으로 만드는 애플리케이션을 개발할 수 있습니다. 사용자가 객체를 다운로드하거나 미디어 파일을 재생하기 시작하면 CloudFront는 URL의 만료 시간을 현재 시간과 비교하여 URL이 아직 유효한지 파악합니다.

또한 장시간(몇 년 정도) 동안 유효한 서명된 URL을 사용하여 프라이빗 콘텐츠를 배포할 수도 있습니다. 장시간 동안 유효한 서명된 URL은 알려진 사용자에게 프라이빗 콘텐츠를 배포할 때 유용합니다. 투자자에게 사업 계획을 배포하거나 직원에게 교육 자료를 배포하는 경우가 여기에 해당합니다. 이러한 장기간 서명된 URL을 만드는 애플리케이션을 개발하거나 비공개 콘텐츠 구성을 위한 도구 및 코드 예제에 나열된 타사 GUI 도구를 사용할 수 있습니다.

CloudFront가 서명된 URL에서 만료 날짜 및 시간을 확인하는 경우

CloudFront는 서명된 URL의 만료 날짜와 시간을 확인할 때 해당 URL이 웹 배포용인지 아니면 RTMP 배포용인지에 따라 URL이 아직 유효한지 여부를 파악할 수 있습니다.

  • 웹 배포 – CloudFront는 HTTP 요청이 있을 때 서명된 URL의 만료 날짜 및 시간을 확인합니다. 클라이언트가 만료 시간 직전에 큰 객체를 다운로드하기 시작한 경우, 다운로드 도중 만료 시간이 지나도 다운로드는 완료됩니다. TCP 연결이 끊어진 경우, 클라이언트가 만료 시간 이후에 다운로드를 다시 시작하는 것은 불가능합니다.

    클라이언트가 범위 GET을 사용하여 객체를 한 조각씩 가져오는 경우, 만료 시간 이후의 GET 요청은 실패합니다. 범위 GET에 대한 자세한 내용은 CloudFront에서 객체에 대한 부분적인 요청을 처리하는 방법(Range GET)을 참조하십시오.

  • RTMP 배포 – CloudFront는 재생 이벤트가 시작될 때 서명된 URL의 만료 시간을 확인합니다. 만료 시간이 지나기 전에 클라이언트가 미디어 파일을 재생하기 시작하는 경우, CloudFront는 전체 미디어 파일을 재생합니다. 그러나 미디어 플레이어에 따라서는 중지했다가 재시작하면 다른 재생 이벤트가 트리거될 수 있습니다. 미디어 파일의 다른 위치로 건너뛰면 다른 재생 이벤트가 트리거됩니다. 만료 시간이 지난 후에 후속 재생 이벤트가 발생하는 경우, CloudFront는 미디어 파일을 제공하지 않습니다.

샘플 코드 및 타사 도구

서명된 URL의 해시 및 서명된 부분을 만드는 샘플 코드에 대해서는 다음 주제를 참조하십시오.

서명된 URL 생성 등 프라이빗 콘텐츠를 지원하는 타사 도구에 대한 자세한 내용은 비공개 콘텐츠 구성을 위한 도구 및 코드 예제을 참조하십시오.