Comment gérer les informations d'identification AWS
Notre application Web propose de nombreux téléchargements multimédias. Nous utilisons des compartiments AWS S3 pour le stockage multimédia. Conformément à l'implémentation actuelle, chaque fois qu'une nouvelle API de téléchargement de fichier est appelée, nous envoyons les informations d'identification AWS au front-end et le front-end utilisera ces informations d'identification pour lancer le téléchargement du fichier.
Mais un récent audit de sécurité a signalé qu'il s'agissait d'une mauvaise approche car les informations d'identification AWS peuvent être capturées par n'importe qui depuis le frontal et les buckets sont lisibles / inscriptibles.
Je comprends que je ne peux stocker les informations d'identification AWS que sur le backend. Ensuite, le serveur peut d'abord recevoir le fichier lorsque l'utilisateur télécharge et le serveur peut ensuite le télécharger sur S3 à l'aide de ces identifiants. Mais comme je l'ai mentionné plus tôt, nous utilisons beaucoup de téléchargement de médias et ce processus en fait une surcharge supplémentaire.
Quels pourraient être les autres moyens possibles de résoudre la menace pour la sécurité? L'accès aux compartiments S3 restreignant uniquement notre domaine peut-il résoudre le problème?
Réponses
Il y a au moins deux façons d'y parvenir:
- en utilisant des URL pré-signées (voir aussi ici )
- générer une stratégie temporaire et signée permettant des actions sur le bucket
Dans les deux cas, vous devez vous assurer de n'accorder que l'accès que vous souhaitez. Quelques écueils possibles:
- permettre à un utilisateur de lire un fichier qu'il ne possède pas
- permettre à un utilisateur d'écrire (sur) un fichier qu'il ne possède pas
- permettre à un utilisateur d'effectuer d'autres actions qu'il ne devrait pas faire (lister les répertoires, les acl, etc.)
- permettant le téléchargement de fichiers malveillants (par exemple HTML pour XSS)
Il y a beaucoup de place pour l'erreur, alors assurez-vous que l'équipe de sécurité examine la mise en œuvre finale.