共用方式為


數據加密的建議

適用於架構完善的架構安全性檢查清單建議:

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 資料庫 支援整合 TLS 交握的表格式資料流 (TDS) 通訊協定。

    加密套件是一組演算法,用來標準化用戶端與伺服器之間的交握。 加密可確保交換已加密並經過驗證。 加密的選擇取決於伺服器所使用的 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 資料庫 提供透明數據加密功能,用來加密頁面層級的資料庫檔案。

傳輸中的數據保護

透過 金鑰保存庫,您可以布建、管理及部署公用和私人安全套接字層 (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。

範例

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

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

安全性檢查清單

請參閱一組完整的建議。

安全性檢查清單