Share via


可延伸金鑰管理 (EKM)

SQL Server 會針對加密和金鑰產生使用 Microsoft Cryptographic API (MSCAPI) 提供者,藉以提供加密功能以及「可延伸金鑰管理」(Extensible Key Management,EKM)。 用於資料和金鑰加密的加密金鑰會建立於暫時性金鑰容器中,而且您必須先從提供者中匯出這些金鑰,然後再將它們儲存於資料庫中。 這個方法會讓 SQL Server 處理金鑰管理 (包括加密金鑰階層和金鑰備份)。

隨著法規相符的需求和資料隱私權的考量逐漸增加,許多組織便運用加密技術來提供「深度防護」解決方案。 這種方法通常不實用,因為它僅使用資料庫加密管理工具。 此外,某些硬體廠商會提供一些使用「硬體安全性模組」(Hardware Security Modules,HSM) 來處理企業金鑰管理的產品。 HSM 裝置會將加密金鑰儲存在硬體或軟體模組上。 這是較安全的解決方案,因為加密金鑰不會與加密資料一起存放。

目前許多廠商會針對金鑰管理和加密速度提供 HSM。 HSM 裝置會使用硬體介面搭配伺服器處理序,當做應用程式與 HSM 之間的中繼。 此外,廠商也會在模組 (可能是硬體或軟體) 上實作 MSCAPI 提供者。 MSCAPI 通常只會提供 HSM 所提供的部分功能。 而且,廠商也可以針對 HSM、金鑰組態和金鑰存取提供管理軟體。

HSM 實作方式會因廠商而不同,而且若要使用它們搭配 SQL Server,就需要通用介面。 雖然 MSCAPI 會提供此介面,但是它僅支援部分 HSM 功能。 此外,它也具有其他限制,例如無法以原生方式保存對稱金鑰,而且缺乏工作階段導向的支援。

SQL Server 可延伸金鑰管理可讓 EKM/HSM 協力廠商在 SQL Server 中註冊其模組。 註冊之後,SQL Server 使用者就可以使用儲存在 EKM 模組上的加密金鑰。 這可讓 SQL Server 存取這些模組支援的進階加密功能 (例如大量加密和解密) 和金鑰管理函數 (例如金鑰過期和金鑰循環)。

EKM 組態

並非每一個 Microsoft SQL Server 版本都可使用可延伸金鑰管理。 如需 SQL Server 版本所支援功能的清單,請參閱<SQL Server 2012 版本支援的功能>。

根據預設,可延伸金鑰管理處於關閉狀態。 若要啟用這項功能,請使用具有下列選項和值的 sp_configure 命令,如下列範例所示:

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 裝置特有基本驗證

對於這些使用 username/password 配對來支援基本驗證的 EKM 模組而言,SQL Server 會使用認證來提供透明化驗證。如需有關認證的詳細資訊,請參閱<認證 (Database Engine)>。

您可以針對 EKM 提供者建立認證,並將它對應至登入 (Windows 和 SQL Server 帳戶),以便按照登入存取 EKM 模組。認證的 Identify 欄位包含使用者名稱,而 secret 欄位則包含用來連接至 EKM 模組的密碼。

如果 EKM 提供者沒有任何登入對應認證,系統就會使用對應至 SQL Server 服務帳戶的認證。

一個登入可以具有多個對應認證,只要這些認證用於不同的 EKM 提供者即可。 但是,每個登入的每個 EKM 提供者必須只有一個對應認證。 相同的認證可對應至其他登入。

其他 EKM 裝置特有的驗證類型

對於具有 Windows 或 user/password 組合以外驗證的 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 database key
OPEN SYMMETRIC KEY Key1
DECRYPTION BY EKM_AKey1

如需有關 SQL Server 中資料庫和伺服器金鑰的詳細資訊,請參閱<SQL Server 和資料庫加密金鑰 (Database Engine)>。

[!附註]

您無法使用某個 EKM 金鑰來加密另一個 EKM 金鑰。

SQL Server 不支援使用 EKM 提供者產生的非對稱金鑰來簽署模組。

相關工作

EKM provider enabled 伺服器組態選項

使用 EKM 啟用 TDE

請參閱

參考

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)

概念

備份與還原 Reporting Services 加密金鑰 (SSRS 原生模式)

刪除和重新建立加密金鑰

加入和移除向外延展部署的加密金鑰

備份服務主要金鑰

還原服務主要金鑰

建立資料庫主要金鑰

備份資料庫主要金鑰

還原資料庫主要金鑰

在兩部伺服器上建立相同的對稱金鑰