이 페이지는 볼트와 2012년의 원래 REST API를 사용하는 Amazon Glacier 서비스의 기존 고객에게만 해당됩니다.
아카이브 스토리지 솔루션을 찾고 있다면 Amazon Glacier Amazon S3, S3 Glacier Flexible Retrieval 및 S3S3 Glacier Deep Archive의 Amazon Glacier 스토리지 클래스를 사용하는 것이 좋습니다. 이러한 스토리지 옵션에 대한 자세한 내용은 Amazon Glacier 스토리지 클래스
Amazon Glacier(기존 독립 실행형 볼트 기반 서비스)는 2025년 12월 15일부터 기존 고객에게 영향을 주지 않고 더 이상 신규 고객을 받지 않습니다. Amazon Glacier는 데이터를 볼트에 저장하고 Amazon S3 및 Amazon S3 Glacier 스토리지 클래스와 구별되는 자체 APIs가 있는 독립 실행형 서비스입니다. 기존 데이터는 Amazon Glacier에서 무기한으로 안전하고 액세스할 수 있습니다. 마이그레이션이 필요하지 않습니다. 저비용 장기 아카이브 스토리지의 경우는 S3 버킷 기반 API, 전체 가용성, 저렴한 비용 및 서비스 통합을 통해 우수한 고객 경험을 제공하는 Amazon S3 Glacier 스토리지 클래스
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
요청에 서명하기
Amazon Glacier에서는 요청에 서명하여 보내는 모든 요청을 인증해야 합니다. 요청에 서명하려면 암호화 해시 함수를 이용해 디지털 서명을 계산해야 합니다. 암호화 해시는 입력을 근거로 하여 고유 해시 값을 반환하는 함수입니다. 해시 함수에 대한 입력에는 요청 텍스트와 보안 액세스 키가 포함됩니다. 해시 함수는 요청에 서명으로 포함하는 해시 값을 반환합니다. 서명은 요청에서 Authorization 헤더의 일부입니다.
요청을 수신한 후 Amazon Glacier는 요청에 서명하는 데 사용한 것과 동일한 해시 함수와 입력을 사용하여 서명을 다시 계산합니다. 결과 서명이 요청의 서명과 일치하면 Amazon Glacier가 요청을 처리합니다. 그렇지 않으면 요청이 거부됩니다.
Amazon Glacier는 AWS 서명 버전 4를 사용한 인증을 지원합니다. 서명을 계산하기 위한 프로세스는 다음 세 작업으로 나뉠 수 있습니다.
-
HTTP 요청을 정규 형식으로 재배열합니다. Amazon Glacier는 서명을 다시 계산하여 전송한 양식과 비교할 때 동일한 정식 양식을 사용하기 때문에 정식 양식을 사용해야 합니다.
-
암호화 해시 함수에 대한 입력 값 중 하나로 사용할 문자열을 만듭니다. 서명할 문자열이라는 문자열은 해시 알고리즘의 이름, 요청 날짜, 자격 증명 범위 문자열, 이전 작업에서 정규화된 요청을 연결한 것입니다. 자격 증명 범위 문자열 자체는 날짜, AWS 리전 및 서비스 정보의 연결입니다.
-
서명할 문자열과 파생된 의 두 입력 문자열을 허용하는 암호화 해시 함수를 사용하여 요청에 대한 서명을 만듭니다. 파생된 키는 보안 액세스 키로 시작해서 자격 증명 범위 문자열을 사용하여 일련의 해시 기반 메시지 인증 코드(HMAC)를 만들어 계산됩니다. 이 서명 단계에서 사용되는 해시 함수는 데이터를 업로드하는 Amazon Glacier APIs에 사용되는 트리-해시 알고리즘이 아닙니다.
서명 계산 예시
다음 예시에서는 볼트 만들기(PUT 값)에 대해 서명을 생성하는 세부 과정을 안내합니다. 이 예시는 서명 계산 방법을 점검하기 위한 참조로 사용할 수 있습니다. 자세한 내용은 IAM 사용 설명서의 AWS API 요청 서명을 참조하세요.
이 예시에서는 다음과 같이 가정합니다.
-
요청 타임스탬프는
Fri, 25 May 2012 00:24:53 GMT입니다. -
엔드포인트는 미국 동부(버지니아 북부) 리전인
us-east-1입니다.
일반 요청 구문(JSON 본문 포함)은 다음과 같습니다.
PUT /-/vaults/examplevault HTTP/1.1 Host: glacier.us-east-1.amazonaws.com Date: Fri, 25 May 2012 00:24:53 GMT Authorization:SignatureToBeCalculatedx-amz-glacier-version: 2012-06-01
작업 1: 정식 요청 생성에서 계산되는 요청의 정식 양식은 다음과 같습니다.
PUT /-/vaults/examplevault host:glacier.us-east-1.amazonaws.com x-amz-date:20120525T002453Z x-amz-glacier-version:2012-06-01 host;x-amz-date;x-amz-glacier-version e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
정규 요청의 마지막 줄은 요청 본문의 해시입니다. 또한 정규 요청에서 비어 있는 세 번째 줄에 주의해야 합니다. 비어 있는 이유는 이 API에 대해 쿼리 파라미터가 없기 때문입니다.
작업 2: 서명할 문자열 생성에서 서명할 문자열은 다음과 같습니다.
AWS4-HMAC-SHA256 20120525T002453Z 20120525/us-east-1/glacier/aws4_request 5f1da1a2d0feb614dd03d71e87928b8e449ac87614479332aced3a701f916743
서명할 문자열의 첫째 줄은 알고리즘, 둘째 줄은 타임스탬프, 셋째 줄은 자격 증명 범위, 마지막 줄은 작업 1 정규 요청의 해시입니다. 자격 증명 범위에서 사용하는 서비스 이름은 glacier입니다.
작업 3: 서명 생성에서 파생된 키는 다음과 같이 표현할 수 있습니다.
derived key = HMAC(HMAC(HMAC(HMAC("AWS4" + YourSecretAccessKey,"20120525"),"us-east-1"),"glacier"),"aws4_request")
보안 액세스 키인 wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY를 사용하는 경우, 계산된 서명은 다음과 같습니다.
3ce5b2f2fffac9262b4da9256f8d086b4aaf42eba5f111c21681a65a127b7c2a
마지막 단계는 Authorization 헤더를 생성하는 것입니다. 데모용 액세스 키 &;에 대한 헤더는 다음과 같습니다(가독성을 높이기 위해 줄 바꿈을 추가함).AKIAIOSFODNN7EXAMPLE
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20120525/us-east-1/glacier/aws4_request, SignedHeaders=host;x-amz-date;x-amz-glacier-version, Signature=3ce5b2f2fffac9262b4da9256f8d086b4aaf42eba5f111c21681a65a127b7c2a
스트리밍 작업을 위한 서명 계산
아카이브 업로드(POST archive)와 파트 업로드(PUT uploadID)는 서명과 함께 요청을 전송할 때 x-amz-content-sha256 헤더를 추가해야 하는 스트리밍 작업입니다. 스트리밍 작업의 서명 단계는 스트리밍 헤더를 추가하는 것만 제외하고 다른 작업의 서명 단계와 정확히 일치합니다.
스트리밍 헤더인 x-amz-content-sha256의 계산은 업로드할 전체 내용(페이로드)의 SHA256 해시에 따라 달라집니다. 단, 이 계산은 SHA256 트리-해시(체크섬 계산)와 다릅니다. 일반적인 경우 외에도 페이로드 데이터의 SHA256 해시 값은 페이로드 데이터의 SHA256 트리-해시와 다릅니다.
페이로드 데이터가 바이트 배열로 지정되면 다음 Java 코드 조각을 사용하여 SHA256 해시를 계산할 수 있습니다.
public static byte[] computePayloadSHA256Hash2(byte[] payload) throws NoSuchAlgorithmException, IOException { BufferedInputStream bis = new BufferedInputStream(new ByteArrayInputStream(payload)); MessageDigest messageDigest = MessageDigest.getInstance("SHA-256"); byte[] buffer = new byte[4096]; int bytesRead = -1; while ( (bytesRead = bis.read(buffer, 0, buffer.length)) != -1 ) { messageDigest.update(buffer, 0, bytesRead); } return messageDigest.digest(); }
마찬가지로 C#에서도 다음 코드 조각과 같이 페이로드 데이터의 SHA256 해시를 계산할 수 있습니다.
public static byte[] CalculateSHA256Hash(byte[] payload) { SHA256 sha256 = System.Security.Cryptography.SHA256.Create(); byte[] hash = sha256.ComputeHash(payload); return hash; }
스트리밍 API의 서명 계산 예제
다음 예제에서는 Amazon Glacier의 두 스트리밍 API 중 아카이브 업로드(POST archive)하나인에 대한 서명을 생성하는 세부 정보를 안내합니다. APIs 이 예시에서는 다음과 같이 가정합니다.
-
요청 타임스탬프는
Mon, 07 May 2012 00:00:00 GMT입니다. -
엔드포인트는 미국 동부(버지니아 북부) 리전인 us-east-1입니다.
-
콘텐츠 페이로드는 "Welcome to Amazon Glacier" 문자열입니다.
일반 요청 구문(JSON 본문 포함)은 아래 예제와 같습니다. 예제를 보면 x-amz-content-sha256 헤더가 포함되어 있습니다. 또한 x-amz-sha256-tree-hash와 x-amz-content-sha256의 값이 동일합니다. 하지만 크기가 1MB를 넘는 아카이브를 업로드할 때는 그렇지 않습니다.
POST /-/vaults/examplevault HTTP/1.1 Host: glacier.us-east-1.amazonaws.com Date: Mon, 07 May 2012 00:00:00 GMT x-amz-archive-description: my archive x-amz-sha256-tree-hash: SHA256 tree hash x-amz-content-sha256: SHA256 payload hash Authorization:SignatureToBeCalculatedx-amz-glacier-version: 2012-06-01
작업 1: 정식 요청 생성에서 계산되는 요청의 정식 형식은 아래와 같습니다. 예제를 보면 스트리밍 헤더인 x-amz-content-sha256에 값이 포함되어 있습니다. 이 말은 페이로드를 읽고 SHA256 해시를 먼저 계산한 후에 서명을 계산해야 한다는 것을 의미합니다.
POST /-/vaults/examplevault host:glacier.us-east-1.amazonaws.com x-amz-content-sha256:726e392cb4d09924dbad1cc0ba3b00c3643d03d14cb4b823e2f041cff612a628 x-amz-date:20120507T000000Z x-amz-glacier-version:2012-06-01 host;x-amz-content-sha256;x-amz-date;x-amz-glacier-version 726e392cb4d09924dbad1cc0ba3b00c3643d03d14cb4b823e2f041cff612a628
남아있는 서명 계산은 서명 계산 예시에 간략하게 설명되어 있는 단계를 따릅니다. 보안 액세스 키인 Authorization과 액세스 키인 wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY을 사용하는 AKIAIOSFODNN7EXAMPLE 헤더는 아래와 같습니다(가독성을 위해 줄바꿈이 추가됨).
Authorization=AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20120507/us-east-1/glacier/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-glacier-version, Signature=b092397439375d59119072764a1e9a144677c43d9906fd98a5742c57a2855de6