2017-10-13 77 views
0

我有一個Azure Blob存儲,其blob是按客戶編號分類的pdf。因此,對於每個客戶,他們都有多個PDF報告。我只希望客戶端能夠訪問blob的客戶端號碼。 (有數百個客戶端。)Azure Blob存儲文件級別的安全性

我已經研究過,但只能看到共享訪問簽名,但這看起來不像我所需要的。

+0

您是否需要提供直接鏈接到存儲帳戶([storageaccount] .blob.core.windows.net)中的blob的鏈接,如果沒有,則可以創建一個應用程序作爲代理來檢索來自blob和每個客戶都可以獲得他們自己獨特的鏈接。你將能夠實現你想要的任何認證。 –

+0

是的,應該提到的是,客戶轉到一個網頁上,並列出了他們的報告鏈接。所以他們只需要點擊並查看自己的報告。問題是我不希望他們能夠猜測和更改網址來查看另一個客戶端的BLOB PDF文件。 – jaykzoo

回答

0

聽起來像你已經有用戶認證,你知道哪些pdfs屬於他們。我的建議是向當前的應用程序添加一個簡單的代理(例如,如果您有一個MVC應用程序,您可以添加一個新的控制器和操作方法,代表用戶檢索pdf)。

這樣您就不需要使用共享訪問簽名,並且可以保持blob容器的私密性。您的控制器/操作方法只需使用存儲SDK來檢索blob。另外一個好處是,您可以檢查以確保他們正在請求自己的PDF文件,並在他們猜測別人文件的ID時拒絕該請求。

+0

謝謝,安德烈斯。這可能有用,我會試試看。 – jaykzoo

+0

通過從應用流式傳輸,您將消耗任何應用作爲此代理的CPU和網絡資源。 –

0

除共享訪問簽名(和策略)外,沒有用戶級別的Blob權限。

您需要管理對特定用戶內容的訪問權限(以及如何管理,這取決於您和您的應用以及如何管理用戶的內容元數據)。

提供用戶內容的鏈接時:如果您假設所有內容始終是私密的,則只需在請求時創建按需SAS鏈接即可。用戶無法修改SAS鏈接來猜測序列號或相鄰的 blob,因爲SAS是針對特定的URL的。

正如Andrés所建議的,您還可以使用您的應用程序來傳輸blob內容,而不用擔心SAS。但是,您現在正在消耗Web應用程序(網絡,CPU,內存)的資源,這會影響您的應用程序的規模要求。您將不能再將其卸載到存儲服務中。