Roles de nivel de servidor
Se aplica a: SQL Server Azure SQL Managed Instance Analytics 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 y las versiones anteriores proporcionaban 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) viene con 10 roles del servidor adicionales que fueron diseñados específicamente con el Principio de privilegio mínimo en mente, los cuales tienen el prefijo ##MS_
y el sufijo ##
para distinguirlas de otras entidades de seguridad creadas por el usuario y roles del servidor personalizados. Estos nuevos roles contienen privilegios que se aplican en el ámbito del servidor pero que también pueden heredarse a bases de datos individuales (excepto el rol del 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 efectivamente útiles a nivel de base de datos, un usuario debe ser miembro de la función a nivel de servidor ##MS_DatabaseConnector## (a partir de SQL Server 2022 (16.x)), que concede el permiso CONNECT a 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 siguiente ejemplo: El rol a nivel del servidor ##MS_ServerStateReader## tiene el permiso VIEW SERVER STATE. Un usuario que es miembro de este rol tiene una cuenta de usuario en las bases de datos, master
y WideWorldImporters
. Este usuario tendrá entonces también 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 a nivel de servidor presentados antes de SQL Server 2022 (16.x) 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. |
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. |
public | Cada inicio de sesión de SQL Server pertenece al rol del servidor público. Cuando a una entidad de seguridad de servidor no se le han concedido ni denegado permisos específicos para un objeto protegible, el usuario hereda los permisos concedidos al rol público en ese objeto. Solo asigne los permisos públicos en cualquier objeto cuando desee que el objeto esté disponible para todos los usuarios. No se puede cambiar de miembro en público. Nota: public se implementa de manera diferente a otros roles, y los permisos se pueden conceder, denegar o revocar desde los roles fijos de servidor públicos. |
Importante
La mayoría de los permisos proporcionados por los roles de servidor processadmin, serveradmin, setupadmin y diskadmin no son aplicables a Azure Synapse Analytics.
Roles fijos de nivel de servidor presentados en SQL Server 2022
La siguiente tabla muestra los roles fijos adicionales a nivel de servidor que se presentan con SQL Server 2022 (16.x) y sus capacidades.
Nota:
Estos permisos a nivel de servidor no están disponibles para Azure SQL Managed Instance o Azure Synapse Analytics. ##MS_PerformanceDefinitionReader##, ##MS_ServerPerformanceStateReader##, y ##MS_ServerSecurityStateReader## se presenta 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 necesidad de que una cuenta de usuario de la base de datos se conecte. Para denegar el permiso CONNECT a una base de datos específica, los usuarios pueden crear una cuenta de usuario coincidente para este inicio de sesión en la base de datos y, a continuación, DENY al permiso CONNECT al usuario de base de datos. Este permiso DENY anula el permiso GRANT CONNECT procedente de este rol. |
##MS_LoginManager## | Los miembros del rol fijo del 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 ##MS_DatabaseManager## que crea una base de datos se convierte en el propietario de dicha base de datos, lo que permite que el usuario se conecte a ella 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 necesariamente tienen permiso para acceder a las bases de datos que no son de su propiedad. Este rol del servidor tiene los mismos privilegios que el rol dbcreator en SQL Server, pero recomendamos usar este nuevo rol en lugar del anterior, ya que este rol existe también en Azure SQL Database y por lo tanto ayuda a usar los mismos scripts en diferentes ambientes. |
##MS_ServerStateManager## | Los miembros del rol fijo de servidor ##MS_ServerStateManager## tienen los mismos permisos que el rol ##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') y DBCC SQLPERF() |
##MS_ServerStateReader## | Los miembros del rol fijo de servidor ##MS_ServerStateReader## pueden leer todas las vistas de administración dinámica (DMV) y funciones que están incluidas en VIEW SERVER STATE, y respectivamente tiene permiso VIEW DATABASE STATE 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 ##MS_ServerPerformanceStateReader## pueden leer todas las vistas de administración dinámica (DMV) y las funciones cubiertas por VIEW SERVER PERFORMANCE STATE, respectivamente tiene permiso VIEW DATABASE PERFORMANCE STATE en cualquier base de datos en la que el miembro de este rol tenga una cuenta de usuario. Se trata de un subconjunto al que tiene acceso el rol del servidor ##MS_ServerStateReader##, lo que ayuda a cumplir con el Principio de privilegio mínimo. |
##MS_ServerSecurityStateReader## | Los miembros del rol fijo de servidor ##MS_ServerSecurityStateReader## pueden leer todas las vistas de administración dinámica (DMV) y las funciones cubiertas por VIEW SERVER SECURITY STATE, y respectivamente tiene permiso VIEW DATABASE SECURITY STATE en cualquier base de datos en la que el miembro de este rol tenga una cuenta de usuario. Se trata de un subconjunto al que tiene acceso el rol del servidor ##MS_ServerStateReader##, lo que ayuda a cumplir con el Principio de privilegio mínimo. |
##MS_DefinitionReader## | Los miembros del rol fijo del servidor ##MS_DefinitionReader## pueden leer todas las vistas de catálogo cubiertas por VIEW ANY DEFINITION, y respectivamente tienen 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 del servidor ##MS_PerformanceDefinitionReader## pueden leer todas las vistas de catálogo cubiertas por VIEW ANY PERFORMANCE DEFINITION, y respectivamente tienen permiso VIEW PERFORMANCE DEFINITION en cualquier base de datos en la que el miembro de este rol tenga una cuenta de usuario. Se trata de un subconjunto al que tiene acceso el rol del servidor ##MS_DefinitionReader##. |
##MS_SecurityDefinitionReader## | Los miembros del rol fijo de servidor ##MS_SecurityDefinitionReader## pueden leer todas las vistas de catálogo cubiertas por VIEW ANY SECURITY DEFINITION, y respectivamente tiene el permiso VIEW SECURITY DEFINITION en cualquier base de datos en la que el miembro de este rol tenga una cuenta de usuario. Este es un pequeño subconjunto de lo que el rol del servidor ##MS_DefinitionReader## tiene acceso, lo que ayuda a cumplir con el Principio de privilegio mínimo. |
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
El siguiente gráfico muestra los permisos asignados a los roles del servidor heredados (SQL Server 2019 y versiones anteriores).
Importante
El permiso CONTROL SERVER es similar, pero no idéntico al rol fijo de servidor sysadmin . Los permisos no conllevan la pertenencia a los roles y la pertenencia a los roles no otorga permisos. (Por ejemplo, CONTROL SERVER no implica la pertenencia al rol fijo de servidor administrador del sistema). Sin embargo, a veces es posible suplantar entre roles y permisos equivalentes. La mayoría de los comandos DBCC y muchos procedimientos del sistema necesitan 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 más información sobre permisos, vea Permisos (Motor de base de datos) y sys.fn_builtin_permissions (Transact-SQL).
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 (Transact-SQL) | Metadatos | Devuelve una lista de roles de nivel de servidor. |
sp_helpsrvrolemember (Transact-SQL) | Metadatos | Devuelve información acerca de los miembros de un rol de nivel de servidor. |
sp_srvrolepermission (Transact-SQL) | Metadatos | Muestra los permisos de un rol de nivel de servidor. |
IS_SRVROLEMEMBER (Transact-SQL) | Metadatos | Indica si un inicio de sesión de SQL Server es miembro del rol especificado a nivel de servidor. |
sys.server_role_members (Transact-SQL) | Metadatos | Devuelve una fila por cada miembro de cada rol de nivel de servidor. |
CREATE SERVER ROLE (Transact-SQL) | Get-Help | Crea un rol de servidor definido por el usuario. |
ALTER SERVER ROLE (Transact-SQL) | Get-Help | Cambia la pertenencia de un rol de servidor o cambia el nombre de un rol de servidor definido por el usuario. |
DROP SERVER ROLE (Transact-SQL) | Get-Help | Quita un rol de servidor definido por el usuario. |
sp_addsrvrolemember (Transact-SQL) | Get-Help | 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 (Transact-SQL) | Get-Help | 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:
Crea un rol de nivel de servidor: SQLArcExtensionServerRole
Crea un rol de nivel de base de datos: SQLArcExtensionUserRole
Agregue la cuenta NT AUTHORITY\SYSTEM* a cada rol
Asigne NT AUTHORITY\SYSTEM* al nivel de base de datos de cada base de datos
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.
Contenido relacionado
- Roles de nivel de base de datos
- Vistas de catálogo de seguridad (Transact-SQL)
- Funciones de seguridad (Transact-SQL)
- Proteger SQL Server
- GRANT (permisos de entidad de seguridad de servidor de Transact-SQL)
- REVOKE (permisos de entidad de seguridad de servidor de Transact-SQL)
- DENY (permisos de entidad de seguridad de servidor de Transact-SQL)
- Crear un rol de servidor
- Roles del servidor de Azure SQL Database para la administración de permisos