Microsoft Azure 內有數項工具,可根據公司的安全性和法務遵循需求來保護資料。 本文重點在於:
- 如何在 Microsoft Azure 上保護靜態資料。
- 參與資料保護實施的各個組成部分。
- 不同金鑰管理保護方法的優缺點。
靜態加密是常見的安全需求。 在 Azure 中,靜態資料預設是透過平台管理的金鑰加密。 此方法為組織提供自動加密,且無需承擔客製化金鑰管理解決方案的風險與成本。 組織可以依靠 Azure 來完整管理靜態加密,可以選擇使用平台管理的金鑰,或在需要額外控制加密金鑰與金鑰管理策略時,使用客戶管理的金鑰。
什麼是靜止加密?
加密是用來保護資料機密性的安全編碼。 Azure 中的靜態加密設計利用對稱加密,根據簡單的概念模型快速加密與解密大量資料:
- 對稱加密金鑰在資料寫入儲存時會加密。
- 同一把加密金鑰會在資料準備進入記憶體時解密。
- 資料可以分割,且每個分割區可使用不同的金鑰。
- 金鑰必須儲存在具備以身分識別為基礎的存取控制和稽核原則的安全位置。 如果資料加密金鑰存放在安全地點之外,則會使用存放在安全位置的金鑰加密金鑰來加密。
在實務上,金鑰管理和控制情節,以及級別和可用性保證,都需要其他建構。 以下章節將介紹 Microsoft Azure 靜態加密的概念與元件。
靜態加密的目的
靜態資料加密可保護已儲存的資料 (靜態資料)。 針對靜態資料的攻擊包括試圖取得儲存資料的硬體實體存取權,進而入侵所包含的資料。 在此類攻擊中,伺服器的硬碟在維護過程中可能被誤用,攻擊者因此得以移除硬碟。 攻擊者隨後將硬碟放入他們控制的電腦中,試圖存取資料。
靜態加密旨在防止攻擊者存取未加密的資料,方法是確保資料在磁碟上時就已加密。 如果攻擊者取得具有已加密資料的硬碟,但是沒有加密金鑰,則該攻擊者必須將加密破解才能讀取資料。 與存取硬碟上未加密的資料相比,此攻擊將會變得更為複雜,且需要耗用更多資源。 基於這個理由,強烈建議您使用靜態加密,且對許多組織而言是高優先順序的需求。
組織對資料治理與合規的需求,也可能需要靜態加密。 產業與政府法規如 HIPAA、PCI 及 FedRAMP,訂定了關於資料保護與加密要求的具體保障措施。 靜態加密是符合某些法規要求的強制性措施。 如需 Microsoft FIPS 140-2 驗證方法的詳細資訊,請參閱聯邦資訊處理標準 (FIPS) 發行集 140-2。
除了能滿足合規性和法規要求之外,靜態加密也能提供深度防禦的保護。 Microsoft Azure 針對服務、應用程式及資料提供符合規範的平台。 它也提供全方位的設施和實體安全性、資料存取控制及稽核。 然而,若其他安全措施失效,提供額外的「重疊」安全措施也很重要。 靜態加密提供了這樣的安全措施。
Microsoft 致力於為所有雲端服務提供靜態加密選項,並給予客戶對加密金鑰和金鑰使用記錄的控制。 此外,Microsoft 也正努力預設加密所有客戶的靜態資料。
金鑰管理選項
Azure 提供兩種主要的加密金鑰管理方法:
平台管理金鑰(預設)( 有時也稱為服務管理金鑰):Azure 自動處理加密金鑰管理的所有面向,包括金鑰產生、儲存、輪替及備份。 此方法提供靜態加密,客戶無需設定,且預設在 Azure 服務中啟用。 平台管理金鑰提供最高層級的便利性,且不需額外成本或管理負擔。
客戶管理金鑰(可選):需要更嚴格控制加密金鑰的客戶,可選擇使用 Azure Key Vault 或 Azure Managed HSM 自行管理金鑰。 此方法讓客戶能控制金鑰生命週期、存取政策及密碼學操作。 客戶管理的金鑰提供更多控制,但代價是管理責任增加與複雜度。
選擇這些方法取決於貴組織的安全需求、合規需求及營運偏好。 大多數組織可依賴平台管理的金鑰來提供強大的加密保護,而有特定法規或安全需求的組織則可能選擇由客戶管理的金鑰。
靜態元件的 Azure 加密
如前所述,靜態加密的目標是讓磁碟上持續存在的資料以秘密加密金鑰加密。 為達成此目標,必須提供加密金鑰的安全建立、儲存、存取控制及管理。 雖然細節可能有所不同,Azure 服務的靜態加密實作可用下圖所示的術語來描述。
Azure Key Vault
加密金鑰的儲存位置以及這些金鑰的存取控制是靜態加密模型的核心。 你需要高度保護金鑰,但要讓指定使用者能管理,並且能提供給特定服務。 針對 Azure 服務,Azure Key Vault 是建議的金鑰儲存體解決方案,並提供常見的跨服務管理體驗。 你可以在金鑰庫中儲存和管理金鑰,並且可以讓使用者或服務存取金鑰庫。 Azure Key Vault 支援客戶建立金鑰或匯入客戶金鑰,可供在客戶管理的加密金鑰情節下使用。
Microsoft Entra ID
你可以授權 Microsoft Entra 帳號使用存放在 Azure Key Vault 中的金鑰,無論是管理還是存取這些金鑰,進行靜態加密與解密。
具有金鑰階層結構的信封加密
在靜態加密實作中,你會使用多個加密金鑰。 將加密金鑰儲存至 Azure Key Vault,可確保安全的金鑰存取和金鑰集中管理。 不過,相較與每個資料作業的金鑰保存庫互動,服務本機存取加密金鑰在大量加密和解密上更有效率,可達到更強的加密和更佳的效能。 限制單一加密金鑰的使用,可降低金鑰被盜的風險,以及在必須更換金鑰時重新加密的成本。 Azure 待用加密模型會使用信封加密,其中金鑰加密金鑰會加密資料加密金鑰。 此模型形成一個金鑰階層,更能解決效能和安全性需求:
- 資料加密金鑰 (DEK) – 用來加密資料分割或資料區塊的對稱 AES256 金鑰,有時也稱為「資料金鑰」。 單一資源可以有多個分割區和多個資料加密金鑰。 使用不同金鑰將每個資料區塊進行加密,會使密碼編譯分析攻擊更加困難。 將 DEK 保持在服務本地,對資料進行加密與解密,能最大化效能。
- 金鑰加密金鑰(KEK) – 一種用於透過信封加密(也稱為封裝)來加密資料加密金鑰的加密金鑰。 透過使用永不離開金鑰庫的金鑰加密金鑰,你可以加密並控制資料加密金鑰。 能夠存取 KEK 的實體可能與需要 DEK 的實體不同。 實體可以代理對 DEK 的存取,以限制每個 DEK 存取特定分割區。 由於解密DEK必須使用KEK,客戶可透過停用KEK來加密抹除DEK及資料。
資源提供者和應用程式執行個體會將加密的資料加密金鑰儲存為中繼資料。 只有具金鑰加密金鑰存取權的實體,才可以解密這些資料加密金鑰。 支援不同模型的金鑰儲存。 如需詳細資訊,請參閱資料加密模型。
Microsoft 雲端服務中的靜態加密
你會在三種雲端模式中都使用 Microsoft Cloud Services:IaaS、PaaS 和 SaaS。 以下範例說明它們在各模型中的適用性:
- 軟體服務是指「軟體即服務」或 SaaS,具有雲端所提供的應用程式 (例如 Microsoft 365)。
- 平台服務是指客戶在其應用程式中,會針對諸如儲存、分析和服務匯流排功能等項目使用雲端。
- 基礎結構服務或基礎結構即服務 (IaaS) 可供客戶在其中部署裝載於雲端中且可能運用其他雲端服務的作業系統和應用程式。
SaaS 客戶的靜態加密
軟體即服務 (SaaS) 客戶通常會啟用或可在每個服務中使用靜態加密。 Microsoft 365 有幾個選項可供客戶驗證或啟用靜態加密。 如需 Office 365 服務的詳細資訊,請參閱 Microsoft 365 中的加密。
PaaS 客戶的靜態加密
平台即服務(PaaS)客戶通常將資料儲存在像 Blob Storage 這類的儲存服務中。 然而,資料也可能被快取或儲存在應用程式執行環境中,例如虛擬機。 若要查看可用的待用加密選項,請檢查 您所使用的記憶體和應用程式平台的數據加密模型 。
IaaS 客戶的靜態加密
基礎設施即服務(IaaS)客戶可以使用各種服務與應用程式。 IaaS 服務可以透過主機加密,使其 Azure 託管虛擬機器中實現靜態加密。
加密儲存體
諸如 PaaS、IaaS 等解決方案可以運用儲存資料靜態加密的其他 Azure 服務。 在這些情況下,你可以啟用每個所使用的 Azure 服務所提供的靜止加密功能。 資料加密模型列舉了主要的儲存、服務與應用平台,以及所支援的靜態加密模型。
加密計算
所有受管理磁碟、快照與映像檔預設皆透過平台管理金鑰的儲存服務加密加密。 此預設加密不需客戶設定或額外費用。 更完整的加密解決方案確保所有資料永遠不會以未加密的形式持續存在。 在虛擬機器處理資料時,系統可以將資料持久化到 Windows 頁面檔、Linux 交換檔、當機傾印或應用程式日誌。 為確保這些資料在靜態時也被加密,IaaS 應用程式可在 Azure IaaS 虛擬機上使用加密,該虛擬機預設使用平台管理金鑰,但可選擇性地設定為客戶管理金鑰以加強控制。
自訂靜態加密
IaaS 應用應盡可能利用任何 Azure 服務所提供的主機加密與靜態加密選項。 在某些情況下,例如不規則的加密需求或非 Azure 型記憶體,IaaS 應用程式的開發人員可能需要自行實作加密。 IaaS 解決方案的開發人員可以運用某些 Azure 元件,更妥善與 Azure 管理和客戶期望進行整合。 具體而言,開發人員應該使用 Azure 金鑰保存庫服務來提供安全的金鑰儲存體,以及為客戶提供與 Azure 平臺服務一致的金鑰管理選項。 此外,自訂的解決方案應該使用 Azure 受控服務識別,讓服務帳戶可存取加密金鑰。 如需關於 Azure Key Vault 和受控服務識別的開發人員資訊,請參閱其個別的 SDK。
Azure 資源提供者加密模型支援
每個 Microsoft Azure 服務都支援一或多個靜態加密模型。 不過,對於某些服務,可能不適用一或多個加密模型。 對於支持客戶管理金鑰案例的服務,他們可能只支援 Azure Key Vault 針對金鑰加密金鑰支援的金鑰類型子集。 此外,服務可能會在不同的排程中針對這些情境和金鑰類型提供支援。 此區段描述截至撰寫本文時每個主要 Azure 資料儲存服務的靜態加密支援。
Azure VM 磁碟加密
任何使用 Azure Infrastructure 即服務(IaaS)功能的客戶,都能透過主機加密加密其 IaaS 虛擬機磁碟。 如需詳細資訊,請參閱 主機加密 - VM 的端對端加密。
Azure 儲存體
所有 Azure 儲存服務(Blob 儲存、佇列儲存、表格儲存和 Azure 檔案)都支援靜態伺服器端加密,且部分服務還額外支援用戶端加密。
- 伺服器端(預設):所有 Azure 儲存服務預設使用平台管理金鑰啟用伺服器端加密。 此加密對應用程式透明,且不需設定。 如需詳細資訊,請參閱待用資料的 Azure 儲存體服務加密。 客戶可選擇在 Azure Key Vault 中使用客戶管理的金鑰以進行更多控制。 如需詳細資訊,請參閱使用 Azure Key Vault 中客戶管理的金鑰進行儲存體服務加密。
- 用戶端(可選):Azure Blobs、表格與佇列支援用戶端加密,方便客戶在資料到達 Azure 前加密。 當您使用用戶端加密時,客戶會將資料加密,並上傳資料做為加密的 blob。 金鑰管理是由客戶完成。 如需詳細資訊,請參閱 Microsoft Azure 儲存體的用戶端加密和 Azure Key Vault。
Azure SQL Database
Azure SQL Database 目前支援平台管理服務端及用戶端加密場景的靜態加密。
目前透過名為「透明資料加密」的 SQL 功能提供支援伺服器加密。 一旦 Azure SQL Database 客戶啟用了 TDE,就會為他們自動建立和管理金鑰。 你可以在資料庫和伺服器層級啟用靜態加密。 自 2017 年 6 月起,透明資料加密 (TDE) 依預設會在新建立的資料庫上啟用。 Azure SQL Database 在 Azure Key Vault 中支援 RSA 2048 位元的客戶自控金鑰。 如需詳細資訊,請參閱 Azure SQL Database 和資料倉儲的透明資料加密與攜帶您自己的金鑰支援。
透過 Always Encrypted 功能可支援 Azure SQL Database 資料的用戶端加密。 Always Encrypted 使用用戶端建立並儲存的金鑰。 客戶可以儲存 Windows 憑證存放區、Azure Key Vault 或本機硬體安全模組中的主要金鑰。 SQL 使用者可以使用 SQL Server Management Studio 來選擇其要用於為某資料行加密的金鑰。
推論
對於 Microsoft 而言,保護儲存在 Azure 服務內的客戶資料是至關重要的。 所有 Azure 託管服務都致力於提供靜態加密選項。 Azure 服務支援平台管理金鑰、客戶管理金鑰或用戶端加密。 Azure 服務廣泛強化靜止時加密的可用性,未來幾個月計畫推出預覽與正式上市的新選項。