Azure Data Lake Storage Gen1 中的數據加密
Azure Data Lake Storage Gen1 中的加密可協助您保護數據、實作企業安全策略,以及符合法規合規性需求。 本文提供設計的概觀,並討論實作的一些技術層面。
Data Lake Storage Gen1 支援待用和傳輸中的數據加密。 針對靜態存放的數據,Data Lake Storage Gen1 支援「預設為開啟」的透明加密。 以下是這些術語的意思,較詳細地說明:
- 默認 開啟:當您建立新的 Data Lake Storage Gen1 帳戶時,預設設定會啟用加密。 之後,儲存在 Data Lake Storage Gen1 中的數據一律會先加密,再儲存在永續性媒體上。 這是所有數據的行為,而且在建立帳戶之後便無法變更。
- 透明:Data Lake Storage Gen1 會在保存之前自動加密數據,並在擷取之前解密數據。 加密是由系統管理員在 Data Lake Storage Gen1 帳戶層級設定和管理。 不會對數據存取 API 進行任何變更。 因此,由於加密,與 Data Lake Storage Gen1 互動的應用程式和服務不需要變更。
傳輸中的數據(也稱為移動中的數據)也會在 Data Lake Storage Gen1 中一律加密。 除了在儲存至永續性媒體之前加密數據之外,數據也一律會使用 HTTPS 來保護傳輸中的安全性。 HTTPS 是唯一支援 Data Lake Storage Gen1 REST 介面的通訊協定。 下圖顯示 Data Lake Storage Gen1 中的數據如何加密:
Data Lake Storage Gen1 中數據加密的
使用 Data Lake Storage Gen1 設定加密
Data Lake Storage Gen1 的加密會在帳戶建立期間設定,而且預設一律會啟用。 您可以自行管理金鑰,或允許 Data Lake Storage Gen1 為您管理金鑰(這是預設值)。
如需詳細資訊,請參閱 使用者入門。
Data Lake Storage Gen1 中的加密運作方式
下列資訊涵蓋如何管理主要加密密鑰,並說明您可以在 Data Lake Storage Gen1 的數據加密中使用的三種不同類型的金鑰。
主要加密金鑰
Data Lake Storage Gen1 提供兩種模式來管理主要加密密鑰 (MEK)。 現在,假設主要加密金鑰是最上層金鑰。 需要存取主要加密密鑰,才能解密 Data Lake Storage Gen1 中儲存的任何數據。
管理主要加密金鑰的兩種模式如下:
- 服務管理的金鑰
- 客戶自管金鑰
在這兩種模式中,主要加密密鑰都是藉由將它儲存在 Azure Key Vault 來保護。 Key Vault 是完全受控且高度安全的 Azure 服務,可用來保護密碼編譯密鑰。 如需詳細資訊,請參閱 金鑰保存庫。
以下是管理MEK的兩種模式所提供的功能簡短比較。
問題 | 服務管理金鑰 | 客戶自行管理的金鑰 |
---|---|---|
如何儲存資料? | 在儲存之前一律加密。 | 在儲存之前一律加密。 |
主要加密金鑰儲存在哪裡? | 金鑰庫 (Key Vault) | 金鑰庫 (Key Vault) |
Key Vault 外部是否有任何加密金鑰以明文形式儲存? | 否 | 否 |
Key Vault 可以擷取 MEK 嗎? | 否。 在MEK儲存在Key Vault之後,它只能用於加密和解密。 | 否。 在MEK儲存在Key Vault之後,它只能用於加密和解密。 |
誰擁有 Key Vault 實例和主加密密鑰 (MEK)? | Data Lake Storage Gen1 服務 | 您擁有屬於您自己的 Azure 訂用帳戶的 Key Vault 實例。 Key Vault 中的MEK可由軟體或硬體管理。 |
您是否可以撤銷 Data Lake Storage Gen1 服務的 MEK 存取權? | 否 | 是的。 您可以在 Key Vault 中管理存取控制清單,並移除 Data Lake Storage Gen1 服務之服務身分識別的存取控制項目。 |
您可以永久刪除 MEK 嗎? | 否 | 是的。 如果您從 Key Vault 刪除 MEK,則 Data Lake Storage Gen1 帳戶中的數據無法由任何人解密,包括 Data Lake Storage Gen1 服務。 如果您在從 Key Vault 刪除 MEK 之前明確備份了 MEK,則可以還原 MEK,然後可以復原數據。 不過,如果您在從 Key Vault 刪除 MEK 之前尚未備份 MEK,Data Lake Storage Gen1 帳戶中的數據之後就無法解密。 |
除了誰管理MEK和其所在Key Vault實例的差異之外,這兩種模式的設計其餘部分都相同。
當您選擇主要加密金鑰的模式時,請務必記住下列事項:
- 您可以在布建 Data Lake Storage Gen1 帳戶時,選擇使用客戶管理的密鑰或服務受控密鑰。
- 布建 Data Lake Storage Gen1 帳戶之後,就無法變更模式。
數據的加密和解密
數據加密的設計中會使用三種類型的金鑰。 下表提供摘要:
鑰匙 | 縮寫 | 與相關聯 | 儲存位置 | 類型 | 備註 |
---|---|---|---|---|---|
主要加密金鑰 | MEK | Data Lake Storage Gen1 帳戶 | 金鑰庫 (Key Vault) | 非對稱 | 它可以由 Data Lake Storage Gen1 或您管理。 |
數據加密金鑰 | DEK | Data Lake Storage Gen1 帳戶 | 由 Data Lake Storage Gen1 服務管理的永續性記憶體 | 對稱 | DEK 是由MEK加密。 加密的 DEK 是儲存在永續性媒體上的內容。 |
封鎖加密金鑰 | BEK | 數據區塊 | 沒有 | 對稱 | BEK 衍生自 DEK 和數據區塊。 |
下圖說明這些概念:
數據加密
要解密檔案時的虛擬演算法:
- 檢查 Data Lake Storage Gen1 帳戶的 DEK 是否已快取並準備好供使用。
- 如果沒有,則從持久性存储中讀取加密的 DEK,並將其傳送到 Key Vault 以進行解密。 在記憶體中快取解密的 DEK。 它現在已準備好使用。
- 針對檔案中的每個資料區塊:
- 從永久儲存中讀取加密的資料區塊。
- 從 DEK 和加密的數據區塊產生 BEK。
- 使用 BEK 來解密數據。
資料區塊要加密時的虛擬演算法:
- 檢查 Data Lake Storage Gen1 帳戶的 DEK 是否已快取並可供使用。
- 如果沒有,則從永續性儲存裝置讀取加密的 DEK,並將它傳送至金鑰保存庫以進行解密。 在記憶體中快取解密的 DEK。 它現在已準備好使用。
- 針對 DEK 的數據區塊產生唯一的 BEK。
- 使用 AES-256 加密,使用 BEK 加密數據區塊。
- 將加密的數據區塊儲存在永續性記憶體上。
備註
DEK 一律會由MEK加密,無論是在持續性媒體上還是快取於記憶體中。
金鑰輪替
當您使用客戶管理的金鑰時,您可以更換主加密金鑰 (MEK)。 若要瞭解如何使用客戶管理的金鑰設定 Data Lake Storage Gen1 帳戶,請參閱 使用者入門。
先決條件
當您設定 Data Lake Storage Gen1 帳戶時,您已選擇使用自己的金鑰。 建立帳戶之後,就無法變更此選項。 下列步驟假設您使用的是客戶自控密鑰(也就是說,您已從 Key Vault 中選擇自己的金鑰)。
請注意,如果您使用預設選項進行加密,則數據一律會使用 Data Lake Storage Gen1 管理的密鑰來加密。 在此選項中,您無法輪替密鑰,因為密鑰是由 Data Lake Storage Gen1 所管理。
如何在 Data Lake Storage Gen1 中輪替 MEK
登入 Azure 入口網站。
流覽至儲存與 Data Lake Storage Gen1 帳戶相關聯之密鑰的 Key Vault 實例。 選擇 鍵。
Key Vault 的螢幕快照
選取與您的 Data Lake Storage Gen1 帳戶相關聯的密鑰,然後建立此密鑰的新版本。 請注意,Data Lake Storage Gen1 目前僅支援密鑰輪替至新版本的密鑰。 它不支援切換至不同的密鑰。
流覽至 Data Lake Storage Gen1 帳戶,然後選取 [加密]。
訊息會通知您有新的金鑰版本可供使用。 點擊 旋轉金鑰 將金鑰更新為新版本。
此作業應該需要不到兩分鐘的時間,而且因為密鑰輪替而沒有預期的停機時間。 作業完成之後,新的金鑰版本正在使用中。
這很重要
密鑰輪替作業完成之後,舊版的金鑰將不再主動用於加密新數據。 不過,在某些情況下,存取較舊的數據可能需要舊的密鑰。 若要允許讀取這類較舊的數據,請勿刪除舊索引鍵