2014-11-05 62 views
0

在探索Azure存儲我發現訪問存儲容器是通過共享密鑰來完成。我擔心,如果開發人員將這個密鑰用於他們正在構建的應用程序,然後離開公司,他們仍然可以登錄到存儲帳戶並刪除他們想要的任何東西。解決方法是重新生成帳戶的輔助鍵,但是我們必須更改每個使用這些鍵的應用程序中的所有鍵。Azure的Blob存儲和安全最佳實踐

是它讓每個應用程序每環境(開發,測試,運行,生產)的整個存儲帳戶的最佳實踐? 可以保護虛擬網絡後面的存儲帳戶嗎? 我們是否應該在每個應用程序的基礎上在容器上使用簽名?

任何人都有類似的經歷,並找到了解決這一良好格局?

+0

您在這裏有多個問題。關於一個存儲帳戶是否可以限制爲一個vnet的應該是分開的,因爲它可以簡潔地回答。最佳實踐?這是意見徵求,有幾種方法可行/實用。 – 2014-11-06 00:12:49

回答

1

我有一點不同的場景 - 外部應用程序,但問題是相同的 - 數據訪問安全

我使用共享訪問簽名(SAS)授予對容器的訪問。

在你的情況下,您可以在容器上創建每個應用程序的共享訪問策略,並使用長的到期時間這個存儲訪問策略生成SAS,您可以通過從容器中取出的共享訪問策略在任何時候撤銷它。因此,在您的情況下,您可以撤銷當前的SAS並在您的開發人員離開時生成新的SAS。您無法爲多個容器生成單個SAS,因此如果您的應用程序使用多個容器,則必須生成多個SAS。

用法,從開發商的角度來看,保持不變: 您可以使用SAS令牌創建CloudStorageAccountCloudBlobClient所以它幾乎像一個普通的快捷鍵。

從長期來看,我可能會考慮創建負責生成SAS和更新他們一個內部服務(內部API)。通過這種方式,您可以擁有完全自動化的系統,並僅通過向主要服務機構披露訪問密鑰然後,您可以通過虛擬網絡,證書,身份驗證等方式限制對此服務的訪問。如果出現問題(編寫該服務的開發人員離開:-),您可以重新生成訪問密鑰並進行更改,但這次只能在一個地方進行。

幾件事情:

  • 每個應用程序(和/或環境)存儲帳戶是一個很好的策略,但你必須要知道的限制 - 每認購最多100個存儲賬戶。
  • 沒有選項來限制訪問存儲帳戶與虛擬網絡
  • 你可以有一個容器
+0

如果開發人員擁有存儲帳戶密鑰,則使用SAS不起作用。使用上述密鑰,無論SAS是否存在,每個存儲帳戶對象都可直接訪問。 – 2014-11-06 00:11:01

+0

是的,同意,如果開發人員擁有存儲帳戶密鑰,則除了重新生成密鑰外,沒有別的辦法可以做。當使用SAS代替賬戶密鑰時,SAS將會提供幫助,所以這不是一種預防措施。 – b2zw2a 2014-11-06 07:12:11

0

我不會進入主觀/意見答案最多5個共享訪問策略,但從客觀角度來看:如果開發人員擁有存儲帳戶密鑰,則他們可以完全訪問存儲帳戶。如果他們離開了公司並保留了鑰匙的副本?阻止它們的唯一方法是重新生成密鑰。

你可能會認爲,與不同的存儲賬戶分離的應用程序幫助。不過,請記住這一點:如果開發人員有權訪問訂閱,則他們可以訪問該訂閱中每個存儲帳戶的密鑰。

在考慮密鑰更新時,請考慮知道密鑰本身的應用的總表面積。如果存儲操作僅僅是服務器端操作,那麼更改密鑰的影響是最小的(每個部署中的小應用更改以及更新所使用的任何存儲瀏覽工具)。如果將密鑰嵌入到桌面/移動應用程序中進行直接存儲訪問,則不得不推出更新的客戶端時遇到更大的問題,但無論如何,您已經遇到了安全問題。

+0

感謝您的回覆。開發人員現在無法完全訪問門戶,因爲他們已經實施了RBAC ..他們只能讀取他們需要查看的信息。 – Ryan 2014-11-06 01:34:52

+0

仔細查看RBAC今天提供的內容。它控制諸如存儲帳戶的資源的創建/管理/刪除。開發人員需要一個密鑰才能處理項目,而RBAC目前與存儲帳戶內的對象訪問控制沒有任何關係。注意我今天說* - 這可能會改變。有關更多信息,請參見[此文檔頁面](http://azure.microsoft.com/zh-cn/documentation/articles/role-based-access-control-configure/#authmgmt)。 – 2014-11-06 02:28:40

+0

我也注意到了這一點。但是今天開發人員甚至無法訪問虛擬機和網站,無論如何測試,分期和生產。我們只會讓讀者訪問他們只需要的特定機器.... – Ryan 2014-11-06 03:19:52