Scarica e carica oggetti con presigned URLs - 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à.

Scarica e carica oggetti con presigned URLs

Puoi utilizzare presigned URLs per concedere un accesso limitato nel tempo agli oggetti in Amazon S3 senza aggiornare la tua policy sui bucket. 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 del principale AWS Identity and Access Management (IAM) che ha generato l'URL.

Puoi anche usare presigned URLs per consentire a qualcuno di caricare un oggetto specifico nel tuo bucket Amazon S3. Ciò consente il caricamento senza richiedere a terzi 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 (GETper scaricare oggetti, caricare, leggere PUT i metadati HEAD degli oggetti, ecc.)

  • Un intervallo di tempo di scadenza

Quando si utilizza presigned URLs per caricare oggetti, è possibile verificare l'integrità degli oggetti utilizzando i checksum. Sebbene i presigned URLs creati con AWS Signature Version 2 supportino solo i MD5 checksum, i presigned URLs creati con AWS Signature Version 4 supportano algoritmi di checksum aggiuntivi tra cui,,, e. CRC-64/NVME CRC32 CRC32C SHA-1 SHA-256 Per utilizzare questi algoritmi di checksum aggiuntivi, assicurati di utilizzare la versione 4 di AWS Signature e includi l'intestazione di checksum appropriata nella richiesta di caricamento. Per ulteriori informazioni sull'integrità degli oggetti, consulta Verifica dell'integrità degli oggetti in Amazon S3.

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:

  • Utente IAM: valido fino a 7 giorni se utilizzi AWS la versione 4 di 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.

  • Credenziali di sicurezza temporanee: non possono essere valide più a lungo delle credenziali stesse. Queste credenziali includono:

    • Credenziali del ruolo IAM: l'URL predefinito scade quando scade la sessione del ruolo, anche se si specifica un tempo di scadenza più lungo.

    • Credenziali del ruolo IAM utilizzate dalle EC2 istanze Amazon: valide per la durata delle credenziali del ruolo (in genere 6 ore).

    • AWS Security Token Service credenziali: valide solo per la durata delle credenziali temporanee.

Nota

Se hai creato un URL prefirmato utilizzando credenziali temporanee, l'URL scade insieme alle credenziali. In generale, un URL prefirmato scade quando la credenziale utilizzata per crearlo viene revocata, cancellata 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 Comparing AWS STS API operations nella IAM User Guide.

Data di scadenza per le impostazioni predefinite URLs

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 si utilizza AWS CLI o AWS SDKs, il tempo di scadenza può essere impostato fino a 7 giorni.

Se si è creato un URL prefirmato utilizzando un token temporaneo, l'URL scade quando scade il token. In generale, un URL prefirmato scade quando la credenziale utilizzata per crearlo viene revocata, cancellata 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, i presigned URLs sono token portatori che garantiscono l'accesso a chi li possiede. Pertanto, consigliamo di proteggerli in modo appropriato. Di seguito sono riportati alcuni metodi che è possibile utilizzare per limitare l'uso del prefirmato. URLs

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 amzn-s3-demo-bucket se la firma ha più di 10 minuti. Per utilizzare questo comando, sostituisci user input placeholders con le tue informazioni.

JSON
{ "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:::amzn-s3-demo-bucket/*", "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 dell'accesso predefinito URLs e di 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"} } }

Domande frequenti per Presigned URLs

D: Perché i miei dati predefiniti URLs scadono prima dell'ora di scadenza configurata?

I prefirmati URLs rimangono validi solo finché le credenziali sottostanti sono valide. Un URL predefinito scade all'ora di scadenza configurata o alla scadenza delle credenziali associate, a seconda di quale evento si verifica per primo. Per le attività o i container di Amazon Elastic Container Service, le credenziali di ruolo ruotano in genere ogni 1-6 ore. Quando si utilizza AWS Security Token Service (AWS STS) AssumeRole, l'URL predefinito scade al termine della sessione del ruolo, che per impostazione predefinita è di 1 ora. Per i profili di EC2 istanza Amazon, le credenziali dei metadati ruotano periodicamente con un periodo di validità massimo di circa 6 ore.

D: Perché ricevo l'errore 403 Forbidden quando accedo a un URL predefinito?

Prima di generare un URL predefinito, verifica di avere configurato le autorizzazioni corrette. L'utente o il ruolo IAM che genera l'URL deve disporre delle autorizzazioni richieste, ad esempio per l's3:GetObjectoperazione specifica. Inoltre, verifica che la policy del bucket di Amazon S3 non neghi esplicitamente l'accesso all'oggetto.

D: Ricevo degli errori. SignatureDoesNotMatch Come è possibile risolvere il problema?

Se riscontri SignatureDoesNotMatch errori durante l'utilizzo di Amazon S3 presigned URLs, considera diverse cause comuni. Innanzitutto, assicurati che l'orologio di sistema sia sincronizzato con un server Network Time Protocol (NTP), poiché anche piccole variazioni di tempo possono invalidare le firme. Inoltre, tenete presente che alcuni proxy aziendali potrebbero modificare le intestazioni o le stringhe di query, causando potenzialmente mancate corrispondenze tra le firme. Per risolvere i problemi, prova a eseguire il test senza il proxy. Infine, verifica che tutti i parametri della richiesta, inclusi il metodo HTTP, le intestazioni e la stringa di query, corrispondano esattamente tra la generazione e l'utilizzo dell'URL. La risoluzione di questi problemi può spesso risolvere gli errori. SignatureDoesNotMatch

D: Ricevo ExpiredToken degli errori. Cosa devo fare?

Quando ricevi ExpiredToken errori durante l'utilizzo di presigned URLs, significa che le AWS credenziali utilizzate per generare l'URL non sono più valide. Per risolvere questo problema, aggiorna le AWS credenziali prima di generarne di nuove predefinite. URLs Per le applicazioni a lunga durata, consigliamo di implementare la logica di aggiornamento delle credenziali per mantenere l'accesso continuo. Se del caso, puoi utilizzare credenziali di lunga durata o implementare meccanismi di aggiornamento dei token. Se utilizzi AWS Security Token Service (AWS STS) AssumeRole, verifica che la durata della sessione configurata soddisfi i requisiti del caso d'uso. Ricorda che i preassegnati URLs rimangono validi solo per la durata delle credenziali sottostanti, quindi è essenziale implementare una corretta gestione delle credenziali.