天天看點

ECS鏡像(二)ECS執行個體辨別實踐執行個體辨別

随着雲技術的普及,越來越多的使用者大到企業客戶,軟體供應商,小到普通創業者逐漸開始将自己的基礎設施搬遷到雲上,同時越來越多使用者對雲主機的“可信任性”提出了需求,比如以下場景:

比如某isv想在阿裡雲雲市場上架其軟體,差別于傳統的軟體license計費模式,一般雲計算廠商的計費模式相對複雜,isv想通過一種與雲資源比如ecs協同計費的方式進行收費,比如按照該軟體在ecs上的運作時間進行計費,那麼對應的計費方案可能是如果運作該軟體的 虛拟機是阿裡雲的ecs那麼該軟體預設license校驗通過,isv通過鏡像市場鏡像進行收費。

isv該如何驗證其軟體運作環境是阿裡雲ecs而不是其它雲主機

在虛拟機啟動後,可能需要向虛拟機發送一些敏感資料,比如證書等,此時使用者需要一種機制來驗證虛拟機的身份

如何讓使用者信任該虛拟機是阿裡雲ecs

如何表達每一台ecs的“身份”

以上場景需要雲計算廠商為使用者提供一種機制來驗證虛拟機的身份 ,“執行個體辨別” 應運而生,其通過數字簽名的方式來保障資料資訊的真實性,準确性,來源 。

需要了解的核心概念清單: 執行個體辨別文檔 執行個體辨別簽名 公有證書
ECS鏡像(二)ECS執行個體辨別實踐執行個體辨別

綜上,阿裡雲ECS執行個體辨別通過執行個體身份+動态數字簽名的方式來保證資料的真實性與準确性,進而為使用者提供了一種驗證資料來源可靠性的有效方式。

ECS鏡像(二)ECS執行個體辨別實踐執行個體辨別

上圖簡單表達了一個使用者app通過阿裡雲ecs使用執行個體辨別的流程:

使用者在vm内部調用 <code>100.100.100.200/latest/dynamic/instnace-identify/document</code>擷取執行個體辨別文檔

使用者在vm内部調用 <code>100.100.100.200/latest/dynamic/instnace-identify/pkcs7</code>擷取執行個體辨別簽名

使用者從官方管道比如官方幫助文檔擷取公開證書,儲存為ecs.cer

使用者通過執行個體辨別文檔來擷取ecs相關的身份資訊,可以通過身份資訊進行第一步認證比如:私網ip,歸屬aliuid,mac等

通過openssl工具驗證簽名有效性

smime -verify -in signature -inform PEM -content document -certfile ecs.cer -noverify &gt; /dev/null

需要在腳本運作目錄提前将官網證書儲存為ecs.cer

如上所述“執行個體辨別” 提供了一種簡單的ecs身份簽名驗證機制,為了提供更高的可擴充性來滿足使用者更高的安全需求,我們在簽名計算上提供了一個可擴充參數audience,使用者可以自定義audience來增強安全性,比如使用動态生成的md5值作為audience參數傳入可以降低服務僞造的風險。

使用方式:100.100.100.200/latest/dynamic/instance-identity/pkcs7?audience=xxx

audience參數最好是變化值且最好是通過不可逆加密算法生成的比如md5等加密算法

以下提供一個簡單的随機數作為audience參數傳入的demo

isv在阿裡雲雲市場上架其軟體,以鏡像市場收費鏡像的方式進行計費,比如按量付費模式,isv通過執行個體辨別識别虛拟機身份進行license控制。

擷取執行個體辨別文檔與簽名,參考如上實作

驗證執行個體辨別文檔正确性,驗證私網ip,mac,instanceID等資訊(可選)

通過openssl或者其它方式驗證簽名有效性(建議增加audience參數)

擷取雲市場鏡像相關的metadata,根據付費類型(meta-data/image/market-place/charge-type )及商品code(meta-data/image/market-place/product-code )做license控制判斷

繼續閱讀