Habilitar TDE en SQL Server con EKMEnable TDE on SQL Server Using EKM

SE APLICA A: síSQL Server síAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

En este artículo se describe cómo habilitar el cifrado de datos transparente (TDE) en SQL Server 2017SQL Server 2017 para proteger una clave de cifrado de base de datos mediante una clave asimétrica almacenada en un módulo EKM (Administración extensible de claves) con Transact-SQLTransact-SQL.This article describes how to enable transparent data encryption (TDE) in SQL Server 2017SQL Server 2017 to protect a database encryption key by using an asymmetric key stored in an extensible key management (EKM) module with Transact-SQLTransact-SQL.

TDE cifra el almacenamiento de una base de datos completa utilizando una clave simétrica denominada clave de cifrado de base de datos.TDE encrypts the storage of an entire database by using a symmetric key called the database encryption key. La clave de cifrado de base de datos también se puede proteger utilizando un certificado que se protege mediante la clave maestra de base de datos de la base de datos maestra.The database encryption key can also be protected using a certificate, which is protected by the database master key of the master database. Para obtener más información sobre cómo proteger la clave de cifrado de base de datos usando la clave maestra de base de datos, vea Cifrado de datos transparente (TDE).For more information about protecting the database encryption key by using the database master key, see Transparent Data Encryption (TDE). Para obtener más información sobre cómo configurar TDE cuando SQL ServerSQL Server se está ejecutando en una máquina virtual de Azure, vea Administración extensible de claves con el Almacén de claves de Azure (SQL Server).For information about configuring TDE when SQL ServerSQL Server is running on an Azure VM, see Extensible Key Management Using Azure Key Vault (SQL Server). Para obtener más información sobre cómo configurar TDE con una clave del Almacén de claves de Azure, vea Usar el Conector de SQL Server con características de cifrado de SQL.For information about configuring TDE using a key in the Azure key vault, see Use SQL Server Connector with SQL Encryption Features.

Antes de empezarBefore You Begin

Limitaciones y restriccionesLimitations and Restrictions

  • Debe ser un usuario con muchos privilegios (como un administrador del sistema) para crear una clave de cifrado de base de datos y cifrar una base de datos.You must be a high privileged user (such as a system administrator) to create a database encryption key and encrypt a database. Ese usuario debe poder ser autenticado por el módulo EKM.That user must be able to be authenticated by the EKM module.

  • Tras iniciarse, Motor de base de datosDatabase Engine debe abrir la base de datos.Upon startup the Motor de base de datosDatabase Engine must open the database. Para ello, debe crear una credencial que será autenticada por EKM y agregarla a un inicio de sesión que se basa en una clave asimétrica.To do this, you should create a credential that will be authenticated by the EKM, and add it to a login that is based on an asymmetric key. Los usuarios no pueden iniciar sesión mediante ese inicio de sesión, pero el Motor de base de datosDatabase Engine podrá autenticarse con el dispositivo EKM.Users cannot log in using that login, but the Motor de base de datosDatabase Engine will be able to authenticate itself with the EKM device.

  • Si la clave asimétrica almacenada en el módulo EKM se pierde, SQL ServerSQL Serverno podrá abrir la base de datos.If the asymmetric key stored in the EKM module is lost, the database will not be able to be opened by SQL ServerSQL Server. Si el proveedor EKM permite hacer una copia de seguridad de la clave asimétrica, debería crear una y almacenarla en una ubicación segura.If the EKM provider lets you back up the asymmetric key, you should create a back up and store it in a secure location.

  • Las opciones y los parámetros requeridos por el proveedor de EKM pueden diferir de lo que se proporciona en el ejemplo de código siguiente.The options and parameters required by your EKM provider can differ from what is provided in the code example below. Para obtener más información, consulte al proveedor de EKM.For more information, see your EKM provider.

SeguridadSecurity

PermissionsPermissions

En este artículo se utilizan los permisos siguientes:This article uses the following permissions:

  • Para cambiar una opción de configuración y ejecutar la instrucción RECONFIGURE, debe tener el permiso ALTER SETTINGS de nivel de servidor.To change a configuration option and run the RECONFIGURE statement, you must be granted the ALTER SETTINGS server-level permission. Los roles fijos de servidor sysadmin y serveradmin tienen el permiso ALTER SETTINGS de forma implícita.The ALTER SETTINGS permission is implicitly held by the sysadmin and serveradmin fixed server roles.

  • Requiere el permiso ALTER ANY CREDENTIAL.Requires ALTER ANY CREDENTIAL permission.

  • Requiere el permiso ALTER ANY LOGIN.Requires ALTER ANY LOGIN permission.

  • Requiere el permiso CREATE ASYMMETRIC KEY.Requires CREATE ASYMMETRIC KEY permission.

  • Requiere el permiso CONTROL en la base de datos para cifrarla.Requires CONTROL permission on the database to encrypt the database.

Usar Transact-SQLUsing Transact-SQL

Para habilitar TDE usando EKMTo enable TDE using EKM

  1. Copie los archivos proporcionados por el proveedor EKM a una ubicación adecuada en el equipo de SQL ServerSQL Server .Copy the files supplied by the EKM provider to an appropriate location on the SQL ServerSQL Server computer. En este ejemplo, usamos la carpeta C:\EKM .In this example, we use the C:\EKM folder.

  2. Instale los certificados en el equipo tal y como requiera el proveedor EKM.Install certificates to the computer as required by your EKM provider.

    Nota

    SQL ServerSQL Server no proporciona un proveedor EKM. does not supply an EKM provider. Cada proveedor EKM puede tener procedimientos diferentes para instalar, configurar y autorizar a los usuarios.Each EKM provider can have different procedures for installing, configuring, and authorizing users. Consulte la documentación del proveedor EKM para completar este paso.Consult your EKM provider documentation to complete this step.

  3. En el Explorador de objetos, conéctese a una instancia del Motor de base de datosDatabase Engine.In Object Explorer, connect to an instance of Motor de base de datosDatabase Engine.

  4. En la barra de Estándar, haga clic en Nueva consulta.On the Standard bar, click New Query.

  5. Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar.Copy and paste the following example into the query window and click Execute.

    -- 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  
    

    Para obtener más información, vea:For more information, see the following:

Ver tambiénSee Also

Cifrado de datos transparente con Base de datos SQL de AzureTransparent Data Encryption with Azure SQL Database