sp_setapprole (Transact-SQL)
Activa los permisos asociados a una función de aplicación en la base de datos actual.
Sintaxis
sp_setapprole [ @rolename = ] 'role',
[ @password = ] { encrypt N'password' }
|
'password' [ , [ @encrypt = ] { 'none' | 'odbc' } ]
[ , [ @fCreateCookie = ] true | false ]
[ , [ @cookie = ] @cookie OUTPUT ]
Argumentos
[ @rolename = ] 'role'
Es el nombre de la función de aplicación definida en la base de datos actual. El parámetro role es de tipo sysname y no tiene ningún valor predeterminado. role debe existir en la base de datos actual.[ @password = ] { encrypt N'password' }
Se trata de la contraseña requerida para activar la función de aplicación. El parámetro password es de tipo sysname y no tiene ningún valor predeterminado. password puede ofuscarse mediante la función encrypt de ODBC. Si utiliza la función de encrypt, es necesario convertir la contraseña a una cadena Unicode mediante la colocación de N antes de la primera comilla.La opción de cifrado no se admite en las conexiones que utilizan SqlClient.
Importante La función de encrypt de ODBC no proporciona cifrado. No debe confiar a esta función la protección de las contraseñas que se transmiten en una red. Si la información se va a transmitir en una red, utilice SSL o IPSec.
@encrypt = 'none'
Especifica que no se utiliza ofuscación. La contraseña se pasa a SQL Server como texto sin formato. Éste es el valor predeterminado.@encrypt= 'odbc'
Especifica que ODBC ofuscará la contraseña mediante la función encrypt de ODBC antes de enviar la contraseña al SQL Server Database Engine (Motor de base de datos de SQL Server). Sólo se puede especificar cuando se utiliza un cliente ODBC o el Proveedor OLE DB para SQL Server.[ @fCreateCookie = ] true | false
Especifica si se debe crear una cookie. El valor true se convierte implícitamente a 1. El valor false se convierte implícitamente a 0.[ @cookie = ] @cookie OUTPUT
Especifica un parámetro de salida que contendrá la cookie. Sólo se generará la cookie si el valor de @fCreateCookie es true. varbinary(8000)
Valores de código de retorno
0 (correcto) y 1 (error)
Notas
Una vez habilitada una función de aplicación con sp_setapprole, la función permanece activa hasta que el usuario se desconecta del servidor o ejecuta sp_unsetapprole. sp_setapprole sólo puede ejecutarse con instrucciones directas Transact-SQL. sp_setapprole no puede ejecutarse en otro procedimiento almacenado ni en una transacción definida por el usuario.
Para obtener información general acerca de las funciones de aplicación, vea Funciones de aplicación.
Nota de seguridad |
---|
Para proteger la contraseña de función de aplicación cuando se transmite a través de una red, siempre debe usar una conexión cifrada al habilitar una función de aplicación. La opción encrypt de Microsoft ODBC no es compatible con SqlClient. Si debe almacenar las credenciales, cífrelas con las funciones de la API de cifrado. El parámetro password se almacena como un hash de un sentido. Para conservar la compatibilidad con versiones anteriores de SQL Server, sp_addapprole no aplica la directiva de complejidad de contraseñas. Para aplicar la directiva de complejidad de contraseñas, utilice CREATE APPLICATION ROLE. |
Permisos
Debe pertenecer a public y conocer la contraseña de la función.
Ejemplos
A. Habilitar una función de aplicación sin la opción de cifrado
En este ejemplo se habilita una función de aplicación denominada SalesAppRole, con la contraseña de texto sin formato AsDeF00MbXX, creada con permisos específicamente diseñados para la aplicación que utiliza el usuario actual.
EXEC sp_setapprole 'SalesApprole', 'AsDeF00MbXX';
GO
B. Habilitar una función de aplicación con una cookie y revertir al contexto original
En el siguiente ejemplo se habilita la función de aplicación Sales11 con la contraseña fdsd896#gfdbfdkjgh700mM y se crea una cookie. En el ejemplo se devuelve el nombre del usuario actual y se revierte al contexto original ejecutando sp_unsetapprole.
DECLARE @cookie varbinary(8000);
EXEC sp_setapprole 'Sales11', 'fdsd896#gfdbfdkjgh700mM'
, @fCreateCookie = true, @cookie = @cookie OUTPUT;
-- The application role is now active.
SELECT USER_NAME();
-- This will return the name of the application role, Sales11.
EXEC sp_unsetapprole @cookie;
-- The application role is no longer active.
-- The original context has now been restored.
GO
SELECT USER_NAME();
-- This will return the name of the original user.
GO