sp_setapprole (Transact-SQL)

 

CETTE RUBRIQUE S’APPLIQUE À :ouiSQL Server (à partir de la version 2008)nonAzure SQL DatabasenonAzure SQL Data WarehousenonParallel Data Warehouse

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

S’applique à: SQL Server (SQL Server 2008 jusqu’à version actuelle).

Topic link icon Conventions de la syntaxe Transact-SQL

  
sp_setapprole [ @rolename = ] 'role',  
    [ @password = ] { encrypt N'password' }   
      |  
        'password' [ , [ @encrypt = ] { 'none' | 'odbc' } ]  
        [ , [ @fCreateCookie = ] true | false ]  
    [ , [ @cookie = ] @cookie OUTPUT ]  

[ @rolename = ] 'role'
Nom du rôle d'application défini dans la base de données active. rôle est sysname, sans valeur par défaut. rôle 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. mot de passe est sysname, sans valeur par défaut. mot de passe peuvent être masquées à l’aide de ODBC chiffrer (fonction). Lorsque vous utilisez la chiffrer (fonction), le mot de passe doit être converti en une chaîne Unicode en plaçant N avant le premier guillemet.

L’option de chiffrement n’est pas pris en charge sur les connexions qui utilisent SqlClient.

System_CAPS_ICON_important.jpg Important


ODBC chiffrer fonction ne fournit pas de 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 »
Spécifie que ODBC sera obscurcir le mot de passe à l’aide de ODBC chiffrer fonction avant d’envoyer le mot de passe pour le 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é uniquement si la valeur de ** @fCreateCookie ** est true. varbinary (8000)

System_CAPS_ICON_note.jpg Remarque


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

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

Une fois une application rôle 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 peuvent être exécutées directement par Transact-SQL instructions. 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 la page les rôles d’Application.

System_CAPS_ICON_important.jpg Important


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.

Le Microsoft ODBC chiffrer option n’est pas pris en charge par SqlClient. Si vous devez stocker des informations d'identification, chiffrez-les à l'aide des fonctions API de chiffrement. Le paramètre mot de passe est stocké sous la forme d’un hachage unidirectionnel. Pour préserver la compatibilité avec les versions antérieures de SQL Server, stratégie de complexité de mot de passe n’est pas appliquée par sp_addapprole. Pour appliquer la stratégie de complexité de mot de passe, utilisez CREATE APPLICATION ROLE.

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

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   

Procédures système (Transact-SQL)
Sécurité procédures stockées (Transact-SQL)
CRÉER le rôle d’APPLICATION (Transact-SQL)
DROP APPLICATION ROLE (Transact-SQL)
sp_unsetapprole (Transact-SQL)

Ajouts de la communauté

AJOUTER
Afficher: