適用於:SQL Server
SQL Server 提供資料加密功能以及 可延伸金鑰管理 (EKM),並使用 Microsoft 密碼編譯 API (MSCAPI) 提供者進行加密和金鑰產生。 資料和金鑰加密的加密金鑰是在暫態金鑰容器中建立的,你必須先從提供者匯出這些金鑰,才能將它們儲存到資料庫中。 這種方式讓 SQL Server 能夠處理金鑰管理,包括加密金鑰階層結構與金鑰備份。
隨著對法規遵循需求與資料隱私的關注日益增加,組織正利用加密技術作為提供縱深防禦解決方案的一種方式。 這種方法通常不實用,因為它僅使用資料庫加密管理工具。 硬體廠商提供透過 硬體安全模組(HSM)來因應企業金鑰管理需求的產品。 HSM 裝置會將加密金鑰儲存在硬體或軟體模組上。 這種方法更安全,因為加密金鑰不與加密資料共存。
多家廠商提供用於金鑰管理與加密加速的 HSM。 HSM 裝置會使用硬體介面搭配伺服器處理序,當做應用程式與 HSM 之間的中繼。 廠商也會針對其模組實作 MSCAPI 提供程式,而這些模組可能是硬體或軟體。 MSCAPI 通常只提供 HSM 所提供功能的一部分。 廠商也能提供用於 HSM、金鑰設定及金鑰存取的管理軟體。
HSM 的實作因廠商而異,且與 SQL Server 搭配使用需要通用介面。 雖然 MSCAPI 提供此介面,但僅支援部分 HSM 功能。 此外,它也具有其他限制,例如無法以原生方式保存對稱金鑰,而且缺乏工作階段導向的支援。
SQL Server 可擴充金鑰管理讓第三方 EKM 與 HSM 廠商可在 SQL Server 中註冊其模組。 模組註冊後,SQL Server 使用者可以使用儲存在其上的加密金鑰。 SQL Server 接著可以存取這些模組所支援的進階加密功能,例如批量加密與解密,以及金鑰管理功能,如金鑰老化與金鑰輪換。
當你在 Azure 虛擬機中執行 SQL Server 時,SQL Server 可以使用儲存在 Azure Key Vault 中的金鑰。 欲了解更多資訊,請參閱使用 Azure Key Vault (SQL Server) 的可擴展金鑰管理。
EKM 設定
可擴充金鑰管理並非每個版本的 SQL Server 都提供。 關於 SQL Server 各版本所支援的功能清單,請參見 SQL Server 2025 的版本與支援功能。
根據預設,可延伸金鑰管理處於關閉狀態。 要啟用此功能,請使用 sp_configure (Transact-SQL) 儲存程序,選項與值如下:
sp_configure 'show advanced', 1;
GO
RECONFIGURE;
GO
sp_configure 'EKM provider enabled', 1;
GO
RECONFIGURE;
GO
注意
如果你在不支援 EKM 的 SQL Server 版本上為此選項使用 sp_configure,會收到錯誤訊息。
要停用此功能,請將值設為 0。 如需如何設定伺服器選項的詳細資訊,請參閱 sp_configure (Transact-SQL)。
如何使用 EKM
SQL Server 可擴充金鑰管理允許您將保護資料庫檔案的加密金鑰儲存在主機外部裝置中,如智慧卡、USB 裝置或 EKM/HSM 模組。 它同時保護資料不受資料庫管理員存取,唯獨 sysadmin 固定伺服器角色的成員除外。 你可以使用只有資料庫使用者能在外部 EKM/HSM 模組存取的加密金鑰來加密資料。
可延伸金鑰管理也會提供下列優點:
- 可啟用職責分離的額外授權檢查
- 硬體加密與解密的效能提升。
- 外部加密金鑰產生。
- 外部加密金鑰儲存,物理上將資料與金鑰分開。
- 加密金鑰擷取。
- 外部加密金鑰保留,能實現加密金鑰輪換。
- 加密金鑰復原更容易。
- 可管理的加密金鑰分發。
- 安全的加密金鑰處置。
您可以將可延伸金鑰管理用於使用者名稱和密碼組合,或是 EKM 驅動程式所定義的其他方法。
警告
若要進行疑難排解,Microsoft 技術支援部門可能會需要 EKM 提供者的加密金鑰。 此時,您可能也需要存取廠商工具或處理序來協助解決問題。
使用 EKM 裝置進行認證
EKM 模組可以支援多種驗證類型。 每個提供者只向 SQL Server 暴露一種認證方式。 也就是說,如果模組同時支援基本認證和其他認證類型,它會暴露其中一種,但不會同時暴露兩種。
EKM 裝置專用的基本認證,使用使用者名稱與密碼
對於支援使用使用者名稱與密碼配對進行基本驗證的 EKM 模組,SQL Server 透過認證資訊提供透明驗證。 如需認證的詳細資訊,請參閱認證 (資料庫引擎)。
你可以為 EKM 提供者建立憑證,並將其映射到登入帳號,無論是 Windows 或 SQL Server 帳號,以便依每個登入帳號存取 EKM 模組。 憑證的 識別 欄位包含使用者名稱,密碼 欄位則包含用於連線至 EKM 模組的密碼。
若 EKM 提供者沒有登入映射的憑證,SQL Server 會使用映射到服務帳號的憑證。
一個登入帳號可以對應多個憑證,只要每個憑證都用於不同的 EKM 提供者。 每個登入針對每個 EKM 提供者只能有一個對應的認證。 你可以將同一個憑證對應到其他登入帳號。
其他類型的 EKM 裝置專屬認證
對於使用 Windows 或使用者名稱與密碼組合以外驗證的 EKM 模組,必須獨立於 SQL Server 進行驗證。
EKM 裝置的加密與解密
請使用以下函式與特性,透過對稱與非對稱金鑰進行資料加密與解密:
| 函數或功能 | 參考 |
|---|---|
| 對稱金鑰加密 | CREATE SYMMETRIC KEY (Transact-SQL) |
| 非對稱金鑰加密 | CREATE ASYMMETRIC KEY (Transact-SQL) |
EncryptByKey(key_guid, 'cleartext', ...) |
ENCRYPTBYKEY (Transact-SQL) |
DecryptByKey(ciphertext, ...) |
DECRYPTBYKEY (Transact-SQL) |
EncryptByAsmKey(key_guid, 'cleartext') |
ENCRYPTBYASYMKEY(Transact-SQL) |
DecryptByAsmKey(ciphertext) |
DECRYPTBYASYMKEY(Transact-SQL) |
由 EKM 金鑰進行的資料庫金鑰加密
SQL Server 可以使用 EKM 金鑰來加密資料庫中的其他金鑰。 您可以在 EKM 裝置上建立及使用對稱和非對稱金鑰。 您可以使用 EKM 非對稱金鑰來加密原生 (非 EKM) 對稱金鑰。
以下範例建立資料庫對稱金鑰,並利用 EKM 模組上的金鑰加密。
CREATE SYMMETRIC KEY Key1
WITH ALGORITHM = AES_256
ENCRYPTION BY EKM_AKey1;
GO
-- Open the database key.
OPEN SYMMETRIC KEY Key1
DECRYPTION BY EKM_AKey1;
欲了解更多關於 SQL Server 中資料庫與伺服器金鑰的資訊,請參閱 SQL Server 與資料庫加密金鑰 (資料庫引擎)。
注意
你不能用另一把 EKM 金鑰加密一把 EKM 金鑰。
SQL Server 不支援由 EKM 提供者產生的非對稱金鑰簽署模組。
相關內容
- 啟用 EKM 提供者的伺服器組態選項
- 使用 EKM 在 SQL Server 上啟用 TDE
- Extensible Key Management using Azure Key Vault (SQL Server)
- SQL Server 與資料庫加密金鑰(資料庫引擎)
- CREATE CRYPTOGRAPHIC PROVIDER (Transact-SQL)
- DROP CRYPTOGRAPHIC PROVIDER (Transact-SQL)
- ALTER CRYPTOGRAPHIC PROVIDER (Transact-SQL)
- sys.cryptographic_providers(Transact-SQL)
- sys.dm_cryptographic_provider_sessions(Transact-SQL)
- sys.dm_cryptographic_provider_properties(Transact-SQL)
- sys.dm_cryptographic_provider_algorithms(Transact-SQL)
- sys.dm_cryptographic_provider_keys(Transact-SQL)
- sys.credentials (Transact-SQL)
- CREATE CREDENTIAL (Transact-SQL)
- ALTER LOGIN (Transact-SQL)
- CREATE ASYMMETRIC KEY (Transact-SQL)
- ALTER ASYMMETRIC KEY (Transact-SQL)
- DROP ASYMMETRIC KEY (Transact-SQL)
- CREATE SYMMETRIC KEY (Transact-SQL)
- ALTER SYMMETRIC KEY (Transact-SQL)
- DROP SYMMETRIC KEY (Transact-SQL)
- OPEN SYMMETRIC KEY (Transact-SQL)
- 備份與還原 SQL Server Reporting Services (SSRS) 加密金鑰
- 刪除並重建加密金鑰(設定管理員)
- 加入和移除向外延展部署的加密金鑰
- 備份服務主鑰匙
- 還原服務主金鑰
- 建立資料庫主金鑰
- 備份資料庫主金鑰
- 還原資料庫主金鑰
- 在兩台伺服器上建立相同的對稱金鑰