Articolo

Come condividere file S3 senza rendere pubblico il bucket

Condivisione sicura di file S3 con un bucket privato: URL prefirmati, URL firmati di CloudFront o link con password, scadenza e limite di download.

Puoi condividere file da Amazon S3 senza mai rendere pubblico il bucket. Mantienilo privato, lascia attivo Block Public Access e dai invece alle persone un accesso firmato a oggetti specifici: un URL prefirmato per un file occasionale, URL firmati di CloudFront quando hai già una CDN davanti al bucket, oppure un link di condivisione che aggiunge password, data di scadenza e limite di download. Tutti e tre funzionano allo stesso modo sui provider compatibili con S3 come Cloudflare R2, DigitalOcean Spaces, Wasabi e Backblaze B2 (CloudFront esiste solo su AWS).

Le opzioni per condividere file S3 in sicurezza, in sintesi

MetodoIdeale perPasswordLimite di downloadRevocare un linkCartelle intereServe codice
Oggetto o bucket pubblicoContenuti davvero pubblici (un sito web)NoNoNoSìNo
URL prefirmatoUn file, una volta, dalla CLI o dalla tua appNoNoNoNoCLI o SDK
URL firmato di CloudFrontApp che autenticano già gli utentiNoNoNoCon cookie firmatiSì
Link di condivisione NubboCondivisione ricorrente con persone esterneSìSìSìSì, con ZIPNo

Perché non rendere semplicemente pubblico il file

Il modo più rapido per condividere un file da S3 è renderlo pubblico e inviare l’URL dell’oggetto. È anche il più rischioso: tutto ciò che è pubblico può essere scaricato da chiunque trovi o indovini l’indirizzo, senza password, senza scadenza e senza traccia di chi l’ha preso. I bucket pubblici dimenticati sono una fonte classica di fughe di dati ed espongono sia i nomi dei file sia i contenuti.

AWS dichiara che nuovi bucket, access point e oggetti non consentono l’accesso pubblico per impostazione predefinita. In più, S3 Block Public Access ha quattro impostazioni (BlockPublicAcls, IgnorePublicAcls, BlockPublicPolicy e RestrictPublicBuckets) che prevalgono su qualsiasi policy o ACL che aprirebbe il bucket in seguito. Si possono impostare per bucket, per account o per un’intera AWS Organization, e S3 applica la combinazione più restrittiva. AWS consiglia di attivarle tutte e quattro a livello di account, a meno che tu non ospiti davvero contenuti pubblici, come un sito web statico.

Lascia attivo quell’interruttore. Tutto ciò che segue funziona con l’interruttore attivo.

Opzione 1: URL prefirmati

Un URL prefirmato è l’URL di un oggetto con una firma nella query string. Concede un’operazione (di solito un download) su un oggetto finché non scade, e S3 verifica la firma a ogni richiesta.

aws s3 presign s3://my-bucket/reports/q3.pdf --expires-in 86400

Quell’URL funziona per 24 ore. Il valore predefinito della CLI è un’ora e il massimo è 604.800 secondi (7 giorni) quando firmi con le chiavi di un utente IAM. Se firmi con credenziali temporanee, come un ruolo assunto, l’URL smette di funzionare quando scadono quelle credenziali.

Cosa ottieni:

  • Nessuna modifica al bucket o alle sue policy.
  • Controllo preciso: un oggetto, un metodo, una scadenza.
  • Funziona su qualsiasi provider che supporti la prefirma SigV4.

Cosa non ottieni:

  • Nessuna password. Chi ha l’URL può usarlo, tutte le volte che vuole, finché non scade.
  • Nessun limite di download e nessuna revoca per singolo link. Puoi invalidare un URL in anticipo solo revocando le chiavi che lo hanno firmato.
  • Nessuna cartella. Firmi oggetto per oggetto, quindi condividere una cartella di 300 file significa 300 URL.
  • Nessuna riservatezza sui nomi. L’URL mostra il nome del bucket, la chiave dell’oggetto e l’ID della tua access key.

Per il funzionamento in dettaglio, inclusi i caricamenti, ogni parametro X-Amz-* e il codice per gli SDK, vedi Gli URL prefirmati di S3 spiegati.

Se servi già il bucket tramite Amazon CloudFront, puoi richiedere URL firmati o cookie firmati su un cache behavior. Il bucket resta privato dietro l’origin access control (OAC), che AWS consiglia al posto della vecchia origin access identity: una bucket policy permette solo alla tua distribuzione di leggere gli oggetti. Registri le chiavi pubbliche in un trusted key group e firmi con la chiave privata corrispondente.

  • Gli URL firmati sono adatti a singoli file. Con una policy personalizzata puoi anche impostare un orario di inizio e un intervallo di IP, e riutilizzare una sola policy per molti file con i caratteri jolly. Possono durare poco o anche anni.
  • I cookie firmati sono adatti a molti file insieme, come tutti i segmenti di un video, senza cambiare i tuoi URL.

È lo strumento giusto quando gestisci un’applicazione che autentica già gli utenti e serve contenuti su larga scala. Per consegnare qualche file a persone esterne al tuo team, significa configurare una distribuzione, gestire chiavi e scrivere codice che firmi ogni richiesta.

Limitare una bucket policy a un intervallo di IP fisso è un’altra opzione nativa, ma aiuta solo quando conosci le reti dei destinatari, cosa rara con persone esterne alla tua organizzazione.

Nubbo si collega al tuo bucket e ti dà link di condivisione con i controlli che mancano agli URL prefirmati, senza scrivere codice. Dietro le quinte usa comunque URL prefirmati: Nubbo verifica prima le regole del link e solo dopo genera un URL di breve durata, così i file singoli viaggiano direttamente dal tuo bucket al browser di chi li riceve.

Passaggio 1: collega il tuo bucket

Registrati gratis, verifica la tua email, poi apri Bucket e premi Collega un bucket. L’assistente ti chiede il provider (Amazon S3, Cloudflare R2, DigitalOcean Spaces, Wasabi, Backblaze B2 o un endpoint personalizzato compatibile con S3), come collegarlo (una configurazione automatica con una chiave con accesso completo, oppure una chiave limitata a un solo bucket), la tua chiave e il tuo bucket. Verifica la chiave e il bucket e termina provando CORS con un caricamento reale dal tuo browser. Il bucket resta privato e le tue chiavi sono salvate cifrate con AES-256-GCM. Il piano Gratis include 2 collegamenti.

Passaggio 2: scegli il file o la cartella

Trova l’elemento nell’esploratore e scegli Condividi. Puoi anche andare alla pagina Condivisi, premere Nuovo link e scegliere lì il bucket e il file o la cartella.

Passaggio 3: imposta la protezione

Tutti e tre i controlli sono facoltativi e disponibili in tutti i piani:

ControlloCome funziona
PasswordDa 4 a 50 caratteri. Dopo 10 tentativi sbagliati il link si blocca per 15 minuti.
Data di scadenzaDisattivata per impostazione predefinita: il link resta attivo finché il file o la cartella è nel tuo storage.
Download massimiVuoto significa illimitati. Quando si raggiunge il numero, il link smette di servire il file.

Premi Crea link, copialo e invialo via email, chat o qualunque cosa usi. Chi lo riceve apre una pagina di download pulita e non ha bisogno di un account. Un link a una cartella permette di sfogliarla, scaricare singoli file o prendere tutto come ZIP, che il browser di chi lo riceve crea scaricando ogni file direttamente dal tuo bucket.

Passaggio 5: invia la password a parte

Inviare la password nello stesso messaggio del link vanifica lo scopo. Se il link ha una password, Invia password via email la consegna come link di visualizzazione monouso: la password viene mostrata una sola volta, il link di visualizzazione scade dopo 24 ore, 3 giorni o 7 giorni e puoi aggiungere una breve nota. Ricevi una notifica quando viene aperto.

Passaggio 6: monitora e revoca

La pagina Condivisi elenca ogni link con il suo stato e il numero di download. Puoi modificare password, scadenza o limite, disattivare un link (smette subito di generare nuovi URL di download) e riaprirlo più tardi con lo stesso indirizzo.

Un link funziona per chiunque lo abbia. Quando vuoi che entrino solo persone precise, Condividi con persone di Nubbo (nei piani Personal e Pro) invia un file o una cartella a indirizzi email specifici con permesso di visualizzazione o di download, una scadenza facoltativa e un limite di download, e registra ogni accesso. I destinatari hanno bisogno di un account Nubbo e trovano l’elemento in Condivisi con me. Personal consente 10 persone per elemento e 50 condivisioni attive; Pro ne consente 50 e 500.

I piani a pagamento offrono anche link cifrati: il browser crea una copia sigillata del file e la chiave viaggia solo nel link stesso, quindi Nubbo non può leggerlo.

Quale opzione usare?

  • Un file, una volta, e hai la AWS CLI configurata: un URL prefirmato è la strada più rapida.
  • Un’applicazione che autentica già gli utenti e serve molti contenuti: URL o cookie firmati di CloudFront.
  • Condivisione ricorrente con persone esterne al tuo team, cartelle intere o qualsiasi cosa che richieda una password o un limite: un link di condivisione ti fa risparmiare tempo ed errori.

Due funzionalità collegate coprono gli altri casi comuni. Le inbox ti danno un link pubblico di caricamento, così le persone possono inviare file nel tuo bucket senza vedere nient’altro al suo interno. Le gallerie trasformano una cartella di foto o video in una pagina da sfogliare, con layout, watermark e una password propria. Con il piano Gratis ne hai 3 di ciascuna e link di condivisione illimitati; Personal e Pro tolgono questi limiti. Una precisazione onesta: le miniature vengono generate sul server di Nubbo e salvate nel tuo bucket sotto .nubbo-thumbs/.

Domande frequenti

Come condivido un file da S3 senza renderlo pubblico?

Mantieni il bucket privato e distribuisci invece un accesso firmato: un URL prefirmato per un oggetto (dalla AWS CLI o da un SDK), un URL o cookie firmato di CloudFront se servi già il bucket tramite CloudFront, oppure un link di condivisione da uno strumento come Nubbo, che aggiunge password, scadenza e limite di download sopra gli URL prefirmati.

Amazon S3 è sicuro per condividere file?

Sì, purché il bucket resti privato. I nuovi bucket non consentono l'accesso pubblico per impostazione predefinita e S3 Block Public Access impedisce a chiunque di aprirli in seguito. Il rischio nasce dal rendere pubblici gli oggetti o dal far trapelare link firmati, che funzionano per chiunque li abbia finché non scadono.

I nuovi bucket S3 sono privati per impostazione predefinita?

Sì. AWS dichiara che nuovi bucket, access point e oggetti non consentono l'accesso pubblico per impostazione predefinita, e le quattro impostazioni di Block Public Access prevalgono su qualsiasi policy o ACL che li aprirebbe in seguito.

Chi riceve il link ha bisogno di un account AWS o Nubbo?

No. Un URL prefirmato, un URL firmato di CloudFront e un link di condivisione di Nubbo funzionano tutti in qualsiasi browser senza account. Solo Condividi con persone, che invia un elemento a persone specifiche, richiede che abbiano un account Nubbo.

Quanto può durare un link S3 condiviso?

Un URL prefirmato dura al massimo 7 giorni se firmato con le chiavi di un utente IAM, e meno con credenziali temporanee. Gli URL firmati di CloudFront durano quanto stabilisce la tua policy. Un link di condivisione di Nubbo non scade a meno che tu non lo imposti, perché genera un nuovo URL di breve durata a ogni download.

I file passano da Nubbo quando qualcuno scarica da un link condiviso?

No: il browser scarica i file singoli direttamente dal tuo bucket con un URL prefirmato. I download ZIP di più file vengono creati nel browser, che scarica ogni file direttamente dal tuo bucket: Nubbo non vede mai il contenuto.

Fonti

Prezzi e limiti provengono dalle pagine ufficiali qui sotto. I provider li cambiano, quindi controllali prima di decidere.