Sql-Server
從外部提供者創建對稱密鑰
了解安全對象層次結構後,我們可以看到,為了創建
Symmetric Key
和加密數據,我們需要創建:
Database Master Key
受密碼保護Certificate
這是受保護的Database Master key
- 受保護的
Symmetric Key
自身Certificate
在
Always Encrypted
中,我們可以使用EKM
模組來簡化這個層次結構。例如,我們可以將證書儲存在 中Windows Certification Store
,這些證書正在保護我們的加密主密鑰。我想知道,如果我想使用非
Always Encrypted
內置加密功能,我可以使用EKM
模組來創建和管理我的對稱密鑰(如圖所示)。在CREATE SYMMETRIC KEY文件中,我們有provider
選項,但沒有關於可能的提供者和範例的足夠資訊。我對
Certificate
在外部儲存中儲存保護對稱密鑰或對稱密鑰很感興趣,因為通過這種方式,數據與密鑰分離,並且在數據庫中我們只儲存對密鑰的引用(如始終加密)。Windows 認證商店對我來說是最好的選擇,但我猜 Azure Key Vault 或其他東西也可以。
tl;dr - 用於
CREATE CRYPTOGRAPHIC PROVIDER
通過供應商提供的為此目的設計的 .DLL 文件在 SQL Server 內部創建與您的 EKM/HSM 硬體/軟體的連接。可以使用 Azure Key Vault 保護本地數據。使用 Azure Key Vault 啟用您的 Azure 帳戶需要執行許多步驟,這些步驟在使用 Azure Key Vault 進行可擴展密鑰管理的設置步驟中有詳細說明。
SQL Server中的步驟包括以下內容:
- 從Microsoft 下載中心安裝用於 Azure Key Vault 的 SQL Server 連接器。
- 執行以下程式碼以啟用 EKM 提供程序:
-- Enable advanced options. USE master; GO sp_configure 'show advanced options', 1; GO RECONFIGURE; GO -- Enable EKM provider sp_configure 'EKM provider enabled', 1; GO RECONFIGURE;
- 註冊 EKM 模組:
CREATE CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov FROM FILE = 'C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault\Microsoft.AzureKeyVaultService.EKM.dll'; GO
- 為 SQL Server 設置憑據以連接到 Azure:
USE master; CREATE CREDENTIAL sysadmin_ekm_cred WITH IDENTITY = 'ContosoDevKeyVault', -- for public Azure -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Azure China -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplace-With-AAD-Client-Secret' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov; -- Add the credential to the SQL Server administrator's domain login ALTER LOGIN [<domain>\<login>] ADD CREDENTIAL sysadmin_ekm_cred;
- 打開密鑰庫:
CREATE ASYMMETRIC KEY CONTOSO_KEY FROM PROVIDER [AzureKeyVault_EKM_Prov] WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0', CREATION_DISPOSITION = OPEN_EXISTING;
然後,您可以按照列出的步驟啟用 TDE,以將 SQL Server 與 SQL 加密一起使用。