Você está na página 1de 5

Certificados

Contenido
Introducción .................................................................................................................................................. 1
Ejemplo ilustrativo ........................................................................................................................................ 1
Generar clave maestra .............................................................................................................................. 2
Creación del certificado ............................................................................................................................ 2
Ejercicio propuesto ....................................................................................................................................... 5

Introducción
Además de mantener los datos seguros, un administrador de base de datos también tiene que mantener
el sistema en funcionamiento y restaurar los datos según sea necesario, en caso de un error, con un
impacto mínimo en el negocio.

Las copias de seguridad de bases de datos almacenadas fuera del sitio o en la nube requieren un poco
más de precaución. Los datos residen literalmente en la infraestructura de otra persona. La seguridad de
los datos tiene que ser pensada desde una perspectiva diferente. Si alguien obtiene acceso no autorizado
al sitio, simplemente podría restaurar una copia de su base de datos desde una copia de seguridad, en su
propio hardware.

Las mejores prácticas de seguridad deben implementarse no solo en el entorno de producción, sino
también dentro de nuestra solución de copia de seguridad.

El cifrado de datos transparente (TDE) cifra los datos dentro de los archivos físicos de la base de datos, los
"datos en reposo". Sin el certificado de cifrado original y la clave maestra, los datos no se pueden leer
cuando se accede a la unidad o se roban los medios físicos.

Ejemplo ilustrativo
Crear una nueva base de datos. Llamarla "BD_BAK". En la base de datos crear una tabla de ejemplo para
guardar datos ficticios que son necesarios para demostrar el proceso de copia de seguridad. Para lo
anterior, se crea un procedimiento almacenado para generar los datos de ejemplo.

Script
-- create a new database for this example
CREATE DATABASE BD_BAK;
GO
USE BD_BAK;
GO
-- insert some data
CREATE TABLE SQLShackTable (
ID int IDENTITY(1,1000) PRIMARY KEY NOT NULL,
value int
);
GO
CREATE PROCEDURE InsertSQLShackTable
AS
DECLARE @i int = 1
WHILE @i <100
BEGIN
INSERT SQLShackTable (value) VALUES (@i)
Set @i +=1
END
GO
EXECUTE InsertSQLShackTable;
GO
SELECT * FROM SQLShackTable;
GO

Resultado

Generar clave maestra


Para encriptar bases de datos y usar certificados primero se debe crear una clave maestra- A continuación,
se crea una clave maestra y el certificado en nuestro servidor.

Script:
USE MASTER;
GO
-- create master key
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '123456';
GO

Resultado

Creación del certificado


Un certificado es un objeto de seguridad firmado digitalmente que contiene una clave que puede ser
usada externamente (para por ejemplo restaurar una copia de seguridad encriptada)

Script:
CREATE CERTIFICATE SQLShackDBCert
WITH SUBJECT = 'SQLShackDB Backup Certificate';
GO

Resultado

Exportación de claves y certificados

Ahora proceda a exportar las claves y certificados


-- Backup the Database Master Key
BACKUP MASTER KEY
TO FILE = 'D:\SQL2019_DMK.key'
ENCRYPTION BY PASSWORD = '123456' ;
GO

-- Backup the Database Certificate


BACKUP CERTIFICATE SQLShackDBCert
TO FILE = 'C:\Backups\SQL2017_SQLShackDBCert.cer'
WITH PRIVATE KEY
(
FILE = 'C:\Backups\SQL2017_CertificateKey.key', ENCRYPTION BY PASSWORD = '123456'
);
GO

Backup de bases de datos

A continuación, se realiza una copia de respaldo de la base de datos BD_BAK con los protocolos de cifrado
habilitado usando AES_256.

Nota: El cifrado AES_256 es un algoritmo de cifrado muy fuerte y recomendado. Vamos a cifrar esta copia
de seguridad con el certificado de servidor que acabamos de crear.

Script
-- backup the database with encryption
BACKUP DATABASE BD_BAK
TO DISK = 'C:\Backups\BD_BAK.bak'
WITH ENCRYPTION (ALGORITHM = AES_256, SERVER CERTIFICATE = SQLShackDBCert)

Resultado

Finalmente todo se debe ver así

Pruebe con restaurar la base de datos en otro equipo


RESTORE DATABASE [BD_BAK]
FROM DISK = 'C:\Backups\BD_BAK.bak' – UBICACIÓN DE LA COPIA DE SEGUIRDAD

Luego pruebe con restaurar la base de datos usando la clave maestra y el certificado de seguridad.

Nota: es necesario crear el certificado en cada instancia en la que pretendemos restaurar la base de datos.
Esto se realiza copiando las copias de seguridad que se generaron anteriormente, a una ubicación (otro
equipo). También debe crear una clave maestra de base de datos en la nueva instancia si no existe.

El siguiente SCRIPT muestra cómo crear el certificado a partir de un archivo en la nueva instancia

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '123456'


GO
CREATE CERTIFICATE DB_Encrypt_Cert
FROM FILE = 'C:\Backups\SQL2017_SQLShackDBCert.cer'
WITH PRIVATE KEY(
FILE = 'C:\Backups\SQL2017_CertificateKey.key',
DECRYPTION BY PASSWORD = '123456'
)
GO
RESTORE DATABASE [BD_BAK]
FROM DISK = 'C:\Backups\BD_BAK.bak'

Si ya existe el certificado pueden usar este script para borrarlo

USE Master;
go
drop certificate DB_Encrypt_Cert
go
drop master key
go

Ejercicio propuesto 1
Realizar todo lo anterior con otra base de datos que usted elija (es decir, una copia de seguridad encriptada y restaurarla en
otro equipo).

Ejercicio propuesto 2
Realizar todo lo anterior con una copia de la base de datos del proyecto formativo.

Você também pode gostar