Questa pagina è riservata ai clienti esistenti del servizio S3 Glacier che utilizzano Vaults e l'originale del 2012. REST API
Se stai cercando soluzioni di archiviazione, ti consigliamo di utilizzare le classi di storage S3 Glacier in Amazon S3, S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval e S3 Glacier Deep Archive. Per ulteriori informazioni su queste opzioni di storage, consulta le classi di storage S3 Glacier e lo storage dei dati a lungo termine con le classi
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Firmare le richieste
S3 Glacier richiede l'autenticazione con firma di ogni richiesta inviata. Per firmare una richiesta, è necessario calcolare una firma digitale utilizzando una funzione hash crittografica. Una funzione hash crittografica è una funzione che restituisce un valore hash univoco basato sull'input. L'input alla funzione hash include il testo della richiesta e la tua chiave di accesso segreta. La funzione hash restituisce un valore hash che includi nella richiesta come firma. La firma è parte dell'intestazione Authorization
della richiesta.
Dopo aver ricevuto la richiesta, S3 Glacier ricalcola la firma utilizzando la stessa funzione hash e lo stesso input utilizzati per firmare la richiesta. Se la firma risultante corrisponde alla firma nella richiesta, S3 Glacier elabora la richiesta. In caso contrario, la richiesta viene respinta.
supporta l'autenticazione con AWS Signature Version 4. La procedura per il calcolo di una firma può essere suddivisa in tre fasi:
-
Fase 1. Creazione di una richiesta canonica
Riorganizza la tua HTTP richiesta in un formato canonico. L'utilizzo di un formato canonico è necessario in quanto S3 Glacier utilizza quel formato quando ricalcola una firma da confrontare con quella che hai inviato.
-
Fase 2. Creazione di una stringa di firma
Crea una stringa che utilizzerai come uno dei valori di input per la funzione hash crittografica. La stringa, denominata stringa di firma, è una concatenazione del nome dell'algoritmo hash, della data della richiesta, di una stringa di ambito credenziali e della richiesta in formato canonico creata nella fase precedente. La stringa dell'ambito delle credenziali è di per sé una concatenazione di informazioni su data, regione e servizio. AWS
-
Fase 3. Creazione di una firma
Crea una firma per la tua richiesta utilizzando una funzione hash crittografica che accetta due stringhe di input: la tua stringa di firma e una chiave derivata. La chiave derivata viene calcolata partendo dalla chiave di accesso segreta e utilizzando la stringa di ambito delle credenziali per creare una serie di codici di autenticazione dei messaggi basati su hash (). HMACs Nota che la funzione hash utilizzata in questa fase di firma non è l'algoritmo tree-hash utilizzato in S3 Glacier che carica i dati. APIs
Esempio di calcolo di firma
L'esempio in questa sezione mostra come creare una firma per Create Vault (PUT vault). L'esempio può essere utilizzato come riferimento per verificare il metodo di calcolo della firma. Per ulteriori informazioni, consulta Firmare le richieste nella Guida per l'utente. AWS API IAM
L'esempio presuppone quanto segue:
-
Il time stamp della richiesta è
Fri, 25 May 2012 00:24:53 GMT
. -
L'endpoint è la regione Stati Uniti orientali (Virginia settentrionale),
us-east-1
.
La sintassi generale della richiesta (incluso il JSON corpo) è:
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
Il formato canonico della richiesta calcolata per Fase 1: creazione di una richiesta canonica è:
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
L'ultima riga della richiesta canonica è l'hash del corpo della richiesta. Nota inoltre la terza riga vuota nella richiesta canonica. Questo perché non ci sono parametri di interrogazione per questoAPI.
La stringa di firma per Fase 2. Creazione di una stringa di firma è:
AWS4-HMAC-SHA256 20120525T002453Z 20120525/us-east-1/glacier/aws4_request 5f1da1a2d0feb614dd03d71e87928b8e449ac87614479332aced3a701f916743
La prima riga della stringa di firma è l'algoritmo, la seconda è il timestamp, la terza è l'ambito credenziali e l'ultima è un hash del formato della richiesta canonica in Fase 1: creazione di una richiesta canonica. Il nome del servizio da utilizzare nell'ambito credenziali è glacier
.
In Fase 3. Creazione di una firma, la chiave derivata può essere rappresentata come segue:
derived key = HMAC(HMAC(HMAC(HMAC("AWS4" + YourSecretAccessKey,"20120525"),"us-east-1"),"glacier"),"aws4_request")
Se viene utilizzata la chiave di accesso segreta wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
, la firma calcolata è:
3ce5b2f2fffac9262b4da9256f8d086b4aaf42eba5f111c21681a65a127b7c2a
La fase finale consiste nel creare l'intestazione Authorization
. Per la chiave di accesso AKIAIOSFODNN7EXAMPLE
, l'intestazione (con interruzioni di riga aggiunte per facilitare la lettura) è:
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20120525/us-east-1/glacier/aws4_request, SignedHeaders=host;x-amz-date;x-amz-glacier-version, Signature=3ce5b2f2fffac9262b4da9256f8d086b4aaf42eba5f111c21681a65a127b7c2a
Calcolo di firme per le operazioni di streaming
Upload Archive (POST archive) e Upload Part (PUT uploadID) sono operazioni di streaming che richiedono l'inclusione di un'ulteriore intestazione x-amz-content-sha256
per la firma e l'invio della richiesta. Le fasi relative alla firma per le operazioni di streaming sono esattamente le stesse delle altre operazioni, con l'aggiunta dell'intestazione di streaming.
Il calcolo dell'intestazione dello streaming si x-amz-content-sha256
basa sull'SHA256hash dell'intero contenuto (payload) da caricare. Nota che questo calcolo è diverso dal SHA256 tree hash (). Calcolo di checksum Oltre ai casi banali, il valore di SHA 256 hash dei dati del payload sarà diverso dall'hash ad SHA256 albero dei dati del payload.
Se i dati del payload sono specificati come array di byte, è possibile utilizzare il seguente frammento di codice Java per calcolare l'hash. 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(); }
Allo stesso modo, in C# è possibile calcolare l'SHA256hash dei dati del payload come mostrato nel seguente frammento di codice.
public static byte[] CalculateSHA256Hash(byte[] payload) { SHA256 sha256 = System.Security.Cryptography.SHA256.Create(); byte[] hash = sha256.ComputeHash(payload); return hash; }
Esempio di calcolo delle firme per lo streaming API
L'esempio seguente illustra i dettagli della creazione di una firma per Upload Archive (POST archive) uno dei due streaming APIs in S3 Glacier. L'esempio presuppone quanto segue:
-
Il time stamp della richiesta è
Mon, 07 May 2012 00:00:00 GMT
. -
L'endpoint è la regione Stati Uniti orientali (Virginia settentrionale), us-east-1.
-
Il payload del contenuto è una stringa "Welcome to S3 Glacier".
La sintassi generale della richiesta (incluso il JSON corpo) è mostrata nell'esempio seguente. Nota che è inclusa l'intestazione x-amz-content-sha256
. In questo esempio semplificato, x-amz-sha256-tree-hash
e x-amz-content-sha256
hanno lo stesso valore, ma nel caso di caricamenti di archivi superiori a 1 MB sono differenti.
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
Il formato canonico della richiesta calcolata per Fase 1. Creazione di una richiesta canonica è riportato di seguito. Nota che l'intestazione di streaming x-amz-content-sha256
è inclusa con il relativo valore. Ciò significa che è necessario prima leggere il payload e calcolare l'SHA256hash, quindi calcolare la firma.
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
Il resto della procedura di calcolo della firma segue le fasi descritte in Esempio di calcolo di firma. L'intestazione Authorization
che utilizza la Secret Access Key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
e la chiave di accesso AKIAIOSFODNN7EXAMPLE
è esposta di seguito (con interruzioni di riga aggiunte per facilitare la lettura):
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