Ruoli applicazioneApplication Roles

Un ruolo applicazione è un'entità di database che consente a un'applicazione di funzionare con proprie autorizzazioni simili a quelle per utenti.An application role is a database principal that enables an application to run with its own, user-like permissions. I ruoli applicazione possono essere utilizzati per consentire l'accesso a dati specifici solo agli utenti che si collegano attraverso un'applicazione particolare.You can use application roles to enable access to specific data to only those users who connect through a particular application. A differenza dei ruoli di database, i ruoli applicazione non contengono membri e sono inattivi per impostazione predefinita.Unlike database roles, application roles contain no members and are inactive by default. I ruoli applicazione funzionano con entrambe le modalità di autenticazioneApplication roles work with both authentication modes. I ruoli applicazione vengono abilitati usando sp_setapprole, che richiede una password.Application roles are enabled by using sp_setapprole, which requires a password. Poiché si tratta di entità a livello di database, i ruoli applicazione possono accedere ad altri database solo tramite le autorizzazioni concesse in questi database all'account utente guest.Because application roles are a database-level principal, they can access other databases only through permissions granted in those databases to guest. Ogni database in cui l'account utente guest è stato disabilitato non sarà quindi accessibile ai ruoli applicazione di altri database.Therefore, any database in which guest has been disabled will be inaccessible to application roles in other databases.

In SQL ServerSQL Serveri ruoli applicazione non possono accedere ai metadati a livello di server perché non sono associati a un'entità a livello di server.In SQL ServerSQL Server, application roles cannot access server-level metadata because they are not associated with a server-level principal. Per disabilitare questa limitazione e consentire quindi ai ruoli applicazione di accedere ai metadati a livello di server, impostare il flag globale 4616.To disable this restriction and thereby allow application roles to access server-level metadata, set the global flag 4616. Per altre informazioni, vedere Flag di traccia (Transact-SQL) e DBCC TRACEON (Transact-SQL).For more information, see Trace Flags (Transact-SQL) and DBCC TRACEON (Transact-SQL).

Connessione attraverso un ruolo applicazioneConnecting with an Application Role

Il passaggio da un contesto di sicurezza all'altro da parte di un ruolo applicazione si svolge nel modo seguente:The following steps make up the process by which an application role switches security contexts:

  1. Un utente esegue un'applicazione client.A user executes a client application.

  2. L'applicazione client si collega a un'istanza di SQL ServerSQL Server come utente.The client application connects to an instance of SQL ServerSQL Server as the user.

  3. L'applicazione esegue quindi la stored procedure sp_setapprole con una password nota solo all'applicazione.The application then executes the sp_setapprole stored procedure with a password known only to the application.

  4. Se il nome del ruolo applicazione e la password sono validi, il ruolo applicazione viene abilitato.If the application role name and password are valid, the application role is enabled.

  5. A questo punto la connessione perde le autorizzazioni dell'utente e assume le autorizzazioni del ruolo applicazione.At this point the connection loses the permissions of the user and assumes the permissions of the application role.

    Le autorizzazioni acquisite attraverso il ruolo applicazione rimangono valide per tutta la durata della connessione.The permissions acquired through the application role remain in effect for the duration of the connection.

    Nelle versioni precedenti di SQL ServerSQL Server, l'unico modo per un utente di ritornare al contesto di sicurezza originale dopo l'avvio di un ruolo applicazione consiste nel disconnettersi e riconnettersi a SQL ServerSQL Server.In earlier versions of SQL ServerSQL Server, the only way for a user to reacquire its original security context after starting an application role is to disconnect and reconnect to SQL ServerSQL Server. A partire da SQL Server 2005SQL Server 2005, sp_setapprole dispone di un'opzione che crea un cookie.Beginning with SQL Server 2005SQL Server 2005, sp_setapprole has an option that creates a cookie. Il cookie contiene informazioni di contesto precedenti all'abilitazione del ruolo applicazione.The cookie contains context information before the application role is enabled. Questo cookie può essere usato da sp_unsetapprole per riportare la sessione al contesto originale.The cookie can be used by sp_unsetapprole to revert the session to its original context. Per informazioni su questa nuova opzione e un esempio, vedere sp_setapprole (Transact-SQL).For information about this new option and an example, see sp_setapprole (Transact-SQL).

Importante

L'opzione ODBC encrypt non è supportata da SqlClient.The ODBC encrypt option is not supported by SqlClient. Per trasmettere informazioni riservate su una rete, utilizzare SSL (Secure Sockets Layer) o IPSec per crittografare il canale.When you are transmitting confidential information over a network, use Secure Sockets Layer (SSL) or IPsec to encrypt the channel. Se è necessario mantenere le credenziali nell'applicazione client, crittografarle utilizzando le funzioni Crypto API.If you must persist credentials in the client application, encrypt the credentials by using the crypto API functions. In SQL Server 2005SQL Server 2005 e versioni successive, il parametro password è archiviato come hash unidirezionale.In SQL Server 2005SQL Server 2005 and later versions, the parameter password is stored as a one-way hash.

Creare un ruolo applicazione.Create an application role. Creare un ruolo applicazione e CREATE APPLICATION ROLE ( Transact-SQL )Create an Application Role and CREATE APPLICATION ROLE (Transact-SQL)
Modificare un ruolo applicazione.Alter an application role. ALTER APPLICATION ROLE (Transact-SQL)ALTER APPLICATION ROLE (Transact-SQL)
Eliminare un ruolo applicazione.Delete an application role. DROP APPLICATION ROLE (Transact-SQL)DROP APPLICATION ROLE (Transact-SQL)
Utilizzo di un ruolo applicazione.Using an application role. sp_setapprole (Transact-SQL)sp_setapprole (Transact-SQL)

Vedere ancheSee Also

Sicurezza di SQL ServerSecuring SQL Server