sp_setapprole (Transact-SQL)

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

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

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 actuelle.

  • [ @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 obscurci à l'aide de la fonction ODBC encrypt. 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 obfusquer 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 si un cookie doit être créé. true est implicitement converti en 1. false est implicitement converti 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 la valeur de @fCreateCookie est true. varbinary(8000)

    [!REMARQUE]

    Le paramètre OUTPUT de cookie pour sp_setapprole est actuellement documenté comme varbinary(8000), ce qui correspond à la longueur maximale correcte. Toutefois, l'implémentation actuelle retourne varbinary(50). Les applications doivent continuer à réserver varbinary(8000) afin de continuer à fonctionner correctement si la taille de retour des cookies augmente dans une version ultérieure.

Valeurs des codes de retour

0 (succès) et 1 (échec)

Notes

Une fois qu'un rôle d'application est activé à l'aide de sp_setapprole, il demeure actif jusqu'à ce que l'utilisateur se déconnecte du serveur ou exécute sp_unsetapprole. sp_setapprole peut être exécutée uniquement par des instructions Transact-SQL directes. sp_setapprole ne peut pas être exécutée dans une autre procédure stockée ou dans une transaction définie par l'utilisateur.

Pour une vue d'ensemble des rôles d'application, consultez Rôles d'applications.

Remarque relative à la sécurité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

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 

Voir aussi

Référence

Procédures stockées système (Transact-SQL)

Procédures stockées liées à la sécurité (Transact-SQL)

CREATE APPLICATION ROLE (Transact-SQL)

DROP APPLICATION ROLE (Transact-SQL)

sp_unsetapprole (Transact-SQL)