Trabajando con roles de servidor
SQL Server provee roles de servidor para ayudar a administrar permisos en
un servidor. Estos roles son perfiles de seguridad que agrupan otros perfiles.
Las roles fijos de servidor se proporcionan
para mayor comodidad y compatibilidad con versiones anteriores. Es mejor asignar permisos más específicos
siempre que sea posible.
Trabajadores, Click para ver más fotos como esta. |
SQL Server proporciona nueve roles fijos de servidor. Los permisos que se
conceden a los roles fijos de servidor no se pueden cambiar. Desde SQL Server
2012, es posible crear roles de servidor
definidos por el usuario y agregar permisos de nivel de servidor a los roles de
servidor definidos por el usuario. Es posible agregar entidades de nivel de
servidor (inicios de sesión de SQL Server, cuentas de Windows y grupos de
Windows) a roles de nivel de servidor. Cada miembro de un rol fijo de servidor
puede agregar otros inicios de sesión a esa misma función. Los miembros de los roles
de servidor definidos por el usuario no pueden agregar otros permisos de
servidor al rol.
Tabla de roles fijos de servidor
Rol fijo de servidor
|
Descripción
|
sysadmin
|
Pueden realizar
cualquier actividad en el servidor.
|
serveradmin
|
Pueden cambiar las
opciones de configuración de todo el servidor y apagar el servidor.
|
securityadmin
|
Gestionan los
inicios de sesión y sus propiedades. Pueden conceder, negar y rechazar los
permisos a nivel de servidor. También pueden conceder permisos de GRANT, DENY
y REVOKE a nivel de base de datos si tienen acceso a una base de datos.
Además, pueden restablecer contraseñas para los inicios de sesión de SQL
Server.
Nota de seguridad: La posibilidad de
conceder acceso al motor de base de datos y configurar permisos de usuario
permite al administrador de seguridad asignar la mayor parte de permisos de
servidor. El rol securityadmin
debe ser tratado como equivalente al rol sysadmin.
|
processadmin
|
Pueden finalizar los
procesos que se ejecutan en una instancia de SQL Server.
|
setupadmin
|
Puede agregar y
quitar servidores vinculados mediante instrucciones SQL. (La pertenencia a
sysadmin es necesaria cuando se utiliza Management Studio.)
|
bulkadmin
|
Pueden ejecutar la
instrucción BULK INSERT.
|
diskadmin
|
Se utiliza para
administrar archivos de disco.
|
dbcreator
|
Pueden crear,
alterar, eliminar y restaurar cualquier base de datos.
|
public
|
Cada inicio de
sesión de SQL Server pertenece al rol de servidor public. Cuando un servidor
principal no ha concedido o denegado permisos específicos en un objeto, el
usuario hereda los permisos concedidos al rol public en ese objeto. Sólo se
deben asignar permisos públicos a cualquier objeto cuando se desee que el
objeto esté disponible para todos los usuarios. No se puede cambiar la
membresía de public.
Nota: el rol public se implementa de manera diferente que otros roles. Sin embargo, los permisos pueden concederse, denegarse o revocarse del rol public. |
Niveles de permisos de servidor
Sólo se pueden agregar permisos a nivel de servidor a lor
roles de servidor definidos por el usuario. Para enumerar los permisos de nivel
de servidor, ejecutar la siguiente instrucción:
SELECT * FROM sys.fn_builtin_permissions ('SERVER') ORDER BY permission_name;
GO
Trabajando con roles de servidor
La tabla siguiente explica los comandos, vistas y funciones que se pueden
utilizar para trabajar con roles de
nivel de servidor.
Característica
|
Tipo
|
Descripción
|
Metadatos
|
Devuelve una lista de roles de
nivel de servidor.
|
|
Metadatos
|
Devuelve información sobre los
miembros de un rol de nivel de servidor.
|
|
Metadatos
|
Muestra los permisos de un rol de
nivel de servidor.
|
|
Metadatos
|
Indica si un inicio de sesión de
SQL Server es miembro del rol de nivel de servidor especificado.
|
|
Metadatos
|
Indica si un inicio de sesión de
SQL Server es un miembro del rol de nivel de servidor especificado.
|
|
Comando
|
Añade un inicio de sesión como miembro de un rol de
nivel de servidor. Obsoleto. Utilizar ALTER SERVER ROLE en su
lugar.
|
|
Comando
|
Elimina un inicio de sesión de SQL Server o un
usuario o grupo de Windows de una función de nivel de servidor. Obsoleto. Utilizar ALTER SERVER ROLE en su lugar.
|
|
Comando
|
Crea un rol de servidor definido
por el usuario.
|
|
Comando
|
Modifica la pertenencia a un rol de
servidor o modifica el nombre de un rol de servidor definido por el usuario.
|
|
Comando
|
Elimina un rol de servidor definido
por el usuario.
|
|
Función
|
Determina la pertenencia a un rol de
servidor.
|
Trabajando
con roles fijos de base de datos
Roles de base de datos
Para administrar fácilmente los permisos de las bases de datos, SQL Server
proporciona varios roles primarios de seguridad que agrupan a otros roles
primarios. Son como los grupos del sistema operativo Windows. Los roles de nivel de base de datos son de toda la base
de datos en su ámbito de permisos.
Para agregar y quitar usuarios a un rol de base de datos, hay que utilizar
las opciones ADD MEMBER y DROP MEMBER de la instrucción ALTER ROLE.
Existen dos tipos de roles de nivel de base de datos: roles fijos de bases
de datos, que viene ya predefinidos y roles de base de datos definidos por el
usuario.
Las roles fijos se definen en el nivel de base de datos y existen en cada una
de ellas. Los miembros del rol de base de datos db_owner pueden administrar la pertenencia a un rol fijo de base de
datos.
Cada miembro de un rol fijo de base de datos puede añadir a otros usuarios a ese mismo rol. No agregar
roles definidos por el usuario como miembros de roles fijos. Esto podría llevar
a una escalada involuntaria de privilegios.
Los permisos de los roles de base de datos definidos por el usuario sepueden personalizar utilizando las sentencias GRANT, DENY y REVOKE. (Los permisos de nivel de servidor no se
pueden conceder a los roles de base de datos).
Los inicios de sesión y otros principios de nivel de servidor (como los roles
de servidor) no se pueden agregar a los roles de base de datos.
Tabla de roles fijos de base de datos
La tabla siguiente muestra los roles fijos de base de datos y sus atribuciones.
Estos roles existen en todas las bases de datos. No se pueden cambiar los
permisos asignados a los roles fijos de bases de datos.
Rol fijo de base de datos
|
Descripción
|
db_owner
|
Puede realizar todas las actividades
de configuración y mantenimiento en la base de datos y también pueden
eliminar la base de datos en SQL Server.
|
db_securityadmin
|
Puede modificar la pertenencia a un
rol y administrar permisos. La adición de principiantes a este rol podría
permitir la escalada de privilegios no deseados.
|
db_accessadmin
|
Puede agregar o quitar acceso a la
base de datos para los inicios de sesión de Windows, los grupos de Windows y
los inicios de sesión de SQL Server.
|
db_backupoperator
|
Puede hacer un backup de la base de
datos.
|
db_ddladmin
|
Puede ejecutar cualquier comando de
lenguaje de definición de datos (DDL) en una base de datos.
|
db_datawriter
|
Puede agregar, eliminar o cambiar
datos en todas las tablas de usuario.
|
db_datareader
|
Puede leer todos los datos de todas
las tablas de usuario.
|
db_denydatawriter
|
No puede agregar, modificar o eliminar
datos de las tablas de usuario de una base de datos.
|
db_denydatareader
|
No puede leer ningún dato en las
tablas de usuario de una base de datos.
|
No se pueden cambiar los permisos asignados a los roles fijos de base de
datos.
Trabajando con roles de nivel de base de datos
La siguiente tabla explica los comandos, vistas y funciones para trabajar
con roles de base de datos.
Característica
|
Tipo
|
Descripción
|
|
Metadatos
|
Devuelve una lista de los roles fijos de
base de datos.
|
||
Metadatos
|
Muestra los permisos de un rol fijo de
base de datos.
|
||
sp_helprole
|
Metadatos
|
Proporciona información sobre los
roles de la base de datos.
|
|
sp_helprolemember
|
Metadatos
|
Muestra los miembros de un rol de la
base de datos.
|
|
Metadatos
|
Devuelve una fila para cada miembro de
cada rol de base de datos.
|
||
IS_MEMBER
|
Metadatos
|
Indica si el usuario actual es miembro
del grupo de Windows especificado o del rol base de datos.
|
|
Comando
|
Crea un nuevo rol de base de datos.
|
||
Comando
|
Cambia el nombre o la pertenencia de
un rol de base de datos.
|
||
DROP ROLE
|
Comando
|
Elimina un rol de base de datos.
|
|
sp_addrole
|
Comando
|
Crea un nuevo rol de base de datos.
|
|
sp_droprole
|
Comando
|
Elimina un rol de base de datos.
|
|
Comando
|
Agrega un rol de usuario de base de
datos, un inicio de sesión de Windows
o un grupo de Windows a un rol de base
de datos.
|
||
Comando
|
Elimina una cuenta de seguridad de un rol
en la base de datos.
|
||
Permisos
|
Proporciona permisos a un rol.
|
||
Permisos
|
Deniega permisos a un rol.
|
||
Permisos
|
Elimina los permisos otorgados o
denegados anteriormente.
|
Función public de la base de datos
Cada usuario de base de datos pertenece al rol de base de datos.
Cuando a un usuario no se le han concedido o denegado permisos específicos en
un objeto, el usuario hereda los permisos concedidos al rol public en ese
objeto. Los usuarios de la base de datos no pueden eliminarse del rol public.
No hay comentarios:
Publicar un comentario