2017-10-13 8 views
0

J'ai un stockage Azure Blob avec des blobs en format pdf qui sont classés par numéro de client. Donc, pour chaque client, ils ont plusieurs rapports PDF. Je veux seulement que le client puisse accéder aux blobs pour leur numéro de client. (Il y a des centaines de clients.)Azure Blob Sécurité du niveau du fichier de stockage

J'ai fait des recherches, mais je ne vois que les signatures d'accès partagé, mais cela ne ressemble pas à ce dont j'ai besoin.

+0

Avez-vous besoin de fournir un lien directement au blob dans le compte de stockage ([storageaccount] .blob.core.windows.net), sinon, vous pouvez créer une application qui sert de proxy pour récupérer le fichier pdfs à partir du blob et chaque client peut obtenir son propre lien unique. Vous seriez en mesure de mettre en œuvre l'authentification que vous souhaitez. –

+0

Oui, aurait dû mentionner, le client va à une page Web avec une liste de liens vers leurs rapports. Ils doivent donc uniquement pouvoir cliquer et afficher leurs propres rapports. Le problème est que je ne veux pas qu'ils soient en mesure de deviner et de changer l'URL pour voir les fichiers pffs blob d'un autre client. – jaykzoo

Répondre

0

Il semble que vous ayez déjà authentifié les utilisateurs et que vous sachiez quels pdfs leur appartiennent. Ma suggestion est d'ajouter à votre application actuelle un proxy simple (par exemple si vous avez une application MVC, vous pouvez ajouter un nouveau contrôleur et une méthode d'action qui récupèrera le fichier PDF pour le compte de l'utilisateur). De cette façon, vous n'avez pas besoin d'utiliser la signature d'accès partagé et pouvez garder le conteneur blob privé. Votre contrôleur/méthode d'action utiliserait simplement le SDK de stockage pour récupérer le blob. Un bonus supplémentaire est que vous pouvez vérifier pour s'assurer qu'ils demandent leur propre fichier PDF et rejeter la demande s'ils devinent l'ID du fichier de quelqu'un d'autre.

+0

Merci, Andres. Cela peut fonctionner, je vais essayer. – jaykzoo

+0

En diffusant à partir de l'application, vous allez consommer des ressources CPU et réseau à partir de n'importe quelle application agissant en tant que ce proxy. –

0

Il n'existe aucune autorisation de blob au niveau de l'utilisateur, autre que les signatures d'accès partagé (et les stratégies). Ce sera à vous de gérer l'accès au contenu utilisateur spécifique (et comment vous gérez cela dépend de vous et de votre application, et comment vous gérez les métadonnées de contenu d'un utilisateur). Lorsque vous fournissez un lien vers le contenu d'un utilisateur: si vous supposez que tout le contenu est toujours privé, il suffit de créer un lien SAS à la demande lorsque cela est demandé. Il est impossible pour l'utilisateur de modifier un lien SAS pour deviner des numéros séquentiels ou blobs voisins, car le SAS est pour une URL spécifique. Comme Andrés l'a suggéré, vous pouvez également utiliser votre application pour diffuser du contenu blob, et ne vous inquiétez plus pour SAS. Cependant, vous allez maintenant consommer des ressources de votre application Web (réseau, processeur, mémoire), ce qui aura un impact sur les besoins en termes d'échelle de votre application. Vous ne pourrez plus le décharger au service de stockage.