사용자 지정 정책을 사용하여 서명된 쿠키 설정 - Amazon CloudFront

사용자 지정 정책을 사용하여 서명된 쿠키 설정

사용자 지정 정책을 사용하는 서명된 쿠키를 설정하려면 다음 단계를 수행합니다.

Set-Cookie 헤더 쌍의 다음 예를 참조하십시오.

URL에 example.org와 같은 대체 도메인 이름을 사용하려면 Domain 속성 지정 여부와 상관없이 대체 도메인 이름을 배포에 추가해야 합니다. 자세한 내용은 대체 도메인 이름(CNAME) 주제에서 배포 설정 참조 섹션을 참조하세요.

예 1

파일 URL에 배포와 연결된 도메인 이름을 사용하는 경우 서명된 쿠키 하나에 Set-Cookie 헤더를 사용할 수 있습니다.

Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly
예제 2

파일의 URL에 대체 도메인 이름(example.org)을 사용하는 경우 서명된 쿠키 하나에 Set-Cookie 헤더를 사용할 수 있습니다.

Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=example.org; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=example.org; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=example.org; Path=/; Secure; HttpOnly
예 3

파일의 URL에 배포와 연결된 도메인 이름을 사용하는 경우 서명된 요청에 Set-Cookie 헤더 쌍을 사용할 수 있습니다.

Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=dd111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly
예 4

파일 URL에 배포와 연결된 대체 도메인 이름(example.org)을 사용하는 경우 서명된 요청 하나에 Set-Cookie 헤더 쌍을 사용할 수 있습니다.

Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=example.org; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=example.org; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=example.org; Path=/; Secure; HttpOnly

사용자 지정 정책을 사용하는 서명된 쿠키에 대한 정책 설명 생성

사용자 지정 정책에 대한 정책 설명을 만들려면 다음 단계를 수행합니다. 다양한 방법으로 파일에 대한 액세스를 제어하는 몇 가지 예제 정책 설명에 대한 내용은 사용자 지정 정책을 사용하는 서명된 쿠키에 대한 예제 정책 설명 단원을 참조하세요.

사용자 지정 정책을 사용하는 서명된 쿠키에 대한 정책 설명을 만들려면
  1. 다음 JSON 형식을 사용하여 정책 설명을 구성하세요.

    { "Statement": [ { "Resource": "URL of the file", "Condition": { "DateLessThan": { "AWS:EpochTime":required ending date and time in Unix time format and UTC }, "DateGreaterThan": { "AWS:EpochTime":optional beginning date and time in Unix time format and UTC }, "IpAddress": { "AWS:SourceIp": "optional IP address" } } } ] }

    다음을 참조하세요.

    • 단 한 개의 명령문만 포함시킬 수 있습니다.

    • UTF-8 문자 인코딩을 사용하세요.

    • 지정된 대로 정확하게 모든 문장 부호 및 파라미터 이름을 포함하세요. 파라미터 이름의 약어는 허용되지 않습니다.

    • Condition 섹션의 파라미터 순서는 중요하지 않습니다.

    • Resource, DateLessThan, DateGreaterThan, IpAddress에 대한 값 관련 내용은 서명된 쿠키에서 사용자 지정 정책을 위한 정책 설명에서 지정한 값을 참조하세요.

  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. Set-CookieCloudFront-Policy= 헤더의 결과 값을 포함하세요.

  6. 정책 설명을 해시, 서명 및 base64로 인코딩하여 Set-CookieCloudFront-Signature 헤더에 대한 서명을 만드세요. 자세한 내용은 사용자 지정 정책을 사용하는 서명된 쿠키에 대한 서명 생성 단원을 참조하십시오.

서명된 쿠키에서 사용자 지정 정책을 위한 정책 설명에서 지정한 값

사용자 지정 정책에 대한 정책 설명을 생성할 때 다음 값을 지정합니다.

리소스

쿼리 문자열을 포함하는 기본 URL(있는 경우):

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

중요

Resource 파라미터를 생략하는 경우, 사용자는 서명된 URL을 만들 때 사용하는 키 페어에 연결된 배포 관련 모든 파일에 액세스할 수 있습니다.

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

다음을 참조하세요.

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

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

  • 와일드카드(Wildcards) – 0개 이상의 문자(*)에 해당하거나 문자열 내 정확히 1문자(?)에 해당하는 와일드카드를 문자열 내 모든 곳에 사용할 수 있습니다. 예를 들어 값은

    https://d111111abcdef8.cloudfront.net/*game_download.zip*

    다음 파일을 포함합니다.

    • https://d111111abcdef8.cloudfront.net/game_download.zip

    • https://d111111abcdef8.cloudfront.net/example_game_download.zip?license=yes

    • https://d111111abcdef8.cloudfront.net/test_game_download.zip?license=temp

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

DateLessThan

Unix 시간 형식(초) 및 협정 세계시(UTC) 기준의 URL 만료 날짜 및 시간. 값을 인용 부호로 묶지 마세요.

예를 들면 2015년 3월 16일 오전 10시(UTC)를 Unix 시간 형식인 1426500000으로 변환합니다.

자세한 내용은 CloudFront가 서명된 쿠키의 만료 날짜 및 시간을 확인하는 시기 단원을 참조하십시오.

DateGreaterThan(선택 사항)

Unix 시간 형식(초)과 협정 세계시(UTC)의 URL에 대한 선택적 시작 날짜 및 시간. 사용자는 지정된 날짜 및 시간 이전에 파일에 액세스할 수 없습니다. 값을 인용 부호로 묶지 마세요.

IpAddress(선택 사항)

클라이언트의 IP 주소는 GET 요청을 합니다. 다음을 참조하세요.

  • 파일에 액세스하는 IP 주소를 허용하려면 IpAddress 파라미터를 생략합니다.

  • 하나의 IP 주소 또는 하나의 IP 주소 범위를 지정할 수 있습니다. 예를 들면, 클라이언트의 IP 주소가 두 개의 다른 범위 중 하나에 있는 경우, 정책을 설정하여 액세스를 허용할 수 없습니다.

  • 단일 IP 주소에서 액세스를 허용하기 위해 다음을 지정합니다.

    "IPv4 IP 주소/32"

  • IP 주소 범위는 스탠다드 IPv4 CIDR 형식(예: 192.0.2.0/24)을 지정해야 합니다. 자세한 내용은 RFC 4632, Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan, https://tools.ietf.org/html/rfc4632를 참조하세요.

    중요

    IPv6 형식의 IP 주소(예: 2001:0db8:85a3::8a2e:0370:7334)는 지원되지 않습니다.

    IpAddress를 포함하는 사용자 지정 정책을 사용할 경우 배포에 대해 IPv6를 사용하도록 설정하지 마세요. IP 주소로 일부 콘텐츠에 대한 액세스를 제한하고, 다른 콘텐츠에 대해서는 IPv6 요청을 지원하려면 두 가지 배포를 만들면 됩니다. 자세한 내용은 IPv6 사용 주제에서 배포 설정 참조 섹션을 참조하세요.

사용자 지정 정책을 사용하는 서명된 쿠키에 대한 예제 정책 설명

다음 예제 정책 설명은 특정 파일, 디렉터리의 모든 파일 또는 키 페어 ID에 연결된 모든 파일의 액세스 제어 방법을 보여줍니다. 예제는 또한 개별 IP 주소 또는 IP 주소 범위에서 액세스를 제어하는 방법과 지정된 날짜 및 시간 이후 사용자의 서명된 쿠키 사용 방지 방법을 보여줍니다.

이러한 예제를 복사하여 붙여 넣는 경우, 공백(탭과 줄바꿈 문자 포함)을 제거하고 값을 자체 값과 교체한 후 닫는 괄호(})뒤에 줄바꿈 문자를 포함합니다.

자세한 내용은 서명된 쿠키에서 사용자 지정 정책을 위한 정책 설명에서 지정한 값 단원을 참조하십시오.

예제 정책 설명: IP 주소 범위에서 하나의 파일에 액세스

다음 서명된 쿠키의 예제 사용자 지정 정책은 UTC 기준 2023년 1월 1일 오전 10시까지 https://d111111abcdef8.cloudfront.net/game_download.zip 범위의 IP 주소에서 192.0.2.0/24 파일에 액세스할 수 있는 사용자를 지정합니다.

{ "Statement": [ { "Resource": "https://d111111abcdef8.cloudfront.net/game_download.zip", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.0/24" }, "DateLessThan": { "AWS:EpochTime": 1357034400 } } } ] }

예제 정책 설명: IP 주소 범위에서 디렉터리의 모든 파일에 액세스

다음 예제 사용자 지정 정책은 Resource 파라미터의 * 와일드카드 문자에 표시된 바와 같이 training 디렉터리의 파일에 대한 서명된 쿠키를 만들 수 있도록 허용합니다. 사용자는 UTC 기준 2013년 1월 1일 오전 10시까지 192.0.2.0/24 범위의 IP 주소에서 파일에 액세스할 수 있습니다.

{ "Statement": [ { "Resource": "https://d111111abcdef8.cloudfront.net/training/*", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.0/24" }, "DateLessThan": { "AWS:EpochTime": 1357034400 } } } ] }

이 정책을 사용하는 서명된 쿠키는 각자 특정 파일을 식별하는 다음과 같은 기본 URL을 포함합니다.

https://d111111abcdef8.cloudfront.net/training/orientation.pdf

예제 정책 설명: 하나의 IP 주소에서 키 페어 ID에 연결된 모든 파일에 액세스

다음 샘플 사용자 지정 정책은 Resource 파라미터의 * 와일드카드 문자 표시된 바와 같이 배포와 연결된 파일에 대한 서명된 쿠키를 설정할 수 있도록 허용합니다. 사용자는 IP 주소 192.0.2.10/32를 사용해야 합니다. CIDR 표기법의 192.0.2.10/32 값은 단일 IP 주소 192.0.2.10을(를) 가리킵니다. 파일은 UTC 기준 2013년 1월 1일 오전 10시에서 2013년 1월 2일 오전 10시까지만 사용할 수 있습니다.

{ "Statement": [ { "Resource": "https://*", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.10/32" }, "DateGreaterThan": { "AWS:EpochTime": 1357034400 }, "DateLessThan": { "AWS:EpochTime": 1357120800 } } } ] }

이 정책을 사용하는 서명된 쿠키는 각각 특정 CloudFront 배포의 특정 파일을 식별하는 다음과 같은 기본 URL을 포함합니다.

https://d111111abcdef8.cloudfront.net/training/orientation.pdf

또한 서명된 쿠키는 키 페어 ID를 포함하고 이는 기본 URL에서 지정한 배포(d111111abcdef8.cloudfront.net)의 신뢰할 수 있는 키 그룹과 연결되어야 합니다.

사용자 지정 정책을 사용하는 서명된 쿠키에 대한 서명 생성

서명된 쿠키에 대한 서명은 정책 설명의 해시, 서명 및 base64로 인코딩된 버전의 사용자 지정 정책을 사용합니다.

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

사용자 지정 정책으로 서명된 쿠키에 대한 서명을 만들려면
  1. SHA-1 해시 함수 및 RSA를 사용하여 사용자 지정 정책을 사용하는 서명된 URL에 대한 정책 설명을 만들려면 절차에서 만든 JSON 정책 설명을 해시하고 서명합니다. 더 이상 공백을 포함하지 않지만 base64로 인코딩되지 않은 정책 설명 버전을 사용합니다.

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

    참고

    정책 설명을 해시 및 서명하는 방법은 프로그래밍 언어와 플랫폼에 따라 달라집니다. 샘플 코드에 대한 내용은 서명 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. Set-Cookie 이름-값 페어에 대한 CloudFront-Signature= 헤더의 결과 값을 포함하고 사용자 지정 정책을 사용하여 서명된 쿠키를 설정하려면으로 돌아가서 Set-Cookie에 대한 CloudFront-Key-Pair-Id 헤더를 추가하세요.