本主题介绍如何在 SQL Server 2014 中启用透明数据加密(TDE),以便通过 Transact-SQL 使用存储在可扩展密钥管理(EKM)模块中的非对称密钥来保护数据库加密密钥。
TDE 使用称为数据库加密密钥的对称密钥来加密整个数据库的存储。 还可以使用受 master 数据库的数据库主密钥保护的证书来保护数据库加密密钥。 有关使用数据库主密钥保护数据库加密密钥的详细信息,请参阅透明数据加密(TDE)。 有关在 Azure VM 上运行 SQL Server 时配置 TDE 的信息,请参阅使用 Azure Key Vault 的可扩展密钥管理(SQL Server)。
本主题内容
在您开始之前
局限性与限制
必须是高特权用户(例如系统管理员),才能创建数据库加密密钥并加密数据库。 该用户必须能够通过 EKM 模块进行身份验证。
启动数据库引擎时,必须打开数据库。 为此,您应创建一个将通过 EKM 进行身份验证的凭据,并将该凭据添加到一个基于非对称密钥的登录名。 用户无法使用该登录名登录,但数据库引擎将能够使用 EKM 设备对自身进行身份验证。
如果 EKM 模块中存储的非对称密钥丢失,则 SQL Server 无法打开数据库。 如果 EKM 提供程序允许备份非对称密钥,则应创建备份并将其存储在安全位置。
EKM 提供程序所需的选项和参数可能与下面的代码示例中提供的选项和参数不同。 有关详细信息,请参阅 EKM 提供程序。
安全
权限
本主题使用以下权限:
若要更改配置选项并运行 RECONFIGURE 语句,必须授予 ALTER SETTINGS 服务器级权限。 ALTER SETTINGS 权限由 sysadmin 和 serveradmin 固定服务器角色隐式持有。
需要 ALTER ANY CREDENTIAL 权限。
需要 ALTER ANY LOGIN 权限。
需要 CREATE ASYMMETRIC KEY 权限。
要求对数据库具有 CONTROL 权限才能加密数据库。
使用 Transact-SQL
使用 EKM 启用 TDE
将 EKM 提供程序提供的文件复制到 SQL Server 计算机上的相应位置。 在此示例中,我们使用 C:\EKM 文件夹。
根据 EKM 提供程序的要求将证书安装到计算机。
注释
SQL Server 不提供 EKM 提供程序。 每个 EKM 提供程序可以有不同的过程来安装、配置和授权用户。 请查阅 EKM 提供程序文档以完成此步骤。
在 “对象资源管理器” 中,连接到某个数据库引擎实例。
在标准栏上,单击“新建查询”。
将以下示例复制并粘贴到查询窗口中,然后单击 执行。
-- Enable advanced options. sp_configure 'show advanced options', 1 ; GO RECONFIGURE ; GO -- Enable EKM provider sp_configure 'EKM provider enabled', 1 ; GO RECONFIGURE ; GO -- Create a cryptographic provider, which we have chosen to call "EKM_Prov," based on an EKM provider CREATE CRYPTOGRAPHIC PROVIDER EKM_Prov FROM FILE = 'C:\EKM_Files\KeyProvFile.dll' ; GO -- Create a credential that will be used by system administrators. CREATE CREDENTIAL sa_ekm_tde_cred WITH IDENTITY = 'Identity1', SECRET = 'q*gtev$0u#D1v' FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ; GO -- Add the credential to a high privileged user such as your -- own domain login in the format [DOMAIN\login]. ALTER LOGIN Contoso\Mary ADD CREDENTIAL sa_ekm_tde_cred ; GO -- create an asymmetric key stored inside the EKM provider USE master ; GO CREATE ASYMMETRIC KEY ekm_login_key FROM PROVIDER [EKM_Prov] WITH ALGORITHM = RSA_512, PROVIDER_KEY_NAME = 'SQL_Server_Key' ; GO -- Create a credential that will be used by the Database Engine. CREATE CREDENTIAL ekm_tde_cred WITH IDENTITY = 'Identity2' , SECRET = 'jeksi84&sLksi01@s' FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ; -- Add a login used by TDE, and add the new credential to the login. CREATE LOGIN EKM_Login FROM ASYMMETRIC KEY ekm_login_key ; GO ALTER LOGIN EKM_Login ADD CREDENTIAL ekm_tde_cred ; GO -- Create the database encryption key that will be used for TDE. USE AdventureWorks2012 ; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER ASYMMETRIC KEY ekm_login_key ; GO -- Alter the database to enable transparent data encryption. ALTER DATABASE AdventureWorks2012 SET ENCRYPTION ON ; GO
有关详细信息,请参阅以下内容: