數據加密的建議

適用於 Well-Architected Framework 安全性檢查清單建議:

SE:07 使用現代化業界標準方法來加密數據,以保護機密性和完整性。 對齊加密範圍與數據分類;優先處理原生平臺加密方法。

如果您的數據未受到保護,可能會遭到惡意修改,這會導致完整性和機密性遺失。

本指南說明加密和保護數據的建議。 加密是使用密碼編譯演算法 讓數據無法讀取,並使用金鑰鎖定數據的程式。 在加密狀態中,無法解密數據。 它只能使用與加密金鑰配對的金鑰來解密。

定義

字詞 定義
憑證 保存公鑰以進行加密或解密的數位檔案。
加密套件 一組演算法,用來加密和解密資訊,以保護透過傳輸層安全性 (TLS) 的網路連線。
機密運算 機密運算是藉由在硬體型、證明的受信任執行環境中執行計算,來保護使用中的數據。
解密 使用秘密程式代碼解除鎖定加密數據的程式。
雙重加密 使用兩個或多個獨立加密層來加密數據的程式。
加密 使用秘密程式代碼將數據設為無法讀取和鎖定的程式。
雜湊 將數據轉換成文字或數位的程式,其意圖是隱藏資訊。
索引鍵 用來鎖定或解除鎖定加密數據的秘密程序代碼。
簽章 數據的驗證加密戳記。
簽署 使用簽章驗證數據真實性的程式。
X.509 定義公鑰憑證格式的標準。

主要設計策略

組織規定或法規需求可能會強制執行加密機制。 例如,數據必須只保留在選取的區域,而且數據複本會保留在該區域中。

這些需求通常是基本最低需求。 致力於提升保護層級。 您必須負責 防止機密性外泄和竄改敏感數據,無論是外部用戶數據或員工數據。

加密案例

加密機制可能需要以三個階段保護資料:

  • 待用數據 是儲存物件中保留的所有資訊。

    保護待用數據的範例是使用 BitLocker 來加密儲存至磁碟上記憶體的數據。

  • 傳輸中的數據 是在元件、位置或程式之間傳輸的資訊。

    保護傳輸中數據的範例是使用 TLS 加密數據,讓透過公用和專用網移動的封包是安全的。

  • 使用中的數據 是在記憶體中主動處理的數據。

    保護使用中數據的範例是使用機密運算加密,以在處理數據時保護數據。

上述選擇不互斥。 它們通常會用於整個解決方案的內容中。 一個階段可能會作為補償控件。 例如,您可能需要隔離數據,以避免從記憶體讀取數據時遭到竄改。

加密範圍

依數據的用途和敏感度層級來分類數據 ,以判斷您需要加密的數據。 對於應加密的數據,請判斷所需的保護層級。 您需要傳輸中所有資料的端對端 TLS 加密嗎? 針對待用數據,哪些 Azure 功能可以符合您的需求? 您需要在每個儲存點雙重加密數據嗎? 如何實作信息保護?

請務必平衡加密決策,因為有顯著的取捨。

取捨:每個加密躍點都可能會造成效能延遲。 作業複雜度可能會與疑難解答和可檢視性有關。 復原可能是一項挑戰。

界定這些取捨的範圍。 預測分類為敏感性之數據的取捨。 需求甚至可能會判斷取捨,例如,如果特定類型的數據必須加密並儲存在特定閾值內。

在某些情況下,加密因技術限制、投資或其他原因而無法進行。 請確定這些原因清楚、有效且已記載。

強式加密機制不應該是您唯一的防禦形式。 實作數據竊取防護程序、適當的測試方法,以及異常偵測。

如需分類的相關信息,請參閱 數據分類的建議

原生加密機制

大部分的 Azure 服務都提供基本層級的加密。 探索平臺提供的加密選項

強烈建議您不要停用平臺功能來開發自己的功能。 平臺加密功能使用新式產業標準、由專家開發,並經過高度測試。

在罕見的情況下,如果您需要取代平臺提供的加密,請評估優缺點,並使用業界標準的密碼編譯演算法。

開發人員應該使用操作系統內建的密碼編譯 API,而不是非平臺密碼編譯連結庫。 針對 .NET,請遵循 .NET 密碼編譯模型

加密金鑰

根據預設,Azure 服務會使用 Microsoft 管理的加密密鑰來加密和解密數據。 Azure 負責金鑰管理。

您可以選擇 客戶管理的金鑰。 Azure 仍會使用您的密鑰,但您負責金鑰作業。 當您想要時,您可以彈性地變更金鑰。 解密是使用客戶自控密鑰的吸引人的原因。

您應該 將強式加密與強式解密配對。 從安全性觀點來看,保護解密密鑰很重要,因為輪替是控制密鑰遭入侵時之彈射半徑的常見方式。 監視存取,以偵測異常存取和活動。

將金鑰與加密資料分開儲存。 這種分離有助於確保某個實體的入侵不會影響另一個實體。 如果您使用客戶管理的金鑰,請將金鑰儲存在金鑰存放區中。 將高度敏感數據儲存在受控硬體安全性模組中, (HSM) 。

這兩個存放區都受到身分識別型存取的保護。 此功能可讓您拒絕存取,甚至是平臺。

標準加密演算法

使用妥善建立並遵循業界標準的密碼編譯演算法 ,而不是建立自定義實作。

演算法的業界標準需要加密配置具有特定層級的 Entropy。 Entropy 來源會在加密期間插入。 Entropy 讓演算法變得強大,並讓攻擊者難以擷取資訊。 判斷 Entropy 的可容忍臨界值。 加密程式需要大量處理器。 尋找正確的平衡,以便您將花費在加密上的計算週期最大化,相對於計算要求的整體效能目標。

取捨:如果您選擇高度複雜或插入超過合理數量的 Entropy 的演算法,它會降低系統的效能。

哈希和總和檢查碼

一般而言,哈希是錯誤偵測技術。 您也可以針對安全性使用哈希,因為它偵測到數據 變更,可能是因為竄改所造成。 哈希函式是以密碼編譯為基礎,但不會使用密鑰。 哈希函式會使用演算法來產生總和檢查碼。 總和檢查碼可以比較數據,以確認其完整性。

應用程式應該使用SHA-2系列哈希演算法,例如SHA-256、SHA-384或SHA-512。

待用資料

根據內部和外部合規性需求分類及保護資訊儲存物件。 請參閱下列建議:

  • 使用提供給記憶體服務、資料存放區和其他用來保存數據的原生選項來加密數據。 即使您只暫時將這些資料儲存在這些記憶體服務或資源中,也請加密此數據。 同時加密備份數據,以維持與原始來源相同的安全性層級。

    如需詳細資訊,請參閱 待用數據保護

  • 使用雙重加密。 如果您的商務需求呼叫更高的保證,您可以執行雙重加密。 使用獨立的客戶自控密鑰,加密兩個或多個層中的數據。 將數據儲存在受控 HSM 中。 若要讀取數據,您需要存取這兩個金鑰。 如果一個金鑰遭到入侵,另一個金鑰仍會保護數據。 這項技術旨在增加攻擊者的成本。

    您也可以使用平臺提供的加密來雙重加密數據。 平臺提供的加密可保護基礎結構層級的儲存媒體,並在數據層級套用另一層加密。 例如,訊息代理程式服務透過 Microsoft 管理的金鑰提供平臺加密,可保護訊息管道。 此方法可讓您使用客戶管理的金鑰來加密訊息。

    使用多個加密金鑰。 使用金鑰加密金鑰 (KEK) 來保護您的資料加密金鑰 (DEK) 。

  • 使用身分識別型訪問控制來控制數據的存取。 新增網路防火牆以提供額外的安全性層級,以封鎖非預期且不安全的存取。

    如需詳細資訊,請參閱 身分識別和存取管理的建議

  • 將金鑰儲存在 具有最低許可權訪問控制的受控 HSM 中。 將數據與數據的索引鍵分開。

  • 儲存有限的數據量 ,以便您只加密必要的專案。 您的數據不應超過加密週期的存留時間。 不再需要數據時,請刪除加密的數據,而不需花費解密週期。

傳輸中資料

  • 使用安全通訊協議進行客戶端-伺服器通訊。 傳輸通訊協定具有內建的安全性層。 TLS 是用於在用戶端和伺服器端點之間交換數據的業界標準。

    請勿使用低於 TLS 1.2 的版本。 移轉解決方案以支援 TLS 1.2,並預設使用此版本。 所有 Azure 服務在公用 HTTPS 端點上皆支援 TLS 1.2。

    風險:不支援回溯相容性時,不支援 TLS 1.2 的舊版用戶端可能無法正常運作。

    不論傳輸的數據敏感度為何,所有網站通訊都應該使用 HTTPS。 在用戶端-伺服器交握期間,交涉使用 HTTP Strict Transport Security (HSTS) 原則,以便維護 HTTPS 傳輸,且不會在通訊期間卸除至 HTTP。 此原則可防範中間人攻擊。

    HSTS 的支援適用於較新版本。 您可能會中斷舊版瀏覽器的回溯相容性。

    注意

    您也可以加密通訊協定,以建立資料庫的安全連線。 例如,Azure SQL 資料庫支援表格式數據流 (TDS) 通訊協定,其會整合 TLS 交握。

    加密套件是一組演算法,用來標準化用戶端與伺服器之間的交握。 加密可確保交換已加密並經過驗證。 密碼的選擇取決於伺服器使用的 TLS 版本。 對於某些服務,例如 Azure 應用程式閘道,您可以選擇 TLS 的版本和您想要支援的加密套件。 實作使用進階加密標準 (AES) 作為對稱區塊加密的加密套件。 可接受 AES-128、AES-192 和 AES-256。

  • 管理憑證的生命週期。 憑證具有預先決定的生命週期。 請勿保留長時間存留的憑證,也不會讓他們自行到期。 實作以可接受的頻率更新憑證的程式。 您可以針對短間隔發生的更新自動化程式。

    注意

    如果您使用 憑證釘選,請熟悉靈活度和憑證管理限制。

    您的工作流程不應允許在環境中接受無效的憑證。 憑證釘選程式應該驗證憑證,並強制執行該驗證檢查。 您應該監視存取記錄,以確保簽署密鑰搭配適當的許可權使用。

    如果金鑰遭到入侵,則必須立即撤銷憑證。 證書頒發機構單位 (CA) 提供憑證撤銷清單 (CRL) ,指出在到期前失效的憑證。 您的驗證檢查應該考慮CRL。

    取捨:認證驗證程式可能很麻煩,而且通常涉及 CA。 決定您必須使用憑證加密的數據。 針對其他類型的通訊,判斷您是否可以實作當地語系化補償控件來新增安全性。

    當地語系化控件的其中一種方式是使用相互 TLS (mTLS) 。 它會在客戶端與伺服器之間建立雙向信任。 客戶端和伺服器都有自己的憑證,而且每個憑證都會使用其公開或私鑰組進行驗證。 使用 mTLS 時,您不依賴外部 CA。 取捨是管理兩個憑證的複雜度。

  • 視需要雙重加密 VPN 連線。 執行雙重加密,以將防禦深度新增至 VPN 通道。 當您使用兩部 VPN 伺服器時,可以在伺服器之間隱藏 IP 位址,同時隱藏伺服器與目的地之間的 IP 位址。 在此程式中,傳輸中的數據也會加密兩次。

    取捨:相較於單一 VPN 設定,雙 VPN 設定通常比較昂貴,而且連線通常較慢。

  • 實作記錄和監視程式。 追蹤存取登入資源,以儲存用戶端的相關信息,例如其來源IP、埠和通訊協定。 使用此資訊來偵測異常。

數據使用中

針對高安全性工作負載,建議使用分割、隔離和最低許可權的設計模式。

在使用中保護的內容中,硬體界限在實體CPU和記憶體中使用時可能需要加密數據,以確保VM、主機管理程式碼和其他元件隔離。

數據加密和解密只能在這些隔離界限內完成。

更嚴格的安全性或法規需求也可能需要硬體型的密碼編譯簽署辨識項,指出數據在使用中時正在加密,這可以透過 證明取得。

使用新式安全性和隱私權措施是法規工作負載的常見需求。 機密運算 是支援需求的這類技術之一。 Azure 中的特定服務可讓您在計算資料時保護數據。 如需詳細資訊,請參閱 Azure 記憶體:Azure 機密計算

請考慮您保護數據的端端生命週期 通常會在其存留期內移動多個系統、請小心確保解決方案的所有元件部分都能提供所需的保護層級,或確保您的數據管理策略提供適當的分割或遮罩。

Azure 設施

下列各節說明可用來加密數據的 Azure 服務和功能。

客戶自控金鑰

將客戶管理的金鑰儲存在 Azure 金鑰保存庫 或受 金鑰保存庫 管理的 HSM 中。

金鑰保存庫 會將金鑰視為任何其他秘密。 Azure 角色型訪問控制 (RBAC) 透過許可權模型存取密鑰。 此身分識別型控件必須與 金鑰保存庫 存取原則搭配使用。

如需詳細資訊,請參閱使用 RBAC 提供 金鑰保存庫 金鑰、憑證和秘密的存取權。

Azure 金鑰保存庫 Premium 和 Managed-HSM 藉由包含機密運算功能和安全密鑰發行來進一步增強供應專案,其支持原則,以確保密鑰只會發行至可密碼編譯證明它在信任的執行環境中執行, (TEE) 。

待用數據保護
  • 當資料保存到記憶體帳戶時,Azure 記憶體會自動使用區塊加密來加密您的數據。 針對 Azure Blob 儲存體 和 Azure 佇列記憶體,記憶體也會透過連結庫提供用戶端加密。

    如需詳細資訊,請參閱 記憶體加密

  • Azure 虛擬機器 具有作為虛擬記憶體磁碟區的磁碟檔案。 您可以加密虛擬磁碟檔案,以便無法存取內容。

    您可以從入口網站匯出受控磁碟。 主機的伺服器端加密和加密只能在匯出數據之後保護數據。 不過,您應該在匯出程式期間保護數據。 您可以使用 Azure 磁碟加密 來保護及保護匯出程式期間的數據。

    Azure 提供數個受控磁碟的加密選項。 如需詳細資訊,請參閱受控磁碟加密選項概觀

  • SQL Database 提供透明數據加密功能,用來加密頁面層級的資料庫檔案。

傳輸中的數據保護

透過 金鑰保存庫,您可以布建、管理及部署公用和私人安全套接字層 (SSL) 或 TLS 憑證。 您可以使用憑證搭配 Azure 和內部連線的資源。

使用中的數據保護

Azure 中的特定服務 可讓您在使用 Azure 機密運算的主機實體 CPU 和記憶體內計算數據時保護數據。

  • 機密 虛擬機器 提供在 TEE 內執行的整個虛擬機,虛擬機的記憶體和執行 CPU 內容會加密,提供簡單的「& 隨即轉移」方法,以將具有高安全性需求的未修改應用程式移至 Azure。 每個 Azure 機密 VM 都有自己的專用虛擬 信任平台模組 (TPM) 。 當操作系統元件安全地開機時,會執行加密。

  • 機密 AKS 背景工作角色節點、AKS 上的機密容器或 Azure 容器執行個體 (ACI 上的機密容器) 可讓您在 TEE 內執行和管理未修改的容器,讓客戶受益於使用中的保護。 容器供應專案是以機密 虛擬機器 為基礎,並受益於相同的保護。

  • 應用程式記憶體保護區 解決方案是特別建置的應用程式,利用支援 Intel Software Guard Extensions (SGX) 的虛擬機 SKU 所提供的特定 CPU 擴充功能,這些應用程式提供非常細微 的受信任計算基底 (TCB) ,但需要特別編碼應用程式以利用功能。

  • 安全密鑰發行 可以 與這些技術結合 ,以確保加密的數據只會在 TEE 內解密,以證明它透過稱為 證明的程式提供所需的保護層級。

祕密管理

您可以使用 金鑰保存庫 安全地儲存和控制令牌、密碼、憑證、API 金鑰和其他秘密的存取。 使用 金鑰保存庫 作為金鑰和憑證管理解決方案。 進階 SKU 支援 HSM。

範例

下列範例顯示可用來管理密鑰、憑證和秘密的加密解決方案。

此圖顯示用於管理金鑰、憑證和秘密的加密解決方案。

安全性檢查清單

請參閱一組完整的建議。

安全性檢查清單