미리 준비된 정책을 사용하여 서명된 URL 생성 - Amazon CloudFront

미리 준비된 정책을 사용하여 서명된 URL 생성

미리 준비된 정책을 사용하여 서명된 URL을 만들려면 다음 단계를 수행합니다.

미리 준비된 정책을 사용하여 서명된 URL을 만들려면

  1. .NET 또는 Java를 사용하여 서명된 URL을 만드는 중인데 키 페어의 프라이빗 키를 기본 .pem 형식에서 .NET 또는 Java와 상환되는 형식으로 다시 포맷하지 않았다면 지금 포맷하세요. 자세한 내용은 프라이빗 키 재포맷(.NET 및 Java만 해당) 단원을 참조하세요.

  2. 지정된 순서대로 다음 값을 연결하고 사이의 공백(탭과 줄바꿈 문자 포함)을 제거합니다. 애플리케이션 코드의 문자열에 이스케이프 문자를 포함해야 할 수도 있습니다. 모든 값에는 일종의 문자열이 있습니다. 다음 두 가지 예처럼 각 부분을 숫자( 
							1
						)로 입력합니다.

    
										1
									파일의 기본 URL

    기본 URL이란 서명된 URL을 사용하지 않고 파일에 액세스할 때 사용할 CloudFront URL을 말합니다. 자체 쿼리 문자열 파라미터가 있는 경우 여기에 포함됩니다. 웹 배포의 URL 형식에 대한 자세한 내용은 CloudFront에서 파일에 대한 URL 형식 사용자 지정을 참조하세요.

    • 다음 CloudFront URL은 배포의 이미지 파일을 위한 것입니다(CloudFront 도메인 이름 사용). image.jpgimages 디렉터리에 있습니다. URL에 있는 파일의 경로는 HTTP 서버 또는 Amazon S3 버킷의 파일 경로와 일치해야 합니다.

      http://d111111abcdef8.cloudfront.net/images/image.jpg

    • 다음 CloudFront URL은 쿼리 문자열을 포함합니다.

      http://d111111abcdef8.cloudfront.net/images/image.jpg?size=large

    • 다음 CloudFront URL은 배포의 이미지 파일을 위한 것입니다. 둘 다 대체 도메인 이름을 사용하며 두 번째는 쿼리 문자열을 포함합니다.

      http://www.example.com/images/image.jpg

      http://www.example.com/images/image.jpg?color=red

    • 다음 CloudFront URL은 대체 도메인 이름과 HTTPS 프로토콜을 사용하는 배포의 이미지 파일을 위한 것입니다.

      https://www.example.com/images/image.jpg

    
										2
									?

    The ?는 기본 URL 뒤에 쿼리 문자열 파라미터가 있음을 나타냅니다. 자체 쿼리 문자열 파라미터가 없는 경우에는 ?를 포함하세요.

    
										3
									자체 쿼리 문자열 파라미터(있는 경우)&

    이 값은 선택 사항입니다. 예를 들어, 자체 쿼리 문자열 파라미터로

    color=red&size=medium

    을 추가하고 싶은 경우 ? 뒤( 
											2
										참조)와 Expires 파라미터 앞 사이에 추가합니다. 드물지만 Key-Pair-Id 뒤에 쿼리 문자열 파라미터를 넣어야 하는 경우도 있습니다.

    중요

    파라미터는 Expires, Signature 또는 Key-Pair-Id라는 이름으로 지정할 수 없습니다.

    자체 파라미터를 추가하는 경우, 마지막 파라미터를 포함하여 각 파라미터 뒤에 &를 추가합니다.

    
										4
									Expires=Unix 시간 형식(초) 및 협정 세계시(UTC) 기준의 날짜 및 시간

    URL에서 파일에 대한 액세스 허용을 중지하게 할 날짜 및 시간입니다.

    Unix 시간 형식(초) 및 협정 세계시(UTC) 기준의 URL 만료 날짜 및 시간을 지정합니다. 예를 들면 2013년 1월 1일 오전 10시(UTC)를 Unix 시간 형식의 1357034400으로 변환합니다. 에포크(epoch) 시간을 사용하려면 날짜에 대해 32비트 정수를 사용합니다. 이 정수는 2147483647(2038년 1월 19일 03:14:07 UTC)를 넘을 수 없습니다. UTC에 대한 자세한 내용은 RFC 3339, 인터넷의 날짜 및 시간: 타임스탬프, https://tools.ietf.org/html/rfc3339를 참조하세요.

    
										5
									&Signature=정책 설명의 해시 및 서명된 버전

    JSON 정책 설명을 해시, 서명 및 base64로 인코딩한 버전입니다. 자세한 내용은 미리 준비된 정책을 사용하는 서명된 URL에 대한 서명 생성 단원을 참조하세요.

    
									6
								&Key-Pair-Id=서명을 생성하는 데 사용 중인 해당 프라이빗 키가 있는 CloudFront 퍼블릭 키의 퍼블릭 키 ID

    CloudFront 퍼블릭 키의 ID입니다(예: K2JCJMDEHXQW5F). CloudFront는 서명된 URL을 확인할 때 사용할 퍼블릭 키를 퍼블릭 키 ID로 판단합니다. CloudFront는 서명의 정보를 정책 설명의 정보와 비교하고 URL이 변조되지 않았음을 확인합니다.

    이 퍼블릭 키는 배포에서 신뢰할 수 있는 서명자인 키 그룹에 속해야 합니다. 자세한 내용은 서명된 URL 및 서명된 쿠키를 생성할 수 있는 서명자 지정 단원을 참조하세요.

서명된 URL의 예:


					1
				http://d111111abcdef8.cloudfront.net/image.jpg 
					2
				? 
					3
				color=red&size=medium& 
					4
				Expires=1357034400 
					5
				&Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-j19DzZrvDh6hQ73lDx~-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu-5jcQb0UEmatEXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6 
					6
				&Key-Pair-Id=K2JCJMDEHXQW5F

미리 준비된 정책을 사용하는 서명된 URL에 대한 서명 생성

미리 준비된 정책을 사용하는 서명된 URL의 서명을 만들려면 다음 절차를 수행하세요.

  1. 정책 설명을 만듭니다. 미리 준비된 정책을 사용하는 서명된 URL의 정책 설명 생성을(를) 참조하세요.

  2. 정책 설명에 서명하여 서명을 만듭니다. 미리 준비된 정책을 사용하는 서명된 URL에 대한 서명 생성을(를) 참조하세요.

미리 준비된 정책을 사용하는 서명된 URL의 정책 설명 생성

미리 준비된 정책을 사용하여 서명된 URL을 만드는 경우, Signature 파라미터는 정책 설명의 해시 및 서명된 버전입니다. 미리 준비된 정책을 사용하는 서명된 URL의 경우, 사용자 지정 정책을 사용하는 서명된 URL과 마찬가지로 URL에 정책 설명을 포함하지 않습니다. 정책 설명을 만들려면 다음 절차를 수행하세요.

미리 준비된 정책을 사용하는 서명된 URL에 대한 정책 설명을 만들려면

  1. 다음 JSON 형식과 UTF-8 문자 인코딩을 사용하여 정책 설명을 구성합니다. 지정된 모든 문장 부호 및 기타 리터럴 값을 정확히 포함해야 합니다. ResourceDateLessThan 파라미터에 대한 내용은 미리 준비된 정책을 사용하는 서명된 URL에 대한 정책 설명에서 지정한 값를 참조하세요.

    { "Statement": [ { "Resource": "base URL or stream name", "Condition": { "DateLessThan": { "AWS:EpochTime": ending date and time in Unix time format and UTC } } } ] }
  2. 정책 설명에서 모든 공백(탭과 줄바꿈 문자 포함)을 제거합니다. 애플리케이션 코드의 문자열에 이스케이프 문자를 포함해야 할 수도 있습니다.

미리 준비된 정책을 사용하는 서명된 URL에 대한 정책 설명에서 지정한 값

미리 준비된 정책에 대한 정책 설명을 만들 때 다음 값을 지정합니다.

리소스
참고

Resource에 대해 값을 하나만 지정할 수 있습니다.

쿼리 문자열(있는 경우)을 포함하지만 CloudFront Expires, SignatureKey-Pair-Id 파라미터를 제외한 기본 URL입니다. 예를 들면 다음과 같습니다.

http://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes

다음을 참조하세요.

  • 프로토콜(Protocol) – 값은 http:// 또는 https://로 시작해야 합니다.

  • 쿼리 문자열 파라미터(Query string parameters) – 쿼리 문자열 파라미터가 없는 경우, 물음표를 생략합니다.

  • 대체 도메인 이름(Alternate domain names) – URL에 대체 도메인 이름(CNAME)을 지정하는 경우, 웹 페이지 또는 애플리케이션의 파일을 참조할 때 대체 도메인 이름을 지정해야 합니다. 객체에 대한 Amazon S3 URL을 지정하지 마세요.

DateLessThan

Unix 시간 형식(초) 및 협정 세계시(UTC) 기준의 URL 만료 날짜 및 시간. 예를 들면 2013년 1월 1일 오전 10시(UTC)를 Unix 시간 형식의 1357034400으로 변환합니다.

이 값은 서명된 URL의 Expires 쿼리 문자열 파라미터 값과 일치해야 합니다. 값을 인용 부호로 묶지 마세요.

자세한 내용은 CloudFront는 서명된 URL에서 만료 날짜 및 시간을 언제 확인하나요? 단원을 참조하세요.

미리 준비된 정책을 사용하는 서명된 URL에 대한 정책 설명 예제

서명된 URL에 다음 예제의 정책 설명을 사용할 경우, 사용자는 UTC 기준 2013년 1월 1일 오전 10시까지 http://d111111abcdef8.cloudfront.net/horizon.jpg 파일에 액세스할 수 있습니다.

{ "Statement": [ { "Resource": "http://d111111abcdef8.cloudfront.net/horizon.jpg?size=large&license=yes", "Condition": { "DateLessThan": { "AWS:EpochTime": 1357034400 } } } ] }

미리 준비된 정책을 사용하는 서명된 URL에 대한 서명 생성

서명된 URL의 Signature 파라미터 값을 만들려면 미리 준비된 정책을 사용하는 서명된 URL의 정책 설명 생성에서 만든 정책 설명을 해시하고 서명합니다.

다음을 참조하여 정책 설명을 해시, 서명 및 인코딩하는 방법에 대한 추가적인 내용과 예제를 확인하세요.

옵션 1: 미리 준비된 정책을 사용하여 서명을 만들려면

  1. SHA-1 해시 함수 및 RSA를 사용하여 미리 준비된 정책을 사용하는 서명된 URL에 대한 정책 설명을 만들려면 절차에서 만든 RSA 정책 설명을 해시하고 서명합니다. 공백이 삭제된 버전의 정책 설명을 사용합니다.

    해시 함수에 필요한 프라이빗 키의 경우 배포에 대해 신뢰할 수 있는 활성 키 그룹에 퍼블릭 키가 있는 프라이빗 키를 사용합니다.

    참고

    정책 설명을 해시 및 서명하는 방법은 프로그래밍 언어와 플랫폼에 따라 달라집니다. 샘플 코드에 대한 내용은 서명 URL에 대한 서명을 만드는 코드 예제를 참조하세요.

  2. 해시 및 서명된 문자열에서 공백(탭과 줄바꿈 문자 포함)을 제거합니다.

  3. MIME base64 인코딩 기준으로 문자열을 base64로 인코딩합니다. 자세한 내용은 RFC 2045, MIME(Multipurpose Internet Mail Extensions) Part One: Format of Internet Message BodiesSection 6.8, Base64 Content-Transfer-Encoding을 참조하세요.

  4. URL 쿼리 문자열에서 사용할 수 없는 문자를 유효한 문자로 교체합니다. 아래 표에 사용할 수 없는 문자와 유효한 문자가 나열되어 있습니다.

    무효 문자를 교체할 유효한 문자

    +

    - (하이픈)

    =

    _ (밑줄)

    /

    ~ (물결표)

  5. 서명된 URL의 &Signature= 뒤에 결과 값을 추가하고 미리 준비된 정책을 사용하여 서명된 URL을 만들려면로 돌아가서 서명된 URL 부분을 마저 연결합니다.