Operar SQL Server administrado mediante Azure Arc con el menor privilegio posible

Se aplica a:SQL Server

El principio de seguridad de la información de privilegios mínimos establece que a los usuarios y las aplicaciones se les debe conceder acceso solo a los datos y las operaciones que necesitan. Con SQL Server habilitado por Azure Arc, puede ejecutar el servicio de extensión del agente con privilegios mínimos. En este artículo se explica cómo ejecutar el servicio de extensión del agente con privilegios mínimos.

Configurar las cuentas de servicio de Windows y los permisos para la extensión de Azure para SQL Server describe los permisos con privilegios mínimos para el servicio de extensión del agente.

Mínimo privilegio habilitado por defecto

El privilegio mínimo está activado por defecto en las siguientes versiones de Azure Extension for SQL Server:

  • Versión 1.1.3453.436
  • Versión 1.1.3518.465 y versiones posteriores

El privilegio mínimo no está activado por defecto en versiones anteriores a 1.1.3453.436 ni en las versiones 1.1.3464.439, 1.1.3494.451 y 1.1.3500.453. Para estas versiones, sigue los pasos de este artículo para habilitar manualmente el privilegio mínimo.

Nota:

Para servidores existentes que usan 1.1.2859.223 o versiones posteriores, cuando se habilita la actualización automática, la configuración de menor privilegio se aplica eventualmente como parte de las actualizaciones automáticas. Para evitar la aplicación automática de la configuración de privilegios mínimos, bloquee las actualizaciones de la extensión después de 1.1.2859.223.

Cuando el privilegio mínimo está habilitado, la extensión de Azure para SQL Server crea y gestiona NT SERVICE\SqlServerExtension automáticamente como una cuenta local de servicio de Windows y inicio de sesión en SQL Server:

  • La extensión concede a la cuenta solo los permisos de Windows necesarios para leer y almacenar configuraciones y escribir registros.
  • La extensión otorga al inicio de sesión los permisos mínimos de SQL Server requeridos por las funciones habilitadas.
  • La extensión revoca permisos cuando ya no son necesarios, como cuando desactivas una función.
  • La extensión elimina la cuenta cuando desinstalas la extensión de Azure para SQL Server o desactivas el privilegio mínimo.

Requisitos previos

Esta sección identifica los requisitos del sistema y las herramientas que necesitas para habilitar o desactivar el privilegio mínimo.

Requisitos del sistema

Configurar el privilegio mínimo requiere:

  • Windows Server 2016 o versiones posteriores.
  • SQL Server 2014 (12.x) o versiones posteriores.
  • La cuenta de servicio SQL Server debe ser miembro del rol fijo de servidor sysadmin.
  • Todas las bases de datos deben estar en línea y actualizarse.

Actualmente, el privilegio mínimo no está soportado en Linux.

Herramientas

Necesitará las siguientes herramientas para completar los pasos de este artículo:

Activar o desactivar el privilegio mínimo

  1. Inicie sesión con la CLI de Azure.

    az login
    
  2. Compruebe la versión de la extensión arcdata.

    az extension list -o table
    

    Si los resultados incluyen una versión compatible de arcdata, vaya al paso siguiente.

    Si fuera necesario, instale o actualice la extensión de la CLI de Azure arcdata.

    Para instalar la extensión:

    az extension add --name arcdata
    

    Para actualizar la extensión:

    az extension update --name arcdata
    
  3. Habilite el privilegio mínimo con la CLI de Azure.

    Para habilitar el privilegio mínimo, establezca la marca de característica LeastPrivilege en true. Para desactivar, establece la bandera de característica en false. Para completar esta tarea, ejecuta el siguiente comando con tus valores para <resource-group> y <machine-name>.

    az sql server-arc extension feature-flag set --name LeastPrivilege --enable true --resource-group <resource-group> --machine-name <machine-name>
    

    Por ejemplo, el siguiente comando habilita los privilegios mínimos para un servidor denominado myserver en un grupo de recursos denominado myrg:

    az sql server-arc extension feature-flag set --name LeastPrivilege --enable true --resource-group myrg --machine-name myserver
    

Verificar la configuración de privilegios mínimos

Para comprobar que SQL Server habilitado para Azure Arc está configurado para ejecutarse con privilegios mínimos:

  1. En Servicios, localice Microsoft SQL Server Extension Service. Verifique que el servicio se ejecute con la cuenta de servicio NT SERVICE\SqlServerExtension.

  2. Abre el programador de tareas en el servidor. Verifica que existe una tarea impulsada por eventos llamada SqlServerExtensionPermissionProvider bajo Microsoft\SqlServerExtension.

  3. Abra SQL Server Management Studio y compruebe el inicio de sesión denominado NT SERVICE\SqlServerExtension. Verifica que la cuenta tenga asignados estos permisos base:

    • CONNECT SQL
    • VIEW DATABASE STATE
    • VIEW SERVER STATE
  4. Valide los permisos con las siguientes consultas:

    Para comprobar los permisos de nivel de servidor, ejecute la consulta siguiente:

    EXECUTE AS LOGIN = 'NT SERVICE\SqlServerExtension';
    
    SELECT *
    FROM fn_my_permissions(NULL, 'SERVER');
    
    REVERT;
    

    Para comprobar los permisos de nivel de base de datos, reemplace por <database-name> el nombre de una de las bases de datos y ejecute la consulta siguiente:

    EXECUTE AS LOGIN = 'NT SERVICE\SqlServerExtension';
    
    USE [<database-name>];
    SELECT * FROM fn_my_permissions(NULL, 'database');
    
    REVERT;
    

Opcional: Gestionar la cuenta de servicio del motor de base de datos de SQL Server

Utiliza la configuración predeterminada de cuentas de servicio para la mayoría de los entornos. Utilice el siguiente procedimiento solo si necesita quitar la cuenta de servicio del motor de base de datos de SQL Server del rol fijo de servidor sysadmin entre operaciones de extensión.

Para usar el modo de menor privilegio, la cuenta del servicio del motor de base de datos de SQL Server debe ser miembro del rol fijo de servidor administrador del sistema en cada instancia de SQL Server. Esta membresía permite al sistema conceder o revocar permisos automáticamente. Por defecto, la cuenta de servicio del Motor de base de datos de SQL Server es miembro del rol fijo de servidor sysadmin.

La extensión de Azure para SQL Server ejecuta un proceso temporal llamado Deployer.exe como NT AUTHORITY\SYSTEM cuando:

  • Puedes activar o desactivar funciones
  • Añades o eliminas instancias de SQL Server
  • Instalas o actualizas la extensión

El componente Deployer.exe suplanta la cuenta de servicio de SQL Server cuando se conecta a SQL Server. Una vez conectado, agrega o quita permisos en los roles de servidor y base de datos en función de las características habilitadas o deshabilitadas. Este proceso garantiza que la extensión de Azure para SQL Server use los privilegios mínimos necesarios.

Si desea administrar este proceso con más control, de modo que la cuenta de servicio de SQL Server no sea miembro del rol de servidor fijo sysadmin todo el tiempo, siga estos pasos:

  1. Antes de instalar o actualizar la extensión, activar o desactivar una función, o añadir o eliminar una instancia de SQL Server, añade temporalmente la cuenta del servicio del motor de base de datos de SQL Server al rol de servidor fijo de sysadmin.
  2. Permitir que Deployer.exe se ejecuten al menos una vez para que se establezcan los permisos.
  3. Quite la cuenta de servicio SQL Server del rol fijo de servidor sysadmin.

Repite este procedimiento cada vez que instales o actualices la extensión, habilites o desactives una función, o añadas o elimines una instancia de SQL Server. Este procedimiento permite Deployer.exe conceder los menores privilegios requeridos.

Como debes repetir este procedimiento en cada actualización de extensión, considera desactivar las actualizaciones automáticas. Luego puedes usar un script que realice estos pasos y actualice la extensión.

Importante

La extensión Azure para SQL Server Deployer.exe requiere NT AUTHORITY\SYSTEM para poder conectarse a SQL Server, con el permiso CONNECT SQL, en ambos modos standard y least privilege. Este requisito existe porque Deployer.exe siempre se ejecuta bajo la cuenta LocalSystem, independientemente de la cuenta de servicio que utilice la extensión después del aprovisionamiento.

Si NT AUTHORITY\SYSTEM no se puede conectar a SQL Server, Deployer.exe no puede crear el inicio de sesión de NT SERVICE\SqlServerExtension ni conceder los permisos necesarios. Antes de habilitar el modo de privilegios mínimos, compruebe que NT AUTHORITY\SYSTEM tenga un inicio de sesión de SQL Server activo con el permiso CONNECT SQL. Para verificar, consulta Requisitos previos.

Si la cuenta del servicio del motor de base de datos de SQL Server no tiene el rol fijo de servidor de administrador del sistema, no se pueden conceder permisos justo a tiempo.

Para detalles sobre cuándo se utilizan estos permisos, consulte Configurar cuentas de servicio Windows y permisos para Azure Extension for SQL Server.