如何使用 EKM 启用 TDE
透明数据加密 (TDE) 对整个数据库的存储进行加密。TDE 使用称为数据库加密密钥的对称密钥加密数据。本主题介绍如何使用存储在可扩展密钥管理 (EKM) 模块中的非对称密钥来保护数据库加密密钥。
还可以使用受 master 数据库的数据库主密钥保护的证书来保护数据库加密密钥。有关使用数据库主密钥保护数据库加密密钥的详细信息,请参阅了解透明数据加密 (TDE)。
使用 EKM 启用 TDE 的基本步骤如下所示:
安装 EKM 提供程序。此步骤的过程会随 EKM 提供程序的要求不同而有所不同,但可能包括在本地证书存储区中安装 EKM 提供程序的证书、将 EKM DLL 文件复制到 SQL Server 计算机中。
将 SQL Server 配置为使用 EKM 提供程序。
如果 EKM 模块使用的是基本身份验证,请创建一个凭据并将该凭据添加到用户。
创建一个受 EKM 提供程序保护的非对称密钥。
如果 EKM 模块使用的是基本身份验证,请创建一个受数据库引擎所使用的非对称密钥保护的凭据。
创建一个对称数据库加密密钥。
使用该数据库加密密钥启用 TDE。
若要完成本主题的步骤,请在 SQL Server Management Studio 中使用查询编辑器窗口连接至 SQL Server。
安装和配置加密提供程序
将 EKM 提供程序提供的文件复制到 SQL Server 计算机上的相应位置。在本示例中,我们使用 C:\EKM 文件夹。
根据 EKM 提供程序的要求,将证书安装到计算机上。
注意 SQL Server 不提供 EKM 提供程序。每个 EKM 提供程序可以有不同的安装、配置和授权用户的过程。请查阅 EKM 提供程序文档,完成此步骤。
将 SQL Server 配置为使用 EKM 提供程序并在 SQL Server 中创建该提供程序
启用 EKM 提供程序是一个高级选项。首先执行下面的语句以显示高级选项。
sp_configure 'show advanced options', 1 ; GO RECONFIGURE ; GO
执行下面的语句以启用 EKM 提供程序:
sp_configure 'EKM provider enabled', 1 ; GO RECONFIGURE ; GO
执行下面的语句以根据 EKM 提供程序创建调用 EKM_Prov 所选择的加密提供程序:
CREATE CRYPTOGRAPHIC PROVIDER EKM_Prov FROM FILE = 'C:\EKM_Files\KeyProvFile.dll' ; GO
注意 EKM DLL 必须进行数字签名。
创建用于加密数据库的凭据
必须是高特权用户(如系统管理员)才能创建数据库加密密钥以及加密数据库。该用户必须能够通过 EKM 模块进行身份验证。下面的过程创建一个使用 EKM 标识的凭据,并将该凭据添加到高特权用户。下面的过程假定 EKM 模块可以对名为“Identity1”的用户进行身份验证。应提供密码代替此处显示的星号。当 EKM 提供程序使用基本身份验证时需要执行这些步骤,但当 EKM 模块使用其他身份验证时可以跳过本部分中的步骤。
创建凭据并将其添加到高特权用户的登录名
执行下面的语句,以创建将由系统管理员使用的凭据:
CREATE CREDENTIAL sa_ekm_tde_cred WITH IDENTITY = 'Identity1', SECRET = '*************' FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ; GO
执行下面的语句,以便将系统管理员凭据添加到高特权用户,如格式为 [DOMAIN\login] 的您自己的域登录名:
ALTER LOGIN [DOMAIN\login] ADD CREDENTIAL sa_ekm_tde_cred ; GO
创建非对称密钥
创建一个非对称密钥以保护对数据库加密密钥的访问。SQL Server 使用此密钥访问数据库加密密钥。
创建数据库加密密钥
执行下面的语句,创建一个存储在 EKM 提供程序内的非对称密钥。在本示例中,SQL Server 将按名称 ekm_login_key 标识该密钥。在 EKM 设备内,该密钥将具有名称 SQL_Server_Key。
注意 您的 EKM 提供程序所需的选项和参数可能与此语句有所不同。有关详细信息,请参阅 EKM 提供程序。
USE master ; GO CREATE ASYMMETRIC KEY ekm_login_key FROM PROVIDER [EKM_Prov] WITH ALGORITHM = RSA_512, PROVIDER_KEY_NAME = 'SQL_Server_Key' ; GO
注意 如果存储在 EKM 模块中的非对称密钥丢失,SQL Server 将无法打开数据库。如果 EKM 提供程序允许您备份非对称密钥,则应该创建备份并将该备份存储到安全的位置。
创建数据库引擎使用的凭据
启动时,数据库引擎必须打开数据库。下面的过程创建一个通过 EKM 进行身份验证的凭据,并将该凭据添加到一个基于非对称密钥的登录名。用户无法使用该登录名进行登录,但数据库引擎将能够通过 EKM 设备对其自身进行身份验证。下面的过程假定 EKM 模块可以对名为“Identity2”的用户进行身份验证。应提供密码代替下面的星号。当 EKM 提供程序使用基本身份验证时需要执行这些步骤,但当 EKM 模块使用其他身份验证时可以跳过本部分中的步骤。
创建凭据并将其添加到登录名
执行下面的语句,以创建将由数据库引擎使用的凭据:
CREATE CREDENTIAL ekm_tde_cred WITH IDENTITY = 'Identity2' , SECRET = '*************' FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ;
执行下面的语句,以便添加 TDE 使用的登录名,并将新凭据添加到该登录名中:
CREATE LOGIN EKM_Login FROM ASYMMETRIC KEY ekm_login_key ; GO ALTER LOGIN EKM_Login ADD CREDENTIAL ekm_tde_cred ; GO
创建数据库加密密钥
数据库加密密钥是对称密钥。在 master 数据库中创建数据库加密密钥。
创建数据库加密密钥
更改为将加密的数据库:
USE AdventureWorks2008R2 ; GO
执行下面的代码,以创建将用于 TDE 的数据库加密密钥:
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER ASYMMETRIC KEY ekm_login_key ; GO
执行下面的代码,以将数据库更改为启用透明数据加密:
ALTER DATABASE AdventureWorks2008R2 SET ENCRYPTION ON ; GO
此时数据库以加密格式存储。
安全性
本主题使用了以下权限:
若要更改配置选项以及运行 RECONFIGURE 语句,您必须具有 ALTER SETTINGS 服务器级别权限。sysadmin 和 serveradmin 固定服务器角色隐式具有 ALTER SETTINGS 权限。
需要 ALTER ANY CREDENTIAL 权限。
需要 ALTER ANY LOGIN 权限。
需要 CREATE ASYMMETRIC KEY 权限。
需要拥有对数据库的 CONTROL 权限才能加密该数据库。