使用 EKM 启用 TDE

本主题介绍如何在 SQL Server 2012 中启用透明数据加密 (TDE),以便通过结合使用存储在可扩展密钥管理 (EKM) 模块中的非对称密钥和 Transact-SQL 来保护数据库加密密钥。

TDE 使用称为数据库加密密钥的对称密钥加密整个数据库的存储。 还可以使用受 master 数据库的数据库主密钥保护的证书来保护数据库加密密钥。 有关使用数据库主密钥保护数据库加密密钥的详细信息,请参阅透明数据加密 (TDE)

本主题内容

  • 开始之前:

    限制和局限

    安全性

  • 使用 EKM 和 Transact-SQL 启用 TDE

开始之前

限制和局限

  • 必须是高特权用户(如系统管理员)才能创建数据库加密密钥以及加密数据库。 该用户必须能够通过 EKM 模块进行身份验证。

  • 启动时,数据库引擎必须打开数据库。 为此,您应创建一个将通过 EKM 进行身份验证的凭据,并将该凭据添加到一个基于非对称密钥的登录名。 用户无法使用该登录名进行登录,但数据库引擎将能够通过 EKM 设备对其自身进行身份验证。

  • 如果存储在 EKM 模块中的非对称密钥丢失,SQL Server 将无法打开数据库。 如果 EKM 提供程序允许您备份非对称密钥,则应该创建备份并将该备份存储到安全的位置。

  • 您的 EKM 提供程序所需的选项和参数可能与下面的代码示例中所提供的选项和参数不同。 有关详细信息,请参阅 EKM 提供程序。

安全性

权限

本主题使用了以下权限:

  • 若要更改配置选项以及运行 RECONFIGURE 语句,您必须具有 ALTER SETTINGS 服务器级别权限。 ALTER SETTINGS 权限由 sysadminserveradmin 固定服务器角色隐式持有。

  • 需要 ALTER ANY CREDENTIAL 权限。

  • 需要 ALTER ANY LOGIN 权限。

  • 需要 CREATE ASYMMETRIC KEY 权限。

  • 需要拥有对数据库的 CONTROL 权限才能加密该数据库。

用于“返回首页”链接的箭头图标[Top]

使用 Transact-SQL

使用 EKM 启用 TDE

  1. 将 EKM 提供程序提供的文件复制到 SQL Server 计算机上的相应位置。 在本示例中,我们使用 C:\EKM 文件夹。

  2. 根据 EKM 提供程序的要求,将证书安装到计算机上。

    注意注意

    SQL Server 不提供 EKM 提供程序。 每个 EKM 提供程序可以有不同的安装、配置和授权用户的过程。 请查阅 EKM 提供程序文档,完成此步骤。

  3. 在**“对象资源管理器”**中,连接到数据库引擎实例。

  4. 在标准菜单栏上,单击**“新建查询”**。

  5. 将以下示例复制并粘贴到查询窗口中,然后单击**“执行”**。

    -- 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 system administrator credential to a high privileged user such as your own domain login in the format  [DOMAIN\login].
    ALTER LOGIN UCBERKELEY\shcooper
    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
    

有关详细信息,请参阅以下内容:

用于“返回首页”链接的箭头图标[Top]

请参阅

概念

使用 Azure 密钥保管库的扩展密钥管理 (SQL Server)