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
S3 Glacier verlangt, dass Sie jede gesendete Anforderung durch eine Signatur authentifizieren. 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 dem Erhalt Ihrer Anforderung berechnet S3 Glacier die Signatur mit derselben Hash-Funktion und den von Ihnen zum Signieren der Anforderung eingegebenen Daten neu. Wenn die so berechnete Signatur mit der Signatur in der Anforderung übereinstimmt, verarbeitet S3 Glacier die Anforderung. Andernfalls wird die Anforderung abgelehnt.
S3 Glacier unterstützt die Authentifizierung mitAWSSignaturversion 4aus. 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 einer kanonischen Form ist erforderlich, weil S3 Glacier das gleiche kanonische Format verwendet, wenn eine Signatur erneut berechnet wird, um sie mit der von Ihnen gesendeten Signatur 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. DieUmfang der Anmeldeinformationenstring selbst ist eine Verbindung von Datum,AWSRegion und Serviceinformationen.
-
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 unter Nutzung des geheimen Zugriffsschlüssels und der Zeichenfolge mit dem Umfang der Anmeldeinformationen berechnet, um eine Reihe von Hash-Nachrichtenauthentifizierungscodes (Hashed Message Authentication Code, HMAC) zu erstellen. Beachten Sie, dass die in diesem Signaturschritt verwendete Hash-Funktion nicht der Baum-Hash-Algorithmus ist, der in S3 Glacier -APIs verwendet wird, die Daten hochladen.
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. Andere Referenzberechnungen finden Sie in der Signature Version 4 Test Suite des Amazon Web Services-Glossars.
In diesem Beispiel wird Folgendes angenommen:
-
Der Zeitstempel der Anforderung ist
Fri, 25 May 2012 00:24:53 GMT
. -
Endpunkt ist Region USA Ost (Nord-Virginia)
us-east-1
aus.
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 berechneten AnforderungAufgabe 1: Erstellen einer kanonischen Anforderungist:
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.
Diezu signierende ZeichenfolgezumAufgabe 2: Erstellen einer zu signierenden Zeichenfolgeist:
AWS4-HMAC-SHA256 20120525T002453Z 20120525/us-east-1/glacier/aws4_request 5f1da1a2d0feb614dd03d71e87928b8e449ac87614479332aced3a701f916743
Erste Zeile derzu signierende Zeichenfolgeist der Algorithmus, die zweite Zeile ist der Zeitstempel, die dritte Zeile ist dieUmfang der Anmeldeinformationen, und die letzte Zeile ist ein Hash der kanonischen Anforderung vonAufgabe 1: Erstellen einer kanonischen Anforderungaus. In dem Geltungsbereich für die Anmeldeinformationen ist auch u.a. der Name des zu verwenden Service angegeben, glacier
.
FürAufgabe 3: Erstellen einer Signatur, derabgeleiteter Schlüsselkann dargestellt werden als:
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
beruht auf dem SHA256-Hash des gesamten Inhalts (Nutzlast), der hochgeladen werden soll. Beachten Sie, dass diese Berechnung sich vom SHA256-Struktur-Hash (Berechnen von Prüfsummen) unterscheidet. Außer in trivialen Einzelfällen unterscheidet sich der SHA 256-Hash-Wert der Nutzlastdaten vom SHA256-Struktur-Hash der Nutzlastdaten.
Wenn die Nutzlastdaten in Form eines Byte-Arrays angegeben werden, können Sie das folgende Java-Code-Snippet zur Berechnung des SHA256-Hash verwenden.
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 C# können Sie das SHA256-Hash der Nutzlastdaten auf ähnliche Weise berechnen, wie im folgenden Code-Snippet 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 Details der Erstellung einer Signatur fürUpload Archive (POST archive), eine der beiden Streaming-APIs im S3 Glacier. In diesem Beispiel wird Folgendes angenommen:
-
Der Zeitstempel der Anforderung ist
Mon, 07 May 2012 00:00:00 GMT
. -
Endpunkt ist die Region USA Ost (Nord-Virginia), us-east-1.
-
Die Inhaltsnutzlast ist eine Zeichenfolge „Willkommen bei S3 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 für berechneten AnforderungAufgabe 1: Erstellen einer kanonischen AnforderungEs folgt. Beachten Sie, dass der Streaming-Header x-amz-content-sha256
mit seinem Wert eingeschlossen ist. Das bedeutet, dass zuerst die Nutzlast gelesen und der SHA256-Hash berechnet werden muss, bevor die Signatur berechnet wird.
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