Come gestire le credenziali AWS
La nostra applicazione web offre molti caricamenti multimediali. Stiamo utilizzando i bucket AWS S3 per l'archiviazione multimediale. Secondo l'implementazione corrente, ogni volta che viene chiamata una nuova API di caricamento file, inviamo le credenziali AWS al front-end e il front-end utilizzerà queste credenziali per avviare il caricamento del file.
Ma un recente audit di sicurezza ha riportato che si tratta di un approccio errato poiché le credenziali AWS possono essere acquisite da chiunque dal front-end e i bucket sono leggibili / scrivibili.
Sono consapevole di poter memorizzare le credenziali AWS solo nel back-end. Quindi il server può prima ricevere il file quando l'utente carica e il server può quindi caricarlo su S3 utilizzando queste credenziali. Ma come ho detto prima, utilizziamo molto caricamento multimediale e questo processo lo rende un sovraccarico aggiuntivo.
Quali potrebbero essere altri modi possibili per risolvere la minaccia alla sicurezza? L'accesso limitando i bucket S3 al solo nostro dominio può risolvere il problema?
Risposte
Ci sono almeno due modi per ottenere questo risultato:
- utilizzando URL preimpostati (vedi anche qui )
- generazione di una policy temporanea e firmata che consente azioni sul bucket
In entrambi i casi devi assicurarti di concedere solo l'accesso che desideri. Alcune possibili insidie:
- consentire a un utente di leggere un file che non possiede
- consentendo a un utente di (oltre) scrivere un file che non possiede
- consentire a un utente di eseguire altre azioni che non dovrebbe fare (elencare directory, acls, ecc.)
- consentire il caricamento di file dannosi (ad es. HTML per XSS)
C'è molto spazio per gli errori, quindi assicurati che il team di sicurezza controlli l'implementazione finale.