2010-06-24 76 views
3

我正在編寫備份服務來備份SQL數據庫並將其保存在雲存儲中。我實際上已經在Amazon S3中實現了這一點,但隨着應用程序將分發給客戶,我無法將API密鑰與應用程序一起存儲。我考慮使用Web服務來提供密鑰,但這不是我現在最好的選擇(因爲它仍然存在密鑰被盜的可能性)。Azure共享訪問簽名是否意味着任何人都可以訪問我的Blob?

所以我正在調查Windows Azure,Blob服務並看到他們擁有這些共享訪問簽名,可用於訪問雲中的資源。您還可以使用簽名將Blob放入雲中。但通過閱讀MSDN docs,我不禁想到這是一個不安全的系統。知道我的帳戶的確切名稱和2.如何形成簽名的任何人都可以訪問這些對象。使用此簽名時不需要密鑰。至少這是我讀過文檔的印象。

所以最後我的問題。我對Azure的共享訪問簽名的評估是否正確,如果不是的話,爲什麼?任何人都可以提出一種替代方式來做我想要完成的事情。

+0

所以我現在看到你必須通過用你的密鑰加密來計算簽名散列。所以這回答了我的第一個問題(我在初步評估中錯了)。 Azure允許您創建無限數量的容器,因此每個客戶都有一個容器。客戶會打電話給我的網絡服務,然後生成客戶特有的簽名。這樣,任何加密密鑰,容器名稱等都可以保護在我的服務器上,而不是在客戶端系統上。 – BrianB 2010-06-24 16:34:09

回答

6

共享訪問簽名的範圍可以是特定容器或特定的blob。然後,他們可以指定他們授予的權限(讀取,寫入,列出斑點),並且可以指定它們有效的時間。

創建創建 SAS的唯一方法是擁有存儲密鑰,但擁有SAS的任何人都可以使用它來執行允許的操作。

這聽起來像你想讓所有的客戶斑點但不讀它們?如果是這樣,一個只指定寫權限的SAS應該能夠做到這一點。

但我想你還想限制(或計量)個別客戶的使用情況?如果是這樣,你可能需要在服務器上有一些活動的東西(一個Web服務?),它授權每一次使用並生成一個特定的,短期的SAS來允許這個操作。然後,您可以跟蹤和計費每次使用。

+0

我還需要允許讀取還原功能,我還沒有實現。我想我會在客戶需要在雲上進行操作時使用Web服務來生成SAS。 – BrianB 2010-06-24 18:02:38

+0

可能是一個愚蠢的問題,但是當簽名被構建時,它將blob URL考慮在內?所以在blob上創建的SAS只適合那個blob?如果我有那個容器中的blob URL列表,我不能從一個blob上加上SAS令牌並訪問其他的? – nmit026 2017-10-27 03:39:20

相關問題