

# Compatibilidad con el Cifrado de datos transparente en SQL Server
<a name="Appendix.SQLServer.Options.TDE"></a>

Amazon RDS admite el Cifrado de datos transparente (TDE) para cifrar los datos almacenados en las instancias de base de datos en las que se ejecuta Microsoft SQL Server. La característica TDE cifra automáticamente los datos antes de que se escriban en el sistema de almacenamiento y los descifra también automáticamente cuando se leen. 

Amazon RDS admite TDE para las siguientes versiones y ediciones de SQL Server:
+ SQL Server 2022: Standard y Enterprise Editions
+ SQL Server 2019: Standard y Enterprise Editions
+ SQL Server 2017 Enterprise Edition
+ SQL Server 2016 Enterprise Edition

**nota**  
RDS para SQL Server no admite TDE para bases de datos de solo lectura.

Con el cifrado de datos transparente para SQL Server se ofrece administración de claves de cifrado mediante el uso de una arquitectura de claves de dos niveles. Para proteger las claves de cifrado de datos se usa un certificado generado desde la clave maestra de la base de datos. La clave de cifrado de base de datos efectúa el cifrado y descifrado real de los datos en la base de datos del usuario. Amazon RDS crea copias de seguridad y administra la clave maestra de la base de datos y el certificado de TDE

El cifrado de datos transparente se usa en situaciones en las que es necesario cifrar información confidencial. Por ejemplo, es posible que desee proporcionar archivos de datos y copias de seguridad a un tercero, o bien solucionar problemas de cumplimiento normativo relacionados con la seguridad. No puede cifrar las bases de datos del sistema para SQL Server, por ejemplo las bases de datos `model` o `master`.

Ofrece una descripción detallada del cifrado de datos transparente va más allá del alcance de esta guía, pero asegúrese de conocer los puntos fuertes y débiles de cada algoritmo y cada clave de cifrado. Para obtener información sobre el cifrado transparente de datos para SQL Server, consulte [Transparent Data Encryption (TDE)](http://msdn.microsoft.com/en-us/library/bb934049.aspx) (Cifrado transparente de datos) en la documentación de Microsoft.

**Topics**
+ [Activación de TDE en RDS para SQL Server](#TDE.Enabling)
+ [Cifrado de datos en RDS para SQL Server](TDE.Encrypting.md)
+ [Copia de seguridad y restauración de certificados TDE en RDS para SQL Server](TDE.BackupRestoreRDS.md)
+ [Copia de seguridad y restauración de certificados TDE para bases de datos en las instalaciones](TDE.BackupRestoreOnPrem.md)
+ [Desactivación de TDE en RDS para SQL Server](TDE.Disabling.md)

## Activación de TDE en RDS para SQL Server
<a name="TDE.Enabling"></a>

A fin de activar el cifrado de datos transparente para una instancia de base de datos de SQL Server de RDS, especifique la opción de TDE en un grupo de opciones de RDS que esté asociado con esa instancia de base de datos:

1. Determine si la instancia de base de datos ya está asociada con un grupo de opciones que tiene la opción TDE. Para ver el grupo de opciones al que está asociada una instancia de base de datos, utilice la consola de RDS, el comando [describe-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) de la AWS CLI o la operación [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html) de la API.

1.  Si la instancia de base de datos no está asociada a un grupo de opciones con TDE activado, dispone de dos alternativas: Puede crear un grupo de opciones o añadir la opción TDE, o bien modificar el grupo de opciones asociado para añadirla.
**nota**  
En la consola de RDS, la opción se denomina `TRANSPARENT_DATA_ENCRYPTION`. En la AWS CLI y la API de RDS, se denomina `TDE`.

   Para obtener información acerca de cómo crear o modificar un grupo de opciones, consulte [Trabajo con grupos de opciones](USER_WorkingWithOptionGroups.md). Para obtener información acerca de cómo añadir una opción a un grupo de opciones, consulte [Agregar una opción a un grupo de opciones](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption).

1.  Asocie la instancia de base de datos al grupo de opciones que tiene la opción TDE. Para obtener información acerca de cómo asociar una instancia de base de datos a un grupo de opciones, consulte [Modificación de una instancia de base de datos de Amazon RDS](Overview.DBInstance.Modifying.md).

### Consideraciones relativas al grupo de opciones
<a name="TDE.Options"></a>

La opción TDE es persistente. No se puede eliminar de un grupo de opciones a menos que todas las instancias de base de datos y las copias de seguridad dejen de estar asociadas al grupo de opciones. Una vez que la opción TDE se agrega a un grupo de opciones, este solo se puede asociar a instancias de base de datos que usan TDE. Para obtener más información acerca de las opciones persistentes de un grupo de opciones, use [Información general sobre grupos de opciones](USER_WorkingWithOptionGroups.md#Overview.OptionGroups). 

Como TDE es una opción persistente, puede producirse un conflicto entre el grupo de opciones y una instancia de base de datos asociada. Puede tener un conflicto en las siguientes situaciones:
+ El grupo de opciones actual tiene la opción TDE y lo reemplaza por un grupo de opciones que no la tiene.
+ Restaura desde una instantánea de base de datos a una nueva instancia de base de datos que no tiene un grupo de opciones que contenga la opción TDE. Para obtener más información acerca de esta situación, consulte [Aspectos a tener en cuenta sobre los grupos de opciones](USER_CopySnapshot.md#USER_CopySnapshot.Options). 

### Consideraciones sobre el rendimiento de SQL Server
<a name="TDE.Perf"></a>

El uso del cifrado de datos transparente puede afectar al rendimiento de una instancia de base de datos de SQL Server.

El desempeño de las bases de datos sin cifrar puede reducirse también si están en una instancia de base de datos que tenga al menos una base de datos cifrada. Como resultado, es recomendable mantener las bases de datos cifradas y sin cifrar en instancias de base de datos diferentes.

# Cifrado de datos en RDS para SQL Server
<a name="TDE.Encrypting"></a>

Cuando la opción TDE se agrega a un grupo de opciones, Amazon RDS genera un certificado que se usa en el proceso de cifrado. A continuación puede usar el certificado para ejecutar instrucciones SQL que cifren los datos de una base de datos de la instancia de base de datos.

En el siguiente ejemplo se usa un certificado creado por RDS llamado `RDSTDECertificateName` para cifrar una base de datos denominada `myDatabase`.

```
 1. ---------- Turning on TDE -------------
 2. 
 3. -- Find an RDS TDE certificate to use
 4. USE [master]
 5. GO
 6. SELECT name FROM sys.certificates WHERE name LIKE 'RDSTDECertificate%'
 7. GO
 8. 
 9. USE [myDatabase]
10. GO
11. -- Create a database encryption key (DEK) using one of the certificates from the previous step
12. CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256
13. ENCRYPTION BY SERVER CERTIFICATE [RDSTDECertificateName]
14. GO
15. 
16. -- Turn on encryption for the database
17. ALTER DATABASE [myDatabase] SET ENCRYPTION ON
18. GO
19. 
20. -- Verify that the database is encrypted
21. USE [master]
22. GO
23. SELECT name FROM sys.databases WHERE is_encrypted = 1
24. GO
25. SELECT db_name(database_id) as DatabaseName, * FROM sys.dm_database_encryption_keys
26. GO
```

El tiempo que tarda en cifrarse una base de datos de SQL Server con TDE depende de varios factores. Estos incluyen el tamaño de la instancia de base de datos, si la instancia usa el almacenamiento de IOPS aprovisionadas, la cantidad de datos y otros factores.

# Copia de seguridad y restauración de certificados TDE en RDS para SQL Server
<a name="TDE.BackupRestoreRDS"></a>

RDS para SQL Server proporciona procedimientos almacenados para realizar copias de seguridad de los certificados TDE, restaurarlos y eliminarlos. RDS para SQL Server también proporciona una función para ver los certificados TDE de usuario restaurados.

Los certificados TDE de usuario se utilizan para restaurar las bases de datos en RDS para SQL Server que están en las instalaciones y tienen TDE activado. Estos certificados tienen el prefijo `UserTDECertificate_`. Después de restaurar las bases de datos, y antes de hacer que estén disponibles para usarlas, RDS modifica las bases de datos que tienen TDE activado a fin de utilizar los certificados TDE generados por RDS. Estos certificados tienen el prefijo `RDSTDECertificate`.

Los certificados TDE de usuario permanecen en la instancia de base de datos de RDS para SQL Server, a menos que los elimine mediante el procedimiento almacenado `rds_drop_tde_certificate`. Para obtener más información, consulte [Eliminación de certificados TDE restaurados](#TDE.BackupRestoreRDS.Drop).

Puede utilizar un certificado TDE de usuario para restaurar otras bases de datos desde la instancia de base de datos de origen. Las bases de datos que se van a restaurar deben utilizar el mismo certificado TDE y tener TDE activado. No tiene que volver a importar (restaurar) el mismo certificado. 

**Topics**
+ [Requisitos previos](#TDE.BackupRestoreRDS.Prereqs)
+ [Limitaciones](#TDE.Limitations)
+ [Copia de seguridad de un certificado TDE](#TDE.BackupRestoreRDS.Backup)
+ [Restauración de un certificado TDE](#TDE.BackupRestoreRDS.Restore)
+ [Visualización de certificados TDE](#TDE.BackupRestoreRDS.Show)
+ [Eliminación de certificados TDE restaurados](#TDE.BackupRestoreRDS.Drop)

## Requisitos previos
<a name="TDE.BackupRestoreRDS.Prereqs"></a>

Para poder hacer una copia de seguridad de los certificados TDE o restaurarlos en RDS para SQL Server, asegúrese de realizar las siguientes tareas. Las tres primeras se describen en [Configuración de la copia de seguridad y la restauración nativas](SQLServer.Procedural.Importing.Native.Enabling.md).

1. Cree buckets de uso general o buckets de directorio de Amazon S3 para almacenar archivos con el fin de realizar copias de seguridad y restauraciones.

   Le recomendamos que utilice buckets distintos para las copias de seguridad de la base de datos y para las copias de seguridad de los certificados TDE.

1. Cree un rol de IAM para hacer copias de seguridad de los archivos y restaurarlos.

   El rol de IAM debe ser tanto un usuario como un administrador para la AWS KMS key.

   Al usar buckets de directorio, no se requieren permisos adicionales aparte de los permisos necesarios para [Creación manual de un rol de IAM para la copia de seguridad y la restauración nativas](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM) con buckets de directorio.

   Al usar recursos de S3, el rol de IAM también requiere los siguientes permisos, además de los permisos necesarios para [Creación manual de un rol de IAM para la copia de seguridad y la restauración nativas](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM):
   + `s3:GetBucketAcl`, `s3:GetBucketLocation` y `s3:ListBucket` en el recurso de bucket de S3

1. Agregue la opción `SQLSERVER_BACKUP_RESTORE` a un grupo de opciones en su instancia de base de datos.

   Esto se agrega a la opción `TRANSPARENT_DATA_ENCRYPTION` (`TDE`).

1. Asegúrese de que tiene una clave de KMS de cifrado simétrica. Dispone de las opciones siguientes:
   + Si ya dispone de una clave de KMS en la cuenta, puede utilizarla. No hay que hacer nada más.
   + Si no tiene una clave de cifrado KMS simétrica existente en su cuenta, cree una clave KMS mediante las instrucciones de [Creating keys](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) (Crear claves) en la *AWS Key Management ServiceDeveloper Guide* (Guía para desarrolladores).

1. Habilite la integración de Amazon S3 para transferir archivos entre la instancia de base de datos y Amazon S3.

   Para obtener información sobre la habilitación de la integración de Amazon S3, consulte [Integración de una instancia de base de datos de Amazon RDS for SQL Server con Amazon S3](User.SQLServer.Options.S3-integration.md).

   Tenga en cuenta que los buckets de directorios no son compatibles con la integración de S3. Este paso solo es necesario para [Copia de seguridad y restauración de certificados TDE para bases de datos en las instalaciones](TDE.BackupRestoreOnPrem.md).

## Limitaciones
<a name="TDE.Limitations"></a>

El uso de procedimientos almacenados para hacer copias de seguridad de certificados TDE y restaurarlos tiene las siguientes limitaciones:
+ Las opciones `SQLSERVER_BACKUP_RESTORE` y `TRANSPARENT_DATA_ENCRYPTION` (`TDE`) deben agregarse al grupo de opciones que haya asociado a su instancia de base de datos.
+ Las copias de seguridad y la restauración de los certificados TDE no son compatibles con las instancias de base de datos Multi-AZ.
+ No se admite la cancelación de tareas de copia de seguridad y restauración de certificados TDE.
+ No puede utilizar un certificado TDE de usuario para el cifrado TDE de otra base de datos en su instancia de base de datos RDS para SQL Server. Puede utilizarlo para restaurar solo otras bases de datos de la instancia de base de datos de origen que tengan TDE activado y que utilicen el mismo certificado TDE.
+ Solo puede eliminar certificados TDE de usuario.
+ El número máximo de certificados TDE de usuario admitidos en RDS es 10. Si el número es superior a diez, elimine los certificados TDE no utilizados y vuelva a intentarlo.
+ El nombre del certificado no puede estar vacío ni ser nulo.
+ Al restaurar un certificado, su nombre no puede incluir la palabra clave `RDSTDECERTIFICATE` y debe comenzar por el prefijo `UserTDECertificate_`.
+ El parámetro `@certificate_name` solo puede incluir los siguientes caracteres: a-z, 0-9, @, \$1, \$1 y guion bajo (\$1).
+ La extensión del archivo para `@certificate_file_s3_arn` debe ser .cer (no se distingue entre mayúsculas y minúsculas).
+ La extensión del archivo para `@private_key_file_s3_arn` debe ser .pvk (no se distingue entre mayúsculas y minúsculas).
+ Los metadatos S3 del archivo de clave privada deben incluir la etiqueta `x-amz-meta-rds-tde-pwd`. Para obtener más información, consulte [Copia de seguridad y restauración de certificados TDE para bases de datos en las instalaciones](TDE.BackupRestoreOnPrem.md).
+ RDS para SQL Server no admite el uso de claves entre cuentas para TDE.

## Copia de seguridad de un certificado TDE
<a name="TDE.BackupRestoreRDS.Backup"></a>

Para hacer copias de seguridad de los certificados TDE, utilice el procedimiento almacenado `rds_backup_tde_certificate`. Tiene la siguiente sintaxis.

```
EXECUTE msdb.dbo.rds_backup_tde_certificate
    @certificate_name='UserTDECertificate_certificate_name | RDSTDECertificatetimestamp',
    @certificate_file_s3_arn='arn:aws:s3:::bucket_name/certificate_file_name.cer',
    @private_key_file_s3_arn='arn:aws:s3:::bucket_name/key_file_name.pvk',
    @kms_password_key_arn='arn:aws:kms:region:account-id:key/key-id',
    [@overwrite_s3_files=0|1];
```

Se requieren los siguientes parámetros:
+ `@certificate_name`: nombre del certificado TDE del que se hará una copia de seguridad.
+ `@certificate_file_s3_arn`: nombre de recurso de Amazon (ARN) de destino para el archivo de copia de seguridad de certificados en Amazon S3.
+ `@private_key_file_s3_arn`: ARN de S3 de destino del archivo de clave privada que protege el certificado TDE.
+ `@kms_password_key_arn`: ARN de la clave de KMS simétrica utilizada para cifrar la contraseña de clave privada.

El siguiente parámetro es opcional:
+ `@overwrite_s3_files`: indica si se deben sobrescribir los archivos de certificado y de clave privada existentes en S3:
  + `0`: no se sobrescriben los archivos existentes. Este valor es el valor predeterminado.

    Al establecer `@overwrite_s3_files` en 0, se devuelve un error si ya existe un archivo.
  + `1`: se sobrescribe un archivo existente que tenga el nombre especificado, aunque no sea un archivo de copia de seguridad.

**Example de copia de seguridad de un certificado TDE**  

```
EXECUTE msdb.dbo.rds_backup_tde_certificate
    @certificate_name='RDSTDECertificate20211115T185333',
    @certificate_file_s3_arn='arn:aws:s3:::TDE_certs/mycertfile.cer',
    @private_key_file_s3_arn='arn:aws:s3:::TDE_certs/mykeyfile.pvk',
    @kms_password_key_arn='arn:aws:kms:us-west-2:123456789012:key/AKIAIOSFODNN7EXAMPLE',
    @overwrite_s3_files=1;
```

## Restauración de un certificado TDE
<a name="TDE.BackupRestoreRDS.Restore"></a>

Use el procedimiento almacenado `rds_restore_tde_certificate` para restaurar (importar) certificados TDE de usuario. Tiene la siguiente sintaxis.

```
EXECUTE msdb.dbo.rds_restore_tde_certificate
    @certificate_name='UserTDECertificate_certificate_name',
    @certificate_file_s3_arn='arn:aws:s3:::bucket_name/certificate_file_name.cer',
    @private_key_file_s3_arn='arn:aws:s3:::bucket_name/key_file_name.pvk',
    @kms_password_key_arn='arn:aws:kms:region:account-id:key/key-id';
```

Se requieren los siguientes parámetros:
+ `@certificate_name`: nombre del certificado TDE que se va a restaurar. El nombre debe comenzar por el prefijo `UserTDECertificate_`.
+ `@certificate_file_s3_arn`: ARN de S3 del archivo de copia de seguridad que se usa para restaurar el certificado TDE.
+ `@private_key_file_s3_arn`: ARN de S3 del archivo de copia de seguridad de clave privada del certificado TDE que se va a restaurar.
+ `@kms_password_key_arn`: ARN de la clave de KMS simétrica utilizada para cifrar la contraseña de clave privada.

**Example de restauración de un certificado TDE**  

```
EXECUTE msdb.dbo.rds_restore_tde_certificate
    @certificate_name='UserTDECertificate_myTDEcertificate',
    @certificate_file_s3_arn='arn:aws:s3:::TDE_certs/mycertfile.cer',
    @private_key_file_s3_arn='arn:aws:s3:::TDE_certs/mykeyfile.pvk',
    @kms_password_key_arn='arn:aws:kms:us-west-2:123456789012:key/AKIAIOSFODNN7EXAMPLE';
```

## Visualización de certificados TDE
<a name="TDE.BackupRestoreRDS.Show"></a>

Use la función `rds_fn_list_user_tde_certificates` para ver los certificados TDE de usuario restaurados (importados). Tiene la siguiente sintaxis.

```
SELECT * FROM msdb.dbo.rds_fn_list_user_tde_certificates();
```

La salida se parece a la siguiente. Aquí no se muestran todas las columnas.


|  |  |  |  |  |  |  |  |  |  |  | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| name | certificate\$1id | principal\$1id | pvt\$1key\$1encryption\$1type\$1desc | issuer\$1name | cert\$1serial\$1number | thumbprint | subject | start\$1date | expiry\$1date | pvt\$1key\$1last\$1backup\$1date | 
| UserTDECertificate\$1tde\$1cert | 343 | 1 | ENCRYPTED\$1BY\$1MASTER\$1KEY | AnyCompany Shipping | 79 3e 57 a3 69 fd 1d 9e 47 2c 32 67 1d 9c ca af | 0x6BB218B34110388680B FE1BA2D86C695096485B5 | AnyCompany Shipping | 2022-04-05 19:49:45.0000000 | 2023-04-05 19:49:45.0000000 | NULL | 

## Eliminación de certificados TDE restaurados
<a name="TDE.BackupRestoreRDS.Drop"></a>

Para eliminar los certificados TDE de usuario restaurados (importados) que no esté utilizando, utilice el procedimiento almacenado `rds_drop_tde_certificate`. Tiene la siguiente sintaxis.

```
EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_certificate_name';
```

El siguiente parámetro es obligatorio:
+ `@certificate_name`: el nombre del certificado TDE que se va a eliminar.

Solo puede eliminar los certificados TDE restaurados (importados). No se pueden eliminar los certificados creados por RDS.

**Example de eliminación de un certificado TDE**  

```
EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_myTDEcertificate';
```

# Copia de seguridad y restauración de certificados TDE para bases de datos en las instalaciones
<a name="TDE.BackupRestoreOnPrem"></a>

Puede realizar una copia de seguridad de los certificados TDE para las bases de datos en las instalaciones y, posteriormente, restaurarlos en RDS para SQL Server. También puede restaurar un certificado TDE de RDS para SQL Server en una instancia de base de datos en las instalaciones.

**nota**  
RDS para SQL Server no admite el uso de claves entre cuentas para TDE.

El siguiente procedimiento hace una copia de seguridad de un certificado TDE y una clave privada. La clave privada se cifra mediante una clave de datos generada a partir de su clave de KMS de cifrado simétrico.

**Para hacer una copia de seguridad de un certificado TDE en las instalaciones**

1. Genere la clave de datos mediante el comando [generate-data-key](https://docs.aws.amazon.com/cli/latest/reference/kms/generate-data-key.html) de AWS CLI.

   ```
   aws kms generate-data-key \
       --key-id my_KMS_key_ID \
       --key-spec AES_256
   ```

   La salida se parece a la siguiente.

   ```
   {
   "CiphertextBlob": "AQIDAHimL2NEoAlOY6Bn7LJfnxi/OZe9kTQo/XQXduug1rmerwGiL7g5ux4av9GfZLxYTDATAAAAfjB8BgkqhkiG9w0B
   BwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMyCxLMi7GRZgKqD65AgEQgDtjvZLJo2cQ31Vetngzm2ybHDc3d2vI74SRUzZ
   2RezQy3sAS6ZHrCjfnfn0c65bFdhsXxjSMnudIY7AKw==",
   "Plaintext": "U/fpGtmzGCYBi8A2+0/9qcRQRK2zmG/aOn939ZnKi/0=",
   "KeyId": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-00ee-99ff-88dd-aa11bb22cc33"
   }
   ```

   La salida de texto sin formato se utiliza en el siguiente paso como contraseña de la clave privada.

1. Haga una copia de seguridad de su certificado TDE como se muestra en el siguiente ejemplo.

   ```
   BACKUP CERTIFICATE myOnPremTDEcertificate TO FILE = 'D:\tde-cert-backup.cer'
   WITH PRIVATE KEY (
   FILE = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\cert-backup-key.pvk',
   ENCRYPTION BY PASSWORD = 'U/fpGtmzGCYBi8A2+0/9qcRQRK2zmG/aOn939ZnKi/0=');
   ```

1. Guarde el archivo de copia de seguridad de certificados en el bucket de certificados de Amazon S3.

1. Guarde el archivo de copia de seguridad de clave privada en su bucket de certificados de S3, con la siguiente etiqueta en los metadatos del archivo:
   + Clave: `x-amz-meta-rds-tde-pwd`
   + Valor: el valor de `CiphertextBlob` de la generación de la clave de datos, como en el siguiente ejemplo.

     ```
     AQIDAHimL2NEoAlOY6Bn7LJfnxi/OZe9kTQo/XQXduug1rmerwGiL7g5ux4av9GfZLxYTDATAAAAfjB8BgkqhkiG9w0B
     BwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMyCxLMi7GRZgKqD65AgEQgDtjvZLJo2cQ31Vetngzm2ybHDc3d2vI74SRUzZ
     2RezQy3sAS6ZHrCjfnfn0c65bFdhsXxjSMnudIY7AKw==
     ```

El siguiente procedimiento restaura un certificado TDE de RDS para SQL Server en una instancia de base de datos en las instalaciones. Copie y restaure el certificado TDE en su instancia de base de datos de destino mediante la copia de seguridad del certificado, el archivo de clave privada correspondiente y la clave de datos. El certificado restaurado está cifrado con la clave maestra de base de datos del nuevo servidor. 

**Para restaurar un certificado TDE**

1. Copie el archivo de copia de seguridad del certificado TDE y el archivo de clave privada de Amazon S3 en la instancia de destino. Para obtener más información sobre la copia de archivos desde Amazon S3, consulte [Transferencia de archivos entre RDS for SQL Server y Amazon S3](Appendix.SQLServer.Options.S3-integration.using.md).

1. Utilice la clave de KMS para descifrar el texto de cifrado de salida y recuperar el texto sin formato de la clave de datos. El texto de cifrado se encuentra en los metadatos de S3 del archivo de copia de seguridad de la clave privada.

   ```
   aws kms decrypt \
       --key-id my_KMS_key_ID \
       --ciphertext-blob fileb://exampleCiphertextFile | base64 -d \
       --output text \
       --query Plaintext
   ```

   La salida de texto sin formato se utiliza en el siguiente paso como contraseña de la clave privada.

1. Utilice el siguiente comando SQL para restaurar su certificado TDE.

   ```
   CREATE CERTIFICATE myOnPremTDEcertificate FROM FILE='D:\tde-cert-backup.cer'
   WITH PRIVATE KEY (FILE = N'D:\tde-cert-key.pvk',
   DECRYPTION BY PASSWORD = 'plain_text_output');
   ```

Para obtener más información sobre el descifrado de KMS, consulte [decrypt](https://docs.aws.amazon.com/cli/latest/reference/kms/decrypt.html) en la sección KMS de la *referencia de comandos de AWS CLI*.

Una vez restaurado el certificado TDE en la instancia de base de datos de destino, podrá restaurar las bases de datos cifradas con ese certificado.

**nota**  
Puede utilizar el mismo certificado TDE para cifrar varias bases de datos de SQL Server en la instancia de base de datos de origen. Para migrar varias bases de datos a una instancia de destino, copie el certificado TDE asociado a ellas en la instancia de destino solo una vez.

# Desactivación de TDE en RDS para SQL Server
<a name="TDE.Disabling"></a>

Para desactivar TDE en una instancia de base de datos de RDS para SQL Server, asegúrese primero de que no quedan objetos cifrados en la instancia de base de datos. Para ello, descifre los objetos o elimínelos. Si existe algún objeto cifrado en la instancia de base de datos, no podrá desactivar TDE para la instancia de base de datos. Si se restauró (importó) un certificado TDE de usuario para el cifrado, debe descartarse. Al usar la consola para eliminar la opción TDE de un grupo de opciones, la consola indica que se está procesando. Además, se creará un evento de error si el grupo de opciones se asocia a una instantánea de base de datos o una instancia de base de datos cifrada.

En el siguiente ejemplo se elimina el cifrado de TDE de una base de datos llamada `customerDatabase`. 

```
 1. ------------- Removing TDE ----------------
 2. 
 3. USE [customerDatabase]
 4. GO
 5. 
 6. -- Turn off encryption of the database
 7. ALTER DATABASE [customerDatabase]
 8. SET ENCRYPTION OFF
 9. GO
10. 
11. -- Wait until the encryption state of the database becomes 1. The state is 5 (Decryption in progress) for a while
12. SELECT db_name(database_id) as DatabaseName, * FROM sys.dm_database_encryption_keys
13. GO
14. 
15. -- Drop the DEK used for encryption
16. DROP DATABASE ENCRYPTION KEY
17. GO
18. 
19. -- Drop a user TDE certificate if it was restored (imported)
20. EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_certificate_name';
21. 
22. -- Alter to SIMPLE Recovery mode so that your encrypted log gets truncated
23. USE [master]
24. GO
25. ALTER DATABASE [customerDatabase] SET RECOVERY SIMPLE
26. GO
```

Cuando todos los objetos estén descifrados, tendrá a su disposición dos opciones:

1. Puede modificar la instancia de base de datos para asociarla a un grupo de opciones sin la opción TDE.

1. Puede quitar la opción TDE del grupo de opciones.