Plan para Always Encrypted con enclaves seguros en SQL Server sin atestación

Se aplica a: SQL Server 2019 (15.x) y versiones posteriores: solo Windows

La configuración de Always Encrypted con enclaves seguros en SQL Server sin atestación proporciona una manera fácil de iniciarse con la característica. Sin embargo, cuando se usan enclaves seguros en un entorno de producción, tenga en cuenta el nivel de protección contra los administradores del sistema operativo se reduce sin atestación. Por ejemplo, si un administrador de sistema operativo malintencionado ha alterado la biblioteca de SQL Server que se ejecuta dentro del enclave, una aplicación cliente no podrá detectarla. Si le preocupan estos ataques, considere la posibilidad de configurar la atestación con el servicio de protección de host. Para obtener más información, consulte Planeamiento de la atestación del servicio de protección de host.

En SQL Server, Always Encrypted con enclaves seguros usa enclaves con seguridad basada en virtualización (VBS) (también conocidos como modo seguro virtual o enclaves de VSM), es una tecnología basada en software que depende del hipervisor de Windows y no requiere ningún hardware especial.

Nota:

Cuando SQL Server se implementa en una máquina virtual, los enclaves de VBS ayudan a proteger los datos frente a ataques dentro de la máquina virtual. Sin embargo, no proporcionan protección frente a ataques mediante cuentas de sistema con privilegios que se originan en el host. Por ejemplo, un volcado de memoria de la máquina virtual generada en la máquina host puede contener la memoria del enclave.

Requisitos previos

Los equipos que ejecutan SQL Server deben cumplir los requisitos para instalar SQL Server y los requisitos de hardware de Hyper-V.

Estos requisitos incluyen:

  • SQL Server 2019 (15.x) o posterior

  • Windows 10 o posterior, o Windows Server 2019 o posterior.

  • Compatibilidad de CPU con tecnologías de virtualización:

    • Intel VT-x con tablas de página extendida.
    • AMD-V con indexación de virtualización rápida.
    • Si ejecuta SQL Server en una máquina virtual:
      • En Azure, use un tamaño de VM de generación 2 (recomendado) o un tamaño de VM de generación 1 con la virtualización anidada habilitada. Compruebe la documentación de tamaños de VM individuales para determinar qué tamaños de VM de generación 1 admiten la virtualización anidada.
      • En Hyper-V 2016 o versiones posteriores (fuera de Azure), asegúrese de que la máquina virtual es una máquina virtual de generación 2 (recomendada) o una máquina virtual de generación 1 con la virtualización anidada habilitada. Para obtener más información, consulte ¿Debería crear una máquina virtual de generación 1 o 2 en Hyper-V? y Configuración de la virtualización anidada.
      • En VMware vSphere 6.7 o posterior, habilite la compatibilidad con la seguridad basada en virtualización en la máquina virtual, como se describe en la documentación de VMware.
      • Es posible que otros hipervisores y nubes públicas admitan funciones de virtualización anidada que también permitan Always Encrypted con enclaves de VBS. Consulte la documentación de la solución de virtualización para obtener instrucciones relativas a la compatibilidad y configuración.
  • La seguridad basada en virtualización (VBS) debe estar habilitada y en ejecución.

Requisitos de herramientas

Requisitos del controlador de cliente

Para obtener información sobre las versiones del controlador cliente que admiten el uso de enclaves seguros sin atestación, consulte Desarrollo de aplicaciones con Always Encrypted con enclaves seguros.

Comprobación de que VBS se está ejecutando

Nota:

Este paso lo debe realizar el administrador del equipo con SQL Server.

Para comprobar si se está ejecutando VBS, abra la herramienta de información del sistema mediante la ejecución de msinfo32.exe y busque los elementos Virtualization-based security hacia la parte inferior del Resumen del sistema.

Screenshot of System Information showing virtualization-based security status and configuration.

El primer elemento que se va a comprobar es Virtualization-based security, que puede tener los tres valores siguientes:

  • Running significa que la VBS está bien configurada y se ha podido iniciar correctamente.
  • Enabled but not running significa 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 enabled significa que VBS no está configurada para ejecutarse.

Habilitación de VBS

Si VBS no está habilitada, ejecute el siguiente comando en una consola de PowerShell con privilegios elevados para habilitarla.

Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard -Name EnableVirtualizationBasedSecurity -Value 1

Después de cambiar el registro, reinicie el equipo de SQL Server y compruebe si VBS se está ejecutando de nuevo.

Para ver otras formas de habilitar VBS, consulte Habilitación de la protección basada en virtualización de la integridad del código.

Ejecute VBS si no se está ejecutando

Si la VBS está habilitada pero 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. 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.
  • Se recomienda Secure Boot, pero no es necesario. 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.
  • Se recomienda DMA Protection, pero no es necesario. 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 o 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 protección de DMA y tendrá que eliminar el requisito de ejecución de la VBS.

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 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 1

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.

Pasos siguientes