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 2019 (15.x) y versiones posteriores en Windows
En este artículo se describe cómo registrar equipos SQL Server para certificarlos con el Servicio de protección de host (HGS).
Nota:
El proceso de registro de un servidor SQL Server en HGS requiere un esfuerzo conjunto del administrador de HGS y del administrador de equipo con SQL Server. Vea Roles y responsabilidades al configurar la atestación con HGS.
Antes de empezar, asegúrese de que ha implementado al menos un equipo de HGS y ha configurado el servicio de atestación de HGS. Para más información, vea Implementación del Servicio de protección de host para SQL Server.
Paso 1: Instalación de los componentes de cliente de atestación
Nota:
Este paso lo debe realizar el administrador del equipo con SQL Server.
Para permitir que un cliente SQL compruebe que se está comunicando con un equipo que ejecuta SQL Server y es de confianza, el equipo que ejecuta SQL Server debe completar correctamente la atestación con Host Guardian Service. El proceso de atestación se administra mediante un componente de Windows opcional denominado cliente del HGS. En los pasos siguientes verá cómo instalar este componente y comenzar a realizar la atestación.
Asegúrese de que el equipo con SQL Server cumple los requisitos previos indicados en el documento de planificación de HGS.
Ejecute el siguiente comando en una consola de PowerShell con privilegios de administrador para instalar la característica de compatibilidad de Hyper-V para Host Guardian, que contiene el cliente HGS y los componentes de atestación.
Enable-WindowsOptionalFeature -Online -FeatureName HostGuardian -AllReinicie el equipo para completar la instalación.
Paso 2: Verificación del funcionamiento de la seguridad basada en virtualización
Nota:
Este paso lo debe realizar el administrador del equipo con SQL Server.
Al instalar la característica de compatibilidad con Hyper-V de Host Guardian, se configura y habilita automáticamente la seguridad basada en virtualización (VBS).
Los enclaves para SQL Server Always Encrypted se encuentran protegidos y se ejecutan dentro del entorno SBV.
Puede que la VBS no se inicie si el equipo no tiene un dispositivo IOMMU instalado y habilitado.
Para comprobar si VBS está en funcionamiento, abre la herramienta de Información del Sistema ejecutando msinfo32.exe y busca los Virtualization-based security elementos que aparecen al final del Resumen del Sistema.
El primer elemento que se va a comprobar es Virtualization-based security, que puede tener los tres valores siguientes:
-
Runningsignifica que la VBS está bien configurada y se ha podido iniciar correctamente. Si el equipo muestra este estado, puede ir directamente al paso 3. -
Enabled but not runningsignifica que la VBS está configurada para ejecutarse, pero el hardware no tiene los requisitos de seguridad mínimos para ejecutar la VBS. Es posible que tenga que cambiar la configuración del hardware en la BIOS o UEFI para habilitar características opcionales del procesador como IOMMU o, si el hardware realmente no admite las características necesarias, puede que necesite reducir los requisitos de seguridad de la VBS. Para obtener más información, siga leyendo esta sección. -
Not enabledsignifica que VBS no está configurada para ejecutarse. La característica de compatibilidad con Hyper-V de Host Guardian habilita automáticamente VBS, por lo que se recomienda repetir el paso 1 si ve este estado.
Si la VBS no se está ejecutando en el equipo, compruebe las propiedades de Virtualization-based security. Compare los valores del elemento Required Security Properties con los valores del elemento Available Security Properties.
Las propiedades necesarias deben ser iguales a las propiedades de seguridad disponibles, o un subconjunto de ellas, para que se ejecute la VBS.
En el contexto de la certificación de enclaves de SQL Server, las propiedades de seguridad tienen la siguiente importancia:
- Siempre se requiere
Base virtualization support, ya que representa las características de hardware mínimas necesarias para ejecutar un hipervisor. -
Secure Bootse recomienda pero no es obligatorio para SQL Server Always Encrypted. El arranque seguro protege contra rootkits, ya que requiere que se ejecute un cargador de arranque firmado por Microsoft inmediatamente después de que se complete la inicialización de UEFI. Si usa la atestación de módulo de plataforma segura (TPM), se medirá y aplicará la habilitación del arranque seguro independientemente de si la VBS está configurada para requerir un arranque seguro. -
DMA Protectionse recomienda pero no es obligatorio para SQL Server Always Encrypted. La protección de DMA usa IOMMU para proteger la memoria de la VBS y del enclave ante ataques de acceso directo a la memoria. En un entorno de producción, siempre debe usar equipos con protección de DMA. En un entorno de desarrollo y pruebas, se admite eliminar el requisito de protección de DMA. Si la instancia de SQL Server está virtualizada, lo más probable es que no tenga disponible la protección frente a DMA y tendrá que eliminar el requisito para que se ejecute VBS. Revise el modelo de confianza para obtener información sobre las garantías de seguridad reducidas al ejecutarse en una máquina virtual.
Antes de reducir las características de seguridad necesarias de VBS, consulte al proveedor de servicios en la nube o OEM si existe una manera de habilitar los requisitos de plataforma que faltan en UEFI o BIOS (por ejemplo, para habilitar el arranque seguro, Intel VT-d o AMD IOV).
Para cambiar las características de seguridad de la plataforma necesarias para la VBS, ejecute el siguiente comando en una consola de PowerShell con privilegios elevados:
# Value 0 = No security features required
# Value 1 = Only Secure Boot is required
# Value 2 = Only DMA protection is required (default configuration)
# Value 3 = Both Secure Boot and DMA protection are required
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard -Name RequirePlatformSecurityFeatures -Value 0
Después de cambiar el registro, reinicie el equipo de SQL Server y compruebe si VBS se está ejecutando de nuevo.
Si el equipo está administrado por su empresa, la directiva de grupo o Microsoft Endpoint Manager puede invalidar cualquier cambio que se realice en estas claves del registro después de reiniciar. Contacte con el departamento de soporte técnico de TI para ver si implementan directivas que administran su configuración de VBS.
Paso 3: Configurar la URL de atestación
Nota:
Este paso lo debe realizar el administrador del equipo con SQL Server.
A continuación, configurará el equipo con SQL Server con la dirección URL del servicio de atestación de HGS, que ha obtenido del administrador de HGS.
En una consola de PowerShell con privilegios elevados, actualice y ejecute los siguientes comandos para configurar la URL de atestación.
- Reemplace
hgs.bastion.localpor el nombre del clúster HGS. - Puede ejecutar
Get-HgsServeren cualquier equipo HGS para obtener el nombre del clúster. - La URL de atestación siempre debe terminar con
/Attestation. - SQL Server no utiliza las funciones de protección de claves de HGS, así que proporciona cualquier URL ficticia como
http://localhost-KeyProtectionServerUrl
Set-HgsClientConfiguration -AttestationServerUrl "https://hgs.bastion.local/Attestation" -KeyProtectionServerUrl "http://localhost"
A menos que hayas registrado este equipo con HGS antes, el comando notifica un error de atestación. Este resultado es normal.
El campo AttestationMode de la salida del cmdlet indica qué modo de atestación usa HGS.
Vaya al paso 4A para registrar el equipo en modo TPM o al paso 4B para registrar el equipo en modo de clave de host.
Paso 4A: Registro de un equipo en modo TPM
Nota:
Este paso lo realizan conjuntamente el administrador del equipo con SQL Server y el administrador de HGS. Vea las notas siguientes para obtener más información.
Preparación
Nota:
Esta acción la debe realizar el administrador del equipo con SQL Server.
En este paso, recopilará información sobre el estado de TPM del equipo y lo registrará con HGS.
Si el servicio de atestación de HGS está configurado para usar el modo de clave de host, pase directamente a Paso 4B en su lugar.
Antes de empezar a recopilar las mediciones de TPM, asegúrese de trabajar con una configuración fiable y verificada del equipo con SQL Server. El equipo debe tener instalado todo el hardware necesario y aplicar las últimas actualizaciones de firmware y software. HGS compara los equipos con esta línea base cuando se someten a atestación, por lo que es importante que estén en el estado más seguro y previsto posible al recopilar las mediciones del TPM.
Hay tres archivos de datos recopilados para la atestación de TPM, algunos de los cuales se pueden reutilizar si tiene equipos configurados de forma idéntica.
| Artefacto de atestación | ¿Qué mide? | Unicidad |
|---|---|---|
| Identificador de plataforma | La clave pública de validación del TPM del equipo y el certificado de la clave de validación del fabricante del TPM. | 1 para cada equipo |
| Base de referencia de TPM | Los registros de control de plataforma (PCR) del TPM que miden el firmware y la configuración del sistema operativo cargados durante el proceso de arranque. Algunos ejemplos son el estado de arranque seguro y si los volcados de memoria están cifrados. | Una base de referencia por configuración única de equipo (si el hardware y el software son idénticos, pueden usar la misma base de referencia) |
| Directiva de integridad de código | La directiva de Windows Defender Application Control en la que confía para proteger los equipos | Uno por cada directiva de CI única implementada en los equipos. |
Puede configurar más de un artefacto de atestación en HGS para prestar asistencia a una flota mixta de hardware y software. HGS solo requiere que un equipo que realiza la atestación cumpla una directiva de cada categoría de directiva. Por ejemplo, si tiene tres bases de referencia de TPM registradas en HGS, las medidas del equipo pueden coincidir con cualquiera de esas bases de referencia para cumplir el requisito de la directiva.
Configuración de una directiva de integridad de código
Nota:
Los siguientes pasos se deben realizar por el administrador del equipo con SQL Server.
HGS requiere que todos los equipos que realicen la atestación en modo TPM tengan aplicada una directiva de Control de aplicaciones de Windows Defender (WDAC). Las directivas de integridad de código de WDAC restringen qué software puede ejecutarse en un equipo al comparar cada proceso que intenta ejecutar código con una lista de publicadores de confianza y hashes de archivos. En el caso de uso de SQL Server, los enclaves están protegidos por la seguridad basada en la virtualización y no se pueden modificar desde el sistema operativo del host, por lo que la rigurosidad de la directiva de WDAC no afecta a la seguridad de las consultas cifradas. Se recomienda implementar una directiva de modo auditoría en los equipos con SQL Server para cumplir el requisito de atestación sin imponer restricciones adicionales al sistema.
Si ya usa una directiva personalizada de integridad de código de WDAC en los equipos para reforzar la configuración del sistema operativo, puede pasar a Recopilar información de atestación de TPM.
Windows Server 2019, Windows 10 versión 1809 y los sistemas operativos posteriores disponen de directivas de ejemplo predefinidas. La directiva
AllowAllpermite la ejecución de cualquier software en el equipo sin restricciones. Para usar la directiva, conviértala a un formato binario que el sistema operativo y HGS entiendan. En una consola de PowerShell con privilegios elevados, ejecute los siguientes comandos para compilar la directivaAllowAll:# We are changing the policy to disable enforcement and user mode code protection before compiling $temppolicy = "$HOME\Desktop\allowall_edited.xml" Copy-Item -Path "$env:SystemRoot\schemas\CodeIntegrity\ExamplePolicies\AllowAll.xml" -Destination $temppolicy Set-RuleOption -FilePath $temppolicy -Option 0 -Delete Set-RuleOption -FilePath $temppolicy -Option 3 ConvertFrom-CIPolicy -XmlFilePath $temppolicy -BinaryFilePath "$HOME\Desktop\allowall_cipolicy.bin"Siga las instrucciones de la guía de implementación de Windows Defender Application Control para implementar el archivo
allowall_cipolicy.binen los equipos con SQL Server mediante la directiva de grupo. Para los equipos de un grupo de trabajo, siga el mismo proceso mediante el Editor de directivas de grupo local (gpedit.msc).Ejecute
gpupdate /forceen los equipos son SQL Server para configurar la nueva directiva de integridad de código y después reinicie los equipos para aplicar la directiva.
Recopilar información de atestación del TPM
Nota:
Los siguientes pasos se deben realizar por el administrador del equipo con SQL Server.
Repita los pasos siguientes para cada equipo con SQL Server en el que se vaya a realizar la atestación con HGS:
Con el equipo en un estado correcto conocido, ejecute los siguientes comandos en PowerShell para recopilar la información de atestación del TPM:
# Collects the TPM EKpub and EKcert $name = $env:computername $path = "$HOME\Desktop" (Get-PlatformIdentifier -Name $name).Save("$path\$name-EK.xml") # Collects the TPM baseline (current PCR values) Get-HgsAttestationBaselinePolicy -Path "$path\$name.tcglog" -SkipValidation # Collects the applied CI policy, if one exists Copy-Item -Path "$env:SystemRoot\System32\CodeIntegrity\SIPolicy.p7b" -Destination "$path\$name-CIpolicy.bin"Comparta los tres archivos de atestación con el administrador de HGS.
Registro del equipo SQL Server con HGS
Nota:
Los pasos siguientes los debe realizar el administrador de HGS.
Repita los pasos siguientes para cada equipo con SQL Server en el que se vaya a realizar la atestación con HGS:
Copie en el servidor HGS los archivos de atestación que obtuvo del administrador del equipo de SQL Server.
En el servidor HGS, ejecute los siguientes comandos en una consola PowerShell avanzada para registrar el equipo con SQL Server:
# TIP: REMEMBER TO CHANGE THE FILENAMES # Registers the unique TPM with HGS (required for every computer) Add-HgsAttestationTpmHost -Path "C:\temp\SQL01-EK.xml" # Registers the TPM baseline (required ONCE for each unique hardware and software configuration) Add-HgsAttestationTpmPolicy -Name "MyHWSoftwareConfig" -Path "C:\temp\SQL01.tcglog" # Registers the CI policy (required ONCE for each unique CI policy) Add-HgsAttestationCiPolicy -Name "AllowAll" -Path "C:\temp\SQL01-CIpolicy.bin"Sugerencia
Si se produce un error al intentar registrar el identificador de TPM único, asegúrese de que ha importado los certificados intermedios y raíz de TPM en el equipo HGS que está usando.
Además del identificador de plataforma, la base de referencia de TPM y la directiva de integridad de código, hay directivas integradas configuradas y aplicadas por HGS que es posible que deba cambiar. Estas directivas integradas se miden a partir de la base de referencia de TPM que se recopila del servidor y representan varias opciones de configuración de seguridad que deben habilitarse para proteger el equipo. Si tiene equipos en los que no haya una IOMMU para protegerlos de ataques DMA (por ejemplo, una máquina virtual), tendrá que deshabilitar la directiva IOMMU.
Para deshabilitar el requisito de IOMMU, ejecute el siguiente comando en el servidor HGS:
Disable-HgsAttestationPolicy Hgs_IommuEnabled
Nota:
Si deshabilita la directiva IOMMU, las IOMMU no serán necesarias para ningún equipo que realice atestación con HGS. No es posible desactivar la directiva IOMMU en un solo equipo.
Puede revisar la lista de hosts y directivas de TPM registrados con los siguientes comandos de PowerShell:
Get-HgsAttestationTpmHost
Get-HgsAttestationTpmPolicy
Paso 4B: Registro de un equipo en modo de clave de host
Nota:
Este paso lo realizan conjuntamente el administrador del equipo con SQL Server y el administrador de HGS. Vea las notas siguientes para obtener más información.
Este paso le guiará por el proceso de generar una clave única para el host y registrarla en HGS. Si el servicio de atestación de HGS está configurado para usar el modo TPM, siga las instrucciones del paso 4A.
Generar una clave para un equipo con SQL Server
Nota:
Esta tarea debe ser realizada conjuntamente por el administrador del equipo con SQL Server.
La atestación de la clave de host funciona generando un par de claves asimétricas en el equipo que ejecuta SQL Server y proporcionando a HGS la parte pública de ese par de claves.
Repita los pasos siguientes para cada equipo con SQL Server en el que se vaya a realizar la atestación con HGS:
Para generar el par de claves, ejecute el comando siguiente en una consola de PowerShell con privilegios elevados:
Set-HgsClientHostKey Get-HgsClientHostKey -Path "$HOME\Desktop\$env:computername-key.cer"Si ya ha creado una clave de host y quiere generar un nuevo par de claves, use los comandos siguientes:
Remove-HgsClientHostKey Set-HgsClientHostKey Get-HgsClientHostKey -Path "$HOME\Desktop\$env:computername-key.cer"Comparta el archivo de certificado con el administrador de HGS.
Registro del equipo SQL Server con HGS
Nota:
Los pasos siguientes los debe realizar el administrador de HGS.
Repita los pasos siguientes para cada equipo con SQL Server en el que se vaya a realizar la atestación con HGS:
Copie el archivo del certificado que obtuvo del administrador del equipo de SQL Server a un servidor HGS.
Ejecute el siguiente comando en una consola PowerShell avanzada para registrar el equipo con SQL Server:
Add-HgsAttestationHostKey -Name "YourComputerName" -Path "C:\temp\yourcomputername.cer"
Paso 5: Confirmar que el host puede realizar la atestación correctamente
Nota:
Este paso lo debe realizar el administrador del equipo con SQL Server.
Una vez que haya registrado el equipo de SQL Server con HGS (Paso 4A para el modo TPM, Paso 4B para el modo de clave de host), debe confirmar que puede realizar correctamente la atestación.
Puede comprobar la configuración del cliente de atestación de HGS y realizar un intento de atestación en cualquier momento con Get-HgsClientConfiguration.
La salida del comando será similar a esta:
PS C:\> Get-HgsClientConfiguration
IsHostGuarded : True
Mode : HostGuardianService
KeyProtectionServerUrl : http://localhost
AttestationServerUrl : http://hgs.bastion.local/Attestation
AttestationOperationMode : HostKey
AttestationStatus : Passed
AttestationSubstatus : NoInformation
FallbackKeyProtectionServerUrl :
FallbackAttestationServerUrl :
IsFallbackInUse : False
Los dos campos más importantes de la salida son AttestationStatus, que indica si el equipo ha pasado la atestación, y AttestationSubStatus, que explica en qué directivas se produjo el error del equipo en caso de error en la atestación del equipo.
A continuación se explican los valores más comunes que pueden aparecer en AttestationStatus:
AttestationStatus |
Explicación |
|---|---|
| Expirada | El host superó la atestación anteriormente, pero el certificado de estado que se le emitió ha caducado. Asegúrese de que la hora del host y del HGS están sincronizadas. |
InsecureHostConfiguration |
El equipo no cumplía una o más directivas de atestación configuradas en el servidor HGS. Para obtener más información, vea AttestationSubStatus. |
| No configurado | El equipo no está configurado con una dirección URL de atestación. Configurar la URL de atestación |
| Aprobada | El equipo superó la atestación y es de confianza para ejecutar enclaves de SQL Server. |
TransientError |
No se ha podido realizar el intento de atestación debido a un error temporal. Este error suele significar que se ha producido un problema al contactar con HGS a través de la red. Compruebe la conexión de red y asegúrese de que el equipo pueda resolver el nombre del servicio HGS y redirigirlo. |
TpmError |
El dispositivo TPM del equipo ha detectado un error durante el intento de atestación. Consulte los registros de TPM para obtener más información. La eliminación del TPM puede resolver el problema, pero antes de hacerlo debe asegurarse de suspender BitLocker y otros servicios que dependan del TPM. |
UnauthorizedHost |
HGS no conoce la clave del host. Siga las instrucciones del paso 4B para registrar el equipo con HGS. |
Cuando AttestationStatus muestra InsecureHostConfiguration, el campo AttestationSubStatus se rellenará con uno o varios nombres de directivas que han fallado.
En la tabla siguiente se explican los valores más comunes y cómo corregirlos.
| AttestationSubStatus | Qué significa y qué hay que hacer |
|---|---|
| CodeIntegrityPolicy | La directiva de integridad de código del equipo no está registrada en el HGS o en estos momentos el equipo no está utilizando una directiva de integridad de código. Encontrará una guía en Configuración de una directiva de integridad de código. |
| DumpsEnabled | El equipo está configurado para permitir volcados de memoria, pero la directiva Hgs_DumpsEnabled no permite los volcados. Para continuar, deshabilite los volcados en este equipo o deshabilite la directiva Hgs_DumpsEnabled. |
| FullBoot | El equipo se ha reanudado de un estado de suspensión o hibernación, lo que provoca cambios en las mediciones del TPM. Reinicie el equipo para generar medidas de TPM limpias. |
| HibernaciónHabilitada | El equipo está configurado para permitir la hibernación con archivos de hibernación sin cifrar. Para resolver este problema, deshabilite la hibernación en el equipo. |
| HypervisorEnforcedCodeIntegrityPolicy | El equipo no está configurado para usar una directiva de integridad de código. Compruebe la Directiva de grupo o la Directiva de grupo local > Configuración del equipo > Plantillas administrativas > Sistema > Device Guard > Activar seguridad basada en virtualización > Protección de integridad de código basada en virtualización. Este elemento de directiva debe estar "Habilitado sin el bloqueo UEFI". |
| Iommu | Este equipo no tiene ningún dispositivo IOMMU habilitado. Si es un equipo físico, habilite IOMMU en el menú de configuración de UEFI. Si se trata de una máquina virtual y no tiene IOMMU disponible, ejecute Disable-HgsAttestationPolicy Hgs_IommuEnabled en el servidor de HGS. |
| SecureBoot | El arranque seguro no está habilitado en este equipo. Habilite el arranque seguro en el menú de configuración de UEFI para resolver este error. |
| VirtualSecureMode | La seguridad basada en la virtualización no se está ejecutando en este equipo. Siga las instrucciones del Paso 2: Compruebe que VBS se está ejecutando en el equipo. |