Sql-Server

從外部提供者創建對稱密鑰

  • March 19, 2018

了解安全對象層次結構後,我們可以看到,為了創建Symmetric Key和加密數據,我們需要創建:

  1. Database Master Key受密碼保護
  2. Certificate這是受保護的Database Master key
  3. 受保護的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中的步驟包括以下內容:

  1. 從Microsoft 下載中心安裝用於 Azure Key Vault 的 SQL Server 連接器。
  2. 執行以下程式碼以啟用 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;  
  1. 註冊 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 
  1. 為 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;  
  1. 打開密鑰庫:
CREATE ASYMMETRIC KEY CONTOSO_KEY   
FROM PROVIDER [AzureKeyVault_EKM_Prov]  
WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0',  
CREATION_DISPOSITION = OPEN_EXISTING;  

然後,您可以按照列出的步驟啟用 TDE,以將 SQL Server 與 SQL 加密一起使用。

引用自:https://dba.stackexchange.com/questions/200408