Funciones en el nivel de base de datos

Para administrar con facilidad los permisos en las bases de datos, SQL Server proporciona varias funciones, que son las entidades de seguridad que agrupan a otras entidades de seguridad. Son como los grupos del sistema operativo Microsoft Windows. Las funciones del nivel de base de datos se aplican a toda la base de datos en lo que respecta a su ámbito de permisos.

Existen dos tipos de funciones de nivel de base de datos en SQL Server: las funciones fijas de base de datos, que están predefinidas en la base de datos, y las funciones flexibles de base de datos, que pueden crearse.

Las funciones de base de datos fijas se definen en el nivel de base de datos y existen en cada una de ellas. Los miembros de las funciones de base de datos db_owner y db_securityadmin pueden administrar los miembros de las funciones de base de datos fijas. Sin embargo, sólo los miembros de la función de base de datos db_owner pueden agregar miembros a la función de base de datos fija db_owner. Hay también algunas funciones fijas de base de datos con fines especiales en la base de datos msdb.

Puede agregar cualquier cuenta de la base de datos y otras funciones de SQL Server a las funciones del nivel de base de datos. Cada miembro de una función de base de datos fija puede agregar otros inicios de sesión a esa misma función.

Nota importanteImportante

No agregue funciones flexibles de la base de datos como miembros de funciones fijas. Esto podría habilitar un aumento de privilegios no deseado.

En la tabla siguiente se muestran las funciones fijas del nivel de base de datos y sus capacidades. Estas funciones existen en todas las bases de datos.

Nombre de función de nivel de base de datos

Descripción

db_owner

Los miembros de la función de base de datos fija db_owner pueden realizar todas las actividades de configuración y mantenimiento en la base de datos y también pueden quitar la base de datos.

db_securityadmin

Los miembros de la función de base de datos fija db_securityadmin pueden modificar la pertenencia a funciones y administrar permisos. Si se agregan entidades de seguridad a esta función, podría habilitarse un aumento de privilegios no deseado.

db_accessadmin

Los miembros de la función de base de datos fija db_accessadmin pueden agregar o quitar el acceso a la base de datos para inicios de sesión de Windows, grupos de Windows e inicios de sesión de SQL Server.

db_backupoperator

Los miembros de la función de base de datos fija db_backupoperator pueden crear copias de seguridad de la base de datos.

db_ddladmin

Los miembros de la función de base de datos fija db_ddladmin pueden ejecutar cualquier comando del lenguaje de definición de datos (DDL) en una base de datos.

db_datawriter

Los miembros de la función de base de datos fija db_datawriter pueden agregar, eliminar o cambiar datos en todas las tablas de usuario.

db_datareader

Los miembros de la función de base de datos fija db_datareader pueden leer todos los datos de todas las tablas de usuario.

db_denydatawriter

Los miembros de la función de base de datos fija db_denydatawriter no pueden agregar, modificar ni eliminar datos de tablas de usuario de una base de datos.

db_denydatareader

Los miembros de la función de base de datos fija db_denydatareader no pueden leer datos de las tablas de usuario dentro de una base de datos.

Para obtener información específica sobre los permisos de las funciones de base de datos fijas, vea Permisos de las funciones de base de datos fijas (motor de base de datos).

Funciones de msdb

La base de datos msdb contiene las funciones con fines especiales que se muestran en la tabla siguiente.

Nombre de función de msdb

Descripción

db_ssisadmin

db_ssisoperator

db_ssisltduser

Los miembros de estas funciones de base de datos pueden administrar y utilizar SSIS. Las instancias de SQL Server que se actualizan desde una versión anterior podrían contener una versión anterior de la función cuya denominación se realizaba utilizando Servicios de transformación de datos (DTS) en lugar de SSIS. Para obtener más información, vea Usar funciones de Integration Services.

dc_admin

dc_operator

dc_proxy

Los miembros de estas funciones de base de datos pueden administrar y utilizar el recopilador de datos. Para obtener más información, vea Seguridad del recolección de datos.

PolicyAdministratorRole

Los miembros de la función de base de datos db_PolicyAdministratorRole pueden realizar todas las actividades de mantenimiento y configuración en las condiciones y directivas de Administración basada en directiva. Para obtener más información, vea Administrar servidores mediante administración basada en directivas.

ServerGroupAdministratorRole

ServerGroupReaderRole

Los miembros de estas funciones de la base de datos pueden administrar y utilizar grupos de servidores registrados. Para obtener más información, vea Crear grupos de servidores.

Nota importanteImportante

Los miembros de la función db_ssisadmin y de la función dc_admin quizá puedan elevar sus privilegios a sysadmin. Esta elevación de privilegio se puede producir porque estas funciones pueden modificar los paquetes de Integration Services y SQL Server puede ejecutar estos paquetes utilizando el contexto de seguridad de sysadmin del Agente SQL Server. Para protegerse contra esta elevación de privilegio al ejecutar planes de mantenimiento, conjuntos de recopilación de datos y otros paquetes de Integration Services, configure los trabajos del Agente SQL Server que ejecutan paquetes para utilizar una cuenta de proxy con privilegios limitados o agregar sólo los miembros de sysadmin a las funciones dc_admin y db_ssisadmin.

Trabajar con funciones del nivel de base de datos

En la tabla siguiente se explican los comandos, las vistas y las funciones que se utilizan para trabajar con funciones del nivel de base de datos.

Característica

Tipo

Descripción

sp_helpdbfixedrole (Transact-SQL)

Metadatos

Devuelve la lista de las funciones de base de datos fijas.

sp_dbfixedrolepermission (Transact-SQL)

Metadatos

Muestra los permisos de una función de base de datos fija.

sp_helprole (Transact-SQL)

Metadatos

Devuelve información acerca de las funciones de la base de datos actual.

sp_helprolemember (Transact-SQL)

Metadatos

Devuelve información acerca de los miembros de una función de base de datos actual.

sys.database_role_members (Transact-SQL)

Metadatos

Devuelve una fila por cada miembro de cada función de base de datos.

IS_MEMBER (Transact-SQL)

Metadatos

Indica si el usuario actual es miembro del grupo de Microsoft Windows o de la función de base de datos de SQL Server especificados.

CREATE ROLE (Transact-SQL)

Comando

Crea una nueva función de base de datos en la base de datos actual.

ALTER ROLE (Transact-SQL)

Comando

Cambia el nombre de una función de base de datos.

DROP ROLE (Transact-SQL)

Comando

Quita una función de base de datos.

sp_addrole (Transact-SQL)

Comando

Crea una nueva función de base de datos en la base de datos actual.

sp_droprole (Transact-SQL)

Comando

Quita una función de base de datos de la base de datos actual.

sp_addrolemember (Transact-SQL)

Comando

Agrega un usuario de base de datos, una función de base de datos, un inicio de sesión de Windows o un grupo de Windows a una función de base de datos en la base de datos actual.

sp_droprolemember (Transact-SQL)

Comando

Quita una cuenta de seguridad de una función de SQL Server de la base de datos actual.

Función pública de la base de datos

Todos los usuarios de una base de datos pertenecen a la función pública de la base de datos. Cuando a un usuario no se le han concedido ni denegado permisos específicos para un objeto que puede protegerse, el usuario hereda los permisos concedidos a la función pública para ese objeto.