2013-04-05 3 views
0

J'ai des données de plusieurs utilisateurs dans un même compte S3. Mon application de bureau dispose d'un système d'authentification qui permet à l'application de savoir qui est l'utilisateur et quel dossier accéder sur S3. mais l'application de bureau a le code d'accès à l'ensemble du dossier S3.Accéder à AWS S3 à partir d'une application de bureau en toute sécurité

Quelqu'un m'a dit que ce n'est pas sécurisé, car un pirate pourrait briser la demande de l'application à la S3 et utiliser les informations d'identification pour télécharger toutes les données.

Est-ce vrai? et si oui, comment puis-je l'éviter? (il a dit que j'ai besoin d'un serveur client dans le cloud AWS mais ce n'est pas clair pour moi ...)

btw. J'utilise la bibliothèque Boto python pour accéder à S3.

grâce

Répondre

1

Je viens de découvrir this:

  1. Ne conservez pas votre clé secrète AWS dans l'application. Un hacker déterminé serait capable de le trouver à l'identique. Une idée est que vous avez un service Web hébergé quelque part dont le seul but est de signer les demandes S3 du client en utilisant la clé secrète, ces demandes sont ensuite relayées au service S3. Par conséquent, vous obtenez que vos utilisateurs authentifient votre service Web en utilisant les informations d'identification que vous contrôlez. Pour réitérer: les clients parlent directement à S3, mais reçoivent leurs demandes "approuvées" par vous.

  2. Je ne vois pas nécessairement S3 comme une structure plate - si vous utilisez la notation de système de fichiers "dossier/sous-dossier/fichier.ext" pour les clés.

  3. URL Vanity sont prises en charge par S3 voir http://docs.amazonwebservices.com/AmazonS3/2006-03-01/VirtualHosting.html - essentiellement l'URL « http://s3.amazonaws.com/mybucket/myfile.ext » devient « http://mybucket.s3.amazonaws.com/myfile.ext » et vous pouvez ensuite configurer un CNAME dans votre DNS qui « www.myname.com » à « mybucket.s3.amazonaws .com "qui correspond à" http://www.myname.com/myfile.ext "

1

Parfait timing! AWS vient d'annoncer une fonctionnalité hier qui est susceptible de vous aider ici: Variables in IAM policies.

Ce que vous feriez serait de créer un compte IAM pour chacun de vos utilisateurs. Cela vous permettra d'avoir une clé d'accès séparée et une clé secrète pour chaque utilisateur. Ensuite, vous attribuez une stratégie à votre compartiment qui limite l'accès à une partie du compartiment en fonction du nom d'utilisateur. (L'exemple auquel j'ai lié ci-dessus a un bon exemple de ce cas d'utilisation).

Questions connexes