Script de paso a paso de configuración de Secure Enclaves
1. Configure the HGS computer
https://docs.microsoft.com/es-es/sql/relational-databases/security/tutorial-
getting-started-with-always-encrypted-enclaves?view=sqlallproducts-allversions
1. Inicie sesión en el equipo HGS como administrador (administrador local), abra
una consola de Windows PowerShell con privilegios y agregue el rol del servicio
de protección de host ejecutando el comando siguiente:
Install-WindowsFeature -Name HostGuardianServiceRole -IncludeManagementTools
-Restart
2. Una vez reiniciado el equipo HGS, inicie sesión de nuevo con su cuenta de
administrador, abra una consola de Windows PowerShell con privilegios y ejecute
los comandos siguientes para instalar el servicio de protección de host y
configurar su dominio. La contraseña que especifique aquí solo se aplicará a la
contraseña del modo de reparación de servicios del directorio de Active
Directory, pero no cambiará su contraseñas de inicio de sesión en la cuenta de
administrador. Puede proporcionar el nombre de dominio que quiera para
HgsDomainName.
$adminPassword = ConvertTo-SecureString -AsPlainText 'Pa$$w0rd' -Force
Install-HgsServer -HgsDomainName 'tcm.local' -SafeModeAdministratorPassword
$adminPassword -Restart
3. Después de que el equipo se reinicie de nuevo, inicie sesión con su cuenta de
administrador (que ahora también es un administrador de dominio), abra una
consola de Windows PowerShell con privilegios y configure la atestación de la
clave de host para la instancia HGS.
Initialize-HgsAttestation -HgsServiceName 'hgs' -TrustHostKey
4. Ejecute el comando siguiente para obtener la dirección IP del equipo HGS.
Guarde esta dirección IP para los pasos posteriores.
Get-NetIPAddress
192.168.80.200
*******************************
Paso 2: Configurar el equipo con SQL Server como un host protegido
*******************************
1. Inicie sesión en el equipo de SQL Server como administrador, abra una consola
de Windows PowerShell con privilegios elevados y recupere el nombre de su equipo
mediante el acceso a la variable computername.
$env:computername
2. Instale la característica de host protegido, que también instala Hyper-V (si
aún no está instalada).
Enable-WindowsOptionalFeature -Online -FeatureName HostGuardian -All
3. Reinicie el equipo con SQL Server cuando se le pida para completar la
instalación de Hyper-V.
Restart-Computer
4. Vuelva a iniciar sesión en el equipo con SQL Server como un administrador,
abra una consola de Windows PowerShell con privilegios, genere una clave de host
única y exporte la clave pública resultante a un archivo.
2. Set-HgsClientHostKey
Get-HgsClientHostKey -Path $HOMEDesktophostkey.cer
5. Copie manualmente el archivo de clave de host, generado en el paso anterior,
en la m quina HGS. En las instrucciones siguientes se presupone que el nombre�
de archivo es hostkey.cer y que lo va a copiar en el escritorio de la m quina�
HGS.
6. En el equipo HGS, abra una consola de Windows PowerShell con privilegios y
registre la clave de host del equipo con SQL Server con HGS:
Add-HgsAttestationHostKey -Name SQL2019 -Path $HOMEDesktophostkey.cer
7. En el equipo con SQL Server, ejecute el siguiente comando en una consola de
Windows PowerShell con privilegios para indicar al equipo con SQL Server d nde�
debe hacer la atestaci n. Aseg rese de que especifica la direcci n IP o el� � �
nombre de DNS del equipo HGS en ambas ubicaciones de direcci n.�
# use http, and not https
Set-HgsClientConfiguration -AttestationServerUrl
http://192.168.80.200/Attestation -KeyProtectionServerUrl
http://192.168.80.200/KeyProtection/
El resultado del comando anterior debe mostrar que el estado de la atestaci n�
es correcto.
Si se produce un error HostUnreachable, significa que el equipo con SQL Server
no puede comunicarse con HGS. Aseg rese de que se puede hacer ping al equipo�
HGS.
Un error UnauthorizedHost indica que la clave p blica no se ha registrado con�
el servidor HGS. Repita los pasos 5 y 6 para resolver el error.
Si todo lo dem s falla, ejecute Clear-HgsClientHostKey y repita los pasos del 4�
al 7.
******************************************
Paso 3: Configurar Always Encrypted con enclaves seguros en SQL Server
******************************************
1. En este paso, deber habilitar la funcionalidad de Always Encrypted usando�
enclaves en su instancia de SQL Server.
2. Abra SSMS, con ctese a la instancia de SQL Server como sysadmin y abra una�
nueva ventana de consulta.
3. Establezca el tipo de enclave seguro para la seguridad basada en la
virtualizaci n (VBS).�
EXEC sys.sp_configure 'column encryption enclave type', 1;
RECONFIGURE;
4. Reinicie su instancia de SQL Server para que se aplique el cambio anterior.
Puede reiniciar la instancia en SSMS haciendo clic con el bot n derecho en ella�
en el Explorador de objetos y seleccionando Reiniciar. Cuando se reinicie la
instancia, vuelva a conectarse a ella.
5. Confirme que el enclave seguro se ha cargado ejecutando la siguiente
3. consulta:
SELECT [name], [value], [value_in_use] FROM sys.configurations
WHERE [name] = 'column encryption enclave type';
6. Para habilitar los c lculos completos en columnas cifradas, ejecute la�
siguiente consulta
DBCC traceon(127,-1);
***********************************
Paso 4: Crear una base de datos de ejemplo
***********************************
CREATE DATABASE [ContosoHR];
USE [ContosoHR];
GO
CREATE TABLE [dbo].[Employees]
(
[EmployeeID] [int] IDENTITY(1,1) NOT NULL,
[SSN] [char](11) NOT NULL,
[FirstName] [nvarchar](50) NOT NULL,
[LastName] [nvarchar](50) NOT NULL,
[Salary] [money] NOT NULL
) ON [PRIMARY];
INSERT INTO [dbo].[Employees]
([SSN]
,[FirstName]
,[LastName]
,[Salary])
VALUES
('795-73-9838'
, N'Catherine'
, N'Abel'
, $31692);
INSERT INTO [dbo].[Employees]
([SSN]
,[FirstName]
,[LastName]
,[Salary])
VALUES
('990-00-6818'
, N'Kim'
, N'Abercrombie'
, $55415);
****************************************
Aprovisionar claves habilitadas para el enclave
****************************************
En este paso, crear una clave de columna maestra y una clave de cifrado de�
columna que admiten los c lculos de enclave.�
Con ctese a la base de datos mediante SSMS.�
En el Explorador de objetos, expanda su base de datos y vaya a Seguridad >
Claves de Always Encrypted.
Aprovisione una nueva clave maestra de columna habilitada para el enclave:
Haga clic con el bot n derecho en Claves de Always Encrypted y seleccione�
Nueva clave maestra de columna .�
Seleccione el nombre de clave maestra de columna: CMK1.
4. local) o Azure Key Vault.
Seleccione Permitir cálculos de enclave.
Si ha seleccionado Azure Key Vault, inicie sesión en Azure y seleccione su
almacén de claves. Para obtener más información sobre cómo crear un
almacén de claves para Always Encrypted, consulte Administrar sus
almacenes de claves desde Azure Portal.
Seleccione su certificado o su clave de Azure Key Vault si ya existe, o
bien haga clic en el botón Generar certificado para crear uno.
Seleccione Aceptar.
Permitir cálculos de enclave
Cree una nueva clave de cifrado de columnas habilitada para el enclave:
Haga clic con el botón derecho en Claves de Always Encrypted y seleccione
Nueva clave maestra de columna.
Escriba un nombre para la nueva clave de cifrado de columnas: CEK1.
En la lista desplegable Clave maestra de columna, seleccione la clave
maestra de columna que creó en los pasos anteriores.
Seleccione Aceptar.