待用資料的 Azure 儲存體加密
Azure 儲存體會使用服務端加密 (SSE) 來自動加密要持續保存至雲端的資料。 Azure 儲存體會加密可保護您的資料,並協助您符合組織的安全性和合規性承諾。
在大部分情況下,Microsoft 都建議使用服務端加密來保護資料。 不過,適用於 Blob 儲存體和佇列儲存體的 Azure 儲存體用戶端程式庫也會為需要加密用戶端上資料的客戶提供用戶端加密。 如需詳細資訊,請參閱 Blob 和佇列的用戶端加密。
關於 Azure 儲存體服務端加密
Azure 儲存體中的資料已使用 256 位元的 AES 加密以透明的方式進行加密和解密,這是可用的最強區塊編碼器之一,並符合 FIPS 140-2 規範。 Azure 儲存體加密類似於 Windows 上的 BitLocker 加密。
為所有儲存體帳戶 (包括 Resource Manager 和傳統儲存體帳戶) 啟用 Azure 儲存體加密。 Azure 儲存體加密無法停用。 由於預設會保護您的資料,因此無須修改您的程式碼或應用程式,即可利用 Azure 儲存體加密。
不論效能層級 (標準或進階)、存取層 (熱或冷) 或部署模型 (Azure Resource Manager 或傳統) 為何,儲存體帳戶中的資料都會加密。 所有新的和現有的區塊 Blob、附加 Blob 和分頁 Blob 都會加密,包括封存儲存層中的 Blob。 所有 Azure 儲存體備援選項都支援加密,而且啟用異地複寫時,主要和次要區域中的所有資料都會加密。 系統會加密所有 Azure 儲存體資源,包括 Blob、磁碟、檔案、佇列和資料表。 也會加密所有物件中繼資料。
Azure 儲存體加密不會有額外費用。
如需關於基礎 Azure 儲存體加密的加密模組詳細資訊,請參閱加密 API:新一代。
如需 Azure 受控磁碟的加密和金鑰管理的相關資訊,請參閱 Azure 受控磁碟的伺服器端加密。
關於加密金鑰管理
依預設,新儲存體帳戶中的資料會使用 Microsoft 管理的金鑰進行加密。 您可以繼續依賴 Microsoft 管理的金鑰來加密您的資料,也可以使用您自己的金鑰來管理加密。 如果您選擇使用自己的金鑰管理加密,有兩個選項。 您可使用任一類型的金鑰管理,或同時使用兩者:
- 您可以指定「客戶自控金鑰」,以用於加密和解密 Blob 儲存體和 Azure 檔案儲存體中的資料。1,2客戶自控金鑰必須儲存在 Azure Key Vault 或 Azure Key Vault 受控硬體安全模組 (HSM) 中。 如需關於客戶自控金鑰的詳細資訊,請參閱使用客戶自控金鑰進行 Azure 儲存體加密。
- 您可以在 Blob 儲存體作業上指定客戶提供的金鑰。 對 Blob 儲存體提出讀取或寫入要求的用戶端,可以在要求上納入加密金鑰,細微控制 Blob 資料的加密和解密方式。 如需客戶所提供金鑰的詳細資訊,請參閱針對 Blob 儲存體的要求提供加密金鑰。
根據預設,儲存體帳戶會以限定於整個儲存體帳戶的金鑰加密。 加密範圍可讓您使用範圍為容器或個別 Blob 的金鑰來管理加密。 您可以使用加密範圍,在位於相同儲存體帳戶但屬於不同客戶的資料之間建立安全界限。 加密範圍可以使用 Microsoft 管理的金鑰或客戶管理的金鑰。 如需加密範圍的詳細資訊,請參閱 Blob 儲存體的加密範圍。
下表比較 Azure 儲存體加密的金鑰管理選項。
金鑰管理參數 | Microsoft 管理的金鑰 | 客戶管理的金鑰 | 客戶提供的金鑰 |
---|---|---|---|
加密/解密作業 | Azure | Azure | Azure |
支援的 Azure 儲存體服務 | 全部 | Blob 儲存體,Azure 檔案儲存體1,2 | Blob 儲存體 |
金鑰儲存體 | Microsoft 金鑰存放區 | Azure Key Vault 或 Key Vault HSM | 客戶自己的金鑰存放區 |
金鑰輪替責任 | Microsoft | 客戶 | 客戶 |
按鍵控制項 | Microsoft | 客戶 | 客戶 |
金鑰範圍 | 帳戶 (預設)、容器或 Blob | 帳戶 (預設)、容器或 Blob | N/A |
1 如需關於建立支援將客戶自控金鑰與佇列儲存體搭配使用帳戶的詳細資訊,請參閱建立支援客戶自控金鑰用於佇列的帳戶。
2 如需關於建立支援將客戶自控金鑰與表格儲存體搭配使用帳戶的詳細資訊,請參閱建立支援客戶自控金鑰用於表格的帳戶。
注意
Microsoft 管理的金鑰會根據合規性需求適當地輪替。 如果您有特定的金鑰輪替需求,Microsoft 建議您移至客戶自控金鑰,讓您可以自行管理和稽核輪替。
使用基礎結構加密的雙重加密資料
需要高度保證其資料安全的客戶,也可以在 Azure 儲存體基礎結構層級啟用 256 位元 AES 加密。 啟用基礎結構加密時,儲存體帳戶中的資料會加密兩次;一次在服務等級,一次在基礎結構等級,且會使用兩個不同的加密演算法和兩個不同的金鑰。 Azure 儲存體資料的雙重加密可防範其中一種加密演算法或金鑰可能遭洩漏的情況。 在此案例中,額外的加密層會繼續保護您的資料。
服務等級加密支援使用 Microsoft 管理的金鑰或客戶自控金鑰搭配 Azure Key Vault。 基礎結構等級的加密相依於 Microsoft 管理的金鑰,而且一律使用個別的金鑰。
如需如何建立可啟用基礎結構加密的儲存體帳戶詳細資訊,請參閱建立已啟用基礎結構加密的儲存體帳戶,以進行資料的雙重加密。
Blob 和佇列的用戶端加密
適用於 .NET、Java 和 Python 的 Azure Blob 儲存體用戶端程式庫支援在上傳至 Azure 儲存體之前加密用戶端應用程式內的資料,並在下載至用戶端時將資料解密。 適用於 .NET 和 Python 的佇列儲存體用戶端程式庫也支援用戶端加密。
注意
請考慮使用 Azure 儲存體所提供的服務端加密功能來保護您的資料,而不是用戶端加密。
Blob 儲存體和佇列儲存體用戶端程式庫使用 AES 來加密使用者資料。 用戶端程式庫中有兩個可用的用戶端加密版本:
- 第 2 版搭配使用 Galois/Counter Mode (GCM) 模式與 AES。 Blob 儲存體和佇列儲存體 SDK 支援 v2 的用戶端加密。
- 第 1 版搭配使用加密區塊鏈結 (CBC) 模式與 AES。 Blob 儲存體、佇列儲存體、表格儲存體 SDK 支援 v1 的用戶端加密。
警告
因為用戶端程式庫 CBC 模式實作的安全性弱點,所以不再建議使用 v1 的用戶端加密。 如需此安全性弱點的詳細資訊,請參閱Azure 儲存體更新 SDK 中的用戶端加密以解決安全性弱點。 如果您目前使用 v1,則建議您更新應用程式以使用 v2 的用戶端加密,並移轉您的資料。
Azure 表格儲存體 SDK 僅支援 v1 的用戶端加密。 不建議搭配使用用戶端加密與資料表儲存體。
下表顯示哪些用戶端程式庫支援哪些用戶端加密版本,並提供移轉至用戶端加密 v2 的指導方針。
用戶端程式庫 | 所支援的用戶端加密版本 | 建議的移轉 | 其他指導方針 |
---|---|---|---|
適用於 .NET (12.13.0 版和更新版本)、Java (12.18.0 版和更新版本) 以及 Python (12.13.0 版和更新版本) 的 Blob 儲存體用戶端程式庫 | 2.0 1.0 (僅基於回溯相容性) |
更新您的程式碼以使用用戶端加密 v2。 下載任何加密的資料以進行解密,然後使用用戶端加密 v2 重新予以加密。 |
Blob 的用戶端加密 |
適用於 .NET (12.12.0 版和更舊版本)、Java (12.17.0 版和更舊版本) 以及 Python (12.12.0 版和更舊版本) 的 Blob 儲存體用戶端程式庫 | 1.0 (不建議使用) | 更新您的應用程式,以使用支援用戶端加密 v2 的 Blob 儲存體 SDK 版本。 如需詳細資料,請參閱用戶端加密的 SDK 支援矩陣。 更新您的程式碼以使用用戶端加密 v2。 下載任何加密的資料以進行解密,然後使用用戶端加密 v2 重新予以加密。 |
Blob 的用戶端加密 |
適用於 .NET (12.11.0 版和更新版本) 和 Python (12.4 版和更新版本) 的佇列儲存體用戶端程式庫 | 2.0 1.0 (僅基於回溯相容性) |
更新您的程式碼以使用用戶端加密 v2。 | 佇列的用戶端加密 |
適用於 .NET (12.10.0 版和更舊版本) 和 Python (12.3.0 版和更舊版本) 的佇列儲存體用戶端程式庫 | 1.0 (不建議使用) | 更新您的應用程式,以使用支援用戶端加密 v2 的佇列儲存體 SDK 版本。 請參閱用戶端加密的 SDK 支援矩陣 更新您的程式碼以使用用戶端加密 v2。 |
佇列的用戶端加密 |
適用於 .NET、Java 和 Python 的資料表儲存體用戶端程式庫 | 1.0 (不建議使用) | 無法使用。 | N/A |