Compartir vía


Funcionamiento de SQL Server habilitado para Azure Arc con privilegios mínimos

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.

Para configurar opcionalmente el servicio para que se ejecute con privilegios mínimos, siga los pasos descritos en este artículo. Actualmente, el servicio no se ejecuta automáticamente 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.

Nota:

Los servidores existentes con la extensión de la versión de noviembre de 2024 o posterior tendrán aplicada automáticamente la configuración de privilegios mínimos. Esta aplicación se realizará gradualmente.

Para evitar la aplicación automática de privilegios mínimos, bloquee las actualizaciones de extensión a la versión de noviembre de 2024.

Después de configurar el servicio de extensión del agente para que se ejecute con privilegios mínimos, usa la cuenta de servicio NT Service\SQLServerExtension.

La cuenta NT Service\SQLServerExtension es una cuenta de servicio de Windows local:

  • Creada y administrada por la extensión de Azure para SQL Server cuando está habilitada la opción con privilegios mínimos.
  • Se conceden los permisos y privilegios mínimos necesarios para ejecutar la extensión de Azure para el servicio SQL Server en el sistema operativo Windows. Solo tiene acceso a carpetas y directorios usados para leer y almacenar registros de configuración o escritura.
  • Se concede permiso para conectarse y consultar en SQL Server con un nuevo inicio de sesión específico para esa cuenta de servicio que tenga los permisos mínimos necesarios. Los permisos mínimos dependen de las características habilitadas.
  • Se actualiza cuando los permisos ya no son necesarios. Por ejemplo, los permisos se revocan al deshabilitar una característica, deshabilitar la configuración con privilegios mínimos o desinstalar la extensión de Azure para SQL Server. La revocación garantiza que no permanezcan permisos después de que ya no sean necesarios.

Requisitos previos

En esta sección se identifican los requisitos y las herramientas del sistema que necesita para completar el ejemplo de este artículo.

Requisitos del sistema

La configuración con privilegios mínimos requiere:

  • Windows Server 2012 o superior
  • SQL Server 2012 o posterior
  • La cuenta de servicio de SQL Server debe ser miembro del rol del servidor fijo sysadmin
  • Todas las bases de datos deben estar en línea y se deben poder actualizar

La configuración con privilegios mínimos no se admite actualmente en Linux.

Otros requisitos, como se muestra en Requisitos previos: SQL Server habilitado por Azure Arc se siguen aplicando.

Herramientas

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

Habilitar privilegios mínimos

  1. Inicio de 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 completar esta tarea, ejecute el siguiente comando con valores actualizados 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 los servicios de Windows, busque el servicio de extensión de Microsoft SQL Server. Compruebe que el servicio se ejecuta como la cuenta de servicio NT Service\SqlServerExtension. 

  2. Abra el programador de tareas en el servidor y compruebe que se ha creado una tarea controlada por eventos con el nombre SqlServerExtensionPermissionProvider en Microsoft\SqlServerExtension.

    Nota:

    Antes de la versión de julio de 2024, SqlServerExtensionPermissionProvider es una tarea programada. Se ejecuta cada hora.

    Abra el programador de tareas en el servidor y compruebe que se crea una tarea programada con el nombre SqlServerExtensionPermissionProvider en Microsoft\SqlServerExtension.

  3. Abra SQL Server Management Studio y compruebe el inicio de sesión denominado NT Service\SqlServerExtension. Compruebe que la cuenta tiene asignados estos permisos:

    • Conectar SQL
    • Ver estado de base de datos
    • Ver el estado del servidor
  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");
    

    Para comprobar los permisos de nivel de base de datos, reemplace <database name> por 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");