雲計算

OSS 解決方案篇-OSS 數據安全

OSS 數據安全

當前 OSS 保證數據安全的方式參考的方式有如下幾種方式

1、 OSS 要設置為私有的避免公共讀,或者公共讀寫。
2、儘量不要使用傳統的 AccesskeyID (AK)、AccesskeySecret (SK),改用 STS token 的方式替代原來的教研方式;
3、可以採用 OSS 內容加密,在鑑權的基礎上雙重加密,使用 KMS 對內容進行加密,但操作過程略微複雜;

使用場景

服務端存儲 AKSK

用戶自己有服務器,部署一套簽名代碼,使用 AK SK 生成鑑權的 signature 返回給客戶端,端上利用 signature 構造 http 的請求頭的方式來驗籤;

image.png

服務端生成 STS token

此類場景多用在移動端使用,客戶端通過一個 https 地址請求到用戶服務器,服務器上部署一個生成 STS token 的程序,收到移動端請求後請求 RAM 服務端生成 STS 信息。獲取到 RAM 服務端返回的 STS.AK STS.SK STS.token 信息後,再返回給移動端使用;

需要注意用戶服務器上也是用 AK SK 去申請的 STS,所以需要用戶將生成一個子賬號,然後配置好角色,將角色和權限綁定後,再通過子賬號進行調用角色去生成 STS 信息;

移動端請求用戶服務器儘量使用 HTTPS 協議,避免明文被劫持;服務端也可以針對移動端的請求做二次校驗,比如客戶端請求時攜帶一個 token,服務端校驗通過再返回 STS 信息;

image.png

image.png

客戶端拿到鑑權簽名如何防洩露

header AK SK 簽名

1、服務端通過 header + AK SK 簽名方式生成 signature 後,可以對 header 簽名做二次加密。比如客戶端請求服務端時攜帶設備號和時間戳信息,服務端通過設備號和時間戳對 signature 做加密,再返回給客戶端;

2、客戶端拿到加密後的 signature ,通過約定的解密算法將 signature 解析出來,這樣可以避免 signature 被別人抓到,或者被反編譯出來;

3、通過客戶端和服務端的傳輸可以用 https 方式避免被旁路劫持干擾;

4、header 簽名拿到後,有效期是 15min ,超過 15min 沒有使用,signature 失效無法繼續使用;

header STS 簽名

1、服務端通過 header + STS 簽名方式生成 signature 後,在生成 STS 時可以限制只允許當前攜帶了設備號的 IP 來獲取 signature ,如果設備號和 IP 不匹配的情況,即便是其他客戶獲取到了 STS token 也無法上傳;

2、 當STS 暴露後,用戶可以在 RAM 產品上將這個 STS 用的角色刪除掉,重新配置一個角色即可,可以最小化降低影響;

3、生成 STS 時的 有效時間儘量不要那麼長,控制在 900 - 3600s 之內,如果每個 STS token 都是 3600s 失效時間會帶來一定的業務風險;

image.png

Leave a Reply

Your email address will not be published. Required fields are marked *