Roles de nivel de servidor
Se aplica a:SQL Server
Azure SQL Managed Instance
Analytics Platform System (PDW)
SQL Server proporciona roles de nivel de servidor para ayudarle a administrar los permisos de 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 versiones anteriores proporcionaron nueve roles fijos de servidor. No se pueden cambiar los permisos concedidos a los roles fijos de servidor (excepto público). A partir de SQL Server 2012 (11.x), puede crear roles de servidor definidos por el usuario y agregarles permisos de nivel de servidor.
SQL Server 2022 (16.x) incluye 10 roles de servidor adicionales que se han diseñado específicamente teniendo en cuenta el principio de privilegios mínimos, que tienen el prefijo y el sufijo ##MS_
##
para distinguirlos de otras entidades de seguridad creadas por el usuario normales y roles de servidor personalizados. Estos nuevos roles contienen privilegios que se aplican en el ámbito del servidor, pero también pueden heredar a 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 útiles de forma eficaz en el 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 a todas las bases de datos o tener una cuenta de usuario en bases de datos individuales. Esto también se aplica a la master
base de datos.
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
. A continuación, este usuario también tendrá 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 deSQL Server , cuentas de Windows y grupos de Windows) a los roles de 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 de servidor definidos por el usuario no pueden agregar otras entidades de seguridad de servidor al rol.
Roles fijos de nivel de servidor
Nota:
Estos roles de nivel de servidor introducidos antes de SQL Server 2022 (16.x) no están disponibles en Azure SQL Database o Azure Synapse Analytics. Hay roles especiales Azure SQL servidor de base de datos para la administración de permisos equivalentes a los roles de nivel de servidor introducidos en SQL Server 2022 (16.x). Para obtener más información sobre SQL Database, vea Control y concesión de acceso a la base 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 . También pueden administrar los permisos de nivel de base de datos GRANT , DENY y REVOKE si tienen acceso a una base de datos. Asimismo, pueden restablecer contraseñas para inicios de sesión de SQL Server .IMPORTANTE: La capacidad de conceder acceso a 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. (Es necesaria la pertenencia a sysadmin cuando se usa Management Studio). |
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 se admiten para 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 de servidor public. Cuando una entidad de seguridad de servidor no se ha concedido ni denegado permisos específicos en un objeto protegible, el usuario hereda los permisos concedidos al 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 la pertenencia al 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 siguientes roles de servidor no son aplicables a Azure Synapse Analytics: processadmin, serveradmin, setupadmin y diskadmin.
Roles fijos de nivel de servidor introducidos en SQL Server 2022
En la tabla siguiente se muestran roles fijos de nivel de servidor adicionales que se presentan con SQL Server 2022 (16.x) y sus funcionalidades.
Nota:
Estos permisos de nivel de servidor no están disponibles para Azure SQL Managed Instance o Azure Synapse Analytics. ##MS_PerformanceDefinitionReader##, ##MS_ServerPerformanceStateReader## y ##MS_ServerSecurityStateReader## se introducen 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 anulará el permiso GRANT CONNECT procedente de este rol. |
##MS_LoginManager## | Los miembros del rol fijo de servidor ##MS_LoginManager## pueden crear, eliminar y modificar inicios de sesión. Al contrario que el antiguo rol fijo de servidor securityadmin, este rol no permite a los miembros tener GRANT privilegios. Es un rol más limitado que ayuda a cumplir con el principio de privilegios mínimos. |
##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 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 ##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 ##MS_ServerStateReader## pueden leer todas las vistas de administración dinámica (DMV) y las funciones que están cubiertas por VIEW SERVER STATE y, respectivamente, tienen el 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 que están cubiertas por VIEW SERVER PERFORMANCE STATE y, respectivamente, tienen el permiso VIEW DATABASE PERFORMANCE STATE en cualquier base de datos en la que el miembro de este rol tenga una cuenta de usuario. Este es un subconjunto de lo que el rol de servidor ##MS_ServerStateReader## tiene acceso, lo que ayuda a cumplir con el principio de privilegios mínimos. |
##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 que están cubiertas por VIEW SERVER SECURITY STATE y, respectivamente, tienen el 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 pequeño subconjunto de lo que el rol de servidor ##MS_ServerStateReader## tiene acceso, lo que ayuda a cumplir con el principio de privilegios mínimos. |
##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 DEFINITION y, respectivamente, tiene 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 DEFINITION y, respectivamente, tiene el permiso VIEW PERFORMANCE DEFINITION en cualquier base de datos en la que el miembro de este rol tenga una cuenta de usuario. Este es un subconjunto de a qué tiene acceso el rol de 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. Se trata de un pequeño subconjunto de lo que el rol de servidor ##MS_DefinitionReader## tiene acceso, lo que ayuda a cumplir con el principio de privilegios mínimos. |
Permisos de roles fijos de servidor
Cada rol fijo de servidor cuenta con diversos permisos asignados.
Permisos de 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 de nivel de base de datos que se heredan siempre que el usuario pueda conectarse a bases de datos individuales.
Rol fijo de nivel de servidor | Permisos a nivel de servidor | Permisos de 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 VER EL ESTADO DE RENDIMIENTO DEL SERVIDOR VER ESTADO DE SEGURIDAD DEL SERVIDOR |
VIEW DATABASE STATE VER EL ESTADO DE RENDIMIENTO DE LA BASE DE DATOS VER EL ESTADO DE SEGURIDAD DE LA BASE DE DATOS |
##MS_ServerStateReader## | VIEW SERVER STATE VER EL ESTADO DE RENDIMIENTO DEL SERVIDOR VER ESTADO DE SEGURIDAD DEL SERVIDOR |
VIEW DATABASE STATE VER EL ESTADO DE RENDIMIENTO DE LA BASE DE DATOS VER EL ESTADO DE SEGURIDAD DE LA BASE DE DATOS |
##MS_ServerPerformanceStateReader ## | VER EL ESTADO DE RENDIMIENTO DEL SERVIDOR | VER EL ESTADO DE RENDIMIENTO DE LA BASE DE DATOS |
##MS_ServerSecurityStateReader ## | VER ESTADO DE SEGURIDAD DEL SERVIDOR | VER EL ESTADO DE SEGURIDAD DE LA BASE DE DATOS |
##MS_DefinitionReader## | VIEW ANY DATABASE VIEW ANY DEFINITION VER CUALQUIER DEFINICIÓN DE RENDIMIENTO VIEW ANY SECURITY DEFINITION |
VIEW DEFINITION VER DEFINICIÓN DE RENDIMIENTO VIEW SECURITY DEFINITION |
##MS_PerformanceDefinitionReader ## | VER CUALQUIER DEFINICIÓN DE RENDIMIENTO | VER DEFINICIÓN DE RENDIMIENTO |
##MS_SecurityDefinitionReader## | VIEW ANY SECURITY DEFINITION | VIEW SECURITY DEFINITION |
Permisos de roles de servidor para SQL Server 2019 y versiones anteriores
En el gráfico siguiente se muestran los permisos asignados a los roles de 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 sysadmin ). 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 obtener más información sobre los permisos, vea Permisos (motor de base de datos) y sys.fn_builtin_permissions (Transact-SQL).
Trabajar 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 de nivel de servidor especificado. |
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. En desuso. 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 de nivel de servidor. En desuso. Utilice ALTER SERVER ROLE en su lugar. |
Consulte también
- 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