Signieren von Anforderungen - Amazon Glacier

Diese Seite ist nur für Bestandskunden des Amazon Glacier-Service bestimmt, die Vaults und die ursprüngliche REST-API von 2012 verwenden.

Wenn Sie nach Archivspeicherlösungen suchen, empfehlen wir die Verwendung der Amazon Glacier-Speicherklassen in Amazon S3, S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval und S3 Glacier Deep Archive. Weitere Informationen zu diesen Speicheroptionen finden Sie unter Amazon Glacier-Speicherklassen.

Amazon Glacier (ursprünglicher eigenständiger, vault-basierter Service) akzeptiert ab dem 15. Dezember 2025 keine Neukunden mehr, ohne dass dies Auswirkungen auf Bestandskunden hat. Amazon Glacier ist ein eigenständiger Service APIs , der Daten in Tresoren speichert und sich von den Speicherklassen Amazon S3 und Amazon S3 Glacier unterscheidet. Ihre vorhandenen Daten bleiben in Amazon Glacier auf unbestimmte Zeit sicher und zugänglich. Es ist keine Migration erforderlich. Für kostengünstige, langfristige Archivierungsspeicherung AWS empfiehlt sich die Amazon S3 Glacier-Speicherklasse, die mit S3-Bucket-Basis, voller AWS-Region Verfügbarkeit APIs, geringeren Kosten und AWS Serviceintegration ein hervorragendes Kundenerlebnis bieten. Wenn Sie erweiterte Funktionen wünschen, sollten Sie eine Migration zu Amazon S3 Glacier-Speicherklassen in Betracht ziehen, indem Sie unseren AWS Lösungsleitfaden für die Übertragung von Daten aus Amazon Glacier-Tresoren in Amazon S3 Glacier-Speicherklassen verwenden.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Signieren von Anforderungen

Amazon Glacier verlangt, dass Sie jede Anfrage, die Sie senden, authentifizieren, indem Sie die Anfrage signieren. Zum Signieren einer Anforderung berechnen Sie eine digitale Signatur mit einer kryptografischen Hash-Funktion. Ein kryptografischer Hash ist eine Funktion, die auf Grundlage der Eingabe einen einzigartigen Hash-Wert zurückgibt. Die Eingabe in die Hash-Funktion besteht aus dem Text Ihrer Anforderung und Ihrem geheimen Zugriffsschlüssel. Die Hash-Funktion gibt einen Hash-Wert zurück, den Sie in die Anforderung als Ihre Signatur einfügen. Die Signatur ist Teil des Headers Authorization in der Anforderung.

Nach Erhalt Ihrer Anfrage berechnet Amazon Glacier die Signatur mit derselben Hash-Funktion und Eingabe neu, mit der Sie die Anfrage signiert haben. Wenn die resultierende Signatur mit der Signatur in der Anfrage übereinstimmt, verarbeitet Amazon Glacier die Anfrage. Andernfalls wird die Anforderung abgelehnt.

Amazon Glacier unterstützt die Authentifizierung mit AWS Signature Version 4. Der Prozess zum Berechnen einer Signatur lässt sich in drei Aufgaben untergliedern:

  • Aufgabe 1: Erstellen einer kanonischen Anforderung

    Ordnen Sie Ihre HTTP-Anforderung in einem kanonischen Format neu an. Die Verwendung eines kanonischen Formulars ist erforderlich, da Amazon Glacier dasselbe kanonische Formular verwendet, wenn es eine Signatur neu berechnet, um sie mit der von Ihnen gesendeten zu vergleichen.

  • Aufgabe 2: Erstellen einer zu signierenden Zeichenfolge

    Erstellen Sie eine Zeichenfolge, die Sie als einen der Eingabewerte für die kryptografische Hash-Funktion nutzen. Die als zu signierende Zeichenfolge bezeichnete Zeichenfolge ist eine Kombination aus dem Namen des Hash-Algorithmus, dem Anforderungsdatum, einer Zeichenfolge mit dem Umfang der Anmeldeinformationen und der kanonischen Anforderung aus der vorherigen Aufgabe. Die Zeichenfolge für den Gültigkeitsbereich der Anmeldeinformationen selbst ist eine Verkettung von Datums-, Regions- und Serviceinformationen. AWS

  • Aufgabe 3: Erstellen einer Signatur

    Erstellen Sie eine Signatur für Ihre Anforderung. Verwenden Sie dazu eine kryptografische Hash-Funktion, die zwei Eingabezeichenfolgen akzeptiert: die zu signierende Zeichenfolge und einen abgeleiteten Schlüssel. Der abgeleitete Schlüssel wird berechnet, indem Sie mit Ihrem geheimen Zugriffsschlüssel beginnen und anhand der Zeichenfolge für den Gültigkeitsbereich der Anmeldeinformationen eine Reihe von Hash-basierten Nachrichtenauthentifizierungscodes erstellen (). HMACs Beachten Sie, dass es sich bei der in diesem Signierungsschritt verwendeten Hash-Funktion nicht um den Tree-Hash-Algorithmus handelt, der in Amazon Glacier APIs zum Hochladen von Daten verwendet wird.

Signatur-Berechnungsbeispiel

Das folgende Beispiel macht Sie damit vertraut, wie Sie eine Signatur für Create Vault (PUT vault) erstellen. Das Beispiel kann als Referenz verwendet werden, um Ihre Signaturberechnungsmethode zu überprüfen. Weitere Informationen finden Sie unter Signieren von AWS API-Anfragen im IAM-Benutzerhandbuch.

In diesem Beispiel wird Folgendes angenommen:

  • Der Zeitstempel der Anforderung ist Fri, 25 May 2012 00:24:53 GMT.

  • Der Endpunkt ist die Region „USA Ost (Nord-Virginia)“ ( us-east-1).

Die allgemeine Anforderungssyntax (einschließlich JSON-Text) ist:

PUT /-/vaults/examplevault HTTP/1.1 Host: glacier.us-east-1.amazonaws.com Date: Fri, 25 May 2012 00:24:53 GMT Authorization: SignatureToBeCalculated x-amz-glacier-version: 2012-06-01

Die kanonische Form der für Aufgabe 1: Erstellen einer kanonischen Anforderung berechneten Anforderung ist:

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

Die letzte Zeile der kanonischen Anforderungen ist der Hash des Anforderungstextes. Beachten Sie auch die leere dritte Zeile in der kanonischen Anforderung. Der Grund dafür ist, dass es keine Abfrageparameter für diese API gibt.

Die zu signierende Zeichenfolge für Aufgabe 2: Erstellen einer zu signierenden Zeichenfolge ist:

AWS4-HMAC-SHA256 20120525T002453Z 20120525/us-east-1/glacier/aws4_request 5f1da1a2d0feb614dd03d71e87928b8e449ac87614479332aced3a701f916743

Die erste Zeile der zu signierenden Zeichenfolge ist der Name des Algorithmus, die zweite Zeile der Zeitstempel, die dritte Zeile der Geltungsbereich der Anmeldeinformationen und die letzte Zeile ein Hash der kanonischen Anforderung aus Aufgabe 1: Erstellen einer kanonischen Anforderung. In dem Geltungsbereich für die Anmeldeinformationen ist auch u.a. der Name des zu verwenden Service angegeben, glacier.

Für Aufgabe 3: Erstellen einer Signatur kann der abgeleitete Schlüssel wie folgt dargestellt werden:

derived key = HMAC(HMAC(HMAC(HMAC("AWS4" + YourSecretAccessKey,"20120525"),"us-east-1"),"glacier"),"aws4_request")

Wenn der geheime Zugriffsschlüssel wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY verwendet wird, lautet die berechnete Signatur:

3ce5b2f2fffac9262b4da9256f8d086b4aaf42eba5f111c21681a65a127b7c2a

Der letzte Schritt besteht im Erstellen des Authorization-Headers. Für den Demo-Zugriffsschlüssel AKIAIOSFODNN7EXAMPLE (mit hinzugefügten Zeilenumbrüchen zur besseren Lesbarkeit) lautet der Header:

Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20120525/us-east-1/glacier/aws4_request, SignedHeaders=host;x-amz-date;x-amz-glacier-version, Signature=3ce5b2f2fffac9262b4da9256f8d086b4aaf42eba5f111c21681a65a127b7c2a

Berechnen von Signaturen für Streaming-Operationen

Upload Archive (POST archive) und Upload Part (PUT uploadID) sind Streaming-Operationen, für die Sie beim Signieren und Senden der Anforderung einen zusätzlichen Header x-amz-content-sha256 angeben müssen. Die Signierschritte für die Streaming-Operationen sind mit den Schritten für andere Operationen identisch. Es muss lediglich ein Streaming-Header hinzugefügt werden.

Die Berechnung des Streaming-Headers x-amz-content-sha256 basiert auf dem SHA256 Hash des gesamten Inhalts (Payload), der hochgeladen werden soll. Beachten Sie, dass sich diese Berechnung vom SHA256 Tree-Hash (Berechnen von Prüfsummen) unterscheidet. Abgesehen von trivialen Fällen unterscheidet sich der SHA-256-Hashwert der Nutzdaten vom SHA256 Baumhash der Nutzdaten.

Wenn die Nutzdaten als Byte-Array angegeben sind, können Sie den folgenden Java-Codeausschnitt verwenden, um den Hash zu berechnen. 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(); }

In ähnlicher Weise können Sie in C# den SHA256 Hash der Nutzlastdaten berechnen, wie im folgenden Codeausschnitt gezeigt.

public static byte[] CalculateSHA256Hash(byte[] payload) { SHA256 sha256 = System.Security.Cryptography.SHA256.Create(); byte[] hash = sha256.ComputeHash(payload); return hash; }

Signatur-Berechnungsbeispiel für die Streaming-API

Das folgende Beispiel führt Sie durch die Einzelheiten der Erstellung einer Signatur für Upload Archive (POST archive) einen der beiden Streaming-Dienste APIs in Amazon Glacier. In diesem Beispiel wird Folgendes angenommen:

  • Der Zeitstempel der Anforderung ist Mon, 07 May 2012 00:00:00 GMT.

  • Der Endpunkt ist die Region „USA Ost (Nord-Virginia)“ („us-east-1“).

  • Die Inhaltsnutzlast ist die Zeichenfolge „Willkommen bei Amazon Glacier“.

Die allgemeine Anforderungssyntax (einschließlich JSON-Text) ist unten im Beispiel zu sehen. Beachten Sie, dass der Header x-amz-content-sha256 eingeschlossen ist. In diesem vereinfachten Beispiel haben x-amz-sha256-tree-hash und x-amz-content-sha256 denselben Wert. Beim Hochladen von Archiven, die größer als 1 MB sind, ist dies jedoch nicht der Fall.

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: SignatureToBeCalculated x-amz-glacier-version: 2012-06-01

Die kanonische Form der Anforderung, die für Aufgabe 1: Erstellen einer kanonischen Anforderung berechnet wird, ist unten zu sehen. Beachten Sie, dass der Streaming-Header x-amz-content-sha256 mit seinem Wert eingeschlossen ist. Das bedeutet, dass Sie zuerst die Payload lesen und den SHA256 Hash berechnen und dann die Signatur berechnen müssen.

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

Der Rest der Signaturberechnung erfolgt entsprechend den unter Signatur-Berechnungsbeispiel beschriebenen Schritten. Der Authorization-Header mit dem geheimen Zugriffschlüssel wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY und dem Zugriffschlüssel AKIAIOSFODNN7EXAMPLE (mit hinzugefügten Zeilenumbrüchen zur besseren Lesbarkeit) ist unten dargestellt:

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