2016-10-02 12 views
0

私は、ドキュメントとイメージを格納するためにAzure Blobストレージを使用するWebアプリケーション(ASP.NET MVC)を持っています。各ユーザはブロブへの特定のアクセス権を持ち、この はWebアプリケーションのデータベースに格納されています。Azure BLOB SASでのストレージ承認

現在、私は、Webアプリケーションを承認を実行する中間層として使用し、クライアントがBLOBへの読み取りアクセス権を持っている場合、 をAzureから最初に取得し、クライアントに配信します。これはもちろん、さまざまな理由で最適な方法ではありません。

私はSAS(Shared Access Signatures)を使用してこの部分を再構築しましたが、ユーザーとファイルの数が増えるにつれて拡張性の高いシステムを設定するための良い情報源が見つかりませんでした。ユーザー数は約100、ブロブ数は100000程度になると予想しています。

私には2つの選択肢があります。

1)すべてのファイルには、Webアプリケーションデータベースに1つの署名が格納されています。これは、ファイルにアクセスできるすべてのユーザーに使用されます。これは簡単な方法です( )。何らかの理由でユーザーがファイルにアクセスできない場合は、以前のアクセスからのリンクがあればファイルにアクセスできます。

2)すべてのファイルには、ファイルにアクセスできるユーザーごとに固有の署名があります。これにより、ファイルへのアクセスを取り消すことが容易になりますが、署名数は となり、これに副作用がありますか?

これ以上のオプションはありますか?

これについてのご意見は大変ありがとうございます。

+1

SASの作成を必要としていない理由がありますか? –

+0

SASが生成され、クライアントに配信されるHTMLのURLに追加されるということでしょうか?これはもちろんオプションですが、イメージの場合はサムネイル(Azure Blobストレージにも格納されています)にリストされます。ページに20個のイメージがあり、Azureに20回ラウンドトリップすると、HTMLが生成される前に署名が生成されますレンダリングされる。右? – moccasine

+0

あなたは私の答えをここで参照することができます:http://stackoverflow.com/questions/39431608/limiting-account-sas-permission-to-specific-files-in-azure-storage/39432023#39432023 –

答えて

0

ユーザーごとにSASを用意するのではなく、ファイルをロールでグループ化し、ユーザー数に関係なく容易に拡張できるロールにユーザーをマップする方がよいでしょう。

また、ユーザーがblobに直接アクセスできるようにすることは、アプリケーションを通じてBLOBコンテンツを配布する場合にはお勧めしません。したがって、ユーザーの役割のコンテキストで特定のアプリケーションへのアクセスを提供します。

リンクが設定されているユーザーが2分間で有効期限が切れるようにtwominute SASを生成するには、下記の記事を参照してください。

http://www.dotnetcurry.com/windows-azure/901/protect-azure-blob-storage-shared-access-signature

は、この情報がお役に立てば幸いです。 :)

+0

答えをありがとう。 2分のSASを使用することが考えられますが、20サムネイルを表示するページでは、署名を生成するためにAzureに20ラウンドトリップすることを意味します。ファイルをグループ化してグループの署名を設定することはできますが、現在はコンテナレベルでのみ行うことができます。アクセスグループの後にファイルをグループ化するには、> 100個のコンテナを作成する必要があります。それは行くべき正しい道のように感じませんか? – moccasine

関連する問題