Roles de nivel de base de datosDatabase-Level Roles

SE APLICA A: síSQL Server síAzure SQL Database síAzure SQL Data Warehouse síAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Para administrar con facilidad los permisos en las bases de datos, SQL ServerSQL Server proporciona varios roles , que son las entidades de seguridad que agrupan a otras entidades de seguridad.To easily manage the permissions in your databases, SQL ServerSQL Server provides several roles which are security principals that group other principals. Son como los grupos del sistema operativo MicrosoftMicrosoft Windows.They are like groups in the MicrosoftMicrosoft Windows operating system. Los roles de nivel de base de datos se aplican a toda la base de datos en lo que respecta a su ámbito de permisos.Database-level roles are database-wide in their permissions scope.

Para agregar y quitar usuarios en un rol de base de datos, use las opciones ADD MEMBER y DROP MEMBER de la instrucción ALTER ROLE .To add and remove users to a database role, use the ADD MEMBER and DROP MEMBER options of the ALTER ROLE statement. Almacenamiento de datos paralelosParallel Data Warehouse no admite este uso de ALTER ROLE.does not support this use of ALTER ROLE. En su lugar, use los procedimientos sp_addrolemember y sp_droprolemember anteriores.Use the older sp_addrolemember and sp_droprolemember procedures instead.

Existen dos tipos de roles en el nivel de base de datos: los roles fijos de base de datos que están predefinidos en la base de datos y los roles de base de datos definidos por el usuario que el usuario puede crear.There are two types of database-level roles: fixed-database roles that are predefined in the database and user-defined database roles that you can create.

Los roles fijos de base de datos se definen en el nivel de base de datos y existen en cada una de ellas.Fixed-database roles are defined at the database level and exist in each database. Los miembros de los roles de base de datos db_owner pueden administrar la pertenencia a roles fijos de base de datos.Members of the db_owner database role can manage fixed-database role membership. También hay algunos roles de base de datos con fines especiales en la base de datos msdb.There are also some special-purpose database roles in the msdb database.

Puede agregar cualquier cuenta de la base de datos y otros roles de SQL ServerSQL Server a los roles de nivel de base de datos.You can add any database account and other SQL ServerSQL Server roles into database-level roles.

Sugerencia

No agregue roles de base de datos definidos por el usuario como miembros de los roles fijos.Do not add user-defined database roles as members of fixed roles. Esto podría habilitar un aumento de privilegios no deseado.This could enable unintended privilege escalation.

Los permisos de los roles de base de datos definidos por el usuario se pueden personalizar con las instrucciones GRANT, DENY y REVOKE.The permissions of user-defined database roles can be customized by using the GRANT, DENY, and REVOKE statements. Para más información, consulte Permisos (motor de base de datos).For more information, see Permissions (Database Engine).

Para una lista de todos los permisos, consulte el póster Permisos del motor de base de datos .For a list of all the permissions, see the Database Engine Permissions poster. (Los permisos a nivel de servidor no se pueden conceder a los roles de base de datos.(Server-level permissions cannot be granted to database roles. Los inicios de sesión y otras entidades de seguridad a nivel de servidor [como roles de servidor] no se pueden agregar a los roles de base de datos.Logins and other server-level principals (such as server roles) cannot be added to database roles. Para la seguridad a nivel de servidor en SQL ServerSQL Server, use en su lugar roles de servidor .For server-level security in SQL ServerSQL Server, use server roles instead. Los permisos a nivel de servidor no se pueden conceder a través de roles en SQL DatabaseSQL Database y Almacenamiento de datos SQLSQL Data Warehouse).Server-level permissions cannot be granted through roles in SQL DatabaseSQL Database and Almacenamiento de datos SQLSQL Data Warehouse.)

roles fijos de base de datosFixed-Database Roles

En la tabla siguiente se muestran los roles fijos de base de datos y sus funcionalidades.The following table shows the fixed-database roles and their capabilities. Estos roles existen en todas las bases de datos.These roles exist in all databases. A excepción del rol de base de datos public, no se pueden cambiar los permisos asignados a los roles fijos de base de datos.Except for the public database role, the permissions assigned to the fixed-database roles cannot be changed.

Nombre del rol fijo de base de datosFixed-Database role name DescripciónDescription
db_ownerdb_owner Los miembros del rol fijo de base de datos 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 en SQL ServerSQL Server.Members of the db_owner fixed database role can perform all configuration and maintenance activities on the database, and can also drop the database in SQL ServerSQL Server. (En SQL DatabaseSQL Database y Almacenamiento de datos SQLSQL Data Warehouse, algunas actividades de mantenimiento requieren permisos a nivel de servidor y los roles db_ownersno las pueden realizar).(In SQL DatabaseSQL Database and Almacenamiento de datos SQLSQL Data Warehouse, some maintenance activities require server-level permissions and cannot be performed by db_owners.)
db_securityadmindb_securityadmin Los miembros del rol fijo de base de datos db_securityadmin pueden modificar la pertenencia a roles únicamente para roles personalizados, crear usuarios sin inicios de sesión y administrar permisos.Members of the db_securityadmin fixed database role can modify role membership for custom roles only, create users without logins, and manage permissions. Si se agregan entidades de seguridad a este rol, podría habilitarse un aumento de privilegios no deseado.Adding principals to this role could enable unintended privilege escalation.
db_accessadmindb_accessadmin Los miembros del rol fijo de base de datos 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 ServerSQL Server .Members of the db_accessadmin fixed database role can add or remove access to the database for Windows logins, Windows groups, and SQL ServerSQL Server logins.
db_backupoperatordb_backupoperator Los miembros del rol fijo de base de datos db_backupoperator pueden crear copias de seguridad de la base de datos.Members of the db_backupoperator fixed database role can back up the database.
db_ddladmindb_ddladmin Los miembros del rol fijo de base de datos db_ddladmin pueden ejecutar cualquier comando del lenguaje de definición de datos (DDL) en una base de datos.Members of the db_ddladmin fixed database role can run any Data Definition Language (DDL) command in a database.
db_datawriterdb_datawriter Los miembros del rol fijo de base de datos db_datawriter pueden agregar, eliminar o cambiar datos en todas las tablas de usuario.Members of the db_datawriter fixed database role can add, delete, or change data in all user tables.
db_datareaderdb_datareader Los miembros del rol fijo de base de datos db_datareader pueden leer todos los datos de todas las tablas de usuario.Members of the db_datareader fixed database role can read all data from all user tables.
db_denydatawriterdb_denydatawriter Los miembros del rol fijo de base de datos db_denydatawriter no pueden agregar, modificar ni eliminar datos de tablas de usuario de una base de datos.Members of the db_denydatawriter fixed database role cannot add, modify, or delete any data in the user tables within a database.
db_denydatareaderdb_denydatareader Los miembros del rol fijo de base de datos db_denydatareader no pueden leer datos de las tablas de usuario dentro de una base de datos.Members of the db_denydatareader fixed database role cannot read any data in the user tables within a database.

No se pueden cambiar los permisos asignados a los roles fijos de base de datos.The permissions assigned to the fixed-database roles cannot be changed. La ilustración siguiente muestra los permisos asignados a los roles fijos de base de datos:The following figure shows the permissions assigned to the fixed-database roles:

fixed_database_role_permissions

Roles especiales para SQL DatabaseSQL Database y Almacenamiento de datos SQLSQL Data WarehouseSpecial Roles for SQL DatabaseSQL Database and Almacenamiento de datos SQLSQL Data Warehouse

Estos roles de base de datos solo existen en la base de datos maestra virtual.These database roles exist only in the virtual master database. Sus permisos están restringidos a las acciones realizadas en la base de datos maestra.Their permissions are restricted to actions performed in master. Solo los usuarios de base de datos en la base de datos maestra se pueden agregar a estos roles.Only database users in master can be added to these roles. Los inicios de sesión no se pueden agregar a estos roles, pero los usuarios se pueden crear basados en inicios de sesión y, luego, esos usuarios se pueden agregar a los roles.Logins cannot be added to these roles, but users can be created based on logins and then those users can be added to the roles. Los usuarios de bases de datos independientes en la base de datos maestra también se pueden agregar a estos roles.Contained database users in master, can also be added to these roles.

Nombre de rolRole name DescripciónDescription
dbmanagerdbmanager Puede crear y eliminar bases de datos.Can create and delete databases. Un miembro del rol dbmanager 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.A member of the dbmanager role that creates a database, becomes the owner of that database which allows that user to connect to that database as the dbo user. El usuario dbo tiene todos los permisos de base de datos en la base de datos.The dbo user has all database permissions in the database. Los miembros del rol dbmanager no necesariamente tienen permiso para obtener acceso a las bases de datos que no son de su propiedad.Members of the dbmanager role do not necessarily have permission to access databases that they do not own.
loginmanagerloginmanager Puede crear y eliminar inicios de sesión en la base de datos maestra virtual.Can create and delete logins in the virtual master database.

Nota

La entidad de seguridad a nivel de servidor y el administrador de Azure Active Directory (si está configurado) tienen todos los permisos en SQL DatabaseSQL Database y Almacenamiento de datos SQLSQL Data Warehouse sin la necesidad de ser miembros de ninguno de los roles.The server-level principal and the Azure Active Directory Administrator (if configured) have all permissions in the SQL DatabaseSQL Database and Almacenamiento de datos SQLSQL Data Warehouse without needing to be members of any roles. Para más información, consulte Autorización y autenticación de SQL Database: concesión de accesoFor more information, see SQL Database Authentication and Authorization: Granting Access.

Roles de msdbmsdb Roles

La base de datos msdb contiene los roles con fines especiales que se muestran en la tabla siguiente.The msdb database contains the special-purpose roles that are shown in the following table.

Nombre de rol de msdbmsdb role name DescripciónDescription
db_ssisadmindb_ssisadmin

db_ssisoperatordb_ssisoperator

db_ssisltduserdb_ssisltduser
Los miembros de estos roles de base de datos pueden administrar y utilizar SSISSSIS.Members of these database roles can administer and use SSISSSIS. Las instancias de SQL ServerSQL Server que se actualizan desde una versión anterior podrían contener una versión anterior del rol cuya denominación se realizaba al usar Servicios de transformación de datos (DTS) en lugar de SSISSSIS.Instances of SQL ServerSQL Server that are upgraded from an earlier version might contain an older version of the role that was named using Data Transformation Services (DTS) instead of SSISSSIS. Para obtener más información, vea Roles de Integration Services (servicio SSIS).For more information, see Integration Services Roles (SSIS Service).
dc_admindc_admin

dc_operatordc_operator

dc_proxydc_proxy
Los miembros de estos roles de base de datos pueden administrar y utilizar el recopilador de datos.Members of these database roles can administer and use the data collector. Para obtener más información, consulte Data Collection.For more information, see Data Collection.
PolicyAdministratorRolePolicyAdministratorRole Los miembros del rol 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 directivas.Members of the db_ PolicyAdministratorRole database role can perform all configuration and maintenance activities on Policy-Based Management policies and conditions. Para obtener más información, vea Administrar servidores mediante administración basada en directivas.For more information, see Administer Servers by Using Policy-Based Management.
ServerGroupAdministratorRoleServerGroupAdministratorRole

ServerGroupReaderRoleServerGroupReaderRole
Los miembros de estos roles de base de datos pueden administrar y utilizar grupos de servidores registrados.Members of these database roles can administer and use registered server groups.
dbm_monitordbm_monitor Se crea en la base de datos msdb cuando se registra la primera base de datos en el Monitor de creación de reflejo de la base de datos.Created in the msdb database when the first database is registered in Database Mirroring Monitor. El rol dbm_monitor no tiene miembros hasta que un administrador del sistema asigna usuarios al rol.The dbm_monitor role has no members until a system administrator assigns users to the role.

Importante

Los miembros de los roles db_ssisadmin y dc_admin quizás puedan elevar sus privilegios a sysadmin.Members of the db_ssisadmin role and the dc_admin role may be able to elevate their privileges to sysadmin. Esta elevación de privilegio se puede producir porque estos roles pueden modificar los paquetes de Integration ServicesIntegration Services y los paquetes de Integration ServicesIntegration Services los puede ejecutar SQL ServerSQL Server utilizando el contexto de seguridad de sysadmin del Agente SQL ServerSQL Server .This elevation of privilege can occur because these roles can modify Integration ServicesIntegration Services packages and Integration ServicesIntegration Services packages can be executed by SQL ServerSQL Server using the sysadmin security context of SQL ServerSQL Server Agent. Para protegerse contra esta elevación de privilegio al ejecutar planes de mantenimiento, conjuntos de recopilación de datos y otros paquetes de Integration ServicesIntegration Services , configure los trabajos del Agente SQL ServerSQL Server que ejecutan paquetes para usar una cuenta de proxy con privilegios limitados o agregar solo los miembros de sysadmin a los roles db_ssisadmin y dc_admin .To guard against this elevation of privilege when running maintenance plans, data collection sets, and other Integration ServicesIntegration Services packages, configure SQL ServerSQL Server Agent jobs that run packages to use a proxy account with limited privileges or only add sysadmin members to the db_ssisadmin and dc_admin roles.

Trabajo con R ServicesWorking with R Services

Se aplica a: SQL Server a partir de SQL Server 2017 (14.x)SQL Server 2017 (14.x)Applies to: SQL Server starting with SQL Server 2017 (14.x)SQL Server 2017 (14.x)

Si R Services está instalado, hay roles de base de datos adicionales disponibles para administrar paquetes.When R Services is installed, additional database roles are available for managing packages. Para más información, vea R Package management for SQL Server (Administración de paquetes de R para SQL Server).For more information, see R Package management for SQL Server.

Nombre de rolRole name DescripciónDescription
rpkgs-usersrpkgs-users Permite a los usuarios usar cualquier paquete compartido que los miembros del rol rpkgs-shared hayan instalado.Allows users to use any shared packages that were installed by members of the rpkgs-shared role.
rpkgs-privaterpkgs-private Proporciona acceso a los paquetes compartidos con los mismos permisos que el rol rpkgs-users.Provides access to shared packages with the same permissions as the rpkgs-users role. Los miembros de este rol también pueden instalar, quitar y usar paquetes de ámbito privado.Members of this role can also install, remove and use privately scoped packages.
rpkgs-sharedrpkgs-shared Proporciona los mismos permisos que el rol rpkgs-private.Provides the same permissions as the rpkgs-private role. Los usuarios que son miembros de este rol también pueden instalar o quitar paquetes compartidos.Users who are members of this role can also install or remove shared packages.

Trabajar con roles de nivel de base de datosWorking with Database-Level Roles

En la tabla siguiente se explican los comandos, las vistas y las funciones que se usan para trabajar con los roles de nivel de base de datos.The following table explains the commands, views and functions for working with database-level roles.

CaracterísticaFeature TipoType DescripciónDescription
sp_helpdbfixedrole (Transact-SQL)sp_helpdbfixedrole (Transact-SQL) MetadatosMetadata Devuelve la lista de los roles fijos de base de datos.Returns a list of the fixed database roles.
sp_dbfixedrolepermission (Transact-SQL)sp_dbfixedrolepermission (Transact-SQL) MetadatosMetadata Muestra los permisos de un rol fijo de base de datos.Displays the permissions of a fixed database role.
sp_helprole (Transact-SQL)sp_helprole (Transact-SQL) MetadatosMetadata Devuelve información acerca de los roles de la base de datos actual.Returns information about the roles in the current database.
sp_helprolemember (Transact-SQL)sp_helprolemember (Transact-SQL) MetadatosMetadata Devuelve información acerca de los miembros de un rol de la base de datos actual.Returns information about the members of a role in the current database.
sys.database_role_members (Transact-SQL)sys.database_role_members (Transact-SQL) MetadatosMetadata Devuelve una fila por cada miembro de cada rol de base de datos.Returns one row for each member of each database role.
IS_MEMBER (Transact-SQL)IS_MEMBER (Transact-SQL) MetadatosMetadata Indica si el usuario actual es miembro del grupo de Microsoft Windows o del rol de base de datos de SQL Server especificados.Indicates whether the current user is a member of the specified Microsoft Windows group or Microsoft SQL Server database role.
CREATE ROLE (Transact-SQL)CREATE ROLE (Transact-SQL) ComandoCommand Crea un rol de base de datos nuevo en la base de datos actual.Creates a new database role in the current database.
ALTER ROLE (Transact-SQL)ALTER ROLE (Transact-SQL) ComandoCommand Cambia el nombre o la pertenencia de un rol de base de datos.Changes the name or membership of a database role.
DROP ROLE (Transact-SQL)DROP ROLE (Transact-SQL) ComandoCommand Quita un rol de la base de datos.Removes a role from the database.
sp_addrole (Transact-SQL)sp_addrole (Transact-SQL) ComandoCommand Crea un rol de base de datos nuevo en la base de datos actual.Creates a new database role in the current database.
sp_droprole (Transact-SQL)sp_droprole (Transact-SQL) ComandoCommand Quita un rol de base de datos de la base de datos actual.Removes a database role from the current database.
sp_addrolemember (Transact-SQL)sp_addrolemember (Transact-SQL) ComandoCommand Agrega un usuario de base de datos, un rol de base de datos, un inicio de sesión de Windows o un grupo de Windows a un rol de base de datos en la base de datos actual.Adds a database user, database role, Windows login, or Windows group to a database role in the current database. Todas las plataformas, salvo Almacenamiento de datos paralelosParallel Data Warehouse , deben usar ALTER ROLE en su lugar.All platforms except Almacenamiento de datos paralelosParallel Data Warehouse should use ALTER ROLE instead.
sp_droprolemember (Transact-SQL)sp_droprolemember (Transact-SQL) ComandoCommand Quita una cuenta de seguridad de un rol de SQL Server de la base de datos actual.Removes a security account from a SQL Server role in the current database. Todas las plataformas, salvo Almacenamiento de datos paralelosParallel Data Warehouse , deben usar ALTER ROLE en su lugar.All platforms except Almacenamiento de datos paralelosParallel Data Warehouse should use ALTER ROLE instead.
GRANTGRANT PermisosPermissions Agrega el permiso a un rol.Adds permission to a role.
DENYDENY PermisosPermissions Deniega un permiso a un rol.Denys a permission to a role.
REVOKEREVOKE PermisosPermissions Quita un permiso concedido o denegado anteriormente.Removes a previously granted or denied permissions.

Rol de base de datos publicpublic Database Role

Todos los usuarios de una base de datos pertenecen al rol de base de datos public s.Every database user belongs to the public database role. Cuando a un usuario no se le han concedido ni denegado permisos específicos para un objeto protegible, el usuario hereda los permisos concedidos a la función pública para ese objeto.When a user has not been granted or denied specific permissions on a securable object, the user inherits the permissions granted to public on that object. Los usuarios de base de datos no se pueden quitar del rol public .Database users cannot be removed from the public role.

Vistas de catálogo de seguridad (Transact-SQL)Security Catalog Views (Transact-SQL)

Procedimientos almacenados de seguridad (Transact-SQL)Security Stored Procedures (Transact-SQL)

Funciones de seguridad (Transact-SQL)Security Functions (Transact-SQL)

Proteger SQL ServerSecuring SQL Server

sp_helprotect (Transact-SQL)sp_helprotect (Transact-SQL)