Creazione di ruoli applicazione in SQL ServerCreating Application Roles in SQL Server

I ruoli applicazione consentono di assegnare autorizzazioni a un'applicazione anziché a un ruolo o a un utente del database.Application roles provide a way to assign permissions to an application instead of a database role or user. Gli utenti possono connettersi al database, attivare il ruolo applicazione e assumere le autorizzazioni concesse all'applicazione.Users can connect to the database, activate the application role, and assume the permissions granted to the application. Le autorizzazioni concesse al ruolo applicazione sono effettive per la durata della connessione.The permissions granted to the application role are in force for the duration of the connection.

Importante

I ruoli applicazione vengono attivati quando un'applicazione client fornisce un nome e una password di ruolo applicazione nella stringa di connessione.Application roles are activated when a client application supplies an application role name and a password in the connection string. Presentano una vulnerabilità di sicurezza nelle applicazioni a 2 livelli perché la password deve essere archiviata nel computer client.They present a security vulnerability in a two-tier application because the password must be stored on the client computer. Nelle applicazioni a 3 livelli è possibile archiviare la password in modo che non sia accessibile agli utenti dell'applicazione.In a three-tier application, you can store the password so that it cannot be accessed by users of the application.

Funzionalità dei ruoli applicazioneApplication Role Features

Le funzionalità dei ruoli applicazione includono:Application roles have the following features:

  • A differenza dei ruoli del database, i ruoli applicazione non contengono membri.Unlike database roles, application roles contain no members.

  • I ruoli applicazione vengono attivati quando un'applicazione fornisce il nome e una password del ruolo applicazione alla stored procedure di sistema sp_setapprole.Application roles are activated when an application supplies the application role name and a password to the sp_setapprole system stored procedure.

  • La password deve essere archiviata nel computer client e specificata in fase di esecuzione. I ruoli applicazione non possono essere attivati dall'interno di SQL Server.The password must be stored on the client computer and supplied at run time; an application role cannot be activated from inside of SQL Server.

  • La password non è crittografata.The password is not encrypted. La password con parametri viene archiviata come hash unidirezionale.The parameter password is stored as a one-way hash.

  • Una volta attivate, le autorizzazioni acquisite tramite il ruolo applicazione rimangono effettive per la durata della connessione.Once activated, permissions acquired through the application role remain in effect for the duration of the connection.

  • Il ruolo applicazione eredita le autorizzazioni concesse al ruolo public.The application role inherits permissions granted to the public role.

  • Se un membro del ruolo predefinito del server sysadmin attiva un ruolo applicazione, il contesto di sicurezza diventa quello del ruolo applicazione per la durata della connessione.If a member of the sysadmin fixed server role activates an application role, the security context switches to that of the application role for the duration of the connection.

  • Se si crea un account guest in un database che include un ruolo applicazione, non è necessario creare un account utente di database per il ruolo applicazione o per uno degli account di accesso che lo richiamano.If you create a guest account in a database that has an application role, you do not need to create a database user account for the application role or for any of the logins that invoke it. I ruoli applicazione possono accedere direttamente a un altro database solo se in quest'ultimo esiste un account guest.Application roles can directly access another database only if a guest account exists in the second database

  • Le funzioni predefinite che restituiscono nomi di account di accesso, ad esempio SYSTEM_USER, restituiscono il nome dell'account di accesso che ha richiamato il ruolo applicazione.Built-in functions that return login names, such as SYSTEM_USER, return the name of the login that invoked the application role. Le funzioni predefinite che restituiscono nomi utente del database restituiscono il nome del ruolo applicazione.Built-in functions that return database user names return the name of the application role.

Principio dei privilegi minimiThe Principle of Least Privilege

Ai ruoli applicazione è necessario concedere solo le autorizzazioni necessarie in caso la password sia compromessa.Application roles should be granted only required permissions in case the password is compromised. Le autorizzazioni al ruolo public devono essere revocate in qualsiasi database che usa un ruolo applicazione.Permissions to the public role should be revoked in any database using an application role. Disabilitare l'account utente guest in ogni database a cui non si desidera che i chiamanti del ruolo applicazione abbiano accesso.Disable the guest account in any database you do not want callers of the application role to have access to.

Miglioramenti dei ruoli applicazioneApplication Role Enhancements

Il contesto di esecuzione può essere restituito al chiamante originale dopo l'attivazione di un ruolo applicazione, eliminando la necessità di disabilitare il pool di connessioni.The execution context can be switched back to the original caller after activating an application role, removing the need to disable connection pooling. La procedura sp_setapprole include una nuova opzione che crea un cookie, contenente informazioni di contesto sul chiamante.The sp_setapprole procedure has a new option that creates a cookie, which contains context information about the caller. È possibile ripristinare la sessione chiamando la procedura sp_unsetapprole, passando il cookie.You can revert the session by calling the sp_unsetapprole procedure, passing it the cookie.

Alternative ai ruoli applicazioneApplication Role Alternatives

I ruoli applicazione dipendono dalla sicurezza di una password, che presenta una potenziale vulnerabilità per la sicurezza.Application roles depend on the security of a password, which presents a potential security vulnerability. Le password possono essere esposte se vengono incorporate nel codice dell'applicazione o salvate su disco.Passwords may be exposed by being embedded in application code or saved on disk.

Può essere opportuno considerare le seguenti alternative.You may want to consider the following alternatives.

  • Usare il passaggio di contesto con l'istruzione EXECUTE AS e le relative clausole NO REVERT e WITH COOKIE.Use context switching with the EXECUTE AS statement with its NO REVERT and WITH COOKIE clauses. È possibile creare un account utente in un database non mappato a un account di accesso.You can create a user account in a database that is not mapped to a login. Assegnare quindi le autorizzazioni a questo account.You then assign permissions to this account. L'uzo di EXECUTE AS con un utente senza account di accesso è un sistema più sicuro, perché si basa su autorizzazioni e non su password.Using EXECUTE AS with a login-less user is more secure because it is permission-based, not password-based. Per ulteriori informazioni, vedere personalizzazione delle autorizzazioni con rappresentazione in SQL Server.For more information, see Customizing Permissions with Impersonation in SQL Server.

  • Firmare le stored procedure con certificati, concedendo solo l'autorizzazione per eseguirle.Sign stored procedures with certificates, granting only permission to execute the procedures. Per ulteriori informazioni, vedere firma di Stored procedure in SQL Server.For more information, see Signing Stored Procedures in SQL Server.

Risorse esterneExternal Resources

Per altre informazioni, vedere le risorse seguenti.For more information, see the following resources.

RisorsaResource DescrizioneDescription
I ruoli applicazione nella documentazione Online di SQL ServerApplication Roles in SQL Server Books Online Viene descritto come creare e usare i ruoli applicazione in SQL Server 2008.Describes how to create and use application roles in SQL Server 2008.

Vedere ancheSee Also

Protezione delle applicazioni ADO.NETSecuring ADO.NET Applications
Cenni preliminari sulla sicurezza in SQL ServerOverview of SQL Server Security
Scenari di sicurezza delle applicazioni in SQL ServerApplication Security Scenarios in SQL Server
Provider gestiti ADO.NET e Centro per sviluppatori di set di datiADO.NET Managed Providers and DataSet Developer Center