2012-03-14 83 views
7

什麼是在特定用戶集合中爲Windows Azure存儲中的Blob保護Blob的最佳方式。例如,我有一個ASP.NET網站(Intranet)內部部署,並具有用於大型文件的後端Windows Azure Blob存儲。我喜歡爲每個blob提供安全簽名URL的想法,但是這對於一個長期存在的blob來說確實有效。 (無限?)Azure中的安全Blob

我只需要特定用戶的blob上的粒度級別的安全性(我如何通過Blob存儲輕鬆實現這一點)。 *注意我相信我不應該需要ACS。如果可能的話,我想用Policies和Signed URL來實現它。

第二個問題,我假設我也可以用同樣的方法保護CDN中的這些數據,有人可以證實嗎?

感謝

共享訪問與斑點無限時間的工作和特權政策如閱讀工作?

回答

18

如果您需要一個小時以上的單個用戶可以使用blob,則必須使用附加到該容器的SAS策略。但是,由於每個容器最多可容納5個容器,因此許多用戶無法很好地擴展容量。 SAS政策可能會以年爲單位計算到期。

這裏更典型的解決方案是讓用戶打你的網站或服務,然後以你選擇的任何方式驗證它們。當他們真的希望下載文件時,您應該生成一個短期到期(不是政策)的1次SAS簽名。這可以很好地擴展並防止未來的未授權用戶重複使用。您還可以從存儲服務中獲益,而不是您的網絡角色。

當您使用CDN時,事情會變得更加複雜。所以,雖然您可以在CDN資源上使用SAS簽名,但它們並不是真正的榮幸。也就是說,唯一的URL是底層資源的關鍵。因此,當您請求一個SAS安全的blob時,它會將其拉入CDN並使用該URI作爲密鑰提供服務。然後它將使用CDN緩存策略(不是SAS到期)來向前發送。這可能會導致blob URI設置爲在10分鐘內過期的情況,但CDN會根據過期策略使用相同的SAS簽名緩存該數據塊的日期。 CDN不會再次聯繫存儲以驗證。因此,使用它可能不是一個好主意。此外,由於每個CDN資源都與URI綁定,這也意味着每次SAS簽名更改時都會緩存同一文件的多個副本(運行事務和帶寬費用)。長話短說,CDN和SAS混合不好。

+0

謝謝瑞安,正是我在找的! – user728584 2012-03-14 18:42:27

+0

而且這絕對不能解決問題。 – 2015-07-08 09:01:13

3

我無法幫助您使用CDN,因爲我沒有使用這方面的經驗,但我期望它能以類似的方式工作。

在這種情況下,我會做什麼是在用戶嘗試訪問文件時生成共享訪問簽名。您可以在應用程序內部維護用於確定用戶是否可以訪問任何給定文件的訪問規則。

當請求該文件時,您將立即生成共享訪問簽名(有關詳細信息,請參閱here)並將其交給用戶。

這樣做的好處是文件下載不會通過您的Web角色被泵送,而是直接從blob存儲下載到用戶。

+0

謝謝大衛... – user728584 2012-03-14 18:46:14