適用於:Microsoft Fabric 中的 SQL Server
Azure SQL 資料庫
Azure SQL 受控執行個體
SQL Database
SQL Server 會使用階層式加密與金鑰管理基礎結構來加密資料。 在某一階層執行加密時,會使用憑證、非對稱金鑰、對稱金鑰的組合來加密該階層下的所有階層。 非對稱金鑰和對稱金鑰可以儲存在可延伸金鑰管理 (EKM) 模組內 SQL Server 的外部。
下圖顯示每一層的加密階層為該層以下的所有階層進行加密,並顯示最常見的加密組態。 階層開始的存取通常受到密碼保護。
請記住以下概念:
為了取得最佳效能,請使用對稱金鑰加密資料,而不要使用憑證或非對稱金鑰。
資料庫主要金鑰 (DMK) 受到服務主要金鑰 (SMK) 的保護。 服務主要金鑰是由 SQL Server 安裝程式所建立,而且是以 Windows 資料保護 API (DPAPI) 來加密。
堆疊其他層的其他加密階層是可行的。
Extensible Key Management (EKM) 模組會將對稱金鑰或非對稱金鑰保存在 SQL Server 的外部。
透明數據加密 (TDE) 必須使用稱為資料庫加密金鑰的對稱金鑰,該金鑰是由資料庫 DMK 保護的
master
憑證所保護,或是由儲存在 EKM 中的非對稱金鑰所保護。服務主要金鑰和所有資料庫主要金鑰都是對稱金鑰。
下圖以其他方式顯示相同的資訊。
此圖說明下列其他概念:
在此圖中,箭號表示常見的加密階層。
EKM 中的對稱和非對稱金鑰可以保護 SQL Server 內儲存之對稱和非對稱金鑰的存取。 與 EKM 相關的虛線表示 EKM 內的金鑰可以取代 SQL Server 內儲存的對稱和非對稱金鑰。
背景
Azure SQL 和 SQL Server 會使用 RSA 演算法進行非對稱式加密。 RSA 演演算法無法以其「純」形式使用,因為它缺乏語意安全性,而且由於其決定性本質而無法防範選擇的純文本攻擊或加密文字攻擊。 加密相同的訊息兩次會產生相同的加密文字。
訊息需要填充以達到安全性。 目前,資料是使用 PKCS #1 v1.5 填充方案的 RSA 加密。 PKCS#1 v1.5 填充的一個特定弱點是,它缺乏可檢測的冗餘性,內嵌的位元組是隨機的,並且沒有明確規範的值。 隨機位元組序列可能被「妥善填充」,但以極小的機率。 攻擊者需要大約 100 萬次中止的握手,才能透過暴力破解來復原明文。
較新版本的 PKCS#1 v1.5 描述名為最佳非對稱式加密填補的新填補類型(OAEP),該類型會使用哈希函式來新增顯著的內部備援,使得隨機字元串無法比對填補格式。 OAEP 引進 RSA 加密與填補檢查之間的一些哈希。 來自 OAEP 的哈希會大幅改變攻擊者了解他們所看到的能力。
從 SQL Server 2025 (17.x) 預覽版開始,引進 OAEP-256 支援 RSA 型加密。 切換至 OAEP 填補模式是由資料庫相容性層級所驅動。 此功能適用於 170 層級的資料庫相容性或更高層級的資料庫。
加密機制
SQL Server 提供下列加密機制:
Transact-SQL 函數
非對稱金鑰
對稱金鑰
憑證
透明資料加密
Transact-SQL 函數
使用 Transact-SQL 函式插入或更新個別專案時,可以加密這些專案。 如需詳細資訊,請參閱 ENCRYPTBYPASSPHRASE 和 DECRYPTBYPASSPHRASE。
憑證
公鑰憑證通常稱為憑證,是數位簽署的語句,會將公鑰的值系結至保存對應私鑰的人員、裝置或服務的身分識別。 憑證是由憑證授權單位 (CA) 所發行與簽署。 收到 CA 發行之憑證的實體稱為憑證的主體。 一般而言,憑證中包含下列資訊。
主體的公開金鑰。
主體的識別資訊,例如:姓名與電子郵件地址。
有效期間。 憑證在這段期間內都會視為有效。
超過這段期間憑證則無效;每個憑證都包含 [有效期限自]與 [有效期限至]日期。 這些日期會指定有效期間。 當憑證的有效期過期時,憑證的主體應該要求取得新憑證。
簽發者識別資訊。
簽發者的數位簽章。
此簽章可證明公開金鑰與主體識別資訊間之繫結關係的有效性。 (為資訊加上數位簽章的過程包括將相關資訊以及寄件者的某些機密資訊寫入稱為「簽章」的標記中。)
憑證的主要好處是可以減輕主機儲存個別主體密碼的負擔。 相反地,主機只會在憑證簽發者中建立信任,然後可能會簽署不限數量的憑證。
當主機 (例如:安全的 Web 伺服器) 指定某個簽發者做為信任的根授權單位時,該主機即隱含信任該簽發者用來建立其所發行之憑證的繫結關係的原則。 在實務上,主機會信任簽發者已驗證憑證主體的識別。 主機會將簽發者的自行簽署憑證 (其中包含簽發者的公開金鑰) 放到主機電腦信任的根憑證授權單位憑證存放區,指定簽發者做為信任的根授權單位。 除非中繼與從屬憑證授權單位具有有效信任根憑證授權單位路徑,否則不會被信任。
簽發者可以在憑證到期之前予以撤銷。 撤銷動作會取消公開金鑰與憑證主體識別資訊之間的繫結。 每個簽發者都會維護憑證吊銷清單,這些清單可在程序檢查任何指定憑證的有效性時使用。
由 SQL Server 建立的自行簽署憑證遵循 X.509 標準,且支援 X.509 v1 欄位。
非對稱金鑰
非對稱金鑰是由私密金鑰與對應的公開金鑰所組成。 每個金鑰都可以用來解密由另一個金鑰所加密的資料。 非對稱加密與解密非常耗資源,但能提供比對稱加密更好的安全性層級。 非對稱金鑰可用來加密對稱金鑰以儲存在資料庫中。
對稱金鑰
對稱金鑰是用來加密與解密的一個金鑰。 使用對稱金鑰來加密與解密非常快速,且適合用來針對資料庫中的機密資料進行日常加密。 為了保護對稱密鑰的金鑰數據,SQL Server 會以使用非對稱 RSA 加密的加密形式儲存金鑰數據。 在過去,此加密使用 PKCS#1 v1.5 填補模式;從資料庫相容性層級 170 開始,加密會使用 OAEP-256 填補模式。
透明資料加密
透明資料加密 (TDE) 是使用對稱金鑰的特殊加密案例。 TDE 會使用稱為資料庫加密金鑰的對稱金鑰加密整個資料庫。 資料庫加密金鑰是由其他金鑰或憑證保護,這些金鑰或憑證則是由 DMK 或儲存在 EKM 模組中的非對稱金鑰所保護。 如需詳細資訊,請參閱透明資料加密 (TDE)。
網狀架構 SQL 資料庫
在 Microsoft Fabric 的 SQL 資料庫中,目前不支援 Always Encrypted、EKM 和 TDE。 在 Microsoft Fabric 的 SQL 資料庫中,Microsoft資料庫使用者的 Entra ID 是唯一支援的驗證方法。 如需詳細資訊,請參閱 Microsoft網狀 架構和 功能比較中的 SQL 資料庫中的授權。