서명된 URL 사용 - Amazon CloudFront

서명된 URL 사용

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

참고

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

서명된 URL에 대해 미리 준비된 정책 또는 사용자 지정 정책 사용 결정

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

설명 미리 준비된 정책 사용자 정의 정책

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

아니요

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

아니요

예(선택 사항)

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

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

아니요

예(선택 사항)

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

아니요

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

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

서명된 URL의 작동 방식

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

  1. CloudFront 배포에서 CloudFront가 URL 서명을 확인하는 데 사용할 수 있는 퍼블릭 키가 포함된 신뢰할 수 있는 키 그룹을 하나 이상 지정합니다. 해당 프라이빗 키를 사용하여 URL에 서명합니다.

    자세한 내용은 서명된 URL 및 서명된 쿠키를 생성할 수 있는 서명자 지정 단원을 참조하십시오.

  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에 쿼리 문자열을 추가하면 해당 URL이 HTTP 403 상태를 반환합니다.

서명된 URL의 유효 기간 결정

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

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

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

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

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

예제 코드 및 타사 도구

서명된 URL의 해시 및 서명된 부분을 만드는 예제 코드에 대해서는 다음 주제를 참조하세요.