Compartir a través de


Roles de nivel de servidor

Se aplica a:SQL ServerAzure SQL Managed InstanceAnalytics Platform System (PDW)

SQL Server proporciona roles a nivel de servidor para ayudarle a administrar los permisos en un servidor. Estos roles son entidades de seguridad que agrupan otras entidades de seguridad. Los roles de nivel de servidor se aplican a todo el servidor en lo que respecta a su ámbito de permisos. (Losroles son como los grupos del sistema operativo Windows).

SQL Server 2019 (15.x) y versiones anteriores proporcionaron nueve roles fijos de servidor. Los permisos que se conceden a los roles fijos de servidor (a excepción de public) no se pueden modificar. A partir de SQL Server 2012 (11.x), puede crear roles del servidor definidas por el usuario y agregar permisos de nivel de servidor a los roles del servidor definidos por el usuario. SQL Server 2022 (16.x) incluye 10 roles de servidor adicionales diseñados específicamente con el principio de privilegios mínimos en mente, que tienen el prefijo ##MS_ y el sufijo ## para distinguirlos de otras entidades de seguridad normales, creadas por el usuario, y de roles de servidor personalizados. Esos nuevos roles contienen privilegios que se aplican a nivel de servidor, pero también se pueden heredar en bases de datos individuales (excepto el rol de servidor ##MS_LoginManager##).

Como sucede con las instancias locales de SQL Server, los permisos de servidor se organizan jerárquicamente. Los permisos que mantienen estos roles de nivel de servidor se pueden propagar a los permisos de base de datos. Para que los permisos sean eficazmente útiles a nivel de base de datos, un inicio de sesión debe ser miembro del rol de nivel de servidor ##MS_DatabaseConnector## (a partir de SQL Server 2022 (16.x)), que concede el permiso CONNECT para todas las bases de datos, o tener una cuenta de usuario en bases de datos individuales. Esto también se aplica a la base de datos master.

Considere el ejemplo siguiente: el rol de nivel de servidor ##MS_ServerStateReader## contiene el permiso VIEW SERVER STATE. Un inicio de sesión que sea miembro de este rol tiene una cuenta de usuario en las bases de datos master y WideWorldImporters. Este usuario también tiene el permiso VIEW DATABASE STATE en esas dos bases de datos por herencia.

Puede agregar entidades de seguridad a nivel de servidor (inicios de sesión de SQL Server, cuentas de Windows y grupos de Windows) en roles a nivel de servidor. Cada miembro de un rol fijo de servidor puede agregar otros inicios de sesión a ese mismo rol. Los miembros de roles del servidor definidos por el usuario no pueden agregar otras entidades de seguridad del servidor al rol.

Roles fijos de nivel de servidor

Nota:

Estos roles de nivel de servidor introducidos antes de SQL Server 2022 (16.x) y no están disponibles en Azure SQL Database o Azure Synapse Analytics. Hay roles de servidor de base de datos de Azure SQL especiales para la administración de permisos que son equivalentes a los roles a nivel de servidor presentados en SQL Server 2022 (16.x). Para más información sobre SQL Database, vea Control y concesión de acceso a bases de datos.

En la tabla siguiente se muestran los roles fijos de nivel de servidor y sus capacidades.

Rol fijo de nivel de servidor Descripción
sysadmin Los miembros del rol fijo de servidor sysadmin pueden realizar cualquier actividad en el servidor. Importante: no se pueden denegar permisos a los miembros de este rol.
serveradmin Los miembros del rol fijo de servidor serveradmin pueden cambiar opciones de configuración en el servidor y cerrar el servidor.
securityadmin Los miembros del rol fijo de servidor securityadmin administran los inicios de sesión y sus propiedades. Pueden administrar los permisos de nivel de servidor GRANT, DENY, y REVOKE. securityadmin también puede administrar los permisos de GRANT, DENY y REVOKE si tiene acceso a una base de datos. Además, securityadmin puede restablecer las contraseñas de los inicios de sesión en SQL Server.

IMPORTANTE: La capacidad de conceder acceso al motor de base de datos y configurar los permisos de usuario permite que el administrador de seguridad asigne la mayoría de los permisos de servidor. El rol securityadmin se debe tratar como equivalente al rol sysadmin . Como alternativa, a partir de SQL Server 2022 (16.x), considere la posibilidad de usar el nuevo rol fijo de servidor ##MS_LoginManager##.
processadmin Los miembros del rol fijo de servidor processadmin pueden finalizar los procesos que se ejecutan en una instancia de SQL Server.
setupadmin Los miembros del rol fijo de servidor setupadmin pueden agregar y quitar servidores vinculados mediante instrucciones Transact-SQL. (para usar Management Studio es necesario ser administrador del sistema).
bulkadmin Los miembros del rol fijo de servidor bulkadmin pueden ejecutar la instrucción BULK INSERT.

El rol bulkadmin o los permisos ADMINISTER BULK OPERATIONS no son compatibles con SQL Server en Linux. Solo sysadmin puede realizar inserciones masivas para SQL Server en Linux.
diskadmin El rol fijo de servidor diskadmin se usa para administrar archivos de disco.
dbcreator Los miembros del rol fijo de servidor dbcreator pueden crear, modificar, quitar y restaurar cualquier base de datos.
pública Cada inicio de sesión de SQL Server pertenece al rol del servidor público. Cuando no se concede o deniega a una entidad de seguridad de servidor permisos específicos en un objeto protegible, el usuario hereda los permisos concedidos a públicos en ese objeto. Solo asigne permisos públicos en cualquier objeto cuando desee que el objeto esté disponible para todos los usuarios. No puede cambiar la pertenencia a pública.

Nota: pública se implementa de forma diferente a otros roles y se pueden conceder, denegar o revocar permisos de los roles de servidor públicos de públicos.

Importante

La mayoría de los permisos proporcionados por los siguientes roles de servidor no son aplicables a Azure Synapse Analytics: processadmin, serveradmin, setupadminy diskadmin.

Roles fijos de nivel de servidor presentados en SQL Server 2022

En la tabla siguiente se muestran los roles fijos de nivel de servidor introducidos en SQL Server 2022 (16.x) y sus funcionalidades.

Nota:

Estos permisos de nivel de servidor no están disponibles para Azure SQL Managed Instance ni Azure Synapse Analytics. ##MS_PerformanceDefinitionReader##, ##MS_ServerPerformanceStateReader##y ##MS_ServerSecurityStateReader## se introduce en SQL Server 2022 (16.x) y no están disponibles en Azure SQL Database.

Rol fijo de nivel de servidor Descripción
##MS_DatabaseConnector## Los miembros del rol fijo de servidor ##MS_DatabaseConnector## pueden conectarse a cualquier base de datos sin requerir una cuenta de usuario en la base de datos para conectarse.

Para denegar el permiso de CONNECT a una base de datos específica, los usuarios pueden crear una cuenta de usuario coincidente para este login en la base de datos y luego DENY el permiso CONNECT al usuario de base de datos. Este permiso DENY anula el permiso GRANT CONNECT que proviene de este rol.
##MS_LoginManager## Los miembros del rol fijo de servidor ##MS_LoginManager## pueden crear, eliminar y modificar inicios de sesión. A diferencia del antiguo rol fijo del servidor securityadmin, este rol no otorga privilegios GRANT a sus miembros. Es un rol más limitado que ayuda a cumplir con el Principio del privilegio mínimo.
##MS_DatabaseManager## Los miembros del rol fijo de servidor ##MS_DatabaseManager## pueden crear y eliminar bases de datos. Un miembro del rol de ##MS_DatabaseManager## que crea una base de datos, se convierte en el propietario de esa base de datos, lo que permite al usuario conectarse a esa base de datos como el usuario dbo. El usuario dbo tiene todos los permisos de base de datos en la base de datos. Los miembros del rol ##MS_DatabaseManager## no tienen necesariamente permiso para acceder a las bases de datos que no poseen. Este rol de servidor tiene los mismos privilegios que el rol dbcreator en SQL Server, pero se recomienda usar este nuevo rol sobre el anterior, ya que este rol también existe en Azure SQL Database y, por tanto, ayuda a usar los mismos scripts en distintos entornos.
##MS_ServerStateManager## Los miembros del rol fijo de servidor ##MS_ServerStateManager## tienen los mismos permisos que el rol de ##MS_ServerStateReader##. Además, contiene el permiso ALTER SERVER STATE, que permite el acceso a varias operaciones de administración, como: DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE ('ALL'), DBCC SQLPERF()
##MS_ServerStateReader## Los miembros del rol fijo de servidor de ##MS_ServerStateReader## pueden leer todas las vistas de administración dinámica (DMV) y las funciones que están cubiertas por VIEW SERVER STATEy, respectivamente, tienen VIEW DATABASE STATE permiso en cualquier base de datos en la que el miembro de este rol tenga una cuenta de usuario.
##MS_ServerPerformanceStateReader## Los miembros del rol fijo de servidor de ##MS_ServerPerformanceStateReader## pueden leer todas las vistas de administración dinámica (DMV) y las funciones que están cubiertas por VIEW SERVER PERFORMANCE STATE, y tienen respectivamente VIEW DATABASE PERFORMANCE STATE permiso en cualquier base de datos en la que el miembro de este rol tenga una cuenta de usuario. Subconjunto de lo que el rol de servidor de ##MS_ServerStateReader## tiene acceso a, lo que ayuda a cumplir con el Principio de Privilegios Mínimos .
##MS_ServerSecurityStateReader## Los miembros del rol fijo de servidor de ##MS_ServerSecurityStateReader## pueden leer todas las vistas de administración dinámica (DMV) y funciones cubiertas por VIEW SERVER SECURITY STATE, y tienen respectivamente VIEW DATABASE SECURITY STATE permiso en cualquier base de datos en la que un miembro de este rol tenga una cuenta de usuario. Pequeño subconjunto de lo que el rol de servidor de ##MS_ServerStateReader## tiene acceso, lo que ayuda a cumplir con el principio de privilegios mínimos de .
##MS_DefinitionReader## Los miembros del rol fijo de servidor ##MS_DefinitionReader## pueden leer todas las vistas de catálogo que están cubiertas por VIEW ANY DEFINITIONy, respectivamente, tienen el permiso VIEW DEFINITION en cualquier base de datos en la que el miembro de este rol tenga una cuenta de usuario.
##MS_PerformanceDefinitionReader## Los miembros del rol fijo de servidor ##MS_PerformanceDefinitionReader## pueden leer todas las vistas de catálogo que están cubiertas por VIEW ANY PERFORMANCE DEFINITIONy también tienen VIEW PERFORMANCE DEFINITION permiso en cualquier base de datos en la que ese miembro de este rol tenga una cuenta de usuario. Subconjunto de lo que tiene acceso el rol de servidor de ##MS_DefinitionReader##.
##MS_SecurityDefinitionReader## Los miembros del rol fijo de servidor ##MS_SecurityDefinitionReader## pueden leer todas las vistas de catálogo que VIEW ANY SECURITY DEFINITIONcubre y, respectivamente, tienen permiso VIEW SECURITY DEFINITION en cualquier base de datos donde el miembro de este rol tenga una cuenta de usuario. Pequeño subconjunto de lo que el rol de servidor ##MS_DefinitionReader## tiene acceso, lo que ayuda a cumplir con el principio de mínimos privilegios .

Permisos de roles fijos de servidor

Cada rol fijo de servidor cuenta con diversos permisos asignados.

Permisos de los nuevos roles fijos de servidor en SQL Server 2022

En la tabla siguiente se muestran los permisos asignados a los roles de nivel de servidor. También muestra los permisos a nivel de base de datos que se heredan mientras el usuario pueda conectarse a bases de datos individuales.

Rol fijo de nivel de servidor Permisos a nivel de servidor Permisos a nivel de base de datos
##MS_DatabaseConnector## - CONNECT ANY DATABASE - CONNECT
##MS_LoginManager## - CREATE LOGIN
- ALTER ANY LOGIN
N/D
##MS_DatabaseManager## - CREATE ANY DATABASE
- ALTER ANY DATABASE
- ALTER
##MS_ServerStateManager## - ALTER SERVER STATE
- VIEW SERVER STATE
- VIEW SERVER PERFORMANCE STATE
- VIEW SERVER SECURITY STATE
- VIEW DATABASE STATE
- VIEW DATABASE PERFORMANCE STATE
- VIEW DATABASE SECURITY STATE
##MS_ServerStateReader## - VIEW SERVER STATE
- VIEW SERVER PERFORMANCE STATE
- VIEW SERVER SECURITY STATE
- VIEW DATABASE STATE
- VIEW DATABASE PERFORMANCE STATE
- VIEW DATABASE SECURITY STATE
##MS_ServerPerformanceStateReader## - VIEW SERVER PERFORMANCE STATE - VIEW DATABASE PERFORMANCE STATE
##MS_ServerSecurityStateReader## - VIEW SERVER SECURITY STATE - VIEW DATABASE SECURITY STATE
##MS_DefinitionReader## - VIEW ANY DATABASE
- VIEW ANY DEFINITION
- VIEW ANY PERFORMANCE DEFINITION
- VIEW ANY SECURITY DEFINITION
- VIEW DEFINITION
- VIEW PERFORMANCE DEFINITION
- VIEW SECURITY DEFINITION
##MS_PerformanceDefinitionReader## - VIEW ANY PERFORMANCE DEFINITION - VIEW PERFORMANCE DEFINITION
##MS_SecurityDefinitionReader## - VIEW ANY SECURITY DEFINITION - VIEW SECURITY DEFINITION

Permisos de los roles de servidor para SQL Server 2019 y anteriores

En el gráfico siguiente se muestran los permisos asignados a los roles de servidor heredados (SQL Server 2019 (15.x) y versiones anteriores).

Diagrama en el que se muestran los permisos fijos de rol de servidor.

El permiso CONTROL SERVER es similar, pero no idéntico al rol fijo de servidor de sysadmin. Las entidades de seguridad con el permiso CONTROL SERVER se pueden denegar permisos específicos. Desde una perspectiva de seguridad, considere a los principales con CONTROL SERVER como idénticos a los miembros de sysadmin (administrador del sistema), debido a varias formas posibles de elevar sus permisos de CONTROL SERVER a sysadmin completo. Varios comandos DBCC y muchos procedimientos del sistema requieren la pertenencia al rol fijo de servidor sysadmin .

Permisos a nivel de servidor

Solo se pueden agregar a los roles de servidor definidos por el usuario los permisos de nivel de servidor. Para obtener una lista de los permisos en el nivel de servidor, ejecute la siguiente instrucción: Los permisos en el nivel de servidor son:

SELECT *
FROM sys.fn_builtin_permissions('SERVER')
ORDER BY permission_name;

Para obtener más información sobre los permisos, consulte permisos (motor de base de datos) y sys.fn_builtin_permissions.

Trabajo con roles de nivel de servidor

En la tabla siguiente se explican los comandos, las vistas y las funciones que se pueden utilizar para trabajar con roles de nivel de servidor.

Característica Tipo Descripción
sp_helpsrvrole Metadatos Devuelve una lista de roles de nivel de servidor.
sp_helpsrvrolemember Metadatos Devuelve información acerca de los miembros de un rol de nivel de servidor.
sp_srvrolepermission Metadatos Muestra los permisos de un rol de nivel de servidor.
IS_SRVROLEMEMBER Metadatos Indica si un inicio de sesión de SQL Server es miembro del rol especificado a nivel de servidor.
sys.server_role_members Metadatos Devuelve una fila por cada miembro de cada rol de nivel de servidor.
CREAR ROL DE SERVIDOR Comando Crea un rol de servidor definido por el usuario.
ALTER SERVER ROLE Comando Cambia la pertenencia de un rol de servidor o cambia el nombre de un rol de servidor definido por el usuario.
ELIMINAR ROL DE SERVIDOR Comando Quita un rol de servidor definido por el usuario.
sp_addsrvrolemember Comando Agrega un inicio de sesión como miembro de un rol de nivel de servidor. Obsoleto. Utilice ALTER SERVER ROLE en su lugar.
sp_dropsrvrolemember Comando Quita un inicio de sesión de SQL Server o un usuario o grupo de Windows de un rol a nivel de servidor. Obsoleto. Utilice ALTER SERVER ROLE en su lugar.

Roles específicos de SQL Server habilitados por Azure Arc

Cuando se instala la extensión de Azure para SQL Server, la instalación:

  1. Crea un rol de nivel de servidor: SQLArcExtensionServerRole

  2. Crea un rol de nivel de base de datos: SQLArcExtensionUserRole

  3. Agregue la cuenta NT AUTHORITY\SYSTEM* a cada rol

  4. Asigne NT AUTHORITY\SYSTEM* al nivel de base de datos de cada base de datos

  5. Concede los permisos mínimos para las características habilitadas

    *Como alternativa, puede configurar SQL Server habilitado por Azure Arc para que se ejecute en modo de privilegios mínimos (disponible en versión preliminar). Para obtener más información, consulte Funcionamiento de SQL Server habilitado para Azure Arc con privilegios mínimos (versión preliminar).

Además, la extensión de Azure para SQL Server revoca los permisos de estos roles cuando ya no son necesarios para características específicas.

SqlServerExtensionPermissionProvider es una tarea de Windows. Concede o revoca privilegios en SQL Server cuando detecta:

  • Que se ha instalado una nueva instancia de SQL Server en el host.
  • La instancia de SQL Server se desinstala del host
  • Una característica de nivel de instancia está habilitada o deshabilitada o se actualiza la configuración.
  • Se reinicia el servicio de extensión

Nota:

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

Para obtener más información, consulte Configuración de las cuentas de servicio de Windows y los permisos para la extensión de Azure para SQL Server.

Si desinstala la extensión de Azure para SQL Server, se quitan los roles de nivel de servidor y base de datos.

Para obtener permisos, revise Permisos.