全部產品
Search
文件中心

Object Storage Service:資料加密

更新時間:Feb 28, 2024

Object Storage Service提供伺服器端加密和用戶端加密,並支援基於SSL/TLS的HTTPS加密傳輸,有效防止資料在雲端的潛在安全風險。

伺服器端加密

OSS支援在伺服器端對上傳的資料進行加密(Server-Side Encryption)。上傳資料時,OSS對收到的使用者資料進行加密,然後再將得到的加密資料持久化儲存下來;下載資料時,OSS自動對儲存的加密資料進行解密並把未經處理資料返回給使用者,並在返回的HTTP請求Header中,聲明該資料進行了伺服器端加密。

OSS通過伺服器端加密機制,提供待用資料保護。適合於對於檔案儲存體有高安全性或者合規性要求的應用情境。例如,深度學習樣本檔案的儲存、線上協作類文檔資料的儲存。針對不同的應用情境,OSS有以下兩種伺服器端加密方式:

  • 使用KMS託管密鑰進行加解密(SSE-KMS)

    上傳檔案時,可以使用預設KMS(Key Management Service)託管的CMK(Customer Master Key)或者指定的CMK ID進行加解密操作。這種情境適合於大量的資料加解密。資料無需通過網路發送到KMS服務端進行加解密,是一種低成本的加解密方式。

    KMS是阿里雲提供的一款安全、易用的管理類服務。使用者無需花費大量成本來保護密鑰的保密性、完整性和可用性。藉助Key Management Service,使用者可以安全、便捷的使用密鑰,專註於開發加解密功能情境。使用者可以通過KMS控制台中查看和管理KMS密鑰。

    除了採用AES-256密碼編譯演算法外,KMS負責保管使用者主要金鑰CMK(對資料密鑰進行加密的密鑰),以及產生資料加密的密鑰,通過信封加密機制,進一步防止未經授權的資料訪問。CMK可通過使用OSS預設託管的KMS密鑰的方式或者通過BYOK的方式產生,其中使用的BYOK材料可以由阿里雲提供,也可以由使用者自主提供。

    SSE-KMS伺服器端加密的邏輯示意圖如下。

  • 使用OSS完全託管加密(SSE-OSS)

    基於OSS完全託管的加密方式,是Object的一種屬性。OSS伺服器端加密使用行業標準的強密碼編譯演算法AES-256(即256位進階加密標準)加密每個對象,並為每個對象使用不同的密鑰進行加密。作為額外的保護,它使用定期輪轉的主要金鑰對加密金鑰本身進行加密。該方式適合於批量資料的加解密。

    該加密方式下,資料加密金鑰的產生和管理由OSS負責。您可以將Bucket預設的伺服器端加密方式設定為AES-256,也可以在上傳Object或修改Object的中繼資料時,在請求中攜帶X-OSS-server-side-encryption並指定其值為AES256,即可實現該Object的伺服器端加密儲存。

更多資訊請參見OSS開發指南中的伺服器端加密

用戶端加密

用戶端加密是指將檔案(Object)發送到Object Storage Service之前在本地進行加密。使用用戶端加密功能時,您需要對主要金鑰的完整性和正確性負責。在對加密資料進行複製或者遷移時,您需要對加密中繼資料的完整性和正確性負責。

使用用戶端加密時,會為每個Object產生一個隨機資料加密金鑰,用該隨機資料加密金鑰明文對Object的資料進行對稱式加密。主要金鑰用於產生隨機的資料加密金鑰,加密後的內容會當作Object的中繼資料儲存在服務端。解密時先用主要金鑰將加密後的隨機密鑰解密出來,再用解密出來的隨機資料加密金鑰明文解密Object的資料。主要金鑰只參與用戶端本地計算,不會在網路上進行傳輸或儲存在服務端,以保證主要金鑰的資料安全。

對於主要金鑰的使用,目前支援以下兩種方式:

  • 使用KMS託管使用者主要金鑰

    當使用KMS託管使用者主要金鑰用於用戶端資料加密時,無需向OSS加密用戶端提供任何加密金鑰,只需要在上傳對象時指定KMS使用者主要金鑰ID(也就是CMK ID)。具體工作原理如下圖所示。

  • 使用使用者自主管理密鑰

    使用使用者自主管理密鑰時,需要您自主產生並保管加密金鑰。當本地用戶端加密Object時,由使用者自主上傳加密金鑰(對稱式加密密鑰或者非對稱式加密密鑰)至本地加密用戶端。其具體加密過程如下圖所示。

更多資訊請參見OSS開發指南中的用戶端加密

基於SSL/TLS的HTTPS加密傳輸

OSS支援通過HTTP或HTTPS的方式訪問。您也可以在Bucket Policy中設定僅允許通過HTTPS(TLS)來訪問OSS資源,實現更加安全的資料轉送。安全傳輸層協議(TLS)用於在兩個通訊應用程式之間提供保密性和資料完整性。詳情請參見通過Bucket Policy授權使用者訪問指定資源