1. 程式人生 > >為什麽Azure服務密鑰都是成對的?

為什麽Azure服務密鑰都是成對的?

更新 原來 target 完全 連接 .cn 產生 正在 配置

前一篇文章提到,Azure很多PaaS服務都是提供密鑰來做認證的,如果查看生成的密鑰,我們會發現密鑰都是成對的。比如下圖示例的存儲賬戶中有兩個密鑰key1和key2。

技術分享

那這兩個密鑰有區別嗎?如果沒區別,為什麽提供兩個呢?

首先,這兩個密鑰本質上是沒有任何區別的,功能權限上都完全一致,也就是說你可以隨便用哪個密鑰都是沒問題的。

那提供兩個有什麽好處呢?

第一,可以避免應用服務宕機。但這個避免應用服務宕機是有前提的,就跟任何雲應用一樣,要保證高可用,至少得有兩個及兩個以上的實例。

好,假設現在我們有一個雲應用,它有兩個實例,並用到了存儲賬戶,而且存儲賬戶的連接字符串是在配置文件中的。現在出於安全考慮,想重新生成新的密鑰以替換原有的。

如果只有一個密鑰,那麽一旦生成新的密鑰,雲應用到存儲賬戶的訪問,無論是哪個實例,就都會失敗,直到把新的連接字符串更新到雲應用中,這就出現服務宕機了,是不可接收的。

還好我們有兩個密鑰,按如下步驟就可避免宕機了,假設原來用的是密鑰Key1。

  1. 將雲應用配置文件中的存儲賬戶連接字符串更新為使用Key2,因為有兩個實例,分布在不同的更新域,而更新是每個更新域串行的,因此會保證始終至少有一個實例在服務
  2. 雲應用更新完成後,將Key1重新生成,因為雲應用已經在使用Key2了,所以不會產生影響
  3. 再將雲應用配置文件中的存儲賬戶連接字符串更新為使用新Key1,同樣的不會導致服務宕機
  4. 最後將Key2也重新生成

這樣,就將密鑰Key1和Key2都重新生成了,而應用服務沒有出現宕機。

另一個好處就是可以將沒在使用的密鑰臨時分享給他人使用

比如你有同事想使用你的存儲賬戶來臨時上傳下載點東西,如果只有一個密鑰,給他用完之後,如果想重新生成以保證安全,又會影響你自己正在使用的應用,所以很不方便。

但我們有兩個密鑰,所以你只需要將另一個沒在用的密鑰分享給他,使用完之後,將那個密鑰重新生成,既保證了安全,也不會影響自己原有的應用。

當然,對於這種情況,更好的方式是分享一個SAS令牌給他,限制了具體的權限,而且過期自動失效,更加安全和方便。

引用:https://blogs.msdn.microsoft.com/mast/2013/11/06/why-does-an-azure-storage-account-have-two-access-keys/

為什麽Azure服務密鑰都是成對的?