Utilizzo di URL prefirmati - Amazon Simple Storage Service

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à.

Utilizzo di URL prefirmati

Per concedere un accesso limitato nel tempo agli oggetti in Amazon S3 senza aggiornare la policy del bucket, puoi utilizzare un URL prefirmato. Un URL prefirmato può essere inserito in un browser o utilizzato da un programma per scaricare un oggetto. Le credenziali utilizzate dall'URL predefinito sono quelle dell' AWS utente che ha generato l'URL.

Puoi anche utilizzare gli URL prefirmati per consentire a qualcuno di caricare un oggetto specifico nel tuo bucket Amazon S3. Ciò consente il caricamento senza richiedere a un'altra parte di disporre di credenziali o autorizzazioni AWS di sicurezza. Se nel bucket esiste già un oggetto con la stessa chiave specificata nell'URL prefirmato, Amazon S3 sostituisce l'oggetto esistente con l'oggetto caricato.

È possibile utilizzare l'URL prefirmato più volte, fino alla data e all'ora di scadenza.

Quando crei un URL prefirmato, devi fornire le credenziali di sicurezza e specificare quanto segue:

  • Un bucket Amazon S3

  • Una chiave oggetto (se il download di questo oggetto sarà nel tuo bucket Amazon S3, se lo stai caricando questo è il nome del file da caricare)

  • Un metodo HTTP (GET per scaricare gli oggetti o PUT per caricarli)

  • Un intervallo di tempo di scadenza

Attualmente, gli URL prefirmati di Amazon S3 non supportano l'utilizzo dei seguenti algoritmi di checksum per l'integrità dei dati (CRC32, CRC32C, SHA-1, SHA-256) quando carichi oggetti. Per verificare l'integrità dell'oggetto dopo il caricamento puoi fornire un digest MD5 dell'oggetto durante il caricamento con un URL prefirmato. Per ulteriori informazioni sull'integrità degli oggetti, consulta Verifica dell'integrità degli oggetti.

Chi può creare un URL prefirmato

Qualsiasi utente che disponga di credenziali di sicurezza valide può creare un URL prefirmato. Tuttavia, per accedere a un oggetto, è necessario che l'URL prefirmato sia creato da un utente che dispone dell'autorizzazione a eseguire l'operazione su cui si basa l'URL prefirmato.

Le credenziali che puoi utilizzare per creare un URL prefirmato sono:

  • Profilo dell'istanza IAM: valido fino a 6 ore.

  • AWS Security Token Service: valido fino a un massimo di 36 ore se firmato con credenziali di sicurezza a lungo termine o per la durata delle credenziali temporanee, a seconda di quali scadano per prime.

  • Utente IAM: valido fino a 7 giorni se utilizzi la versione 4 di AWS Signature.

    Per creare un URL prefirmato valido fino a 7 giorni, devi prima delegare le credenziali dell'utente IAM (la chiave di accesso e la chiave segreta) al metodo in uso per creare l’URL prefirmato.

Nota

Se hai creato un URL prefirmato utilizzando credenziali temporanee, l'URL scade insieme alle credenziali. In generale, un URL predefinito scade quando la credenziale utilizzata per crearlo viene revocata, eliminata o disattivata. Ciò avviene anche se l'URL è stato creato con un orario di scadenza successivo. Per la durata temporanea delle credenziali di sicurezza, consulta AWS STS Comparing API operations nella IAM User Guide.

Tempo di scadenza per gli URL prefirmati

Un URL prefirmato rimane valido per il periodo di tempo specificato al momento della generazione dell'URL. Se crei un URL prefirmato con la console di Amazon S3, il tempo di scadenza può essere impostato tra 1 minuto e 12 ore. Se utilizzi gli AWS SDK AWS CLI o, il tempo di scadenza può essere impostato fino a 7 giorni.

Se hai creato un URL predefinito utilizzando un token temporaneo, l'URL scade alla scadenza del token. In generale, un URL predefinito scade quando la credenziale utilizzata per crearlo viene revocata, eliminata o disattivata. Ciò avviene anche se l'URL è stato creato con un orario di scadenza successivo. Per ulteriori informazioni su come le credenziali utilizzate influiscono sulla data di scadenza, consultaChi può creare un URL prefirmato.

Simple Storage Service (Amazon S3) verifica la data e l'ora di scadenza in un URL firmato al momento della richiesta HTTP. Ad esempio, se un client inizia a scaricare un file di grandi dimensioni immediatamente prima dell'ora di scadenza, il download viene completato anche se l'ora di scadenza viene superata. Se la connessione TCP viene interrotta e il client prova a riavviare il download dopo la scadenza, il download non riesce.

Limitazione delle funzionalità degli URL prefirmati

Le funzionalità dell'URL prefirmato sono limitate dalle autorizzazioni dell'utente che lo ha creato. In sostanza, gli URL prefirmati sono token di connessione che consentono l'accesso agli utenti che li possiedono. Pertanto, consigliamo di proteggerli in modo appropriato. Di seguito sono elencati alcuni metodi che puoi usare per limitare l'uso degli URL prefirmati.

AWS Signature versione 4 (SigV4)

Per applicare un comportamento specifico quando le richieste dell'URL prefirmato vengono autenticate tramite AWS Signature Version 4 (SigV4), puoi utilizzare le chiavi di condizione nelle policy del bucket e nelle policy dei punti di accesso. Ad esempio, la policy del bucket seguente utilizza la condizione s3:signatureAge per negare qualsiasi richiesta di URL prefirmato da Amazon S3 sugli oggetti nel bucket example-s3-bucket1 se la firma ha più di 10 minuti. Per utilizzare questo comando, sostituisci user input placeholders con le tue informazioni.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Deny a presigned URL request if the signature is more than 10 min old", "Effect": "Deny", "Principal": {"AWS":"*"}, "Action": "s3:*", "Resource": "arn:aws:s3:::example-s3-bucket1/*", "Condition": { "NumericGreaterThan": { "s3:signatureAge": 600000 } } } ] }

Per ulteriori informazioni sulla versione 4 di AWS Signature relativa alle chiavi di policy, consulta AWS Signature Version 4 Authentication nel riferimento all'API di Amazon Simple Storage Service.

Limitazioni per percorso di rete

Se desideri limitare l'uso di URL predefiniti e tutti gli accessi di Amazon S3 a determinati percorsi di rete, puoi AWS Identity and Access Management scrivere policy (IAM). Puoi impostare queste policy sul principale del servizio IAM che effettua la chiamata, sul bucket Amazon S3 o su entrambi.

Una restrizione del percorso di rete sul principale IAM richiede all'utente di tali credenziali di effettuare le richieste dalla rete specificata. Una restrizione sul bucket o sul punto di accesso richiede che tutte le richieste a quella risorsa provengano dalla rete specificata. Queste restrizioni si applicano anche al di fuori dello scenario di URL prefirmato.

La chiave della condizione globale IAM utilizzata dipende dal tipo di endpoint. Se utilizzi l'endpoint pubblico per Amazon S3, utilizza aws:SourceIp. Se utilizzi un endpoint di cloud privato virtuale (VPC) per Amazon S3, usa aws:SourceVpc o aws:SourceVpce.

La seguente dichiarazione sulla politica IAM richiede che il principale acceda AWS solo dall'intervallo di rete specificato. Con questa istruzione della policy, tutti gli accessi devono avere origine da tale intervallo. Ciò include il caso di un utente che utilizza un URL prefirmato per Amazon S3. Per utilizzare questo comando, sostituisci user input placeholders con le tue informazioni.

{ "Sid": "NetworkRestrictionForIAMPrincipal", "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "NotIpAddressIfExists": {"aws:SourceIp": "IP-address-range"}, "BoolIfExists": {"aws:ViaAWSService": "false"} } }

Per ulteriori esempi di policy di bucket che utilizzano la chiave aws:SourceIp AWS global condition per limitare l'accesso a un bucket Amazon S3 a un intervallo di rete specifico, consulta. Gestione dell'accesso in base a indirizzi IP specifici