Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
En este artículo se describe cómo habilitar el cifrado de datos transparente (TDE) en SQL Server 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-SQL.
TDE cifra el almacenamiento de una base de datos completa mediante el uso de una clave simétrica denominada clave de cifrado de base de datos. La clave de cifrado de base de datos también se puede proteger mediante un certificado, que está protegido por la clave maestra de base de datos (DMK) de la master base de datos. Para obtener más información sobre cómo proteger la clave de cifrado de base de datos mediante DMK, consulte Cifrado de datos transparente (TDE). Para obtener información sobre cómo configurar TDE cuando SQL Server se ejecuta en una máquina virtual de Azure, consulte Administración extensible de claves mediante 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.
Limitaciones
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. El módulo EKM debe poder autenticar a ese usuario.
Al iniciarse, el motor de base de datos debe abrir la base de datos. Debe crear una credencial autenticada por el EKM y agregarla a un inicio de sesión basado en una clave asimétrica. Los usuarios no pueden iniciar sesión con ese inicio de sesión, pero el motor de base de datos puede autenticarse con el dispositivo EKM.
Si se pierde la clave asimétrica almacenada en el módulo EKM, SQL Server no puede abrir la base de datos. 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.
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. Para obtener más información, consulte al proveedor de EKM.
Permisos
En este artículo se utilizan los permisos siguientes:
Para cambiar una opción de configuración y ejecutar la
RECONFIGUREinstrucción , se le debe conceder elALTER SETTINGSpermiso de nivel de servidor. Los roles fijos de servidorALTER SETTINGSy serveradmin tienen el permiso de forma implícita.Requiere
ALTER ANY CREDENTIALpermiso.Requiere
ALTER ANY LOGINpermiso.Requiere
CREATE ASYMMETRIC KEYpermiso.Requiere
CONTROLpermiso en la base de datos para cifrar la base de datos.
Uso de Transact-SQL
Copie los archivos proporcionados por el proveedor EKM a una ubicación adecuada en el equipo de SQL Server. En este ejemplo, se usa la
C:\EKM_Filescarpeta .Instale los certificados en el equipo tal y como requiera el proveedor EKM.
Nota:
SQL Server no proporciona un proveedor EKM. Cada proveedor EKM puede tener procedimientos diferentes para instalar, configurar y autorizar a los usuarios. Para completar este paso, consulte la documentación del proveedor EKM.
En el Explorador de objetos, conéctese a una instancia del Motor de base de datos.
En la barra Estándar, seleccione Nueva consulta.
Copie y pegue el ejemplo siguiente en la ventana de consulta y seleccione Ejecutar.
-- Enable advanced options. EXECUTE sp_configure 'show advanced options', 1; GO RECONFIGURE; GO -- Enable EKM provider EXECUTE 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 = '<password>' 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 = '<secret>' 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 AdventureWorks2022; 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 AdventureWorks2022 SET ENCRYPTION ON; GO
Contenido relacionado
- Cifrado de datos transparente para SQL Database, SQL Managed Instance y Azure Synapse Analytics
- sp_configure (Transact-SQL)
- CREATE CRYPTOGRAPHIC PROVIDER (Transact-SQL)
- CREAR CREDENCIAL (Transact-SQL)
- CREATE ASYMMETRIC KEY (Transact-SQL)
- CREATE LOGIN (Transact-SQL)
- CREATE DATABASE ENCRYPTION KEY (Transact-SQL)
- ALTER LOGIN (Transact-SQL)
- ALTER DATABASE (Transact-SQL)