sp_setapprole (Transact-SQL)
Active les autorisations associées à un rôle d'application dans la base de données active.
Syntaxe
sp_setapprole [ @rolename = ] 'role',
[ @password = ] { encrypt N'password' }
|
'password' [ , [ @encrypt = ] { 'none' | 'odbc' } ]
[ , [ @fCreateCookie = ] true | false ]
[ , [ @cookie = ] @cookie OUTPUT ]
Arguments
[ @rolename = ] 'role'
Nom du rôle d'application défini dans la base de données active. role est de type sysname et n'a pas de valeur par défaut. role doit exister dans la base de données active.[ @password = ] { encrypt N'password' }
Mot de passe nécessaire pour activer le rôle d'application. password est de type sysname et n'a pas de valeur par défaut. password peut être codé à l'aide de la fonction encrypt d'ODBC. Lorsque vous utilisez la fonction encrypt, le mot de passe doit être converti en une chaîne Unicode en plaçant N avant le premier guillemet.L'option encrypt n'est pas prise en charge sur les connexions qui utilisent SqlClient.
Important
La fonction encrypt d'ODBC n'assure pas un chiffrement. Vous ne devez pas compter sur cette fonction pour protéger des mots de passe transmis sur un réseau. Si de telles informations doivent être transmises sur un réseau, utilisez SSL ou IPSec.
@encrypt = 'none'
Indique qu'aucun codage ne doit être utilisé. Le mot de passe est transmis à SQL Server sous forme de texte brut. Il s'agit du paramètre par défaut.@encrypt= 'odbc'
Indique qu'ODBC doit coder le mot de passe à l'aide de sa fonction encrypt avant d'envoyer le mot de passe au moteur de base de données SQL Server. Ceci peut être spécifié seulement si vous utilisez un client ODBC ou le fournisseur OLE DB pour SQL Server.[ @fCreateCookie = ] true | false
Indique s'il convient de créer un cookie. true est converti implicitement en 1. false est converti implicitement en 0.[ @cookie = ] @cookie OUTPUT
Spécifie le paramètre de sortie qui doit contenir le cookie. Le cookie est généré seulement si @fCreateCookie a la valeur true. varbinary(8000).
Valeurs de code retournées
0 (réussite) et 1 (échec)
Notes
Une fois qu'un rôle d'application a été activé à l'aide de sp_setapprole, le rôle reste actif jusqu'à ce que l'utilisateur se déconnecte du serveur ou exécute sp_unsetapprole. La procédure sp_setapprole peut être exécutée uniquement à l'aide d'instructions Transact-SQL directes. sp_setapprole ne peut pas être exécutée au sein d'une autre procédure stockée ni d'une transaction définie par l'utilisateur.
Pour une vue d'ensemble des rôles d'application, consultez Rôles d'application.
Remarque relative à la sécurité |
---|
Pour protéger le mot de passe d'un rôle d'application lors de sa transmission sur un réseau, vous devez toujours utiliser une connexion chiffrée pour activer un rôle d'application. L'option encrypt de Microsoft ODBC n'est pas prise en charge par SqlClient. Si vous devez stocker des informations d'identification, chiffrez-les à l'aide des fonctions API de chiffrement. Le paramètre password est stocké en tant que hachage unidirectionnel. Pour préserver la compatibilité avec les versions antérieures de SQL Server, la règle de complexité des mots de passe n'est pas imposée par la procédure sp_addapprole. Pour imposer la règle de complexité des mots de passe, utilisez CREATE APPLICATION ROLE. |
Autorisations
Requiert l'appartenance à public et la connaissance du mot de passe pour le rôle.
Exemples
A. Activation d'un rôle d'application sans l'option encrypt
Dans l'exemple ci-dessous, un rôle d'application nommé SalesAppRole est activé avec le mot de passe en texte brut AsDeF00MbXX, créé avec les autorisations spécialement conçues pour l'application utilisée par l'utilisateur en cours.
EXEC sp_setapprole 'SalesApprole', 'AsDeF00MbXX';
GO
B. Activation d'un rôle d'application avec un cookie, puis retour au contexte d'origine
Dans l'exemple ci-dessous, le rôle d'application Sales11 est activé avec le mot de passe fdsd896#gfdbfdkjgh700mM et un cookie est créé. L'exemple retourne le nom de l'utilisateur actuel, puis revient au contexte d'origine en exécutant 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