sp_setapprole (Transact-SQL)

S’applique à :SQL ServerAzure SQL Database

Active les autorisations associées à un rôle d'application dans la base de données active.

Conventions de la syntaxe Transact-SQL

Syntaxe

sp_setapprole
    [ @rolename = ] N'rolename'
    , [ @password = ] N'password'
    [ , [ @encrypt = ] 'encrypt' ]
    [ , [ @fCreateCookie = ] fCreateCookie ]
    [ , [ @cookie = ] cookie OUTPUT ]
[ ; ]

Arguments

[ @rolename = ] N’rolename'

Nom du rôle d’application défini dans la base de données active. @rolename est sysname, sans valeur par défaut. @rolename doit exister dans la base de données active.

[ @password = ] { chiffrer N’password' }

Mot de passe requis pour activer le rôle d’application. @password est sysname, sans valeur par défaut. @password pouvez être obfusqué à l’aide de la fonction ODBCencrypt. Lorsque vous utilisez la encrypt fonction, le mot de passe doit être converti en chaîne Unicode en plaçant N avant le premier guillemet.

L’option chiffrer n’est pas prise en charge sur les connexions qui utilisent SqlClient.

Important

La fonction ODBC encrypt ne fournit pas de chiffrement. Vous ne devez pas vous appuyer sur cette fonction pour protéger les mots de passe transmis sur un réseau. Si ces informations seront transmises sur un réseau, utilisez TLS ou IPSec.

[ @encrypt = ] { 'none' | 'odbc' }

Spécifie le type de chiffrement avant d’envoyer le mot de passe au Moteur de base de données SQL Server. @encrypt est varchar(10) et peut être l’une de ces valeurs.

Valeur Description
none (valeur par défaut) Spécifie qu’aucune obfuscation n’est utilisée. Le mot de passe est passé à SQL Server en texte brut.
odbc Spécifie que ODBC obfusque le mot de passe à l’aide de la fonction ODBC encrypt avant d’envoyer le mot de passe à SQL Server Moteur de base de données. Cette valeur ne peut être spécifiée que lorsque vous utilisez un client ODBC ou le fournisseur OLE DB pour SQL Server.

[ @fCreateCookie = ] { 'true' | 'false' }

Indique si un cookie doit être créé. @fCreateCookie est bit, avec la valeur par défaut 0.

true est implicitement converti en 1. false est implicitement converti en 0.

Spécifie le paramètre de sortie qui doit contenir le cookie. @cookie est un paramètre OUTPUT de type varbinary(8000). Le cookie est généré uniquement si la valeur de @fCreateCookie est true.

Remarque

Bien que l’implémentation actuelle retourne varbinary(50),les applications doivent réserver le varbinary documenté (8000), afin que l’application continue de fonctionner correctement si la taille de retour du cookie augmente dans une version ultérieure.

Valeurs des codes de retour

0 (réussite) et 1 (échec).

Notes

Une fois qu’un rôle d’application est activé à l’aide sp_setapprole, le rôle reste actif jusqu’à ce que l’utilisateur se déconnecte du serveur ou s’exécute sp_unsetapprole. Vous ne pouvez pas utiliser sp_setapprole dans une autre procédure stockée, déclencher ou dans une transaction définie par l’utilisateur. Il ne peut être exécuté qu’en tant qu’instructions Transact-SQL directes.

Pour obtenir une vue d’ensemble des rôles d’application, consultez Rôles d’application.

Vous devez toujours utiliser une connexion chiffrée lors de l’activation d’un rôle d’application pour protéger le mot de passe du rôle d’application lorsque vous le transmettez sur un réseau.

L’option Microsoft ODBC encrypt 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, sp_addapprole n’applique pas la stratégie de complexité du mot de passe. Pour appliquer la stratégie de complexité du mot de passe, utilisez CREATE APPLICATION ROLE.

Autorisations

Nécessite l’appartenance au public et la connaissance du mot de passe pour le rôle.

Exemples

R. Activer un rôle d’application sans l’option chiffrer

L’exemple suivant active un rôle d’application nommé SalesAppRole, avec le mot de passe AsDeF00MbXXen texte brut , créé avec des autorisations conçues pour l’application utilisée par l’utilisateur actuel.

EXEC sys.sp_setapprole 'SalesApprole', 'AsDeF00MbXX';
GO

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 sys.sp_setapprole 'Sales11',
    'fdsd896#gfdbfdkjgh700mM',
    @fCreateCookie = true,
    @cookie = @cookie OUTPUT;

Le rôle d’application est maintenant actif. USER_NAME()retourne le nom du rôle d’application. Sales11

SELECT USER_NAME();

Supprimez le rôle d’application.

EXEC sys.sp_unsetapprole @cookie;
GO

Le rôle d’application n’est plus actif. Le contexte d’origine est restauré. USER_NAME() retourne le nom de l’utilisateur d’origine.

SELECT USER_NAME();
GO