Roles de aplicación

Un rol de aplicación es una entidad de seguridad de base de datos que permite que una aplicación se ejecute con sus propios permisos de usuario. Puede utilizar los roles de aplicación para permitir el acceso a datos específicos únicamente a aquellos usuarios que se conecten a través de una aplicación concreta. A diferencia de los roles de base de datos, los roles de aplicación no contienen miembros y están inactivos de manera predeterminada. Los roles de aplicación funcionan con ambos modos de autenticación. Los roles de aplicación se habilitan empleando sp_setapprole, que requiere una contraseña. Debido a que los roles de aplicación son una entidad de seguridad de la base de datos, solo pueden obtener acceso a otras bases de datos mediante los permisos que se conceden para dichas bases de datos a guest. Por tanto, cualquier base de datos en la que se haya deshabilitado guest no será accesible para los roles de aplicación de otras bases de datos.

En SQL Server, los roles de aplicación no pueden tener acceso a los metadatos de nivel de servidor porque no están asociadas a una entidad de seguridad a nivel de servidor. Para deshabilitar esta restricción y permitir a los roles de aplicación tener acceso a los metadatos de nivel de servidor, defina la marca global 4616. Para obtener más información, vea Marcas de seguimiento (Transact-SQL) y DBCC TRACEON (Transact-SQL).

Conectarse con un rol de aplicación

Los siguientes pasos muestran el proceso mediante el cual un rol de aplicación cambia de contexto de seguridad:

  1. Un usuario ejecuta una aplicación cliente.

  2. La aplicación cliente se conecta con una instancia de SQL Server como usuario.

  3. A continuación, la aplicación ejecuta el procedimiento almacenado sp_setapprole con una contraseña que solo conoce la aplicación.

  4. Si el nombre y la contraseña del rol de aplicación son válidos, el rol de aplicación se habilita.

  5. En este momento, la conexión pierde los permisos del usuario y asume los permisos del rol de aplicación.

Los permisos adquiridos durante el rol de aplicación se mantienen mientras dura la conexión.

En versiones anteriores de SQL Server, la única forma de que un usuario vuelva a adquirir su contexto de seguridad original después de iniciar un rol de aplicación consiste en desconectarse y volver a conectarse a SQL Server. A partir de SQL Server 2005, sp_setapprole tiene una opción que crea una cookie. La cookie contiene información sobre el contexto anterior al momento en que se habilita el rol de aplicación. sp_unsetapprole puede utilizar la cookie para revertir la sesión a su contexto original. Para obtener información acerca de esta nueva opción y ver un ejemplo, vea sp_setapprole (Transact-SQL).

Nota de seguridadNota de seguridad

SqlClient no admite la opción encrypt de ODBC. Cuando transmita información confidencial a través de una red, utilice SSL (Capa de sockets seguros) o IPSec para cifrar el canal. Si necesita conservar las credenciales de la aplicación cliente, cífrelas mediante las funciones de la API de criptografía. En SQL Server 2005 y versiones posteriores, el parámetro password se almacena como un hash unidireccional.

Tareas relacionadas

Crear un rol de aplicación.

Crear un rol de aplicación y CREATE APPLICATION ROLE (Transact-SQL)

Modificar un rol de aplicación.

ALTER APPLICATION ROLE (Transact-SQL)

Eliminar un rol de aplicación.

DROP APPLICATION ROLE (Transact-SQL)

Usar un rol de aplicación.

sp_setapprole (Transact-SQL)

Vea también

Conceptos

Proteger SQL Server